Недавно сменил компьютер и взял видюху Ati EAH2400Pro и после этого tvtime отказался работать(xawtv не нравится), решил использовать mplayer. Вот патч который добавляет возможность установки формата(PAL,SECAM, PALM итд) в список каналов. Новый формат записи каналов: channels=<НОМЕР>-<ИМЯ КАНАЛА>=<ФОРМАТ> Пример: mplayer tv://2 -tv driver=v4l2:input=0:chanlist=russia:channels=8-TNT+100=PAL,11-ORT=SECAM,27-RUSS IA=SECAM,29-NTV=PAL,31-TNV=SECAM mplayer tv://2 -tv driver=v4l2:input=0:norm=SECAM:chanlist=russia:channels=8-TNT+100=PAL,11-ORT=SE CAM,27-RUSSIA,29-NTV=PAL,31-TNV=SECAM Вот сам патч: diff -Naur mplayer-1.0_rc2_p25993.orig/stream/tv.c mplayer-1.0_rc2_p25993/stream/tv.c --- mplayer-1.0_rc2_p25993.orig/stream/tv.c 2008-02-06 17:37:07.000000000 +0300 +++ mplayer-1.0_rc2_p25993/stream/tv.c 2008-03-13 09:34:05.000000000 +0300 @@ -254,6 +254,7 @@ tv_channel_list->next=NULL; tv_channel_list->prev=NULL; tv_channel_current = tv_channel_list; + tv_channel_current->norm = tvh->norm; while (*channels) { char* tmp = *(channels++); @@ -299,6 +300,12 @@ if ( sep[0] == '-' ) tv_channel_current->freq -= i * 100; sep[0] = '\0'; } + + sep = strchr(tv_channel_current->name, '='); + if ( sep ) { + tv_channel_current->norm = norm_from_string(tvh, sep+1); + sep[0] = '\0'; + } } /*mp_msg(MSGT_TV, MSGL_INFO, "-- Detected channel %s - %s (%5.3f)\n", @@ -310,6 +317,7 @@ tv_channel_current->next->prev = tv_channel_current; tv_channel_current->next->next = NULL; tv_channel_current = tv_channel_current->next; + tv_channel_current->norm = tvh->norm; } if (tv_channel_current->prev) tv_channel_current->prev->next = NULL; @@ -500,6 +508,7 @@ mp_msg(MSGT_TV, MSGL_INFO, MSGTR_TV_SelectedChannel3, tv_channel_current->number, tv_channel_current->name, (float)tv_channel_current->freq/1000); + tv_set_norm_i(tvh, tv_channel_current->norm); tv_set_freq(tvh, (unsigned long)(((float)tv_channel_current->freq/1000)*16)); tv_channel_last = tv_channel_current; } else { @@ -922,6 +931,8 @@ tv_channel_current = tv_channel_current->next; else tv_channel_current = tv_channel_list; + + tv_set_norm_i(tvh, tv_channel_current->norm); tv_set_freq(tvh, (unsigned long)(((float)tv_channel_current->freq/1000)*16)); mp_msg(MSGT_TV, MSGL_INFO, MSGTR_TV_SelectedChannel3, tv_channel_current->number, tv_channel_current->name, (float)tv_channel_current->freq/1000); @@ -933,6 +944,7 @@ else while (tv_channel_current->next) tv_channel_current = tv_channel_current->next; + tv_set_norm_i(tvh, tv_channel_current->norm); tv_set_freq(tvh, (unsigned long)(((float)tv_channel_current->freq/1000)*16)); mp_msg(MSGT_TV, MSGL_INFO, MSGTR_TV_SelectedChannel3, tv_channel_current->number, tv_channel_current->name, (float)tv_channel_current->freq/1000); @@ -977,6 +989,7 @@ tv_channel_current = tv_channel_current->next; mp_msg(MSGT_TV, MSGL_INFO, MSGTR_TV_SelectedChannel3, tv_channel_current->number, tv_channel_current->name, (float)tv_channel_current->freq/1000); + tv_set_norm_i(tvh, tv_channel_current->norm); tv_set_freq(tvh, (unsigned long)(((float)tv_channel_current->freq/1000)*16)); } else tv_set_channel_real(tvh, channel); return(1); @@ -994,6 +1007,7 @@ mp_msg(MSGT_TV, MSGL_INFO, MSGTR_TV_SelectedChannel3, tv_channel_current->number, tv_channel_current->name, (float)tv_channel_current->freq/1000); + tv_set_norm_i(tvh, tv_channel_current->norm); tv_set_freq(tvh, (unsigned long)(((float)tv_channel_current->freq/1000)*16)); } else { int i; @@ -1050,6 +1064,22 @@ return(1); } +int tv_set_norm_i(tvi_handle_t *tvh, int norm) +{ + char norm_s[5]; + snprintf(norm_s, 5, "%d", norm); + + tvh->norm = norm; + + mp_msg(MSGT_TV, MSGL_V, MSGTR_TV_SelectedNorm, norm_s); + if (tvh->functions->control(tvh->priv, TVI_CONTROL_TUN_SET_NORM, &tvh->norm) != TVI_CONTROL_TRUE) { + mp_msg(MSGT_TV, MSGL_ERR, MSGTR_TV_CannotSetNorm); + return 0; + } + tvh->functions->control(tvh->priv,TV_VBI_CONTROL_RESET,tvh->tv_param); + return(1); +} + demuxer_desc_t demuxer_desc_tv = { "Tv card demuxer", "tv", diff -Naur mplayer-1.0_rc2_p25993.orig/stream/tv.h mplayer-1.0_rc2_p25993/stream/tv.h --- mplayer-1.0_rc2_p25993.orig/stream/tv.h 2008-02-06 17:37:07.000000000 +0300 +++ mplayer-1.0_rc2_p25993/stream/tv.h 2008-03-13 09:19:22.000000000 +0300 @@ -119,6 +119,7 @@ int index; char number[5]; char name[20]; + int norm; int freq; struct tv_channels_s *next; struct tv_channels_s *prev;
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от madcore
Ответ на:
комментарий
от Devix
Ответ на:
комментарий
от Devix
Ответ на:
комментарий
от Devix
Ответ на:
комментарий
от Devix
Ответ на:
комментарий
от Devix
Ответ на:
комментарий
от Devix
Ответ на:
комментарий
от INFOMAN
Ответ на:
комментарий
от Devix
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Devix
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Обещаный код с ошибкой __int_malloc (2004)
- Форум Multimedia video controller: Conexant Systems, Inc. CX23880 (2011)
- Форум Непонятная ошибка распределения памяти (2016)
- Форум Изучая Си: yet another forkbomb (2016)
- Форум g++ expects argument (2013)
- Форум Проблема с чтением wav файла? (2022)
- Форум [gentoo] запись с тв-тюнера (2006)
- Форум Быдлокод не быдлокод? (2014)
- Форум Не выдрать изображение с камеры Pixart (2018)
- Форум Исследование CryEngine 2 SDK 1.4.0 (2012)