Форум Beholder http://beholder.ru/bb/ | |
Beholder M6 http://beholder.ru/bb/viewtopic.php?f=11&t=5399 |
Страница 3 из 4 |
Автор: | a5b [ 17 сен 2007, 12:01 ] |
Заголовок сообщения: | |
Мне, например, не удалось найти в интернете нормальный даташит по saa7135 (с описаниями регистров и процесса инициализации). Если есть возможность выслать или указать где взять - будем рады. В линуксе иногда приходит некий поток (не mpeg ts) от mpeg encoder-а. Проверил регистры энкодера - режим encoding, но в регистре 12h установлен бит 1: SAA6752HS continues encoding but outputs audio ES packets only; SAA6752HS will resynchronize if video input is recommenced; notes 2 to 4. Notes: 2. This error flag detects mismatches between the input video format (525 or 625) and SAA6752HS video setting (525 or 625). Video syncs out of range are also detected. 3. A loss of video sync is flagged if 10 consecutive syncs are not detected. 4. For stream types which include video mode transitions to encode or idle/stop will not be finished, if no video is present. A pending mode transition can be stopped by forced reconfigure. Возможно не выведен видеосигнал с SAA7135? Не могли бы представители компании описать последовательность включения цифрового видеопорта? По поводу параметров энкодера - мы пока что хотим именно те параметры, которые сейчас зашиты в указанный исходник saa6752hs.c ) |
Автор: | a5b [ 07 окт 2007, 07:51 ] |
Заголовок сообщения: | |
Можгут ли представители компании ответить на мой вопрос из предыдущего поста? |
Автор: | Admin [ 08 окт 2007, 11:30 ] |
Заголовок сообщения: | |
Вы скооперировались с igk72? У вас есть какой-то полуфабрикат для работы с Empress? |
Автор: | a5b [ 08 окт 2007, 11:50 ] |
Заголовок сообщения: | |
Нет, я пока что работаю независимо от него, но собрать вместе результаты будет очень легко. Он видимо пока что не занимался энкодером. У меня есть только стандартные линуксовские saa7134-empress.c & saa7134-core.c & saa7134-video.c |
Автор: | Admin [ 08 окт 2007, 12:22 ] |
Заголовок сообщения: | |
Давайте тогда сейчас скоординируем работу. igk72, у вас есть какая-то рабочая заготовка? |
Автор: | igk72 [ 09 окт 2007, 01:49 ] |
Заголовок сообщения: | |
Скооперироваться готов всегда. Дело идет туговато. Получил почти такие же данные как у A2b. Энкодер в состоянии ошибки. У меня тоже только стандартный линуксовский saa7134-empress.c & saa7134-core.c - думаю что в этот код надо добавлять поддержку М6. Даташиты нашел вот такие только http://www.igk.ru/linux/files/v4l/SAA6752HS_3.pdf http://www.igk.ru/linux/files/v4l/SAA7134HL_4.pdf Кстати! Продолжил работу над общим патчем - развитие поддержки сторонних пультов в серии 60х и М6. теперь в модуле можно указать от какого пульта принимается нажатия. По-умолчанию только от родного. Это необходимо для разграничения сторонних пультов, так как реагирует на пульты от Sven, BBK и т.д. Обновления выложу на днях. |
Автор: | Rider [ 30 окт 2007, 00:51 ] |
Заголовок сообщения: | |
Есть движение с encoder'ом в M6 ? v4l для 2.6.18 я собрал, спасибо за патчи.. всё работает (M6 Extra). Теперь бы понять как побороться с энкодером... Без кодирования в mpeg не очень хорошо работает пауза во время просмотра передач в mythtv. Надо делать |
Автор: | Rider [ 08 ноя 2007, 12:50 ] |
Заголовок сообщения: | |
Просьба спецам из Beholder глянуть на этот кусок инициализации saa6752hs: --------------------------------- /* Set video format - must be done first as it resets other settings */ buf[0] = 0x41; buf[1] = h->video_format; i2c_master_send(client, buf, 2); /* Set number of lines in input signal */ buf[0] = 0x40; buf[1] = 0x00; if (h->standard & V4L2_STD_525_60) buf[1] = 0x01; i2c_master_send(client, buf, 2); /* set bitrate */ saa6752hs_set_bitrate(client, &h->params); /* Set GOP structure {3, 13} */ buf[0] = 0x72; buf[1] = 0x03; buf[2] = 0x0D; i2c_master_send(client,buf,3); /* Set minimum Q-scale {4} */ buf[0] = 0x82; buf[1] = 0x04; i2c_master_send(client,buf,2); /* Set maximum Q-scale {12} */ buf[0] = 0x83; buf[1] = 0x0C; i2c_master_send(client,buf,2); /* Set Output Protocol */ buf[0] = 0xD0; buf[1] = 0x81; i2c_master_send(client,buf,2); /* Set video output stream format {TS} */ buf[0] = 0xB0; buf[1] = 0x05; i2c_master_send(client,buf,2); /* compute PAT */ memcpy(localPAT, PAT, sizeof(PAT)); localPAT[17] = 0xe0 | ((h->params.ts_pid_pmt >> & 0x0f); localPAT[18] = h->params.ts_pid_pmt & 0xff; crc = crc32_be(~0, &localPAT[7], sizeof(PAT) - 7 - 4); localPAT[sizeof(PAT) - 4] = (crc >> 24) & 0xFF; localPAT[sizeof(PAT) - 3] = (crc >> 16) & 0xFF; localPAT[sizeof(PAT) - 2] = (crc >> & 0xFF; localPAT[sizeof(PAT) - 1] = crc & 0xFF; /* compute PMT */ memcpy(localPMT, PMT, sizeof(PMT)); localPMT[3] = 0x40 | ((h->params.ts_pid_pmt >> & 0x0f); localPMT[4] = h->params.ts_pid_pmt & 0xff; localPMT[15] = 0xE0 | ((h->params.ts_pid_pcr >> & 0x0F); localPMT[16] = h->params.ts_pid_pcr & 0xFF; localPMT[20] = 0xE0 | ((h->params.ts_pid_video >> & 0x0F); localPMT[21] = h->params.ts_pid_video & 0xFF; localPMT[25] = 0xE0 | ((h->params.ts_pid_audio >> & 0x0F); localPMT[26] = h->params.ts_pid_audio & 0xFF; crc = crc32_be(~0, &localPMT[7], sizeof(PMT) - 7 - 4); localPMT[sizeof(PMT) - 4] = (crc >> 24) & 0xFF; localPMT[sizeof(PMT) - 3] = (crc >> 16) & 0xFF; localPMT[sizeof(PMT) - 2] = (crc >> & 0xFF; localPMT[sizeof(PMT) - 1] = crc & 0xFF; /* Set Audio PID */ buf[0] = 0xC1; buf[1] = (h->params.ts_pid_audio >> & 0xFF; buf[2] = h->params.ts_pid_audio & 0xFF; i2c_master_send(client,buf,3); /* Set Video PID */ buf[0] = 0xC0; buf[1] = (h->params.ts_pid_video >> & 0xFF; buf[2] = h->params.ts_pid_video & 0xFF; i2c_master_send(client,buf,3); /* Set PCR PID */ buf[0] = 0xC4; buf[1] = (h->params.ts_pid_pcr >> & 0xFF; buf[2] = h->params.ts_pid_pcr & 0xFF; i2c_master_send(client,buf,3); /* Send SI tables */ i2c_master_send(client,localPAT,sizeof(PAT)); i2c_master_send(client,localPMT,sizeof(PMT)); /* mute then unmute audio. This removes buzzing artefacts */ buf[0] = 0xa4; buf[1] = 1; i2c_master_send(client, buf, 2); buf[1] = 0; i2c_master_send(client, buf, 2); /* start it going */ saa6752hs_chip_command(client, SAA6752HS_COMMAND_START); /* readout current state */ buf[0] = 0xE1; buf[1] = 0xA7; buf[2] = 0xFE; buf[3] = 0x82; buf[4] = 0xB0; i2c_master_send(client, buf, 5); i2c_master_recv(client, buf2, 4); /* change aspect ratio */ buf[0] = 0xE0; buf[1] = 0xA7; buf[2] = 0xFE; buf[3] = 0x82; buf[4] = 0xB0; buf[5] = buf2[0]; switch(h->params.vi_aspect) { case V4L2_MPEG_VIDEO_ASPECT_16x9: buf[6] = buf2[1] | 0x40; break; case V4L2_MPEG_VIDEO_ASPECT_4x3: default: buf[6] = buf2[1] & 0xBF; break; break; } buf[7] = buf2[2]; buf[8] = buf2[3]; i2c_master_send(client, buf, 9); ---------------------------- Что-то здесь не так. Например - я не могу найти описание команд для смены aspect ratio, хотя в этом коде применяется последовательность, начинающаясь с 0xE0 saa6752hl выдаёт на выходе видео в таком формате: VIDEO: [DVSD] 720x480 24bpp 29,970 fps |
Автор: | Admin [ 09 ноя 2007, 12:44 ] |
Заголовок сообщения: | |
писал(а): Что-то здесь не так. Например - я не могу найти описание команд для смены aspect ratio, хотя в этом коде применяется последовательность, начинающаясь с 0xE0
Это недокументированный 4-байтовый регистр. Он корректен. |
Автор: | Rider [ 09 ноя 2007, 22:20 ] |
Заголовок сообщения: | |
Спасибо. А корректна ли следующая инициализация вывода на энкодер с saa713x: static int video_out[][9] = { [CCIR656] = { 0x00, 0xb1, 0x00, 0xa1, 0x00, 0x04, 0x06, 0x00, 0x00 }, }; /* enable video output */ int vo = saa7134_boards[dev->board].video_out; int video_reg; unsigned int vid_port_opts = saa7134_boards[dev->board].vid_port_opts; saa_writeb(SAA7134_VIDEO_PORT_CTRL0, video_out[vo][0]); video_reg = video_out[vo][1]; if (vid_port_opts & SET_T_CODE_POLARITY_NON_INVERTED) video_reg &= ~VP_T_CODE_P_INVERTED; saa_writeb(SAA7134_VIDEO_PORT_CTRL1, video_reg); saa_writeb(SAA7134_VIDEO_PORT_CTRL2, video_out[vo][2]); saa_writeb(SAA7134_VIDEO_PORT_CTRL3, video_out[vo][3]); saa_writeb(SAA7134_VIDEO_PORT_CTRL4, video_out[vo][4]); video_reg = video_out[vo][5]; if (vid_port_opts & SET_CLOCK_NOT_DELAYED) video_reg &= ~VP_CLK_CTRL2_DELAYED; if (vid_port_opts & SET_CLOCK_INVERTED) video_reg |= VP_CLK_CTRL1_INVERTED; saa_writeb(SAA7134_VIDEO_PORT_CTRL5, video_reg); video_reg = video_out[vo][6]; if (vid_port_opts & SET_VSYNC_OFF) { video_reg &= ~VP_VS_TYPE_MASK; video_reg |= VP_VS_TYPE_OFF; } saa_writeb(SAA7134_VIDEO_PORT_CTRL6, video_reg); saa_writeb(SAA7134_VIDEO_PORT_CTRL7, video_out[vo][7]); saa_writeb(SAA7134_VIDEO_PORT_CTRL8, video_out[vo][8]); |
Автор: | Rider [ 09 ноя 2007, 22:51 ] |
Заголовок сообщения: | |
Дополнительно есть ещё код инициализации TS. Вопрос - нужна ли для beholder M6 extra инициализация CCIR656 через Video port control или достаточно только Transport stream input interface ? Код инициализации Transport stream такой: /* init TS hw */ saa_writeb(SAA7134_TS_SERIAL1, 0x00); /* deactivate TS softreset */ saa_writeb(SAA7134_TS_PARALLEL, 0xec); /* TSSOP high active, TSVAL high active, TSLOCK ignored */ saa_writeb(SAA7134_TS_PARALLEL_SERIAL, (TS_PACKET_SIZE-1)); saa_writeb(SAA7134_TS_DMA0, ((dev->ts.nr_packets-1)&0xff)); saa_writeb(SAA7134_TS_DMA1, (((dev->ts.nr_packets-1)>>8)&0xff)); saa_writeb(SAA7134_TS_DMA2, ((((dev->ts.nr_packets-1)>>16)&0x3f) | 0x00)); /* TSNOPIT=0, TSCOLAP=0 */ Плюс ещё есть зависимость на размер пакетов TS: #define TS_PACKET_SIZE 188 /* TS packets 188 bytes */ И размер буфера, который задаётся в количестве ts пакетов. Плюс можно задавать количество буферов от 2 до 32-х. Расскажите пожалуйтса про эти параметры для Beholder M6 extra. |
Автор: | Rider [ 09 ноя 2007, 22:55 ] |
Заголовок сообщения: | |
Вообще конечно куски исходников от ваших драйверов здорово помогли бы. Я готов как персонально подписать NDA, так и от юр. лица, занимающегося разработкой решений на Linux (у меня всё ещё не потеряна надежда использовать Beholder в одном из наших решений). Второй вариант - поднапрячь ваших программистов на исправление saa7134 в Linux'е. Но т.к. это пока не сделано, то видимо это малорелаьно. |
Автор: | Rider [ 16 ноя 2007, 19:30 ] |
Заголовок сообщения: | |
Кто-то из Beholder может мне ответить ? Или всё-таки придётся менять тюнер ? |
Автор: | Admin [ 19 ноя 2007, 13:51 ] |
Заголовок сообщения: | |
Мы с вами спишемся в личке. |
Автор: | Dmitry [ 17 фев 2009, 00:07 ] |
Заголовок сообщения: | |
писал(а): Только для тюнеров Beholder серий 60x и M6,
http://www.igk.ru/linux/files/v4l/v4l2- ... x-m6.patch Только для тюнеров Beholder серии M6 http://www.igk.ru/linux/files/v4l/v4l2- ... r-m6.patch Указанные линки отдают 404 вместо патчей. Гугление дает ссылки на этот же сайт. Может кто-нибудь поделиться патчем для 60x? P.S.Behold TV 609 FM на Fedora 10 (2.6.27.12-170.2.5.fc10.x86_64), определилось все, кроме IR. i2c scan пишет в логах: Код: kernel: saa7133[0]: i2c scan: found device @ 0x5a [remote control] но как input оно не появляется. P.P.S. Проблемы со звуком решаются следующим образом и без sox: Код: options tda9887 qss=1
|
Страница 3 из 4 | Часовой пояс: UTC + 3 часа |