[vdr] Different languaghes on right/left channel

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Sun Feb 12 17:21:22 CET 2006

Anders wrote:
> After an upgrade to 1.3.34 all works just fine while viewing Eurosport and
> Nickelodeon.
> But if I make a recording from Eurosport och Nickelodeon and replay that
> recording I get audio channels "1" and "2" instead of the "nor+fin" and
> "sve+dan" i get during wathcing live tv.
> Is this expected behaviour or have I overlooked somethins else?
> Regards,
> Anders 

Having no language code at all during replay is a problem
that I'll try to fix. However, I'm afraid the two different
language codes for one PID are a fundamental problem.

While in live tv the channel data can indicate that there
are two different languages on one audio PID, the EPG data
for stream components doesn't seem to have this capability
(or at least I haven't found it, yet).

In pat.c, cPatFilter::Process(), we have

                for (SI::Loop::Iterator it; ld->languageLoop.getNext(l, it); ) {
                     if (*ld->languageCode != '-') { // some use "---" to indicate "none"
                        if (n > 0)
                           *s++ = '+';
                        strn0cpy(s, I18nNormalizeLanguageCode(l.languageCode), MAXLANGCODE1);
                        s += strlen(s);
                        if (n++ > 1)

where for a single PID there can be two language codes.
In eit.c, cEIT::cEIT(), on the other hand, there is

             case SI::ComponentDescriptorTag: {
                  SI::ComponentDescriptor *cd = (SI::ComponentDescriptor *)d;
                  uchar Stream = cd->getStreamContent();
                  uchar Type = cd->getComponentType();
                  if (1 <= Stream && Stream <= 2 && Type != 0) {
                     if (!Components)
                        Components = new cComponents;
                     char buffer[256];
                     Components->SetComponent(Components->NumComponents(), cd->getStreamContent(), cd->getComponentType(),
                                       I18nNormalizeLanguageCode(cd->languageCode), cd->description.getText(buffer, sizeof(buffer)));

where we get only _one_ language code for each component.
Maybe it would be feasible to check the language codes of the
stream components against those of the channel data at the moment
the recording starts, and overwrite the stream component data with
the PID data. This, though, would require the tComponent::language
member to be changed to 8 byte length so that it can hold abc+def
style language codes - but that's the least problem.

Any comments?


>>-----Ursprungligt meddelande-----
>>Från: anders at sandell.net [mailto:anders at sandell.net] 
>>Skickat: den 7 oktober 2005 21:32
>>Till: vdr at linuxtv.org
>>Ämne: Re: [vdr] Different languaghes on right/left channel
>>Quoting Antti Hartikainen <ami+vdr at ah.fi>:
>>>>To clarify:
>>>>After looking closer at the audio-menu:
>>>>On Eurosport there are two audio PID's "sve" which has 
>>swedish on the 
>>>>left channel and danish on the right and "nor" which has 
>>finnish on 
>>>>the left channel and norwegian on the right channel. I have chosen 
>>>>Swedish as my preferred languaghe and VDR correctly select 
>>the audio 
>>>>PID labeled as "sve".
>>>>That PID has
>>>>two langughes, and i have to select right or left channel 
>>in the VDR 
>>>>audio menu to avoid audio in swedish AND norwegian at the 
>>same time.
>>>>My problem is that VDR does not seem to save my choice which means 
>>>>that i have to go into the audio menu and select left channel 
>>>>everytime i want to see Eurosport. The same applies to Nickelodeon.
>>>Whats your vdr version?
>>>>From 1.3.32 changelog:
>>>- Changed the audio PID language codes to hold up to two 3 letter 
>>>codes, separated
>>>  by '+', to store separate languages broadcast in two 
>>channel audio mode.
>>>Works fine for me at Eurosport from 1W (chooses finnish 
>>audio as it is 
>>I am running 1.3.23 here, guess I have to upgrade then ....
>>I completely missed that changelog, sorry.

More information about the vdr mailing list