From 5fc5e26c3b55cf9c1c388fc7968e540009de47e4 Mon Sep 17 00:00:00 2001 From: voroshil Date: Sat, 14 Jun 2008 09:14:16 +0000 Subject: Ability for specifying TV standard individually for each TV channel. Slightly modified patch by Ildar devel at pop3 dot ru git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27057 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/tv.c | 37 +++++++++++++++++++++++++++++++------ stream/tv.h | 1 + 2 files changed, 32 insertions(+), 6 deletions(-) (limited to 'stream') diff --git a/stream/tv.c b/stream/tv.c index 696c0d542d..48ddb8fb49 100644 --- a/stream/tv.c +++ b/stream/tv.c @@ -254,6 +254,7 @@ static void parse_channels(tvi_handle_t *tvh) 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 @@ static void parse_channels(tvi_handle_t *tvh) 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 @@ static void parse_channels(tvi_handle_t *tvh) 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; @@ -376,12 +384,9 @@ static int open_tv(tvi_handle_t *tvh) #ifdef HAVE_TV_DSHOW || (!strcmp(tvh->tv_param->driver, "dshow") && tvh->tv_param->normid >= 0) #endif - ) { - mp_msg(MSGT_TV, MSGL_V, MSGTR_TV_SelectedNormId, tvh->tv_param->normid); - if (funcs->control(tvh->priv, TVI_CONTROL_TUN_SET_NORM, &tvh->tv_param->normid) != TVI_CONTROL_TRUE) { - mp_msg(MSGT_TV, MSGL_ERR, MSGTR_TV_CannotSetNorm); - } - } else + ) + tv_set_norm_i(tvh, tvh->tv_param->normid); + else #endif tv_set_norm(tvh,tvh->tv_param->norm); @@ -500,6 +505,7 @@ static int open_tv(tvi_handle_t *tvh) 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 +928,8 @@ int tv_step_channel(tvi_handle_t *tvh, int direction) { 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 +941,7 @@ int tv_step_channel(tvi_handle_t *tvh, int direction) { 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 +986,7 @@ int tv_set_channel(tvi_handle_t *tvh, char *channel) { 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 +1004,7 @@ int tv_last_channel(tvi_handle_t *tvh) { 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 +1061,20 @@ int tv_set_norm(tvi_handle_t *tvh, char* norm) return 1; } +int tv_set_norm_i(tvi_handle_t *tvh, int norm) +{ + tvh->norm = norm; + + mp_msg(MSGT_TV, MSGL_V, MSGTR_TV_SelectedNormId, norm); + 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 --git a/stream/tv.h b/stream/tv.h index 7413860ae0..37c63b7a89 100644 --- a/stream/tv.h +++ b/stream/tv.h @@ -119,6 +119,7 @@ typedef struct tv_channels_s { int index; char number[5]; char name[20]; + int norm; int freq; struct tv_channels_s *next; struct tv_channels_s *prev; -- cgit v1.2.3 From 8f044ad84bf8458d5d0c055e6d91b46f3ab956b4 Mon Sep 17 00:00:00 2001 From: diego Date: Mon, 16 Jun 2008 08:40:01 +0000 Subject: Add missing #includes to fix 'make checkheaders'. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27075 b3059339-0415-0410-9bf9-f77b7e298cf2 --- stream/stream_dvd.h | 1 + stream/stream_dvd_common.h | 1 + 2 files changed, 2 insertions(+) (limited to 'stream') diff --git a/stream/stream_dvd.h b/stream/stream_dvd.h index 379a7ffc84..9a80ea2f42 100644 --- a/stream/stream_dvd.h +++ b/stream/stream_dvd.h @@ -1,6 +1,7 @@ #ifndef MPLAYER_STREAM_DVD_H #define MPLAYER_STREAM_DVD_H +#include "config.h" #include #ifdef USE_DVDREAD_INTERNAL #include "dvdread/dvd_reader.h" diff --git a/stream/stream_dvd_common.h b/stream/stream_dvd_common.h index 443daa45f9..b1d31d1dde 100644 --- a/stream/stream_dvd_common.h +++ b/stream/stream_dvd_common.h @@ -1,6 +1,7 @@ #ifndef MPLAYER_STREAM_DVD_COMMON_H #define MPLAYER_STREAM_DVD_COMMON_H +#include "config.h" #include #ifdef USE_DVDREAD_INTERNAL #include -- cgit v1.2.3