[vdr] ERROR: can't set PID xxxx on device y

Petri Helin phelin at googlemail.com
Sat Feb 16 17:46:58 CET 2008


Klaus Schmidinger wrote:
> On 02/09/08 16:36, Klaus Schmidinger wrote:
>> On 01/06/08 23:57, Reinhard Nissl wrote:
>>> Hi,
>>>
>>> Petri Helin schrieb:
>>>
>>>> since VDR became subtitles aware some months ago, I have been getting 
>>>> this kind of entries in the log:
>>>>
>>>> Jan  6 23:02:48 vdr vdr: [4506] ERROR: can't set PID 2027 on device  9
>>>>
>>>> PID 2027 is for a finnish subtitles stream.
>>>>
>>>> I cannot see anything failing or such when this entry appears, but just 
>>>> thought to let Klaus know about it, in case it would make some sense to him.
>>> I came across this log message today, too. Looks like
>>> SetCurrentSubtitleTrack() calls AttachReceiver() on the
>>> PrimaryDevice() which is cXineDevice in my case.
>>>
>>>> (gdb) bt
>>>> #0  0x080bbabb in cDevice::AddPid (this=0xb44c49f8, Pid=131, PidType=ptOther) at device.c:612
>>>> #1  0x080bbc00 in cDevice::AttachReceiver (this=0xb44c49f8, Receiver=0xb44e2078) at device.c:1502
>>>> #2  0x080be272 in cDevice::SetCurrentSubtitleTrack (this=0xb44c49f8, Type=ttSubtitle, Manual=false) at device.c:1052
>>>> #3  0x080be3b4 in cDevice::EnsureSubtitleTrack (this=0xb44c49f8) at device.c:1104
>>>> #4  0x080be58d in cDevice::SetAvailableTrack (this=0xb44c49f8, Type=ttSubtitle, Index=0, Id=131, Language=0x82529c8 "deu", Description=0x0) at device.c:984
>>>> #5  0x080bf0cb in cDevice::SetChannel (this=0xb44c49f8, Channel=0x82526c8, LiveView=true) at device.c:845
>>>> #6  0x080bf1ae in cDevice::SwitchChannel (this=0xb44c49f8, Channel=0x82526c8, LiveView=true) at device.c:735
>>>> #7  0x080a59bd in cChannels::SwitchTo (this=0x81a9880, Number=2) at channels.c:1201
>>>> #8  0x08158988 in main (argc=14, argv=0xbf993d34) at vdr.c:762
>>> Looks like Transferring() isn't set at that time and therefore a
>>> cLiveSubtitle instance is created although none is needed in
>>> transfer mode (which is the only way how my setup works).
>>>
>>>> 1048      if (currentSubtitleTrack != ttNone && !Replaying() && !Transferring()) {
>>>> 1049         const tTrackId *TrackId = GetTrack(currentSubtitleTrack);
>>>> 1050         if (TrackId && TrackId->id) {
>>>> 1051            liveSubtitle = new cLiveSubtitle(TrackId->id);
>>>> 1052            AttachReceiver(liveSubtitle);
>>>> 1053            }
>>>> 1054         }
>> SetChannel() in live mode triggers a Transfer-Mode, but that is actually
>> only started after SetChannel() has ended. Therefore, as you correctly
>> pointed out, Transferring is not yet set in EnsureSubtitleTrack().
>>
>> Maybe the sequence
>>
>>         if (!NeedsTransferMode)
>>            EnsureAudioTrack(true);
>>         EnsureSubtitleTrack();
>>
>> should be changed to
>>
>>         if (!NeedsTransferMode) {
>>            EnsureAudioTrack(true);
>>            EnsureSubtitleTrack();
>>            }
>>
>>
>> Could you please test this?
>>
>> Klaus
> 
> Still waiting for verification.
> 

Sorry, had forgotten this... I made the change you suggested in 
device.c, but I am still seeing the error message.

-Petri



More information about the vdr mailing list