[vdr] cAudioRepacker error (was: xine plugin sync problems on
analog channels)
Cristiano
c.bozzi at meta.cpr.it
Tue Nov 29 13:07:50 CET 2005
Reinhard, thansk for you response but;
>> I am having some problem with vdr xine and analogtv plugin.
>>
>> I have a client-server vdr installation based on vdr 1.3.34, xine
>> 0.7.6 plugin, when I select a DVB channel I have no problems but if I
>> select an analog channel (stream generated by analogtv plugin 0.9.37
>> with ivtv 0.4.0 and PVR 150 card) I had some sync problem: here is the
>> xine log:
>>
>> audio jump, diff=-51840
>> audio_out: inserting 27627 0-frames to fill a gap of 51815 pts
>> video jump
>> bad_frame
>> video jump
>> video jump
>> bad_frame
>> video_out: throwing away image with pts 653020 because it's too old
>> (diff : 6489
>> 9).
>> 200 frames delivered, 14 frames skipped, 1 frames discarded
>> video_out: throwing away image with pts 2753839 because it's too old
>> (diff : 418
>> 6).
>> bad_frame
>> bad_frame
>> video jump
>> bad_frame
>> bad_frame
>> audio jump, diff=-51850
>> audio_out: inserting 27655 0-frames to fill a gap of 51866 pts
>> video jump
>> bad_frame
>> video jump
>> bad_frame
>> bad_frame
>> 200 frames delivered, 7 frames skipped, 1 frames discarded
>> video_out: throwing away image with pts 5052089 because it's too old
>> (diff : 4544).
>> 200 frames delivered, 0 frames skipped, 1 frames discarded
>> bad_frame
>> audio jump, diff=-45370
>> audio_out: inserting 24197 0-frames to fill a gap of 45382 pts
>> video jump
>> video jump
>> video jump
>> bad_frame
>> video_out: throwing away image with pts 6157260 because it's too old
>> (diff : 54139).
>>
>> Searching on the vdr mailing list I found a thread ("problem
>> vdr-xine-0.7.3 plugin") that seems to be related to this issue.
>> I tried to "play" with WRAP_THRESHOLD values without good results
>>
>> Did you have any suggestion?
>
>
> Have a look into xineDevice.c, cXineDevice::PlayCommon3() and comment
> out the first "if (0)" (i. e. => "// if (0)"). This enables logging of
> PTS values on console and you can check the offset between audio and
> video PTS as well as the offset to xine's metronom.
>
> The offset to xine must allways be positive and should be around 60000
> pts (= 2/3 seconds). If it gets too small or even negative, then xine
> will get buffer underruns which may cause the above issue.
>
> Another parameter to play with is vdr-xine's prebuffer setting. If you
> enlarge the setting then the above offset to xine should enlarge, too.
> But there are some drawbacks: when VDR cannot dispose its data to the
> device, it clears the device (after consecutive poll timeouts) which
> discards the buffers and causes vdr-xine to setup the prebuffer again
> and again.
>
> Especially the analogtv plugin uses "little" buffers for the encoder and
> therefore it is likely that vdr-xine's prebuffering overflows the
> encoder buffers which are then in turn cleared. The result is that there
> is almost no buffer although vdr-xine thinks to have a reasonable sized
> one (it's on my todolist to change prebuffering to consider xine's
> metronom).
>
> For any reason (I still haven't discovered why) there is a difference in
> the achieveable buffer size when xine is already connected to vdr-xine
> and you switch to an analogtv channel respectively when xine connects to
> vdr-xine after VDR was tuned to the analogtv channel. Most often the
> latter works without the above mentioned issue.
>
I tried to "play" with buffers values and other parameters without any
good results.
However I discovered a new interesting vdr log messages :
...
vdr[7985]: cAudioRepacker(0xC0): skipped 288 bytes to sync on next audio
frame
vdr[7985]: cAudioRepacker(0xC0): skipped 288 bytes to sync on next audio
frame
...
So, the problem seems to be related to vdr AudioRepacker, did you have
any suggestion?
I tried a lot of vdr versions with the same issue.
Thanks
Cristiano
More information about the vdr
mailing list