LAVF/FFMS input support, native VFR timestamp handling
authorKieran Kunhya <kieran@kunhya.com>
Mon, 28 Dec 2009 15:42:17 +0000 (10:42 -0500)
committerJason Garrett-Glaser <darkshikari@gmail.com>
Thu, 14 Jan 2010 04:33:23 +0000 (23:33 -0500)
commit8b9dcd8d50be201f1bedc9b19331432969f37d98
tree2a9b7eedbf24b1fc34d8c6c41e88992b4b109d19
parent27355a2ba90516b0c280e026eb9c35fbf5f27a57
LAVF/FFMS input support, native VFR timestamp handling
libx264 now takes three new API parameters.
b_vfr_input tells x264 whether or not the input is VFR, and is 1 by default.
i_timebase_num and i_timebase_den pass the timebase to x264.

x264_picture_t now returns the DTS of each frame: the calling app need not calculate it anymore.

Add libavformat and FFMS2 input support: requires libav* and ffms2 libraries respectively.
FFMS2 is _STRONGLY_ preferred over libavformat: we encourage all distributions to compile with FFMS2 support if at all possible.
FFMS2 can be found at http://code.google.com/p/ffmpegsource/.
--index, a new x264cli option, allows the user to store (or load) an FFMS2 index file for future use, to avoid re-indexing in the future.

Overhaul the muxers to pass through timestamps instead of assuming CFR.
Also overhaul muxers to correctly use b_annexb and b_repeat_headers to simplify the code.
Remove VFW input support, since it's now pretty much redundant with native AVS support and LAVF support.
Finally, overhaul a large part of the x264cli internals.

--force-cfr, a new x264cli option, allows the user to force the old method of timestamp handling.  May be useful in case of a source with broken timestamps.
Avisynth, YUV, and Y4M input are all still CFR.  LAVF or FFMS2 must be used for VFR support.

Do note that this patch does *not* add VFR ratecontrol yet.
Support for telecined input is also somewhat dubious at the moment.

Large parts of this patch by Mike Gurlitz <mike.gurlitz@gmail.com>, Steven Walters <kemuri9@gmail.com>, and Yusuke Nakamura <muken.the.vfrmaniac@gmail.com>.
27 files changed:
Makefile
common/common.c
common/common.h
common/frame.c
common/frame.h
configure
encoder/encoder.c
encoder/set.c
encoder/slicetype.c
input/avs.c
input/ffms.c [new file with mode: 0644]
input/input.h
input/lavf.c [new file with mode: 0644]
input/thread.c
input/vfw.c [deleted file]
input/y4m.c
input/yuv.c
output/flv.c
output/flv_bytestream.c
output/matroska.c
output/matroska_ebml.c
output/matroska_ebml.h
output/mp4.c
output/output.h
output/raw.c
x264.c
x264.h