[vdr] implementing channel plug-in

Klaus Schmidinger Klaus.Schmidinger at tvdr.de
Wed Jan 6 13:50:11 CET 2010


On 06.01.2010 13:18, Theunis Potgieter wrote:
> 2010/1/6 Klaus Schmidinger <Klaus.Schmidinger at tvdr.de>:
>> On 06.01.2010 13:05, Theunis Potgieter wrote:
>>> 2010/1/6 Klaus Schmidinger <Klaus.Schmidinger at tvdr.de>:
>>>> On 05.01.2010 09:40, Theunis Potgieter wrote:
>>>>> 2010/1/4 Klaus Schmidinger <Klaus.Schmidinger at tvdr.de>:
>>>>>> On 04.01.2010 16:09, Theunis Potgieter wrote:
>>>>>>> 2010/1/4 Klaus Schmidinger <Klaus.Schmidinger at tvdr.de>:
>>>>>>>> On 04.01.2010 14:37, Theunis Potgieter wrote:
>>>>>>>>> I was in search for a plug-in that could map alternative long names to
>>>>>>>>> the supposedly current long name of a channel. I guess I didn't search
>>>>>>>>> hard and long enough, but could not find one that would implement this
>>>>>>>>> behaviour. The idea is, that when ever a channel list is called, it
>>>>>>>>> will provide the alternative long name, but saves the original long
>>>>>>>>> name in channels.conf.
>>>>>>>>>
>>>>>>>>> So I thought of implementing one my self. After reading the
>>>>>>>>> PLUGINS.html from VDR-1.7.10, I thought it would be possible. I didn't
>>>>>>>>> see any spoon feeding when it came to channels in the documentation,
>>>>>>>>> so I thought I will have a look at channels.h and there seems to be a
>>>>>>>>> member function called Name() in the tChannelID class. Would it be
>>>>>>>>> wise then to copy the tChannelID class and replace the member function
>>>>>>>>> Name()?
>>>>>>>> tChannelID has no member function named Name().
>>>>>>>> Maybe you mean the cChannel class?
>>>>>>>> I guess if you change the implementation of cChannel::Name(), then you
>>>>>>>> could do what you want.
>>>>>>> Thanks for that. I must have scrolled back up and saw the wrong class,
>>>>>>> I meant cChannel:Name().
>>>>>>>
>>>>>>>>> Which global pointer will I have to deleted and assign to the new object?
>>>>>>>> I don't understand this question.
>>>>>>>> There is no "new object".
>>>>>>>> You will have to patch the VDR source to implement this.
>>>>>>> The idea is that the plug-in would delete the current instance of
>>>>>>> cChannel and instantiate a new cChannel instance in the place there
>>>>>>> of. This without having to patch vdr to implement this feature. There
>>>>>>> for the question about the (e.g. global) pointer that is pointing to
>>>>>>> the original instance of cChannel. Is there a member function in the
>>>>>>> plug-in class that can be called from VDR's main and hand over such a
>>>>>>> pointer?
>>>>>> There is an object of cChannel for each channel, and they are stored in
>>>>>> a list. You can either patch VDR to modify cChannel::Name() so that it
>>>>>> takes the original name as an index into some database of yours, or
>>>>>> modify the names in your channels.conf and set "Setup/DVB/Update channels"
>>>>>> to "PIDs only".
>>>>>>
>>>>>> Just curious: what's wrong with the original names?
>>>>> The long names and the short names are the same.
>>>> And what's wrong with that?
>>> If you have a lot of channels, where the Long names are reduced to
>>> short (acronym) names. Then you might run into the problem where you
>>> see a few channels with the same short name but with different IDs. I
>>> can't always remember what the short name used to stand for after I
>>> visit the channel in 6 months. The STB will show the correct long
>>> name.
>> Where does the STB get that long name from?
> 
> I only guess that it will get that information in the same form as the
> EPG works. The EPG can only be accessed by going to a specific channel
> and view it using the STB's propriety hardware.

Those providers really suck!

At the moment the only real advice I can give you is to change the
cChannel::Name() function so that it looks up your long channel names
in a list that maps channel ids to long names.

A clean solution will be possible once I get to implement user defined
favorite channel lists, where the user will be able to overwrite the
channel name.

Klaus



More information about the vdr mailing list