[FFmpeg-devel] Patch for "non monotone timestamp" error

Diep Ho DHo
Fri Aug 1 09:43:33 CEST 2008


Sorry for hijacking a topic. I'm  new. 

 

I reiterate this topic because I still do not understand why the patch
is rejected. Was the old code try to detect a b-frame? If yes, this
should be patched. 

 

Thanks in advance for clarifying this.

 

Diep

 

---------------------------------------------------------------

 

Hello,

 

I'm new. I made the following test of ffmpeg and got the "non monotone

timestamps".

 

 

========================================================================

ffmpeg -i test.MPG  -acodec copy -vcodec copy -b 600k -y Y.mpg | & more

------------------------------------------------------------------------

--

FFmpeg version SVN-r12230, Copyright (c) 2000-2008 Fabrice Bellard, et

al.

  configuration: --enable-libmp3lame --enable-pp --enable-gpl

--enable-x11grab

  libavutil version: 49.6.0

  libavcodec version: 51.50.1

  libavformat version: 52.7.0

  libavdevice version: 52.0.0

  built on Feb 26 2008 15:46:55, gcc: 4.1.2 20061115 (prerelease)

(Debian 4.1.1-21)

Input #0, mpeg, from 'test.MPG':

  Duration: 00:14:59.9, start: 38312.031289, bitrate: 635 kb/s

    Stream #0.0[0x1e0]: Video: mpeg1video, yuv420p, 352x288 [PAR 1:1 DAR

11:9], 104857 kb/s, 25.00 tb(r)

    Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, mono, 32 kb/s

Output #0, mpeg, to 'Y.mpg':

    Stream #0.0: Video: mpeg1video, yuv420p, 352x288 [PAR 0:1 DAR 0:1],

q=2-31, 104857 kb/s, 25.00 tb(c)

    Stream #0.1: Audio: mp2, 48000 Hz, mono, 32 kb/s

Stream mapping:

  Stream #0.0 -> #0.0

  Stream #0.1 -> #0.1

Press [q] to stop encoding

error, non monotone timestamps 21600 >= 21600

av_interleaved_write_frame(): Error while opening file

========================================================================

 

 

 

After taking a long look inside the ffmpeg codes, I found a weird line

and proposes the following patch. I think that is a wrong test for

b-frames. 

 

 

 

Index: libavformat/utils.c

===================================================================

--- libavformat/utils.c (revision 14487)

+++ libavformat/utils.c (working copy)

@@ -792,7 +792,7 @@

     /* XXX: need has_b_frame, but cannot get it if the codec is

         not initialized */

     if (delay &&

-        pc && pc->pict_type != FF_B_TYPE)

+        pc && pc->pict_type == FF_B_TYPE)

         presentation_delayed = 1;

     /* This may be redundant, but it should not hurt. */

     if(pkt->dts != AV_NOPTS_VALUE && pkt->pts != AV_NOPTS_VALUE &&

pkt->pts > pkt->dts)

 

 

Best regards,

 

Ngoc-Diep Ho

 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: bframes_test.patch
Type: application/octet-stream
Size: 574 bytes
Desc: bframes_test.patch
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20080801/307efa5a/attachment.obj>



More information about the ffmpeg-devel mailing list