[MPlayer-users] -ss sometimes jumping dramatically in some mpg/mpeg2files

Nico Sabbi nsabbi at email.it
Mon Jul 4 18:20:11 CEST 2005


Heitzso wrote:

> I've been digging through the mplayer code to see why some -ss seeks
> go bonkers in some of my video files, but not in most of them.
>
> The problem arises from my mpg(2) files not having a pts for mplayer
> to find in the last 500,000 bytes of the file.  This causes mplayer to 
> fallback
> to guess-timating where to seek into the file based on the video bit 
> rate.
> But mplex stuck the max bit rate into the video file header (assume, 
> based
> on other emails in transcode list) which is 9000, but that's twice the
> average bit rate and therefore mplayer easily falls off the cliff (so 
> to speak)
> when trying to seek into the latter part of the video file.
>
> I backed up that 500,000 to 1,000,000 and now that class of seek problem
> went away.  This is any easy fix in my case because I know my video 
> files are
> all larger than 1,000,000 bytes.  A more elegant fix would be to 
> insure that
> we haven't pushed into a negative number.  Anyway, the fix should be
> applied to demux_mpg.c, around line 110:
>
> int demux_mpg_open (demuxer_t * demuxer) {
>    stream_t *s = demuxer->stream;
>    off_t pos = stream_tell (s);
>    off_t end_seq_start = demuxer->movi_end - 1000000;    // 500000 is 
> a wild guess
>
> Note this is not patchable, I reformatted the C files to correct
> indenting.  But the above mod is certainly simple enough for
> someone to change by hand.
>
> Note the "500000 is a wild guess".  That was certainly a clue for me.
>
> ANYWAY,
>
> A better code sequence would be to calculate the end_seq_start then
> test to see if it is less than 0, and, if it is, to recalculate as ?? 
> 1% of total
> length, or some other? algorithm.  IF the powers that be would like
> me to mod that one line in an official not-re-formatted version of this
> file and submit a simple patch I will.  Let me know off this list and 
> I'll
> set it up and change the wild guess number at the same time.
>
> If anyone knows why backing up to 1,000,000 char before the end and
> then looking for the pts is problematic please let me know.
>
> Thanks,
> Heitzso
>

the proper patch would be: implement -idx scanning all pes headers and 
storing
a map of filepos => "sane" pts (or, even better, the other way around),
where as "sane" I mean a translated pts when/if the timer wraps around.
Anything else is just a waste of time
 
 
 --
 Email.it, the professional e-mail, gratis per te: http://www.email.it/f
 
 Sponsor:
 Visita aziendeinaffari.it, troverai tutte le aziende industriali, artigianali e di servizi del Canavese, per ogni tua esigenza 
 Clicca qui: http://adv.email.it/cgi-bin/foclick.cgi?mid=3607&d=4-7




More information about the MPlayer-users mailing list