[FFmpeg-devel] H264 video and AVPacket::duration

Michael Niedermayer michaelni at gmx.at
Wed Nov 20 23:35:23 CET 2013


On Wed, Nov 20, 2013 at 11:02:10AM -0800, Alex Sukhanov wrote:
> On Tue, Nov 19, 2013 at 5:58 PM, Michael Niedermayer <michaelni at gmx.at>wrote:
> 
> > On Tue, Nov 19, 2013 at 02:27:55PM -0800, Alex Sukhanov wrote:
> > > Hi Michael and ffmpeg-devel,
> > >
> > > I recently found that for H264 video ffmpeg demuxers and ffprobe doesn't
> > > set AVPacket::duration field.
> > > This is typical ffprobe output for H264 video packed into FLV container:
> > >
> > >
> > packet|codec_type=audio|stream_index=1|pts=0|pts_time=0.000000|dts=0|dts_time=0.000000|duration=23|duration_time=0.023000|convergence_duration=N/A|convergence_duration_time=N/A|size=9|pos=103|flags=K_
> > >
> > *packet|codec_type=video|stream_index=0|pts=0|pts_time=0.000000|dts=0|dts_time=0.000000|duration=N/A|duration_time=N/A|convergence_duration=N/A|convergence_duration_time=N/A|size=4188|pos=132|flags=K_*
> > >
> > packet|codec_type=audio|stream_index=1|pts=23|pts_time=0.023000|dts=23|dts_time=0.023000|duration=23|duration_time=0.023000|convergence_duration=N/A|convergence_duration_time=N/A|size=9|pos=4337|flags=K_
> > >
> > *packet|codec_type=video|stream_index=0|pts=37|pts_time=0.037000|dts=37|dts_time=0.037000|duration=N/A|duration_time=N/A|convergence_duration=N/A|convergence_duration_time=N/A|size=43|pos=4366|flags=__*
> > >
> > packet|codec_type=audio|stream_index=1|pts=46|pts_time=0.046000|dts=46|dts_time=0.046000|duration=23|duration_time=0.023000|convergence_duration=N/A|convergence_duration_time=N/A|size=9|pos=4426|flags=K_
> > >
> > packet|codec_type=audio|stream_index=1|pts=70|pts_time=0.070000|dts=70|dts_time=0.070000|duration=23|duration_time=0.023000|convergence_duration=N/A|convergence_duration_time=N/A|size=56|pos=4452|flags=K_
> > >
> > *packet|codec_type=video|stream_index=0|pts=73|pts_time=0.073000|dts=73|dts_time=0.073000|duration=N/A|duration_time=N/A|convergence_duration=N/A|convergence_duration_time=N/A|size=26|pos=4528|flags=__*
> > >
> > packet|codec_type=audio|stream_index=1|pts=93|pts_time=0.093000|dts=93|dts_time=0.093000|duration=23|duration_time=0.023000|convergence_duration=N/A|convergence_duration_time=N/A|size=607|pos=4571|flags=K_
> > >
> > *packet|codec_type=video|stream_index=0|pts=110|pts_time=0.110000|dts=110|dts_time=0.110000|duration=N/A|duration_time=N/A|convergence_duration=N/A|convergence_duration_time=N/A|size=31|pos=5198|flags=__*
> > >
> > packet|codec_type=audio|stream_index=1|pts=116|pts_time=0.116000|dts=116|dts_time=0.116000|duration=23|duration_time=0.023000|convergence_duration=N/A|convergence_duration_time=N/A|size=599|pos=5246|flags=K_
> > >
> > packet|codec_type=audio|stream_index=1|pts=139|pts_time=0.139000|dts=139|dts_time=0.139000|duration=23|duration_time=0.023000|convergence_duration=N/A|convergence_duration_time=N/A|size=611|pos=5862|flags=K_
> > >
> > >
> > > I found following patch, which may be related:
> > >
> > http://git.videolan.org/?p=ffmpeg.git;a=commit;h=497431a5b645ffc39cf3acbd333c9ff0f3031adb
> > > I understand the problem with interlaced video  which you fixed in this
> > > patch, but I wanted to ask you If it's possible to move back calculation
> > of
> > > AVPacket::duration for codecs which support Interlace?
> > >
> > > I would like to solve my problem and rollback aforementioned patch, but
> > > before that I wanted to check with you and probably encourage some
> > > discussion.
> > > What do you think? Should I elaborate a fix in different way?
> >
> > if you have a file with mixed interlaced and progressive packets
> > does reverting the commit produce correct durations?
> > what if a parser is initialized ?
> >
> > also can you share the/a file that is affected (its always useful
> > if everyone can look at the same data insteda of everyone using a
> > different file)
> >
> > [...]
> > --
> > Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
> >
> > it is not once nor twice but times without number that the same ideas make
> > their appearance in the world. -- Aristotle
> >
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel at ffmpeg.org
> > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > Hi,
> 
> I was told that I can share file only with Michael. File sent directly to
> him. Sorry that I can not share it with everyone.
> I had some time yesterday to study FFmpeg version which we use currently
> (It's a few years old), and I found that we modified our FFmpeg and moved
> AVPacket::duration computation back. Now we are updating FFmpeg and we
> faced with this problem again. As long as we computed AVPacket::duration
> all the time, looks like it's safe to rollback
> http://git.videolan.org/?p=ffmpeg.git;a=commit;h=497431a5b645ffc39cf3acbd333c9ff0f3031adb

what about PAFF
PAFF means mixed fields and frames
the code sets duration to a constant, how is a constant going to
equal 2 different durations ?
also a packet can contain a frame that is supposed to be displayed
for 3 fields time
i must be missing something, as to me it looks like this works just
because such cases are rare


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When the tyrant has disposed of foreign enemies by conquest or treaty, and
there is nothing more to fear from them, then he is always stirring up
some war or other, in order that the people may require a leader. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20131120/5a9ea5b0/attachment.asc>


More information about the ffmpeg-devel mailing list