[FFmpeg-devel] [RFC] Frame rate emulation

Michael Niedermayer michaelni
Thu Jun 7 12:13:19 CEST 2007


On Wed, Jun 06, 2007 at 03:31:03PM -0300, Ramiro Ribeiro Polla wrote:
> Hello,
> x11grab provides its own frame rate emulation inside its read_frame 
> function. Many other grab formats will need it (GDI, VFW...), so it 
> would be best to make a format level frame rate emulation in FFmpeg, and 
> not each demuxer (also I believe they don't belong in the demuxers 
> themselves).
> FFmpeg already provides a frame rate emulation (added for DV), but it 
> works depending on a codec's demand, and not at a format level, like 
> avcodec.h says:
>     /**
>      * Frame rate emulation. If not zero, the lower layer (i.e. format 
> handler)
>      * has to read frames at native frame rate.
>      * - encoding: Set by user.
>      * - decoding: unused
>      */
> It's in Fabrice's TODO "suppress rate_emu from AVCodecContext".
> I don't know DV's needs for rate emulation, but couldn't it be passed to 
> ffmpeg.c's AVOutputStream instead of AVCodecContext? It would depend on 
> the format then, and not the codec.
> Also, I plan to add that to AVInputStream, right before av_read_frame, 
> where it will be useful for grabbing demuxers.
> Can there be 2 places where rate emulation occurs (reading from the 
> format, and writing to the codec)?
> Is it ok for DV for the rate emulation to occur at writing to the output 
> format, so it's checked in AVOutputStream?

first, AVInputStream / AVOutputStream are private structs of ffmpeg.c
libav* is used by more than just ffmpeg.c thus moving essential 
functionality into ffmpeg.c is not ok

second, its the input formats / demuxers job to read the frames properly
that includes reading them at the proper time for realtime stuff, sane
capture APIs should provide the needed functionality to capture at a specific
time. simply waiting in ffmpeg.c and then calling the demuxer is a incredibly
inaccurate way to do it, keep in mind ffmpeg does encoding, writeing and
others too, using a seperate thread would probably be needed ...

Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The worst form of inequality is to try to make unequal things equal.
-- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070607/0d0bb18b/attachment.pgp>

More information about the ffmpeg-devel mailing list