RFE: Make VDR more friendly when using combinations of DVB-S, DVB-T and DVB-C

Message ID 4FDDCDF4.8000505@tvdr.de
State New
Headers

Commit Message

Klaus Schmidinger June 17, 2012, 12:30 p.m. UTC
  On 17.06.2012 14:16, Klaus Schmidinger wrote:
> On 16.06.2012 16:53, Ludi wrote:
>> Hi Klaus,
>>
>> First of all, thanks for your reply and for taking the problem into
>> account.
>>
>> On Sat, 16 Jun 2012 15:32:11 +0200
>> Klaus Schmidinger<Klaus.Schmidinger@tvdr.de> wrote:
>>
>>> On 15.06.2012 17:17, Ludi wrote:
>>>> Hello,
>>>>
>>>> Some time ago, I started a discussion in german on the VDR forum
>>>> about making the VDR more friendly for users that are
>>>> simultaneously using different sources to receive channels:
>>>> http://www.vdr-portal.de/board16-video-disk-recorder/board8-vdr-grundlagen/110156-%C3%BCberlegungen-zur-channels-conf-f%C3%BCr-dvb-c-s-t-mischbetrieb/index3.html
>>>>
>>>> I am going to explain the problem, when receiving channels from two
>>>> different sources by using the second german public channel named
>>>> ZDF:
>>>>
>>>> Suppose a user is receiving the channel ZDF by dvb-s and dvb-t. For
>>>> the VDR, these are two different channels, and it probably is not a
>>>> bad thing that the VDR differentiates between them because these
>>>> channels might be of different quality (different data rates,
>>>> etc.). However, as both sources name these channels often the same
>>>> way, it is not easily possible to differentiate between the two
>>>> channels in the VDR OSD, which is particularly annoying for the
>>>> timers, one of the main VDR features.
>>>>
>>>> Currently, I work around this problem, by setting the VDR to not
>>>> update channelnames and manually adding a suffix to the
>>>> channelnames in the channels.conf. So, to use the example above and
>>>> differentiate between the two channels, they could be renamed to
>>>> ZDF-s and ZDF-t (or ZDF.s and ZDF.t, or...). In practice, I only
>>>> only rename the channelnames of the source with the smallest number
>>>> of channels; I know that the channelnames without suffix are those
>>>> from the other source.
>>>>
>>>> @ Klaus
>>>>
>>>> Do you think that you could add an additional option to one of your
>>>> next VDR releases, like "Add suffix about source to channelnames"; I
>>>> could imagine such an option next to the "Update channels" option in
>>>> the DVB section of the Setup in the OSD of the VDR.
>>>>
>>>> Since the information is already in the channels.conf for every
>>>> channel, I assume, that it will not require huge changes to the VDR
>>>> code to use channelnames-source (or something similar) instead of
>>>> only the channelname in the channelname field of the channels.conf,
>>>> when the corresponding option is active.
>>>
>>> I'd rather have the channels.conf entries keep the names that are
>>> broadcast in the SI data. I wouldn't want to add a "source" suffix
>>> there.
>>
>> I understand your concerns.
>>
>> I assumed that changing the names in the channels.conf would be the
>> best in order to make also the plugins and other software use the
>> names+source for free. Moreover, since the channels.conf can be
>> constantly updated, I thought that it would not really matter, because
>> the names without source could be restored in the channels.conf by
>> simply disabling the new option and configure the update setting to
>> also modify the channelnames. I was not aware that there was a
>> standard for the broadcasting of the channelnames; but it does not
>> surprise me either now.
>>
>>> However, I could imagine adding a function like
>>>
>>> cString cChannel::NameWithSource(void)
>>>
>>> which would return things like
>>>
>>> ZDF (DVB-T)
>>> ZDF (DVB-S)
>>>
>>> or, shorter,
>>>
>>> ZDF (T)
>>> ZDF (S)
>>>
>>> and using that function instead of the Name() function at the
>>> appropriate places.
>>
>> If I get you right, that means that if the user activates the new option
>> (I assume that you will make it optional, since most people
>> probably use only one source and do not have the problem), the VDR uses
>> the NameWithSource() method instead of the Name() method.
>>
>> But what does this mean for the plugins? I am particularly thinking at
>> the plugins related to the timers, like the epgsearch and the live
>> plugin. Will they have to be adapted or will they also show the
>> name+source if the new option is enabled?
>>
>> Concerning whether to use the longer or the shorter version of the
>> name+source, I would choose the shorter version to not increase chances
>> of the new name not fitting in the OSD. Thus:
>>
>> ZDF (S)
>> ZDF (T)
>> ZDF (C)
>
> After sleeping over this for a night I tend to follow your idea of using modifed
> names directly, thus having them appear everywhere.
>
> I won't change these names in channels.conf, though (this file shall always
> store what comes from the broadcaster - provided it is enabled in the setup).
> I'll rather
>
> - Make a setup option to "Show channel names with source" (default is "no").
> - Modify cChannel::Name() and cChannel::ShortName() to optionally
> append the source character (A, C, S, T, I, ...) to the channel name
> in the (short) form mentioned above.
>
> The attached patch implements this (i18n stuff left out for brevity).
> Please give it a try.

Sorry, apparently I forgot to store this new option in the setup.conf file:



Klaus
  

Patch

--- config.c    2012/06/13 09:12:53     2.25
+++ config.c    2012/06/17 12:27:07
@@ -658,6 +659,7 @@ 
    else if (!strcasecmp(Name, "InitialVolume"))       InitialVolume      = atoi(Value);
    else if (!strcasecmp(Name, "DeviceBondings"))      DeviceBondings     = Value;
    else if (!strcasecmp(Name, "ChannelsWrap"))        ChannelsWrap       = atoi(Value);
+  else if (!strcasecmp(Name, "ShowChannelNamesWithSource")) ShowChannelNamesWithSource = atoi(Value);
    else if (!strcasecmp(Name, "EmergencyExit"))       EmergencyExit      = atoi(Value);
    else
       return false;
@@ -756,6 +758,7 @@ 
    Store("InitialVolume",      InitialVolume);
    Store("DeviceBondings",     DeviceBondings);
    Store("ChannelsWrap",       ChannelsWrap);
+  Store("ShowChannelNamesWithSource", ShowChannelNamesWithSource);
    Store("EmergencyExit",      EmergencyExit);

    Sort();