[MPlayer-dev-eng] Patch for add extended channels options in tv mode

Vladimir Voroshilov voroshil at gmail.com
Fri Jun 13 15:42:37 CEST 2008


devel at pop3.ru wrote: 
> -tv channels=<channel>-<name>[-<norm>],...
>
> Example:
>   mplayer tv:// -tv 
> channels=8-TNT=PAL,11-ORT=SECAM,27-RUSSIA=SECAM,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
>d--- mplayer-1.0_rc2_p25993.orig/stream/tv.c	2008-02-06 17:37:07.000000000 +0300
>d+++ mplayer-1.0_rc2_p25993/stream/tv.c	2008-03-13 09:34:05.000000000 +0300
>d@@ -254,6 +254,7 @@
>d     tv_channel_list->next=NULL;
>d     tv_channel_list->prev=NULL;
>d     tv_channel_current = tv_channel_list;
>d+	tv_channel_current->norm = tvh->norm;

Mixed spaces/tabs

> 
>     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';
>+          }

Mixed spaces/tabs, wrong alignment

>         }
> 
>         /*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;

Mixed spaces/tabs

>     }
>     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);

But here,

> 	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);

here,

> 				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);

here,

> 				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);

here,

> 		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);

...and here tabs are ok since the code around is using tabs.
In other places you add tabs while code around is using spacing.

> 		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);

Spaces/tabs usage is inconsistent in the routine.
Please select one of them (i prefer spaces)

>+
>+    tvh->norm = norm;

Setting new value without checking for the result of the ioctl below
is not good idea, imho.

>+
>+    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;

Spaces/tabs

>+    }
>+    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;

Spaces/tabs

>     int   freq;
>     struct tv_channels_s *next;
>     struct tv_channels_s *prev;

The rest looks ok for me.

Please, also fix the man page to reflect new feature (fix can be in
the same patch, English only is enough).

-- 
Regards,
Vladimir Voroshilov mailto:voroshil at gmail.com
Omsk State University
JID: voroshil at jabber.ru
ICQ: 95587719



More information about the MPlayer-dev-eng mailing list