[MPlayer-dev-eng] Re:[PATCH] Skipped subtitles in first part of DVD
Nico Sabbi
nicola_sabbi at fastwebnet.it
Sun Oct 1 11:43:19 CEST 2006
Olaf Mandel wrote:
>-----BEGIN PGP SIGNED MESSAGE-----
>Hash: SHA1
>
>Hello,
>
>let me try again, this time with the patch actually part of the mail body...
>
>
>
>>if a DVD (or any MPEG?) is played back with subtitles, it can happen that
>>several of the first subtitles are not displayed. In mplayer this can be
>>corrected by seeking in the movie, but there is no workaround for
>>mencoder.
>>
>>The problem is in the MPEG-demuxer in demux_mpg_open(), where repeated
>>calls to ds_fill_buffer(demuxer->video) not only fill the video stream,
>>but sometimes also the subtitle stream. These packets need to be removed
>>from the stream, otherwise all subtitles before the one from the forgotten
>>packet are dropped.
>>
>>Something similar seems to happen in demux_seek_mpg(), but I have not seen
>>that bug and cannot say if the second added line in the patch is needed or
>>not. Could someone who knows the demuxer please look at it?
>>
>>Thanks,
>>Olaf Mandel
>>
>>
>- --
>Olaf Mandel eMail Olaf at Mandel.name
>
>Index: libmpdemux/demux_mpg.c
>===================================================================
>- --- libmpdemux/demux_mpg.c (revision 20009)
>+++ libmpdemux/demux_mpg.c (working copy)
>@@ -135,6 +135,7 @@
> if (mpg_d->final_pts > 3 * half_pts || mpg_d->final_pts < 1.5 *
>half_pts) { mpg_d->has_valid_timestamps = 0;
> }
>+ ds_free_packs(demuxer->sub);
> ds_free_packs(demuxer->audio);
> ds_free_packs(demuxer->video);
> demuxer->stream->eof=0; // clear eof flag
>@@ -789,6 +790,7 @@
> //prepare another seek because we are off by more than 0.5s
> if(mpg_d) {
> newpos += (newpts - mpg_d->last_pts) * (newpos - oldpos) /
>(mpg_d->last_pts - oldpts);
>+ ds_free_packs(demuxer->sub); //Unsure: is this necessary?
> ds_free_packs(d_audio);
> ds_free_packs(d_video);
> demuxer->stream->eof=0; // clear eof flag
>
>
>
thanks, applied
More information about the MPlayer-dev-eng
mailing list