[vdr] ERROR: can't set PID xxxx on device y
Klaus Schmidinger
Klaus.Schmidinger at cadsoft.de
Sat Feb 16 16:12:47 CET 2008
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.
Klaus
More information about the vdr
mailing list