[MPlayer-dev-eng] OGG Text stream quirks

Jarrod Johnson jbj-mplayer at ura.dnsalias.org
Sun Oct 5 21:10:47 CEST 2003


Jarrod Johnson wrote:

> After modifying my ogmmerge to do the right thing with text streams 
> (to not insert blank entries between every text stream entry), 
> ogg_demux effectively produced the same annoying behavior of blanking 
> every sub before showing the next entry, which is annoying in cases 
> where you want more text to appear on screen in addition to existing 
> text without it blinking out for the transition.  Example srt to 
> demonstrate:
>
> 1
> 00:00:01,000 --> 00:00:04,000
> TEST
>
>
> 2
> 00:00:04,000 --> 00:00:07,000
> TEST
> SUB
>
> Put that into a srt and use -sub to see what I think is correct to 
> happen, then mux it into an ogm to see what actually happen.
> (to only show the mplayer demux_ogg issue, ogmtools has to be compiled 
> with -DOMITEMPTYPACKET)
>
> From my 2 minute look at things, it seems that the sub on screen is 
> cleared before checking to see if the next entry provides an immediate 
> suitable replacement that might work better than a blank to acheive 
> the subber's desired effect.  My quick and dirty patch simply delays 
> the clear_sub by a millisecond, having the effect of delaying the 
> clearing of subs without immediate subsequent entry (not perceptable), 
> but giving the stream an opportunity to provide a replacement and 
> avoid an incorrect clear_sub.  Something worth considering...
>
>
> --- MPlayer-0.92/libmpdemux/demux_ogg.c 2003-10-05 10:52:32.000000000 
> -0400
> +++ MPlayer-0.92.fixed/libmpdemux/demux_ogg.c   2003-08-09 
> 10:12:34.000000000 -0400
> @@ -217,7 +217,7 @@
>       if(pack->granulepos == -1)
>         pack->granulepos = os->lastpos + os->lastsize;
>       pts = (float)pack->granulepos/(float)os->samplerate;
> -      clear_sub = 0.001 + pts + (float)duration/1000.0;
> +      clear_sub = pts + (float)duration/1000.0;
>     }
>     while (1) {
>       int c = packet[lcv++];
>
> _______________________________________________
> MPlayer-dev-eng mailing list
> MPlayer-dev-eng at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng

Whoops, the patch is backwards, here is what I meant:
diff -urN MPlayer-0.92/libmpdemux/demux_ogg.c 
MPlayer-0.92.fixed/libmpdemux/demux_ogg.c
--- MPlayer-0.92/libmpdemux/demux_ogg.c 2003-08-09 10:12:34.000000000 -0400
+++ MPlayer-0.92.fixed/libmpdemux/demux_ogg.c   2003-10-05 
10:52:32.000000000 -0400
@@ -217,7 +217,7 @@
       if(pack->granulepos == -1)
         pack->granulepos = os->lastpos + os->lastsize;
       pts = (float)pack->granulepos/(float)os->samplerate;
-      clear_sub = pts + (float)duration/1000.0;
+      clear_sub = 0.001 + pts + (float)duration/1000.0;
     }
     while (1) {
       int c = packet[lcv++];



More information about the MPlayer-dev-eng mailing list