From 30011bf20109eef1a0f9ee949b19f9998ad88663 Mon Sep 17 00:00:00 2001 From: Aaron Colwell Date: Sun, 18 Mar 2012 20:03:00 -0700 Subject: vp8: avoid race condition on segment map. This change avoids accessing the segment map of the previous frame if segmentation is not enabled for the current frame. The caller of decode_mb_mode() only calls ff_thread_await_progress() on the reference segmentation index array if segmentation is enabled, so Chromium's TSAN will report a race when accessing this data while segmentation is not enabled. Signed-off-by: Ronald S. Bultje --- libavcodec/vp8.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c index b5062e6696..36518d5f7e 100644 --- a/libavcodec/vp8.c +++ b/libavcodec/vp8.c @@ -641,7 +641,7 @@ void decode_mb_mode(VP8Context *s, VP8Macroblock *mb, int mb_x, int mb_y, uint8_ if (s->segmentation.update_map) *segment = vp8_rac_get_tree(c, vp8_segmentid_tree, s->prob->segmentid); - else + else if (s->segmentation.enabled) *segment = ref ? *ref : *segment; s->segment = *segment; -- cgit v1.2.3 From b36872bdb64e6f3b2ae60a12cd904ebce80a10e8 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Sun, 18 Mar 2012 19:50:20 +0000 Subject: FATE: add test for adpcm-ea-maxis-xa Signed-off-by: Paul B Mahol Signed-off-by: Justin Ruggles --- tests/fate/adpcm.mak | 3 +++ tests/ref/fate/adpcm-ea-maxis-xa | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 tests/ref/fate/adpcm-ea-maxis-xa diff --git a/tests/fate/adpcm.mak b/tests/fate/adpcm.mak index 202f0b2be0..5e41d6e18f 100644 --- a/tests/fate/adpcm.mak +++ b/tests/fate/adpcm.mak @@ -19,6 +19,9 @@ fate-adpcm-creative-8-4bit: CMD = md5 -i $(SAMPLES)/creative/BBC_4BIT.VOC -f s16 FATE_ADPCM += fate-adpcm-ea-mad-ea-r1 fate-adpcm-ea-mad-ea-r1: CMD = framecrc -i $(SAMPLES)/ea-mad/NFS6LogoE.mad +FATE_ADPCM += fate-adpcm-ea-maxis-xa +fate-adpcm-ea-maxis-xa: CMD = framecrc -i $(SAMPLES)/maxis-xa/SC2KBUG.XA -frames:a 30 + FATE_ADPCM += fate-adpcm-ea-tqi fate-adpcm-ea-tqi: CMD = framecrc -i $(SAMPLES)/ea-wve/networkBackbone-partial.wve -frames:v 26 diff --git a/tests/ref/fate/adpcm-ea-maxis-xa b/tests/ref/fate/adpcm-ea-maxis-xa new file mode 100644 index 0000000000..5d6b5c07dc --- /dev/null +++ b/tests/ref/fate/adpcm-ea-maxis-xa @@ -0,0 +1,31 @@ +#tb 0: 1/22050 +0, 0, 0, 28, 112, 0x291d1be4 +0, 28, 28, 28, 112, 0xf08d33cc +0, 56, 56, 28, 112, 0x5b1521de +0, 84, 84, 28, 112, 0x57d209f6 +0, 112, 112, 28, 112, 0x00000000 +0, 140, 140, 28, 112, 0xa15e03fc +0, 168, 168, 28, 112, 0x73a80bf4 +0, 196, 196, 28, 112, 0x916e03fc +0, 224, 224, 28, 112, 0xd92603fc +0, 252, 252, 28, 112, 0x097523dc +0, 280, 280, 28, 112, 0xf7be45ba +0, 308, 308, 28, 112, 0x0fed4db2 +0, 336, 336, 28, 112, 0x9fb41be4 +0, 364, 364, 28, 112, 0x819a0ff0 +0, 392, 392, 28, 112, 0xfe7f3fc0 +0, 420, 420, 28, 112, 0x281e1de2 +0, 448, 448, 28, 112, 0xa76605fa +0, 476, 476, 28, 112, 0x00000000 +0, 504, 504, 28, 112, 0xb84705fa +0, 532, 532, 28, 112, 0xdb5c0ff0 +0, 560, 560, 28, 112, 0xbc4305fa +0, 588, 588, 28, 112, 0x7c8305fa +0, 616, 616, 28, 112, 0x54ff21de +0, 644, 644, 28, 112, 0xc6c535ca +0, 672, 672, 28, 112, 0xa4123dc2 +0, 700, 700, 28, 112, 0x196523dc +0, 728, 728, 28, 112, 0x80ef25da +0, 756, 756, 28, 112, 0xdf742bd4 +0, 784, 784, 28, 112, 0xd78a21de +0, 812, 812, 28, 112, 0x191f0df2 -- cgit v1.2.3 From 791d6df4ae7334f5a68a2c1b82331848010b2d58 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Sun, 18 Mar 2012 21:04:08 +0000 Subject: FATE: change fate-maxis-xa to a normal demuxing test Signed-off-by: Paul B Mahol Signed-off-by: Justin Ruggles --- tests/fate/demux.mak | 2 +- tests/ref/fate/maxis-xa | 32 +++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/tests/fate/demux.mak b/tests/fate/demux.mak index d7dbdcdc7d..0f83c8dfce 100644 --- a/tests/fate/demux.mak +++ b/tests/fate/demux.mak @@ -38,7 +38,7 @@ FATE_TESTS += fate-lmlm4-demux fate-lmlm4-demux: CMD = framecrc -i $(SAMPLES)/lmlm4/LMLM4_CIFat30fps.divx -t 3 -acodec copy -vcodec copy FATE_TESTS += fate-maxis-xa -fate-maxis-xa: CMD = md5 -i $(SAMPLES)/maxis-xa/SC2KBUG.XA -f s16le +fate-maxis-xa: CMD = framecrc -i $(SAMPLES)/maxis-xa/SC2KBUG.XA -frames:a 30 -c:a copy FATE_TESTS += fate-mtv fate-mtv: CMD = framecrc -i $(SAMPLES)/mtv/comedian_auto-partial.mtv -acodec copy -pix_fmt rgb24 diff --git a/tests/ref/fate/maxis-xa b/tests/ref/fate/maxis-xa index 0dd23db827..debaaa5c81 100644 --- a/tests/ref/fate/maxis-xa +++ b/tests/ref/fate/maxis-xa @@ -1 +1,31 @@ -b4cd52fc080bffefeea94ce7c116046f +#tb 0: 1/22050 +0, 0, 0, 0, 30, 0x51750711 +0, 56, 56, 0, 30, 0x9ca20c2a +0, 112, 112, 0, 30, 0x7551081f +0, 168, 168, 0, 30, 0x09540063 +0, 224, 224, 0, 30, 0x02c40018 +0, 280, 280, 0, 30, 0x0f6c0117 +0, 336, 336, 0, 30, 0x2aab0315 +0, 392, 392, 0, 30, 0x0e6d0117 +0, 448, 448, 0, 30, 0x04770036 +0, 504, 504, 0, 30, 0x939c090f +0, 560, 560, 0, 30, 0xde511116 +0, 616, 616, 0, 30, 0x2f0f13f5 +0, 672, 672, 0, 30, 0x65bb0630 +0, 728, 728, 0, 30, 0x1f7a0333 +0, 784, 784, 0, 30, 0xa3d71008 +0, 840, 840, 0, 30, 0x69120801 +0, 896, 896, 0, 30, 0x1e7b0207 +0, 952, 952, 0, 30, 0x02c40018 +0, 1008, 1008, 0, 30, 0x0d050126 +0, 1064, 1064, 0, 30, 0x41c10333 +0, 1120, 1120, 0, 30, 0x16a10207 +0, 1176, 1176, 0, 30, 0x0f210207 +0, 1232, 1232, 0, 30, 0x4e4b073e +0, 1288, 1288, 0, 30, 0xa6f20d1a +0, 1344, 1344, 0, 30, 0xe1e40ff9 +0, 1400, 1400, 0, 30, 0x868b090f +0, 1456, 1456, 0, 30, 0x8c85091e +0, 1512, 1512, 0, 30, 0x5a21094b +0, 1568, 1568, 0, 30, 0x993c0900 +0, 1624, 1624, 0, 30, 0x5b6b04e6 -- cgit v1.2.3 From 713f3062a7284c72088f100788a130633f873a6e Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 18 Mar 2012 17:29:52 +0100 Subject: id3v2: set the keyframe flag on attached pictures. --- libavformat/id3v2.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavformat/id3v2.c b/libavformat/id3v2.c index 1f2c3d5437..13e5997259 100644 --- a/libavformat/id3v2.c +++ b/libavformat/id3v2.c @@ -724,6 +724,7 @@ int ff_id3v2_parse_apic(AVFormatContext *s, ID3v2ExtraMeta **extra_meta) st->attached_pic.size = apic->len; st->attached_pic.destruct = av_destruct_packet; st->attached_pic.stream_index = st->index; + st->attached_pic.flags |= AV_PKT_FLAG_KEY; apic->data = NULL; apic->len = 0; -- cgit v1.2.3 From 01fcc42b909e7328e177748ffb21f2846b924a09 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 18 Mar 2012 17:34:14 +0100 Subject: lavf: requeue attached pictures after seeking. This allows the caller to get them without special code even after seeking before receiving any data. --- libavformat/utils.c | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index f67d2d47c1..7fd425f1cc 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -515,10 +515,21 @@ static AVPacket *add_to_pktbuf(AVPacketList **packet_buffer, AVPacket *pkt, return &pktl->pkt; } +static void queue_attached_pictures(AVFormatContext *s) +{ + int i; + for (i = 0; i < s->nb_streams; i++) + if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC) { + AVPacket copy = s->streams[i]->attached_pic; + copy.destruct = NULL; + add_to_pktbuf(&s->raw_packet_buffer, ©, &s->raw_packet_buffer_end); + } +} + int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options) { AVFormatContext *s = *ps; - int i, ret = 0; + int ret = 0; AVDictionary *tmp = NULL; ID3v2ExtraMeta *id3v2_extra_meta = NULL; @@ -574,13 +585,7 @@ int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputForma goto fail; ff_id3v2_free_extra_meta(&id3v2_extra_meta); - /* queue attached pictures */ - for (i = 0; i < s->nb_streams; i++) - if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC) { - AVPacket copy = s->streams[i]->attached_pic; - copy.destruct = NULL; - add_to_pktbuf(&s->raw_packet_buffer, ©, &s->raw_packet_buffer_end); - } + queue_attached_pictures(s); if (s->pb && !s->data_offset) s->data_offset = avio_tell(s->pb); @@ -1711,7 +1716,8 @@ static int seek_frame_generic(AVFormatContext *s, return 0; } -int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) +static int seek_frame_internal(AVFormatContext *s, int stream_index, + int64_t timestamp, int flags) { int ret; AVStream *st; @@ -1754,14 +1760,29 @@ int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int f return -1; } +int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) +{ + int ret = seek_frame_internal(s, stream_index, timestamp, flags); + + if (ret >= 0) + queue_attached_pictures(s); + + return ret; +} + int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags) { if(min_ts > ts || max_ts < ts) return -1; if (s->iformat->read_seek2) { + int ret; ff_read_frame_flush(s); - return s->iformat->read_seek2(s, stream_index, min_ts, ts, max_ts, flags); + ret = s->iformat->read_seek2(s, stream_index, min_ts, ts, max_ts, flags); + + if (ret >= 0) + queue_attached_pictures(s); + return ret; } if(s->iformat->read_timestamp){ -- cgit v1.2.3 From 40b41be3fa6c5bc3b064ffec97096524ac33af4d Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 18 Mar 2012 17:35:49 +0100 Subject: lavf: use AVStream.discard to disable queueing attached pictures. --- libavformat/utils.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 7fd425f1cc..d17b5752f1 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -519,7 +519,8 @@ static void queue_attached_pictures(AVFormatContext *s) { int i; for (i = 0; i < s->nb_streams; i++) - if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC) { + if (s->streams[i]->disposition & AV_DISPOSITION_ATTACHED_PIC && + s->streams[i]->discard < AVDISCARD_ALL) { AVPacket copy = s->streams[i]->attached_pic; copy.destruct = NULL; add_to_pktbuf(&s->raw_packet_buffer, ©, &s->raw_packet_buffer_end); -- cgit v1.2.3 From 56266971043efab2050750e6f8484196286d7c03 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 14 Mar 2012 13:18:20 +0100 Subject: Move AVFormatContext/AVCodecContext option tables to separate files. This will allow us to automatically generate manpages for them. --- libavcodec/options.c | 371 +---------------------------------------- libavcodec/options_table.h | 391 ++++++++++++++++++++++++++++++++++++++++++++ libavformat/options.c | 41 +---- libavformat/options_table.h | 62 +++++++ 4 files changed, 458 insertions(+), 407 deletions(-) create mode 100644 libavcodec/options_table.h create mode 100644 libavformat/options_table.h diff --git a/libavcodec/options.c b/libavcodec/options.c index 51187b842c..abbca0bf24 100644 --- a/libavcodec/options.c +++ b/libavcodec/options.c @@ -30,6 +30,8 @@ #include "libavutil/opt.h" #include /* FLT_MIN, FLT_MAX */ +#include "options_table.h" + static const char* context_to_name(void* ptr) { AVCodecContext *avc= ptr; @@ -63,379 +65,12 @@ static const AVClass *codec_child_class_next(const AVClass *prev) return NULL; } -#define OFFSET(x) offsetof(AVCodecContext,x) -#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C -//these names are too long to be readable -#define V AV_OPT_FLAG_VIDEO_PARAM -#define A AV_OPT_FLAG_AUDIO_PARAM -#define S AV_OPT_FLAG_SUBTITLE_PARAM -#define E AV_OPT_FLAG_ENCODING_PARAM -#define D AV_OPT_FLAG_DECODING_PARAM - -#define AV_CODEC_DEFAULT_BITRATE 200*1000 - -static const AVOption options[]={ -{"b", "set bitrate (in bits/s)", OFFSET(bit_rate), AV_OPT_TYPE_INT, {.dbl = AV_CODEC_DEFAULT_BITRATE }, INT_MIN, INT_MAX, V|A|E}, -{"bt", "set video bitrate tolerance (in bits/s)", OFFSET(bit_rate_tolerance), AV_OPT_TYPE_INT, {.dbl = AV_CODEC_DEFAULT_BITRATE*20 }, 1, INT_MAX, V|E}, -{"flags", NULL, OFFSET(flags), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, 0, UINT_MAX, V|A|E|D, "flags"}, -{"mv4", "use four motion vector by macroblock (mpeg4)", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_4MV }, INT_MIN, INT_MAX, V|E, "flags"}, -{"qpel", "use 1/4 pel motion compensation", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_QPEL }, INT_MIN, INT_MAX, V|E, "flags"}, -{"loop", "use loop filter", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_LOOP_FILTER }, INT_MIN, INT_MAX, V|E, "flags"}, -{"qscale", "use fixed qscale", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_QSCALE }, INT_MIN, INT_MAX, 0, "flags"}, -{"gmc", "use gmc", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_GMC }, INT_MIN, INT_MAX, V|E, "flags"}, -{"mv0", "always try a mb with mv=<0,0>", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_MV0 }, INT_MIN, INT_MAX, V|E, "flags"}, -{"input_preserved", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INPUT_PRESERVED }, INT_MIN, INT_MAX, 0, "flags"}, -{"pass1", "use internal 2pass ratecontrol in first pass mode", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PASS1 }, INT_MIN, INT_MAX, 0, "flags"}, -{"pass2", "use internal 2pass ratecontrol in second pass mode", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PASS2 }, INT_MIN, INT_MAX, 0, "flags"}, -{"gray", "only decode/encode grayscale", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_GRAY }, INT_MIN, INT_MAX, V|E|D, "flags"}, -{"emu_edge", "don't draw edges", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_EMU_EDGE }, INT_MIN, INT_MAX, 0, "flags"}, -{"psnr", "error[?] variables will be set during encoding", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PSNR }, INT_MIN, INT_MAX, V|E, "flags"}, -{"truncated", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_TRUNCATED }, INT_MIN, INT_MAX, 0, "flags"}, -{"naq", "normalize adaptive quantization", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_NORMALIZE_AQP }, INT_MIN, INT_MAX, V|E, "flags"}, -{"ildct", "use interlaced dct", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INTERLACED_DCT }, INT_MIN, INT_MAX, V|E, "flags"}, -{"low_delay", "force low delay", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_LOW_DELAY }, INT_MIN, INT_MAX, V|D|E, "flags"}, -{"global_header", "place global headers in extradata instead of every keyframe", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_GLOBAL_HEADER }, INT_MIN, INT_MAX, V|A|E, "flags"}, -{"bitexact", "use only bitexact stuff (except (i)dct)", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_BITEXACT }, INT_MIN, INT_MAX, A|V|S|D|E, "flags"}, -{"aic", "h263 advanced intra coding / mpeg4 ac prediction", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_AC_PRED }, INT_MIN, INT_MAX, V|E, "flags"}, -#if FF_API_MPV_GLOBAL_OPTS -{"cbp", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_CBP_RD }, INT_MIN, INT_MAX, V|E, "flags"}, -{"qprd", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_QP_RD }, INT_MIN, INT_MAX, V|E, "flags"}, -#endif -{"ilme", "interlaced motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INTERLACED_ME }, INT_MIN, INT_MAX, V|E, "flags"}, -{"cgop", "closed gop", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_CLOSED_GOP }, INT_MIN, INT_MAX, V|E, "flags"}, -{"fast", "allow non spec compliant speedup tricks", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_FAST }, INT_MIN, INT_MAX, V|E, "flags2"}, -#if FF_API_MPV_GLOBAL_OPTS -{"sgop", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_STRICT_GOP }, INT_MIN, INT_MAX, V|E, "flags2"}, -#endif -{"noout", "skip bitstream encoding", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_NO_OUTPUT }, INT_MIN, INT_MAX, V|E, "flags2"}, -{"local_header", "place global headers at every keyframe instead of in extradata", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_LOCAL_HEADER }, INT_MIN, INT_MAX, V|E, "flags2"}, -#if FF_API_SUB_ID -{"sub_id", NULL, OFFSET(sub_id), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -#endif -{"me_method", "set motion estimation method", OFFSET(me_method), AV_OPT_TYPE_INT, {.dbl = ME_EPZS }, INT_MIN, INT_MAX, V|E, "me_method"}, -{"zero", "zero motion estimation (fastest)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_ZERO }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"full", "full motion estimation (slowest)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_FULL }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"epzs", "EPZS motion estimation (default)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_EPZS }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"esa", "esa motion estimation (alias for full)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_FULL }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"tesa", "tesa motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_TESA }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"dia", "dia motion estimation (alias for epzs)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_EPZS }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"log", "log motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_LOG }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"phods", "phods motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_PHODS }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"x1", "X1 motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_X1 }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"hex", "hex motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_HEX }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"umh", "umh motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_UMH }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"iter", "iter motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_ITER }, INT_MIN, INT_MAX, V|E, "me_method" }, -{"extradata_size", NULL, OFFSET(extradata_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"time_base", NULL, OFFSET(time_base), AV_OPT_TYPE_RATIONAL, {.dbl = 0}, INT_MIN, INT_MAX}, -{"g", "set the group of picture size", OFFSET(gop_size), AV_OPT_TYPE_INT, {.dbl = 12 }, INT_MIN, INT_MAX, V|E}, -{"ar", "set audio sampling rate (in Hz)", OFFSET(sample_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|D|E}, -{"ac", "set number of audio channels", OFFSET(channels), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|D|E}, -{"cutoff", "set cutoff bandwidth", OFFSET(cutoff), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|E}, -{"frame_size", NULL, OFFSET(frame_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|E}, -{"frame_number", NULL, OFFSET(frame_number), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"delay", NULL, OFFSET(delay), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"qcomp", "video quantizer scale compression (VBR)", OFFSET(qcompress), AV_OPT_TYPE_FLOAT, {.dbl = 0.5 }, -FLT_MAX, FLT_MAX, V|E}, -{"qblur", "video quantizer scale blur (VBR)", OFFSET(qblur), AV_OPT_TYPE_FLOAT, {.dbl = 0.5 }, -1, FLT_MAX, V|E}, -{"qmin", "min video quantizer scale (VBR)", OFFSET(qmin), AV_OPT_TYPE_INT, {.dbl = 2 }, -1, 69, V|E}, -{"qmax", "max video quantizer scale (VBR)", OFFSET(qmax), AV_OPT_TYPE_INT, {.dbl = 31 }, -1, 69, V|E}, -{"qdiff", "max difference between the quantizer scale (VBR)", OFFSET(max_qdiff), AV_OPT_TYPE_INT, {.dbl = 3 }, INT_MIN, INT_MAX, V|E}, -{"bf", "use 'frames' B frames", OFFSET(max_b_frames), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, -1, FF_MAX_B_FRAMES, V|E}, -{"b_qfactor", "qp factor between p and b frames", OFFSET(b_quant_factor), AV_OPT_TYPE_FLOAT, {.dbl = 1.25 }, -FLT_MAX, FLT_MAX, V|E}, -{"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, {.dbl = 0 }, INT_MIN, INT_MAX, V|E}, -{"ps", "rtp payload size in bytes", OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"mv_bits", NULL, OFFSET(mv_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"header_bits", NULL, OFFSET(header_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"i_tex_bits", NULL, OFFSET(i_tex_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"p_tex_bits", NULL, OFFSET(p_tex_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"i_count", NULL, OFFSET(i_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"p_count", NULL, OFFSET(p_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"skip_count", NULL, OFFSET(skip_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"misc_bits", NULL, OFFSET(misc_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"frame_bits", NULL, OFFSET(frame_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"codec_tag", NULL, OFFSET(codec_tag), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"bug", "workaround not auto detected encoder bugs", OFFSET(workaround_bugs), AV_OPT_TYPE_FLAGS, {.dbl = FF_BUG_AUTODETECT }, INT_MIN, INT_MAX, V|D, "bug"}, -{"autodetect", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_AUTODETECT }, INT_MIN, INT_MAX, V|D, "bug"}, -{"old_msmpeg4", "some old lavc generated msmpeg4v3 files (no autodetection)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_OLD_MSMPEG4 }, INT_MIN, INT_MAX, V|D, "bug"}, -{"xvid_ilace", "Xvid interlacing bug (autodetected if fourcc==XVIX)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_XVID_ILACE }, INT_MIN, INT_MAX, V|D, "bug"}, -{"ump4", "(autodetected if fourcc==UMP4)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_UMP4 }, INT_MIN, INT_MAX, V|D, "bug"}, -{"no_padding", "padding bug (autodetected)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_NO_PADDING }, INT_MIN, INT_MAX, V|D, "bug"}, -{"amv", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_AMV }, INT_MIN, INT_MAX, V|D, "bug"}, -{"ac_vlc", "illegal vlc bug (autodetected per fourcc)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_AC_VLC }, INT_MIN, INT_MAX, V|D, "bug"}, -{"qpel_chroma", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_QPEL_CHROMA }, INT_MIN, INT_MAX, V|D, "bug"}, -{"std_qpel", "old standard qpel (autodetected per fourcc/version)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_STD_QPEL }, INT_MIN, INT_MAX, V|D, "bug"}, -{"qpel_chroma2", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_QPEL_CHROMA2 }, INT_MIN, INT_MAX, V|D, "bug"}, -{"direct_blocksize", "direct-qpel-blocksize bug (autodetected per fourcc/version)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_DIRECT_BLOCKSIZE }, INT_MIN, INT_MAX, V|D, "bug"}, -{"edge", "edge padding bug (autodetected per fourcc/version)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_EDGE }, INT_MIN, INT_MAX, V|D, "bug"}, -{"hpel_chroma", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_HPEL_CHROMA }, INT_MIN, INT_MAX, V|D, "bug"}, -{"dc_clip", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_DC_CLIP }, INT_MIN, INT_MAX, V|D, "bug"}, -{"ms", "workaround various bugs in microsofts broken decoders", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_MS }, INT_MIN, INT_MAX, V|D, "bug"}, -{"trunc", "trancated frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_TRUNCATED}, INT_MIN, INT_MAX, V|D, "bug"}, -#if FF_API_MPV_GLOBAL_OPTS -{"lelim", "single coefficient elimination threshold for luminance (negative values also consider dc coefficient)", OFFSET(luma_elim_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"celim", "single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)", OFFSET(chroma_elim_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -#endif -{"strict", "how strictly to follow the standards", OFFSET(strict_std_compliance), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|V|D|E, "strict"}, -{"very", "strictly conform to a older more strict version of the spec or reference software", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_VERY_STRICT }, INT_MIN, INT_MAX, V|D|E, "strict"}, -{"strict", "strictly conform to all the things in the spec no matter what consequences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_STRICT }, INT_MIN, INT_MAX, V|D|E, "strict"}, -{"normal", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_NORMAL }, INT_MIN, INT_MAX, V|D|E, "strict"}, -{"unofficial", "allow unofficial extensions", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_UNOFFICIAL }, INT_MIN, INT_MAX, V|D|E, "strict"}, -{"experimental", "allow non standardized experimental things", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_EXPERIMENTAL }, INT_MIN, INT_MAX, V|D|E, "strict"}, -{"b_qoffset", "qp offset between P and B frames", OFFSET(b_quant_offset), AV_OPT_TYPE_FLOAT, {.dbl = 1.25 }, -FLT_MAX, FLT_MAX, V|E}, -{"err_detect", "set error detection flags", OFFSET(err_recognition), AV_OPT_TYPE_FLAGS, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, A|V|D, "err_detect"}, -{"crccheck", "verify embedded CRCs", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, V|D, "err_detect"}, -{"bitstream", "detect bitstream specification deviations", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_BITSTREAM }, INT_MIN, INT_MAX, V|D, "err_detect"}, -{"buffer", "detect improper bitstream length", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_BUFFER }, INT_MIN, INT_MAX, V|D, "err_detect"}, -{"explode", "abort decoding on minor error detection", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_EXPLODE }, INT_MIN, INT_MAX, V|D, "err_detect"}, -{"has_b_frames", NULL, OFFSET(has_b_frames), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"block_align", NULL, OFFSET(block_align), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"stats_out", NULL, OFFSET(stats_out), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX}, -{"stats_in", NULL, OFFSET(stats_in), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX}, -{"qsquish", "how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function)", OFFSET(rc_qsquish), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, 0, 99, V|E}, -{"rc_qmod_amp", "experimental quantizer modulation", OFFSET(rc_qmod_amp), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E}, -{"rc_qmod_freq", "experimental quantizer modulation", OFFSET(rc_qmod_freq), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"rc_override_count", NULL, OFFSET(rc_override_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"rc_eq", "set rate control equation", OFFSET(rc_eq), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, V|E}, -{"maxrate", "set max bitrate tolerance (in bits/s)", OFFSET(rc_max_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, -{"minrate", "set min bitrate tolerance (in bits/s)", OFFSET(rc_min_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, -{"bufsize", "set ratecontrol buffer size (in bits)", OFFSET(rc_buffer_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|V|E}, -{"rc_buf_aggressivity", "currently useless", OFFSET(rc_buffer_aggressivity), AV_OPT_TYPE_FLOAT, {.dbl = 1.0 }, -FLT_MAX, FLT_MAX, V|E}, -{"i_qfactor", "qp factor between P and I frames", OFFSET(i_quant_factor), AV_OPT_TYPE_FLOAT, {.dbl = -0.8 }, -FLT_MAX, FLT_MAX, V|E}, -{"i_qoffset", "qp offset between P and I frames", OFFSET(i_quant_offset), AV_OPT_TYPE_FLOAT, {.dbl = 0.0 }, -FLT_MAX, FLT_MAX, V|E}, -{"rc_init_cplx", "initial complexity for 1-pass encoding", OFFSET(rc_initial_cplx), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E}, -{"dct", "DCT algorithm", OFFSET(dct_algo), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, V|E, "dct"}, -{"auto", "autoselect a good one (default)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_AUTO }, INT_MIN, INT_MAX, V|E, "dct"}, -{"fastint", "fast integer", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_FASTINT }, INT_MIN, INT_MAX, V|E, "dct"}, -{"int", "accurate integer", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_INT }, INT_MIN, INT_MAX, V|E, "dct"}, -{"mmx", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_MMX }, INT_MIN, INT_MAX, V|E, "dct"}, -{"altivec", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_ALTIVEC }, INT_MIN, INT_MAX, V|E, "dct"}, -{"faan", "floating point AAN DCT", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_FAAN }, INT_MIN, INT_MAX, V|E, "dct"}, -{"lumi_mask", "compresses bright areas stronger than medium ones", OFFSET(lumi_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, -{"tcplx_mask", "temporal complexity masking", OFFSET(temporal_cplx_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, -{"scplx_mask", "spatial complexity masking", OFFSET(spatial_cplx_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, -{"p_mask", "inter masking", OFFSET(p_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, -{"dark_mask", "compresses dark areas stronger than medium ones", OFFSET(dark_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, -{"idct", "select IDCT implementation", OFFSET(idct_algo), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, V|E|D, "idct"}, -{"auto", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_AUTO }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"int", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_INT }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"simple", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLE }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"simplemmx", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEMMX }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"libmpeg2mmx", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_LIBMPEG2MMX }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"mmi", NULL, 0, AV_OPT_TYPE_CONST, { .dbl = FF_IDCT_MMI }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"arm", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_ARM }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"altivec", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_ALTIVEC }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"sh4", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SH4 }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"simplearm", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEARM }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"simplearmv5te", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEARMV5TE }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"simplearmv6", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEARMV6 }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"simpleneon", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLENEON }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"simplealpha", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEALPHA }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"h264", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_H264 }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"vp3", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_VP3 }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"ipp", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_IPP }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"xvidmmx", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_XVIDMMX }, INT_MIN, INT_MAX, V|E|D, "idct"}, -{"faani", "floating point AAN IDCT", 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_FAAN }, INT_MIN, INT_MAX, V|D|E, "idct"}, -{"slice_count", NULL, OFFSET(slice_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"ec", "set error concealment strategy", OFFSET(error_concealment), AV_OPT_TYPE_FLAGS, {.dbl = 3 }, INT_MIN, INT_MAX, V|D, "ec"}, -{"guess_mvs", "iterative motion vector (MV) search (slow)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_EC_GUESS_MVS }, INT_MIN, INT_MAX, V|D, "ec"}, -{"deblock", "use strong deblock filter for damaged MBs", 0, AV_OPT_TYPE_CONST, {.dbl = FF_EC_DEBLOCK }, INT_MIN, INT_MAX, V|D, "ec"}, -{"bits_per_coded_sample", NULL, OFFSET(bits_per_coded_sample), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"pred", "prediction method", OFFSET(prediction_method), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "pred"}, -{"left", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PRED_LEFT }, INT_MIN, INT_MAX, V|E, "pred"}, -{"plane", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PRED_PLANE }, INT_MIN, INT_MAX, V|E, "pred"}, -{"median", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PRED_MEDIAN }, INT_MIN, INT_MAX, V|E, "pred"}, -{"aspect", "sample aspect ratio", OFFSET(sample_aspect_ratio), AV_OPT_TYPE_RATIONAL, {.dbl = 0}, 0, 10, V|E}, -{"debug", "print specific debug info", OFFSET(debug), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, 0, INT_MAX, V|A|S|E|D, "debug"}, -{"pict", "picture info", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_PICT_INFO }, INT_MIN, INT_MAX, V|D, "debug"}, -{"rc", "rate control", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_RC }, INT_MIN, INT_MAX, V|E, "debug"}, -{"bitstream", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_BITSTREAM }, INT_MIN, INT_MAX, V|D, "debug"}, -{"mb_type", "macroblock (MB) type", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_MB_TYPE }, INT_MIN, INT_MAX, V|D, "debug"}, -{"qp", "per-block quantization parameter (QP)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_QP }, INT_MIN, INT_MAX, V|D, "debug"}, -{"mv", "motion vector", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_MV }, INT_MIN, INT_MAX, V|D, "debug"}, -{"dct_coeff", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_DCT_COEFF }, INT_MIN, INT_MAX, V|D, "debug"}, -{"skip", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_SKIP }, INT_MIN, INT_MAX, V|D, "debug"}, -{"startcode", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_STARTCODE }, INT_MIN, INT_MAX, V|D, "debug"}, -{"pts", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_PTS }, INT_MIN, INT_MAX, V|D, "debug"}, -{"er", "error recognition", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_ER }, INT_MIN, INT_MAX, V|D, "debug"}, -{"mmco", "memory management control operations (H.264)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_MMCO }, INT_MIN, INT_MAX, V|D, "debug"}, -{"bugs", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_BUGS }, INT_MIN, INT_MAX, V|D, "debug"}, -{"vis_qp", "visualize quantization parameter (QP), lower QP are tinted greener", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_QP }, INT_MIN, INT_MAX, V|D, "debug"}, -{"vis_mb_type", "visualize block types", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_MB_TYPE }, INT_MIN, INT_MAX, V|D, "debug"}, -{"buffers", "picture buffer allocations", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_BUFFERS }, INT_MIN, INT_MAX, V|D, "debug"}, -{"thread_ops", "threading operations", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_THREADS }, INT_MIN, INT_MAX, V|D, "debug"}, -{"vismv", "visualize motion vectors (MVs)", OFFSET(debug_mv), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, V|D, "debug_mv"}, -{"pf", "forward predicted MVs of P-frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_MV_P_FOR }, INT_MIN, INT_MAX, V|D, "debug_mv"}, -{"bf", "forward predicted MVs of B-frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_MV_B_FOR }, INT_MIN, INT_MAX, V|D, "debug_mv"}, -{"bb", "backward predicted MVs of B-frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_MV_B_BACK }, INT_MIN, INT_MAX, V|D, "debug_mv"}, -{"cmp", "full pel me compare function", OFFSET(me_cmp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"subcmp", "sub pel me compare function", OFFSET(me_sub_cmp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"mbcmp", "macroblock compare function", OFFSET(mb_cmp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"ildctcmp", "interlaced dct compare function", OFFSET(ildct_cmp), AV_OPT_TYPE_INT, {.dbl = FF_CMP_VSAD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"dia_size", "diamond type & size for motion estimation", OFFSET(dia_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"last_pred", "amount of motion predictors from the previous frame", OFFSET(last_predictor_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"preme", "pre motion estimation", OFFSET(pre_me), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"precmp", "pre motion estimation compare function", OFFSET(me_pre_cmp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"sad", "sum of absolute differences, fast (default)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_SAD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"sse", "sum of squared errors", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_SSE }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"satd", "sum of absolute Hadamard transformed differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_SATD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"dct", "sum of absolute DCT transformed differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_DCT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"psnr", "sum of squared quantization errors (avoid, low quality)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_PSNR }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"bit", "number of bits needed for the block", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_BIT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"rd", "rate distortion optimal, slow", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_RD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"zero", "0", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_ZERO }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"vsad", "sum of absolute vertical differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_VSAD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"vsse", "sum of squared vertical differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_VSSE }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"nsse", "noise preserving sum of squared differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_NSSE }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -#if CONFIG_SNOW_ENCODER -{"w53", "5/3 wavelet, only used in snow", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_W53 }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"w97", "9/7 wavelet, only used in snow", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_W97 }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -#endif -{"dctmax", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"chroma", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_CHROMA }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"pre_dia_size", "diamond type & size for motion estimation pre-pass", OFFSET(pre_dia_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"subq", "sub pel motion estimation quality", OFFSET(me_subpel_quality), AV_OPT_TYPE_INT, {.dbl = 8 }, INT_MIN, INT_MAX, V|E}, -{"dtg_active_format", NULL, OFFSET(dtg_active_format), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"me_range", "limit motion vectors range (1023 for DivX player)", OFFSET(me_range), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"ibias", "intra quant bias", OFFSET(intra_quant_bias), AV_OPT_TYPE_INT, {.dbl = FF_DEFAULT_QUANT_BIAS }, INT_MIN, INT_MAX, V|E}, -{"pbias", "inter quant bias", OFFSET(inter_quant_bias), AV_OPT_TYPE_INT, {.dbl = FF_DEFAULT_QUANT_BIAS }, INT_MIN, INT_MAX, V|E}, -#if FF_API_COLOR_TABLE_ID -{"color_table_id", NULL, OFFSET(color_table_id), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -#endif -{"global_quality", NULL, OFFSET(global_quality), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, -{"coder", NULL, OFFSET(coder_type), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "coder"}, -{"vlc", "variable length coder / huffman coder", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_VLC }, INT_MIN, INT_MAX, V|E, "coder"}, -{"ac", "arithmetic coder", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_AC }, INT_MIN, INT_MAX, V|E, "coder"}, -{"raw", "raw (no encoding)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_RAW }, INT_MIN, INT_MAX, V|E, "coder"}, -{"rle", "run-length coder", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_RLE }, INT_MIN, INT_MAX, V|E, "coder"}, -{"deflate", "deflate-based coder", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_DEFLATE }, INT_MIN, INT_MAX, V|E, "coder"}, -{"context", "context model", OFFSET(context_model), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"slice_flags", NULL, OFFSET(slice_flags), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"xvmc_acceleration", NULL, OFFSET(xvmc_acceleration), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"mbd", "macroblock decision algorithm (high quality mode)", OFFSET(mb_decision), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "mbd"}, -{"simple", "use mbcmp (default)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MB_DECISION_SIMPLE }, INT_MIN, INT_MAX, V|E, "mbd"}, -{"bits", "use fewest bits", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MB_DECISION_BITS }, INT_MIN, INT_MAX, V|E, "mbd"}, -{"rd", "use best rate distortion", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MB_DECISION_RD }, INT_MIN, INT_MAX, V|E, "mbd"}, -{"stream_codec_tag", NULL, OFFSET(stream_codec_tag), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"sc_threshold", "scene change threshold", OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"lmin", "min lagrange factor (VBR)", OFFSET(lmin), AV_OPT_TYPE_INT, {.dbl = 2*FF_QP2LAMBDA }, 0, INT_MAX, V|E}, -{"lmax", "max lagrange factor (VBR)", OFFSET(lmax), AV_OPT_TYPE_INT, {.dbl = 31*FF_QP2LAMBDA }, 0, INT_MAX, V|E}, -{"nr", "noise reduction", OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"rc_init_occupancy", "number of bits which should be loaded into the rc buffer before decoding starts", OFFSET(rc_initial_buffer_occupancy), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -#if FF_API_INTER_THRESHOLD -{"inter_threshold", NULL, OFFSET(inter_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -#endif -{"flags2", NULL, OFFSET(flags2), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT}, 0, UINT_MAX, V|A|E|D, "flags2"}, -{"error", NULL, OFFSET(error_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -#if FF_API_MPV_GLOBAL_OPTS -{"qns", "deprecated, use mpegvideo private options instead", OFFSET(quantizer_noise_shaping), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -#endif -{"threads", NULL, OFFSET(thread_count), AV_OPT_TYPE_INT, {.dbl = 1 }, 0, INT_MAX, V|E|D, "threads"}, -{"auto", "detect a good number of threads", 0, AV_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, V|E|D, "threads"}, -{"me_threshold", "motion estimaton threshold", OFFSET(me_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"mb_threshold", "macroblock threshold", OFFSET(mb_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"dc", "intra_dc_precision", OFFSET(intra_dc_precision), AV_OPT_TYPE_INT, {.dbl = 0 }, INT_MIN, INT_MAX, V|E}, -{"nssew", "nsse weight", OFFSET(nsse_weight), AV_OPT_TYPE_INT, {.dbl = 8 }, INT_MIN, INT_MAX, V|E}, -{"skip_top", "number of macroblock rows at the top which are skipped", OFFSET(skip_top), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|D}, -{"skip_bottom", "number of macroblock rows at the bottom which are skipped", OFFSET(skip_bottom), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|D}, -{"profile", NULL, OFFSET(profile), AV_OPT_TYPE_INT, {.dbl = FF_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "profile"}, -{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "profile"}, -{"aac_main", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_AAC_MAIN }, INT_MIN, INT_MAX, A|E, "profile"}, -{"aac_low", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_AAC_LOW }, INT_MIN, INT_MAX, A|E, "profile"}, -{"aac_ssr", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_AAC_SSR }, INT_MIN, INT_MAX, A|E, "profile"}, -{"aac_ltp", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_AAC_LTP }, INT_MIN, INT_MAX, A|E, "profile"}, -{"dts", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS }, INT_MIN, INT_MAX, A|E, "profile"}, -{"dts_es", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS_ES }, INT_MIN, INT_MAX, A|E, "profile"}, -{"dts_96_24", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS_96_24 }, INT_MIN, INT_MAX, A|E, "profile"}, -{"dts_hd_hra", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS_HD_HRA }, INT_MIN, INT_MAX, A|E, "profile"}, -{"dts_hd_ma", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS_HD_MA }, INT_MIN, INT_MAX, A|E, "profile"}, -{"level", NULL, OFFSET(level), AV_OPT_TYPE_INT, {.dbl = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"}, -{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"}, -{"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, V|A|D}, -{"skip_threshold", "frame skip threshold", OFFSET(frame_skip_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"skip_factor", "frame skip factor", OFFSET(frame_skip_factor), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"skip_exp", "frame skip exponent", OFFSET(frame_skip_exp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"skipcmp", "frame skip compare function", OFFSET(frame_skip_cmp), AV_OPT_TYPE_INT, {.dbl = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, V|E, "cmp_func"}, -{"border_mask", "increases the quantizer for macroblocks close to borders", OFFSET(border_masking), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E}, -{"mblmin", "min macroblock lagrange factor (VBR)", OFFSET(mb_lmin), AV_OPT_TYPE_INT, {.dbl = FF_QP2LAMBDA * 2 }, 1, FF_LAMBDA_MAX, V|E}, -{"mblmax", "max macroblock lagrange factor (VBR)", OFFSET(mb_lmax), AV_OPT_TYPE_INT, {.dbl = FF_QP2LAMBDA * 31 }, 1, FF_LAMBDA_MAX, V|E}, -{"mepc", "motion estimation bitrate penalty compensation (1.0 = 256)", OFFSET(me_penalty_compensation), AV_OPT_TYPE_INT, {.dbl = 256 }, INT_MIN, INT_MAX, V|E}, -{"skip_loop_filter", NULL, OFFSET(skip_loop_filter), AV_OPT_TYPE_INT, {.dbl = AVDISCARD_DEFAULT }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"skip_idct" , NULL, OFFSET(skip_idct) , AV_OPT_TYPE_INT, {.dbl = AVDISCARD_DEFAULT }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"skip_frame" , NULL, OFFSET(skip_frame) , AV_OPT_TYPE_INT, {.dbl = AVDISCARD_DEFAULT }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"none" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_NONE }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"default" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_DEFAULT }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"noref" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_NONREF }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"bidir" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_BIDIR }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"nokey" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_NONKEY }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"all" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_ALL }, INT_MIN, INT_MAX, V|D, "avdiscard"}, -{"bidir_refine", "refine the two motion vectors used in bidirectional macroblocks", OFFSET(bidir_refine), AV_OPT_TYPE_INT, {.dbl = 1 }, 0, 4, V|E}, -{"brd_scale", "downscales frames for dynamic B-frame decision", OFFSET(brd_scale), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, 10, V|E}, -{"keyint_min", "minimum interval between IDR-frames (x264)", OFFSET(keyint_min), AV_OPT_TYPE_INT, {.dbl = 25 }, INT_MIN, INT_MAX, V|E}, -{"refs", "reference frames to consider for motion compensation (Snow)", OFFSET(refs), AV_OPT_TYPE_INT, {.dbl = 1 }, INT_MIN, INT_MAX, V|E}, -{"chromaoffset", "chroma qp offset from luma", OFFSET(chromaoffset), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, -{"trellis", "rate-distortion optimal quantization", OFFSET(trellis), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, -#if FF_API_MPV_GLOBAL_OPTS -{"skiprd", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_SKIP_RD }, INT_MIN, INT_MAX, V|E, "flags2"}, -#endif -{"sc_factor", "multiplied by qscale for each frame and added to scene_change_score", OFFSET(scenechange_factor), AV_OPT_TYPE_INT, {.dbl = 6 }, 0, INT_MAX, V|E}, -{"mv0_threshold", NULL, OFFSET(mv0_threshold), AV_OPT_TYPE_INT, {.dbl = 256 }, 0, INT_MAX, V|E}, -{"b_sensitivity", "adjusts sensitivity of b_frame_strategy 1", OFFSET(b_sensitivity), AV_OPT_TYPE_INT, {.dbl = 40 }, 1, INT_MAX, V|E}, -{"compression_level", NULL, OFFSET(compression_level), AV_OPT_TYPE_INT, {.dbl = FF_COMPRESSION_DEFAULT }, INT_MIN, INT_MAX, V|A|E}, -{"min_prediction_order", NULL, OFFSET(min_prediction_order), AV_OPT_TYPE_INT, {.dbl = -1 }, INT_MIN, INT_MAX, A|E}, -{"max_prediction_order", NULL, OFFSET(max_prediction_order), AV_OPT_TYPE_INT, {.dbl = -1 }, INT_MIN, INT_MAX, A|E}, -{"timecode_frame_start", "GOP timecode frame start number, in non drop frame format", OFFSET(timecode_frame_start), AV_OPT_TYPE_INT64, {.dbl = 0 }, 0, INT64_MAX, V|E}, -#if FF_API_REQUEST_CHANNELS -{"request_channels", "set desired number of audio channels", OFFSET(request_channels), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, A|D}, -#endif -{"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"channel_layout", NULL, OFFSET(channel_layout), AV_OPT_TYPE_INT64, {.dbl = DEFAULT }, 0, INT64_MAX, A|E|D, "channel_layout"}, -{"request_channel_layout", NULL, OFFSET(request_channel_layout), AV_OPT_TYPE_INT64, {.dbl = DEFAULT }, 0, INT64_MAX, A|D, "request_channel_layout"}, -{"rc_max_vbv_use", NULL, OFFSET(rc_max_available_vbv_use), AV_OPT_TYPE_FLOAT, {.dbl = 1.0/3 }, 0.0, FLT_MAX, V|E}, -{"rc_min_vbv_use", NULL, OFFSET(rc_min_vbv_overflow_use), AV_OPT_TYPE_FLOAT, {.dbl = 3 }, 0.0, FLT_MAX, V|E}, -{"ticks_per_frame", NULL, OFFSET(ticks_per_frame), AV_OPT_TYPE_INT, {.dbl = 1 }, 1, INT_MAX, A|V|E|D}, -{"color_primaries", NULL, OFFSET(color_primaries), AV_OPT_TYPE_INT, {.dbl = AVCOL_PRI_UNSPECIFIED }, 1, AVCOL_PRI_NB-1, V|E|D}, -{"color_trc", NULL, OFFSET(color_trc), AV_OPT_TYPE_INT, {.dbl = AVCOL_TRC_UNSPECIFIED }, 1, AVCOL_TRC_NB-1, V|E|D}, -{"colorspace", NULL, OFFSET(colorspace), AV_OPT_TYPE_INT, {.dbl = AVCOL_SPC_UNSPECIFIED }, 1, AVCOL_SPC_NB-1, V|E|D}, -{"color_range", NULL, OFFSET(color_range), AV_OPT_TYPE_INT, {.dbl = AVCOL_RANGE_UNSPECIFIED }, 0, AVCOL_RANGE_NB-1, V|E|D}, -{"chroma_sample_location", NULL, OFFSET(chroma_sample_location), AV_OPT_TYPE_INT, {.dbl = AVCHROMA_LOC_UNSPECIFIED }, 0, AVCHROMA_LOC_NB-1, V|E|D}, -{"log_level_offset", "set the log level offset", OFFSET(log_level_offset), AV_OPT_TYPE_INT, {.dbl = 0 }, INT_MIN, INT_MAX }, -{"slices", "number of slices, used in parallelized encoding", OFFSET(slices), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, V|E}, -{"thread_type", "select multithreading type", OFFSET(thread_type), AV_OPT_TYPE_FLAGS, {.dbl = FF_THREAD_SLICE|FF_THREAD_FRAME }, 0, INT_MAX, V|E|D, "thread_type"}, -{"slice", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_THREAD_SLICE }, INT_MIN, INT_MAX, V|E|D, "thread_type"}, -{"frame", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_THREAD_FRAME }, INT_MIN, INT_MAX, V|E|D, "thread_type"}, -{"audio_service_type", "audio service type", OFFSET(audio_service_type), AV_OPT_TYPE_INT, {.dbl = AV_AUDIO_SERVICE_TYPE_MAIN }, 0, AV_AUDIO_SERVICE_TYPE_NB-1, A|E, "audio_service_type"}, -{"ma", "Main Audio Service", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_MAIN }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"ef", "Effects", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_EFFECTS }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"vi", "Visually Impaired", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"hi", "Hearing Impaired", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"di", "Dialogue", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_DIALOGUE }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"co", "Commentary", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_COMMENTARY }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"em", "Emergency", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_EMERGENCY }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"vo", "Voice Over", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_VOICE_OVER }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"ka", "Karaoke", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_KARAOKE }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, -{"request_sample_fmt", NULL, OFFSET(request_sample_fmt), AV_OPT_TYPE_INT, {.dbl = AV_SAMPLE_FMT_NONE }, AV_SAMPLE_FMT_NONE, AV_SAMPLE_FMT_NB-1, A|D, "request_sample_fmt"}, -{"u8" , "8-bit unsigned integer", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_U8 }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, -{"s16", "16-bit signed integer", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_S16 }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, -{"s32", "32-bit signed integer", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_S32 }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, -{"flt", "32-bit float", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_FLT }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, -{"dbl", "64-bit double", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_DBL }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, -{NULL}, -}; - -#undef A -#undef V -#undef S -#undef E -#undef D -#undef DEFAULT - static const AVClass av_codec_context_class = { .class_name = "AVCodecContext", .item_name = context_to_name, .option = options, .version = LIBAVUTIL_VERSION_INT, - .log_level_offset_offset = OFFSET(log_level_offset), + .log_level_offset_offset = offsetof(AVCodecContext, log_level_offset), .child_next = codec_child_next, .child_class_next = codec_child_class_next, }; diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h new file mode 100644 index 0000000000..46c1e0b061 --- /dev/null +++ b/libavcodec/options_table.h @@ -0,0 +1,391 @@ +/* + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_OPTIONS_TABLE +#define AVCODEC_OPTIONS_TABLE + +#define OFFSET(x) offsetof(AVCodecContext,x) +#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C +//these names are too long to be readable +#define V AV_OPT_FLAG_VIDEO_PARAM +#define A AV_OPT_FLAG_AUDIO_PARAM +#define S AV_OPT_FLAG_SUBTITLE_PARAM +#define E AV_OPT_FLAG_ENCODING_PARAM +#define D AV_OPT_FLAG_DECODING_PARAM + +#define AV_CODEC_DEFAULT_BITRATE 200*1000 + +static const AVOption options[]={ +{"b", "set bitrate (in bits/s)", OFFSET(bit_rate), AV_OPT_TYPE_INT, {.dbl = AV_CODEC_DEFAULT_BITRATE }, INT_MIN, INT_MAX, V|A|E}, +{"bt", "set video bitrate tolerance (in bits/s)", OFFSET(bit_rate_tolerance), AV_OPT_TYPE_INT, {.dbl = AV_CODEC_DEFAULT_BITRATE*20 }, 1, INT_MAX, V|E}, +{"flags", NULL, OFFSET(flags), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, 0, UINT_MAX, V|A|E|D, "flags"}, +{"mv4", "use four motion vector by macroblock (mpeg4)", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_4MV }, INT_MIN, INT_MAX, V|E, "flags"}, +{"qpel", "use 1/4 pel motion compensation", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_QPEL }, INT_MIN, INT_MAX, V|E, "flags"}, +{"loop", "use loop filter", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_LOOP_FILTER }, INT_MIN, INT_MAX, V|E, "flags"}, +{"qscale", "use fixed qscale", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_QSCALE }, INT_MIN, INT_MAX, 0, "flags"}, +{"gmc", "use gmc", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_GMC }, INT_MIN, INT_MAX, V|E, "flags"}, +{"mv0", "always try a mb with mv=<0,0>", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_MV0 }, INT_MIN, INT_MAX, V|E, "flags"}, +{"input_preserved", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INPUT_PRESERVED }, INT_MIN, INT_MAX, 0, "flags"}, +{"pass1", "use internal 2pass ratecontrol in first pass mode", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PASS1 }, INT_MIN, INT_MAX, 0, "flags"}, +{"pass2", "use internal 2pass ratecontrol in second pass mode", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PASS2 }, INT_MIN, INT_MAX, 0, "flags"}, +{"gray", "only decode/encode grayscale", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_GRAY }, INT_MIN, INT_MAX, V|E|D, "flags"}, +{"emu_edge", "don't draw edges", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_EMU_EDGE }, INT_MIN, INT_MAX, 0, "flags"}, +{"psnr", "error[?] variables will be set during encoding", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_PSNR }, INT_MIN, INT_MAX, V|E, "flags"}, +{"truncated", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_TRUNCATED }, INT_MIN, INT_MAX, 0, "flags"}, +{"naq", "normalize adaptive quantization", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_NORMALIZE_AQP }, INT_MIN, INT_MAX, V|E, "flags"}, +{"ildct", "use interlaced dct", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INTERLACED_DCT }, INT_MIN, INT_MAX, V|E, "flags"}, +{"low_delay", "force low delay", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_LOW_DELAY }, INT_MIN, INT_MAX, V|D|E, "flags"}, +{"global_header", "place global headers in extradata instead of every keyframe", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_GLOBAL_HEADER }, INT_MIN, INT_MAX, V|A|E, "flags"}, +{"bitexact", "use only bitexact stuff (except (i)dct)", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_BITEXACT }, INT_MIN, INT_MAX, A|V|S|D|E, "flags"}, +{"aic", "h263 advanced intra coding / mpeg4 ac prediction", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_AC_PRED }, INT_MIN, INT_MAX, V|E, "flags"}, +#if FF_API_MPV_GLOBAL_OPTS +{"cbp", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_CBP_RD }, INT_MIN, INT_MAX, V|E, "flags"}, +{"qprd", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_QP_RD }, INT_MIN, INT_MAX, V|E, "flags"}, +#endif +{"ilme", "interlaced motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_INTERLACED_ME }, INT_MIN, INT_MAX, V|E, "flags"}, +{"cgop", "closed gop", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_CLOSED_GOP }, INT_MIN, INT_MAX, V|E, "flags"}, +{"fast", "allow non spec compliant speedup tricks", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_FAST }, INT_MIN, INT_MAX, V|E, "flags2"}, +#if FF_API_MPV_GLOBAL_OPTS +{"sgop", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_STRICT_GOP }, INT_MIN, INT_MAX, V|E, "flags2"}, +#endif +{"noout", "skip bitstream encoding", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_NO_OUTPUT }, INT_MIN, INT_MAX, V|E, "flags2"}, +{"local_header", "place global headers at every keyframe instead of in extradata", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_LOCAL_HEADER }, INT_MIN, INT_MAX, V|E, "flags2"}, +#if FF_API_SUB_ID +{"sub_id", NULL, OFFSET(sub_id), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +#endif +{"me_method", "set motion estimation method", OFFSET(me_method), AV_OPT_TYPE_INT, {.dbl = ME_EPZS }, INT_MIN, INT_MAX, V|E, "me_method"}, +{"zero", "zero motion estimation (fastest)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_ZERO }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"full", "full motion estimation (slowest)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_FULL }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"epzs", "EPZS motion estimation (default)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_EPZS }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"esa", "esa motion estimation (alias for full)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_FULL }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"tesa", "tesa motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_TESA }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"dia", "dia motion estimation (alias for epzs)", 0, AV_OPT_TYPE_CONST, {.dbl = ME_EPZS }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"log", "log motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_LOG }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"phods", "phods motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_PHODS }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"x1", "X1 motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_X1 }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"hex", "hex motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_HEX }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"umh", "umh motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_UMH }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"iter", "iter motion estimation", 0, AV_OPT_TYPE_CONST, {.dbl = ME_ITER }, INT_MIN, INT_MAX, V|E, "me_method" }, +{"extradata_size", NULL, OFFSET(extradata_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"time_base", NULL, OFFSET(time_base), AV_OPT_TYPE_RATIONAL, {.dbl = 0}, INT_MIN, INT_MAX}, +{"g", "set the group of picture size", OFFSET(gop_size), AV_OPT_TYPE_INT, {.dbl = 12 }, INT_MIN, INT_MAX, V|E}, +{"ar", "set audio sampling rate (in Hz)", OFFSET(sample_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|D|E}, +{"ac", "set number of audio channels", OFFSET(channels), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|D|E}, +{"cutoff", "set cutoff bandwidth", OFFSET(cutoff), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|E}, +{"frame_size", NULL, OFFSET(frame_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|E}, +{"frame_number", NULL, OFFSET(frame_number), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"delay", NULL, OFFSET(delay), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"qcomp", "video quantizer scale compression (VBR)", OFFSET(qcompress), AV_OPT_TYPE_FLOAT, {.dbl = 0.5 }, -FLT_MAX, FLT_MAX, V|E}, +{"qblur", "video quantizer scale blur (VBR)", OFFSET(qblur), AV_OPT_TYPE_FLOAT, {.dbl = 0.5 }, -1, FLT_MAX, V|E}, +{"qmin", "min video quantizer scale (VBR)", OFFSET(qmin), AV_OPT_TYPE_INT, {.dbl = 2 }, -1, 69, V|E}, +{"qmax", "max video quantizer scale (VBR)", OFFSET(qmax), AV_OPT_TYPE_INT, {.dbl = 31 }, -1, 69, V|E}, +{"qdiff", "max difference between the quantizer scale (VBR)", OFFSET(max_qdiff), AV_OPT_TYPE_INT, {.dbl = 3 }, INT_MIN, INT_MAX, V|E}, +{"bf", "use 'frames' B frames", OFFSET(max_b_frames), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, -1, FF_MAX_B_FRAMES, V|E}, +{"b_qfactor", "qp factor between p and b frames", OFFSET(b_quant_factor), AV_OPT_TYPE_FLOAT, {.dbl = 1.25 }, -FLT_MAX, FLT_MAX, V|E}, +{"rc_strategy", "ratecontrol method", OFFSET(rc_strategy), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"b_strategy", "strategy to choose between I/P/B-frames", OFFSET(b_frame_strategy), AV_OPT_TYPE_INT, {.dbl = 0 }, INT_MIN, INT_MAX, V|E}, +{"ps", "rtp payload size in bytes", OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"mv_bits", NULL, OFFSET(mv_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"header_bits", NULL, OFFSET(header_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"i_tex_bits", NULL, OFFSET(i_tex_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"p_tex_bits", NULL, OFFSET(p_tex_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"i_count", NULL, OFFSET(i_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"p_count", NULL, OFFSET(p_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"skip_count", NULL, OFFSET(skip_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"misc_bits", NULL, OFFSET(misc_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"frame_bits", NULL, OFFSET(frame_bits), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"codec_tag", NULL, OFFSET(codec_tag), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"bug", "workaround not auto detected encoder bugs", OFFSET(workaround_bugs), AV_OPT_TYPE_FLAGS, {.dbl = FF_BUG_AUTODETECT }, INT_MIN, INT_MAX, V|D, "bug"}, +{"autodetect", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_AUTODETECT }, INT_MIN, INT_MAX, V|D, "bug"}, +{"old_msmpeg4", "some old lavc generated msmpeg4v3 files (no autodetection)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_OLD_MSMPEG4 }, INT_MIN, INT_MAX, V|D, "bug"}, +{"xvid_ilace", "Xvid interlacing bug (autodetected if fourcc==XVIX)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_XVID_ILACE }, INT_MIN, INT_MAX, V|D, "bug"}, +{"ump4", "(autodetected if fourcc==UMP4)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_UMP4 }, INT_MIN, INT_MAX, V|D, "bug"}, +{"no_padding", "padding bug (autodetected)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_NO_PADDING }, INT_MIN, INT_MAX, V|D, "bug"}, +{"amv", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_AMV }, INT_MIN, INT_MAX, V|D, "bug"}, +{"ac_vlc", "illegal vlc bug (autodetected per fourcc)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_AC_VLC }, INT_MIN, INT_MAX, V|D, "bug"}, +{"qpel_chroma", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_QPEL_CHROMA }, INT_MIN, INT_MAX, V|D, "bug"}, +{"std_qpel", "old standard qpel (autodetected per fourcc/version)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_STD_QPEL }, INT_MIN, INT_MAX, V|D, "bug"}, +{"qpel_chroma2", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_QPEL_CHROMA2 }, INT_MIN, INT_MAX, V|D, "bug"}, +{"direct_blocksize", "direct-qpel-blocksize bug (autodetected per fourcc/version)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_DIRECT_BLOCKSIZE }, INT_MIN, INT_MAX, V|D, "bug"}, +{"edge", "edge padding bug (autodetected per fourcc/version)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_EDGE }, INT_MIN, INT_MAX, V|D, "bug"}, +{"hpel_chroma", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_HPEL_CHROMA }, INT_MIN, INT_MAX, V|D, "bug"}, +{"dc_clip", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_DC_CLIP }, INT_MIN, INT_MAX, V|D, "bug"}, +{"ms", "workaround various bugs in microsofts broken decoders", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_MS }, INT_MIN, INT_MAX, V|D, "bug"}, +{"trunc", "trancated frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_BUG_TRUNCATED}, INT_MIN, INT_MAX, V|D, "bug"}, +#if FF_API_MPV_GLOBAL_OPTS +{"lelim", "single coefficient elimination threshold for luminance (negative values also consider dc coefficient)", OFFSET(luma_elim_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"celim", "single coefficient elimination threshold for chrominance (negative values also consider dc coefficient)", OFFSET(chroma_elim_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +#endif +{"strict", "how strictly to follow the standards", OFFSET(strict_std_compliance), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|V|D|E, "strict"}, +{"very", "strictly conform to a older more strict version of the spec or reference software", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_VERY_STRICT }, INT_MIN, INT_MAX, V|D|E, "strict"}, +{"strict", "strictly conform to all the things in the spec no matter what consequences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_STRICT }, INT_MIN, INT_MAX, V|D|E, "strict"}, +{"normal", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_NORMAL }, INT_MIN, INT_MAX, V|D|E, "strict"}, +{"unofficial", "allow unofficial extensions", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_UNOFFICIAL }, INT_MIN, INT_MAX, V|D|E, "strict"}, +{"experimental", "allow non standardized experimental things", 0, AV_OPT_TYPE_CONST, {.dbl = FF_COMPLIANCE_EXPERIMENTAL }, INT_MIN, INT_MAX, V|D|E, "strict"}, +{"b_qoffset", "qp offset between P and B frames", OFFSET(b_quant_offset), AV_OPT_TYPE_FLOAT, {.dbl = 1.25 }, -FLT_MAX, FLT_MAX, V|E}, +{"err_detect", "set error detection flags", OFFSET(err_recognition), AV_OPT_TYPE_FLAGS, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, A|V|D, "err_detect"}, +{"crccheck", "verify embedded CRCs", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, V|D, "err_detect"}, +{"bitstream", "detect bitstream specification deviations", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_BITSTREAM }, INT_MIN, INT_MAX, V|D, "err_detect"}, +{"buffer", "detect improper bitstream length", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_BUFFER }, INT_MIN, INT_MAX, V|D, "err_detect"}, +{"explode", "abort decoding on minor error detection", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_EXPLODE }, INT_MIN, INT_MAX, V|D, "err_detect"}, +{"has_b_frames", NULL, OFFSET(has_b_frames), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"block_align", NULL, OFFSET(block_align), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"mpeg_quant", "use MPEG quantizers instead of H.263", OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"stats_out", NULL, OFFSET(stats_out), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX}, +{"stats_in", NULL, OFFSET(stats_in), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX}, +{"qsquish", "how to keep quantizer between qmin and qmax (0 = clip, 1 = use differentiable function)", OFFSET(rc_qsquish), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, 0, 99, V|E}, +{"rc_qmod_amp", "experimental quantizer modulation", OFFSET(rc_qmod_amp), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E}, +{"rc_qmod_freq", "experimental quantizer modulation", OFFSET(rc_qmod_freq), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"rc_override_count", NULL, OFFSET(rc_override_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"rc_eq", "set rate control equation", OFFSET(rc_eq), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, V|E}, +{"maxrate", "set max bitrate tolerance (in bits/s)", OFFSET(rc_max_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, +{"minrate", "set min bitrate tolerance (in bits/s)", OFFSET(rc_min_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, +{"bufsize", "set ratecontrol buffer size (in bits)", OFFSET(rc_buffer_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|V|E}, +{"rc_buf_aggressivity", "currently useless", OFFSET(rc_buffer_aggressivity), AV_OPT_TYPE_FLOAT, {.dbl = 1.0 }, -FLT_MAX, FLT_MAX, V|E}, +{"i_qfactor", "qp factor between P and I frames", OFFSET(i_quant_factor), AV_OPT_TYPE_FLOAT, {.dbl = -0.8 }, -FLT_MAX, FLT_MAX, V|E}, +{"i_qoffset", "qp offset between P and I frames", OFFSET(i_quant_offset), AV_OPT_TYPE_FLOAT, {.dbl = 0.0 }, -FLT_MAX, FLT_MAX, V|E}, +{"rc_init_cplx", "initial complexity for 1-pass encoding", OFFSET(rc_initial_cplx), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E}, +{"dct", "DCT algorithm", OFFSET(dct_algo), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, V|E, "dct"}, +{"auto", "autoselect a good one (default)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_AUTO }, INT_MIN, INT_MAX, V|E, "dct"}, +{"fastint", "fast integer", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_FASTINT }, INT_MIN, INT_MAX, V|E, "dct"}, +{"int", "accurate integer", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_INT }, INT_MIN, INT_MAX, V|E, "dct"}, +{"mmx", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_MMX }, INT_MIN, INT_MAX, V|E, "dct"}, +{"altivec", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_ALTIVEC }, INT_MIN, INT_MAX, V|E, "dct"}, +{"faan", "floating point AAN DCT", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DCT_FAAN }, INT_MIN, INT_MAX, V|E, "dct"}, +{"lumi_mask", "compresses bright areas stronger than medium ones", OFFSET(lumi_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, +{"tcplx_mask", "temporal complexity masking", OFFSET(temporal_cplx_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, +{"scplx_mask", "spatial complexity masking", OFFSET(spatial_cplx_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, +{"p_mask", "inter masking", OFFSET(p_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, +{"dark_mask", "compresses dark areas stronger than medium ones", OFFSET(dark_masking), AV_OPT_TYPE_FLOAT, {.dbl = 0 }, -FLT_MAX, FLT_MAX, V|E}, +{"idct", "select IDCT implementation", OFFSET(idct_algo), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, V|E|D, "idct"}, +{"auto", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_AUTO }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"int", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_INT }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"simple", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLE }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"simplemmx", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEMMX }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"libmpeg2mmx", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_LIBMPEG2MMX }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"mmi", NULL, 0, AV_OPT_TYPE_CONST, { .dbl = FF_IDCT_MMI }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"arm", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_ARM }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"altivec", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_ALTIVEC }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"sh4", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SH4 }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"simplearm", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEARM }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"simplearmv5te", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEARMV5TE }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"simplearmv6", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEARMV6 }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"simpleneon", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLENEON }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"simplealpha", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_SIMPLEALPHA }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"h264", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_H264 }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"vp3", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_VP3 }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"ipp", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_IPP }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"xvidmmx", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_XVIDMMX }, INT_MIN, INT_MAX, V|E|D, "idct"}, +{"faani", "floating point AAN IDCT", 0, AV_OPT_TYPE_CONST, {.dbl = FF_IDCT_FAAN }, INT_MIN, INT_MAX, V|D|E, "idct"}, +{"slice_count", NULL, OFFSET(slice_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"ec", "set error concealment strategy", OFFSET(error_concealment), AV_OPT_TYPE_FLAGS, {.dbl = 3 }, INT_MIN, INT_MAX, V|D, "ec"}, +{"guess_mvs", "iterative motion vector (MV) search (slow)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_EC_GUESS_MVS }, INT_MIN, INT_MAX, V|D, "ec"}, +{"deblock", "use strong deblock filter for damaged MBs", 0, AV_OPT_TYPE_CONST, {.dbl = FF_EC_DEBLOCK }, INT_MIN, INT_MAX, V|D, "ec"}, +{"bits_per_coded_sample", NULL, OFFSET(bits_per_coded_sample), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"pred", "prediction method", OFFSET(prediction_method), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "pred"}, +{"left", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PRED_LEFT }, INT_MIN, INT_MAX, V|E, "pred"}, +{"plane", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PRED_PLANE }, INT_MIN, INT_MAX, V|E, "pred"}, +{"median", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PRED_MEDIAN }, INT_MIN, INT_MAX, V|E, "pred"}, +{"aspect", "sample aspect ratio", OFFSET(sample_aspect_ratio), AV_OPT_TYPE_RATIONAL, {.dbl = 0}, 0, 10, V|E}, +{"debug", "print specific debug info", OFFSET(debug), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, 0, INT_MAX, V|A|S|E|D, "debug"}, +{"pict", "picture info", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_PICT_INFO }, INT_MIN, INT_MAX, V|D, "debug"}, +{"rc", "rate control", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_RC }, INT_MIN, INT_MAX, V|E, "debug"}, +{"bitstream", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_BITSTREAM }, INT_MIN, INT_MAX, V|D, "debug"}, +{"mb_type", "macroblock (MB) type", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_MB_TYPE }, INT_MIN, INT_MAX, V|D, "debug"}, +{"qp", "per-block quantization parameter (QP)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_QP }, INT_MIN, INT_MAX, V|D, "debug"}, +{"mv", "motion vector", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_MV }, INT_MIN, INT_MAX, V|D, "debug"}, +{"dct_coeff", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_DCT_COEFF }, INT_MIN, INT_MAX, V|D, "debug"}, +{"skip", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_SKIP }, INT_MIN, INT_MAX, V|D, "debug"}, +{"startcode", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_STARTCODE }, INT_MIN, INT_MAX, V|D, "debug"}, +{"pts", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_PTS }, INT_MIN, INT_MAX, V|D, "debug"}, +{"er", "error recognition", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_ER }, INT_MIN, INT_MAX, V|D, "debug"}, +{"mmco", "memory management control operations (H.264)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_MMCO }, INT_MIN, INT_MAX, V|D, "debug"}, +{"bugs", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_BUGS }, INT_MIN, INT_MAX, V|D, "debug"}, +{"vis_qp", "visualize quantization parameter (QP), lower QP are tinted greener", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_QP }, INT_MIN, INT_MAX, V|D, "debug"}, +{"vis_mb_type", "visualize block types", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_MB_TYPE }, INT_MIN, INT_MAX, V|D, "debug"}, +{"buffers", "picture buffer allocations", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_BUFFERS }, INT_MIN, INT_MAX, V|D, "debug"}, +{"thread_ops", "threading operations", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_THREADS }, INT_MIN, INT_MAX, V|D, "debug"}, +{"vismv", "visualize motion vectors (MVs)", OFFSET(debug_mv), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, V|D, "debug_mv"}, +{"pf", "forward predicted MVs of P-frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_MV_P_FOR }, INT_MIN, INT_MAX, V|D, "debug_mv"}, +{"bf", "forward predicted MVs of B-frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_MV_B_FOR }, INT_MIN, INT_MAX, V|D, "debug_mv"}, +{"bb", "backward predicted MVs of B-frames", 0, AV_OPT_TYPE_CONST, {.dbl = FF_DEBUG_VIS_MV_B_BACK }, INT_MIN, INT_MAX, V|D, "debug_mv"}, +{"cmp", "full pel me compare function", OFFSET(me_cmp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"subcmp", "sub pel me compare function", OFFSET(me_sub_cmp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"mbcmp", "macroblock compare function", OFFSET(mb_cmp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"ildctcmp", "interlaced dct compare function", OFFSET(ildct_cmp), AV_OPT_TYPE_INT, {.dbl = FF_CMP_VSAD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"dia_size", "diamond type & size for motion estimation", OFFSET(dia_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"last_pred", "amount of motion predictors from the previous frame", OFFSET(last_predictor_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"preme", "pre motion estimation", OFFSET(pre_me), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"precmp", "pre motion estimation compare function", OFFSET(me_pre_cmp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"sad", "sum of absolute differences, fast (default)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_SAD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"sse", "sum of squared errors", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_SSE }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"satd", "sum of absolute Hadamard transformed differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_SATD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"dct", "sum of absolute DCT transformed differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_DCT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"psnr", "sum of squared quantization errors (avoid, low quality)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_PSNR }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"bit", "number of bits needed for the block", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_BIT }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"rd", "rate distortion optimal, slow", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_RD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"zero", "0", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_ZERO }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"vsad", "sum of absolute vertical differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_VSAD }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"vsse", "sum of squared vertical differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_VSSE }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"nsse", "noise preserving sum of squared differences", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_NSSE }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +#if CONFIG_SNOW_ENCODER +{"w53", "5/3 wavelet, only used in snow", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_W53 }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"w97", "9/7 wavelet, only used in snow", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_W97 }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +#endif +{"dctmax", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"chroma", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_CMP_CHROMA }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"pre_dia_size", "diamond type & size for motion estimation pre-pass", OFFSET(pre_dia_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"subq", "sub pel motion estimation quality", OFFSET(me_subpel_quality), AV_OPT_TYPE_INT, {.dbl = 8 }, INT_MIN, INT_MAX, V|E}, +{"dtg_active_format", NULL, OFFSET(dtg_active_format), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"me_range", "limit motion vectors range (1023 for DivX player)", OFFSET(me_range), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"ibias", "intra quant bias", OFFSET(intra_quant_bias), AV_OPT_TYPE_INT, {.dbl = FF_DEFAULT_QUANT_BIAS }, INT_MIN, INT_MAX, V|E}, +{"pbias", "inter quant bias", OFFSET(inter_quant_bias), AV_OPT_TYPE_INT, {.dbl = FF_DEFAULT_QUANT_BIAS }, INT_MIN, INT_MAX, V|E}, +#if FF_API_COLOR_TABLE_ID +{"color_table_id", NULL, OFFSET(color_table_id), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +#endif +{"global_quality", NULL, OFFSET(global_quality), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, +{"coder", NULL, OFFSET(coder_type), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "coder"}, +{"vlc", "variable length coder / huffman coder", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_VLC }, INT_MIN, INT_MAX, V|E, "coder"}, +{"ac", "arithmetic coder", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_AC }, INT_MIN, INT_MAX, V|E, "coder"}, +{"raw", "raw (no encoding)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_RAW }, INT_MIN, INT_MAX, V|E, "coder"}, +{"rle", "run-length coder", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_RLE }, INT_MIN, INT_MAX, V|E, "coder"}, +{"deflate", "deflate-based coder", 0, AV_OPT_TYPE_CONST, {.dbl = FF_CODER_TYPE_DEFLATE }, INT_MIN, INT_MAX, V|E, "coder"}, +{"context", "context model", OFFSET(context_model), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"slice_flags", NULL, OFFSET(slice_flags), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"xvmc_acceleration", NULL, OFFSET(xvmc_acceleration), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"mbd", "macroblock decision algorithm (high quality mode)", OFFSET(mb_decision), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E, "mbd"}, +{"simple", "use mbcmp (default)", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MB_DECISION_SIMPLE }, INT_MIN, INT_MAX, V|E, "mbd"}, +{"bits", "use fewest bits", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MB_DECISION_BITS }, INT_MIN, INT_MAX, V|E, "mbd"}, +{"rd", "use best rate distortion", 0, AV_OPT_TYPE_CONST, {.dbl = FF_MB_DECISION_RD }, INT_MIN, INT_MAX, V|E, "mbd"}, +{"stream_codec_tag", NULL, OFFSET(stream_codec_tag), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"sc_threshold", "scene change threshold", OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"lmin", "min lagrange factor (VBR)", OFFSET(lmin), AV_OPT_TYPE_INT, {.dbl = 2*FF_QP2LAMBDA }, 0, INT_MAX, V|E}, +{"lmax", "max lagrange factor (VBR)", OFFSET(lmax), AV_OPT_TYPE_INT, {.dbl = 31*FF_QP2LAMBDA }, 0, INT_MAX, V|E}, +{"nr", "noise reduction", OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"rc_init_occupancy", "number of bits which should be loaded into the rc buffer before decoding starts", OFFSET(rc_initial_buffer_occupancy), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +#if FF_API_INTER_THRESHOLD +{"inter_threshold", NULL, OFFSET(inter_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +#endif +{"flags2", NULL, OFFSET(flags2), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT}, 0, UINT_MAX, V|A|E|D, "flags2"}, +{"error", NULL, OFFSET(error_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +#if FF_API_MPV_GLOBAL_OPTS +{"qns", "deprecated, use mpegvideo private options instead", OFFSET(quantizer_noise_shaping), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +#endif +{"threads", NULL, OFFSET(thread_count), AV_OPT_TYPE_INT, {.dbl = 1 }, 0, INT_MAX, V|E|D, "threads"}, +{"auto", "detect a good number of threads", 0, AV_OPT_TYPE_CONST, {.dbl = 0 }, INT_MIN, INT_MAX, V|E|D, "threads"}, +{"me_threshold", "motion estimaton threshold", OFFSET(me_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"mb_threshold", "macroblock threshold", OFFSET(mb_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"dc", "intra_dc_precision", OFFSET(intra_dc_precision), AV_OPT_TYPE_INT, {.dbl = 0 }, INT_MIN, INT_MAX, V|E}, +{"nssew", "nsse weight", OFFSET(nsse_weight), AV_OPT_TYPE_INT, {.dbl = 8 }, INT_MIN, INT_MAX, V|E}, +{"skip_top", "number of macroblock rows at the top which are skipped", OFFSET(skip_top), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|D}, +{"skip_bottom", "number of macroblock rows at the bottom which are skipped", OFFSET(skip_bottom), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|D}, +{"profile", NULL, OFFSET(profile), AV_OPT_TYPE_INT, {.dbl = FF_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "profile"}, +{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "profile"}, +{"aac_main", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_AAC_MAIN }, INT_MIN, INT_MAX, A|E, "profile"}, +{"aac_low", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_AAC_LOW }, INT_MIN, INT_MAX, A|E, "profile"}, +{"aac_ssr", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_AAC_SSR }, INT_MIN, INT_MAX, A|E, "profile"}, +{"aac_ltp", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_AAC_LTP }, INT_MIN, INT_MAX, A|E, "profile"}, +{"dts", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS }, INT_MIN, INT_MAX, A|E, "profile"}, +{"dts_es", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS_ES }, INT_MIN, INT_MAX, A|E, "profile"}, +{"dts_96_24", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS_96_24 }, INT_MIN, INT_MAX, A|E, "profile"}, +{"dts_hd_hra", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS_HD_HRA }, INT_MIN, INT_MAX, A|E, "profile"}, +{"dts_hd_ma", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_PROFILE_DTS_HD_MA }, INT_MIN, INT_MAX, A|E, "profile"}, +{"level", NULL, OFFSET(level), AV_OPT_TYPE_INT, {.dbl = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"}, +{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"}, +{"lowres", "decode at 1= 1/2, 2=1/4, 3=1/8 resolutions", OFFSET(lowres), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, V|A|D}, +{"skip_threshold", "frame skip threshold", OFFSET(frame_skip_threshold), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"skip_factor", "frame skip factor", OFFSET(frame_skip_factor), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"skip_exp", "frame skip exponent", OFFSET(frame_skip_exp), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"skipcmp", "frame skip compare function", OFFSET(frame_skip_cmp), AV_OPT_TYPE_INT, {.dbl = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, V|E, "cmp_func"}, +{"border_mask", "increases the quantizer for macroblocks close to borders", OFFSET(border_masking), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E}, +{"mblmin", "min macroblock lagrange factor (VBR)", OFFSET(mb_lmin), AV_OPT_TYPE_INT, {.dbl = FF_QP2LAMBDA * 2 }, 1, FF_LAMBDA_MAX, V|E}, +{"mblmax", "max macroblock lagrange factor (VBR)", OFFSET(mb_lmax), AV_OPT_TYPE_INT, {.dbl = FF_QP2LAMBDA * 31 }, 1, FF_LAMBDA_MAX, V|E}, +{"mepc", "motion estimation bitrate penalty compensation (1.0 = 256)", OFFSET(me_penalty_compensation), AV_OPT_TYPE_INT, {.dbl = 256 }, INT_MIN, INT_MAX, V|E}, +{"skip_loop_filter", NULL, OFFSET(skip_loop_filter), AV_OPT_TYPE_INT, {.dbl = AVDISCARD_DEFAULT }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"skip_idct" , NULL, OFFSET(skip_idct) , AV_OPT_TYPE_INT, {.dbl = AVDISCARD_DEFAULT }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"skip_frame" , NULL, OFFSET(skip_frame) , AV_OPT_TYPE_INT, {.dbl = AVDISCARD_DEFAULT }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"none" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_NONE }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"default" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_DEFAULT }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"noref" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_NONREF }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"bidir" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_BIDIR }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"nokey" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_NONKEY }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"all" , NULL, 0, AV_OPT_TYPE_CONST, {.dbl = AVDISCARD_ALL }, INT_MIN, INT_MAX, V|D, "avdiscard"}, +{"bidir_refine", "refine the two motion vectors used in bidirectional macroblocks", OFFSET(bidir_refine), AV_OPT_TYPE_INT, {.dbl = 1 }, 0, 4, V|E}, +{"brd_scale", "downscales frames for dynamic B-frame decision", OFFSET(brd_scale), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, 10, V|E}, +{"keyint_min", "minimum interval between IDR-frames (x264)", OFFSET(keyint_min), AV_OPT_TYPE_INT, {.dbl = 25 }, INT_MIN, INT_MAX, V|E}, +{"refs", "reference frames to consider for motion compensation (Snow)", OFFSET(refs), AV_OPT_TYPE_INT, {.dbl = 1 }, INT_MIN, INT_MAX, V|E}, +{"chromaoffset", "chroma qp offset from luma", OFFSET(chromaoffset), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, +{"trellis", "rate-distortion optimal quantization", OFFSET(trellis), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, +#if FF_API_MPV_GLOBAL_OPTS +{"skiprd", "Deprecated, use mpegvideo private options instead", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG2_SKIP_RD }, INT_MIN, INT_MAX, V|E, "flags2"}, +#endif +{"sc_factor", "multiplied by qscale for each frame and added to scene_change_score", OFFSET(scenechange_factor), AV_OPT_TYPE_INT, {.dbl = 6 }, 0, INT_MAX, V|E}, +{"mv0_threshold", NULL, OFFSET(mv0_threshold), AV_OPT_TYPE_INT, {.dbl = 256 }, 0, INT_MAX, V|E}, +{"b_sensitivity", "adjusts sensitivity of b_frame_strategy 1", OFFSET(b_sensitivity), AV_OPT_TYPE_INT, {.dbl = 40 }, 1, INT_MAX, V|E}, +{"compression_level", NULL, OFFSET(compression_level), AV_OPT_TYPE_INT, {.dbl = FF_COMPRESSION_DEFAULT }, INT_MIN, INT_MAX, V|A|E}, +{"min_prediction_order", NULL, OFFSET(min_prediction_order), AV_OPT_TYPE_INT, {.dbl = -1 }, INT_MIN, INT_MAX, A|E}, +{"max_prediction_order", NULL, OFFSET(max_prediction_order), AV_OPT_TYPE_INT, {.dbl = -1 }, INT_MIN, INT_MAX, A|E}, +{"timecode_frame_start", "GOP timecode frame start number, in non drop frame format", OFFSET(timecode_frame_start), AV_OPT_TYPE_INT64, {.dbl = 0 }, 0, INT64_MAX, V|E}, +#if FF_API_REQUEST_CHANNELS +{"request_channels", "set desired number of audio channels", OFFSET(request_channels), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, A|D}, +#endif +{"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, +{"channel_layout", NULL, OFFSET(channel_layout), AV_OPT_TYPE_INT64, {.dbl = DEFAULT }, 0, INT64_MAX, A|E|D, "channel_layout"}, +{"request_channel_layout", NULL, OFFSET(request_channel_layout), AV_OPT_TYPE_INT64, {.dbl = DEFAULT }, 0, INT64_MAX, A|D, "request_channel_layout"}, +{"rc_max_vbv_use", NULL, OFFSET(rc_max_available_vbv_use), AV_OPT_TYPE_FLOAT, {.dbl = 1.0/3 }, 0.0, FLT_MAX, V|E}, +{"rc_min_vbv_use", NULL, OFFSET(rc_min_vbv_overflow_use), AV_OPT_TYPE_FLOAT, {.dbl = 3 }, 0.0, FLT_MAX, V|E}, +{"ticks_per_frame", NULL, OFFSET(ticks_per_frame), AV_OPT_TYPE_INT, {.dbl = 1 }, 1, INT_MAX, A|V|E|D}, +{"color_primaries", NULL, OFFSET(color_primaries), AV_OPT_TYPE_INT, {.dbl = AVCOL_PRI_UNSPECIFIED }, 1, AVCOL_PRI_NB-1, V|E|D}, +{"color_trc", NULL, OFFSET(color_trc), AV_OPT_TYPE_INT, {.dbl = AVCOL_TRC_UNSPECIFIED }, 1, AVCOL_TRC_NB-1, V|E|D}, +{"colorspace", NULL, OFFSET(colorspace), AV_OPT_TYPE_INT, {.dbl = AVCOL_SPC_UNSPECIFIED }, 1, AVCOL_SPC_NB-1, V|E|D}, +{"color_range", NULL, OFFSET(color_range), AV_OPT_TYPE_INT, {.dbl = AVCOL_RANGE_UNSPECIFIED }, 0, AVCOL_RANGE_NB-1, V|E|D}, +{"chroma_sample_location", NULL, OFFSET(chroma_sample_location), AV_OPT_TYPE_INT, {.dbl = AVCHROMA_LOC_UNSPECIFIED }, 0, AVCHROMA_LOC_NB-1, V|E|D}, +{"log_level_offset", "set the log level offset", OFFSET(log_level_offset), AV_OPT_TYPE_INT, {.dbl = 0 }, INT_MIN, INT_MAX }, +{"slices", "number of slices, used in parallelized encoding", OFFSET(slices), AV_OPT_TYPE_INT, {.dbl = 0 }, 0, INT_MAX, V|E}, +{"thread_type", "select multithreading type", OFFSET(thread_type), AV_OPT_TYPE_FLAGS, {.dbl = FF_THREAD_SLICE|FF_THREAD_FRAME }, 0, INT_MAX, V|E|D, "thread_type"}, +{"slice", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_THREAD_SLICE }, INT_MIN, INT_MAX, V|E|D, "thread_type"}, +{"frame", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_THREAD_FRAME }, INT_MIN, INT_MAX, V|E|D, "thread_type"}, +{"audio_service_type", "audio service type", OFFSET(audio_service_type), AV_OPT_TYPE_INT, {.dbl = AV_AUDIO_SERVICE_TYPE_MAIN }, 0, AV_AUDIO_SERVICE_TYPE_NB-1, A|E, "audio_service_type"}, +{"ma", "Main Audio Service", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_MAIN }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"ef", "Effects", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_EFFECTS }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"vi", "Visually Impaired", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"hi", "Hearing Impaired", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"di", "Dialogue", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_DIALOGUE }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"co", "Commentary", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_COMMENTARY }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"em", "Emergency", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_EMERGENCY }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"vo", "Voice Over", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_VOICE_OVER }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"ka", "Karaoke", 0, AV_OPT_TYPE_CONST, {.dbl = AV_AUDIO_SERVICE_TYPE_KARAOKE }, INT_MIN, INT_MAX, A|E, "audio_service_type"}, +{"request_sample_fmt", NULL, OFFSET(request_sample_fmt), AV_OPT_TYPE_INT, {.dbl = AV_SAMPLE_FMT_NONE }, AV_SAMPLE_FMT_NONE, AV_SAMPLE_FMT_NB-1, A|D, "request_sample_fmt"}, +{"u8" , "8-bit unsigned integer", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_U8 }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, +{"s16", "16-bit signed integer", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_S16 }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, +{"s32", "32-bit signed integer", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_S32 }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, +{"flt", "32-bit float", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_FLT }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, +{"dbl", "64-bit double", 0, AV_OPT_TYPE_CONST, {.dbl = AV_SAMPLE_FMT_DBL }, INT_MIN, INT_MAX, A|D, "request_sample_fmt"}, +{NULL}, +}; + +#undef A +#undef V +#undef S +#undef E +#undef D +#undef DEFAULT +#undef OFFSET + +#endif // AVCODEC_OPTIONS_TABLE diff --git a/libavformat/options.c b/libavformat/options.c index dcc3d60995..3399dd4397 100644 --- a/libavformat/options.c +++ b/libavformat/options.c @@ -26,6 +26,8 @@ * Options definition for AVFormatContext. */ +#include "options_table.h" + static const char* format_to_name(void* ptr) { AVFormatContext* fc = (AVFormatContext*) ptr; @@ -74,45 +76,6 @@ static const AVClass *format_child_class_next(const AVClass *prev) return NULL; } -#define OFFSET(x) offsetof(AVFormatContext,x) -#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C -//these names are too long to be readable -#define E AV_OPT_FLAG_ENCODING_PARAM -#define D AV_OPT_FLAG_DECODING_PARAM - -static const AVOption options[]={ -{"probesize", "set probing size", OFFSET(probesize), AV_OPT_TYPE_INT, {.dbl = 5000000 }, 32, INT_MAX, D}, -{"packetsize", "set packet size", OFFSET(packet_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, E}, -{"fflags", NULL, OFFSET(flags), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, INT_MIN, INT_MAX, D|E, "fflags"}, -{"ignidx", "ignore index", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_IGNIDX }, INT_MIN, INT_MAX, D, "fflags"}, -{"genpts", "generate pts", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_GENPTS }, INT_MIN, INT_MAX, D, "fflags"}, -{"nofillin", "do not fill in missing values that can be exactly calculated", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_NOFILLIN }, INT_MIN, INT_MAX, D, "fflags"}, -{"noparse", "disable AVParsers, this needs nofillin too", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_NOPARSE }, INT_MIN, INT_MAX, D, "fflags"}, -{"igndts", "ignore dts", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_IGNDTS }, INT_MIN, INT_MAX, D, "fflags"}, -{"discardcorrupt", "discard corrupted frames", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_DISCARD_CORRUPT }, INT_MIN, INT_MAX, D, "fflags"}, -{"analyzeduration", "how many microseconds are analyzed to estimate duration", OFFSET(max_analyze_duration), AV_OPT_TYPE_INT, {.dbl = 5*AV_TIME_BASE }, 0, INT_MAX, D}, -{"cryptokey", "decryption key", OFFSET(key), AV_OPT_TYPE_BINARY, {.dbl = 0}, 0, 0, D}, -{"indexmem", "max memory used for timestamp index (per stream)", OFFSET(max_index_size), AV_OPT_TYPE_INT, {.dbl = 1<<20 }, 0, INT_MAX, D}, -{"rtbufsize", "max memory used for buffering real-time frames", OFFSET(max_picture_buffer), AV_OPT_TYPE_INT, {.dbl = 3041280 }, 0, INT_MAX, D}, /* defaults to 1s of 15fps 352x288 YUYV422 video */ -{"fdebug", "print specific debug info", OFFSET(debug), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, 0, INT_MAX, E|D, "fdebug"}, -{"ts", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_FDEBUG_TS }, INT_MIN, INT_MAX, E|D, "fdebug"}, -{"max_delay", "maximum muxing or demuxing delay in microseconds", OFFSET(max_delay), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, E|D}, -{"fpsprobesize", "number of frames used to probe fps", OFFSET(fps_probe_size), AV_OPT_TYPE_INT, {.dbl = -1}, -1, INT_MAX-1, D}, -/* this is a crutch for avconv, since it cannot deal with identically named options in different contexts. - * to be removed when avconv is fixed */ -{"f_err_detect", "set error detection flags (deprecated; use err_detect, save via avconv)", OFFSET(error_recognition), AV_OPT_TYPE_FLAGS, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, "err_detect"}, -{"err_detect", "set error detection flags", OFFSET(error_recognition), AV_OPT_TYPE_FLAGS, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, "err_detect"}, -{"crccheck", "verify embedded CRCs", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, "err_detect"}, -{"bitstream", "detect bitstream specification deviations", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_BITSTREAM }, INT_MIN, INT_MAX, D, "err_detect"}, -{"buffer", "detect improper bitstream length", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_BUFFER }, INT_MIN, INT_MAX, D, "err_detect"}, -{"explode", "abort decoding on minor error detection", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_EXPLODE }, INT_MIN, INT_MAX, D, "err_detect"}, -{NULL}, -}; - -#undef E -#undef D -#undef DEFAULT - static const AVClass av_format_context_class = { .class_name = "AVFormatContext", .item_name = format_to_name, diff --git a/libavformat/options_table.h b/libavformat/options_table.h new file mode 100644 index 0000000000..7aee448c0f --- /dev/null +++ b/libavformat/options_table.h @@ -0,0 +1,62 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVFORMAT_OPTIONS_TABLE +#define AVFORMAT_OPTIONS_TABLE + +#define OFFSET(x) offsetof(AVFormatContext,x) +#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C +//these names are too long to be readable +#define E AV_OPT_FLAG_ENCODING_PARAM +#define D AV_OPT_FLAG_DECODING_PARAM + +static const AVOption options[]={ +{"probesize", "set probing size", OFFSET(probesize), AV_OPT_TYPE_INT, {.dbl = 5000000 }, 32, INT_MAX, D}, +{"packetsize", "set packet size", OFFSET(packet_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, E}, +{"fflags", NULL, OFFSET(flags), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, INT_MIN, INT_MAX, D|E, "fflags"}, +{"ignidx", "ignore index", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_IGNIDX }, INT_MIN, INT_MAX, D, "fflags"}, +{"genpts", "generate pts", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_GENPTS }, INT_MIN, INT_MAX, D, "fflags"}, +{"nofillin", "do not fill in missing values that can be exactly calculated", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_NOFILLIN }, INT_MIN, INT_MAX, D, "fflags"}, +{"noparse", "disable AVParsers, this needs nofillin too", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_NOPARSE }, INT_MIN, INT_MAX, D, "fflags"}, +{"igndts", "ignore dts", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_IGNDTS }, INT_MIN, INT_MAX, D, "fflags"}, +{"discardcorrupt", "discard corrupted frames", 0, AV_OPT_TYPE_CONST, {.dbl = AVFMT_FLAG_DISCARD_CORRUPT }, INT_MIN, INT_MAX, D, "fflags"}, +{"analyzeduration", "how many microseconds are analyzed to estimate duration", OFFSET(max_analyze_duration), AV_OPT_TYPE_INT, {.dbl = 5*AV_TIME_BASE }, 0, INT_MAX, D}, +{"cryptokey", "decryption key", OFFSET(key), AV_OPT_TYPE_BINARY, {.dbl = 0}, 0, 0, D}, +{"indexmem", "max memory used for timestamp index (per stream)", OFFSET(max_index_size), AV_OPT_TYPE_INT, {.dbl = 1<<20 }, 0, INT_MAX, D}, +{"rtbufsize", "max memory used for buffering real-time frames", OFFSET(max_picture_buffer), AV_OPT_TYPE_INT, {.dbl = 3041280 }, 0, INT_MAX, D}, /* defaults to 1s of 15fps 352x288 YUYV422 video */ +{"fdebug", "print specific debug info", OFFSET(debug), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, 0, INT_MAX, E|D, "fdebug"}, +{"ts", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_FDEBUG_TS }, INT_MIN, INT_MAX, E|D, "fdebug"}, +{"max_delay", "maximum muxing or demuxing delay in microseconds", OFFSET(max_delay), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, E|D}, +{"fpsprobesize", "number of frames used to probe fps", OFFSET(fps_probe_size), AV_OPT_TYPE_INT, {.dbl = -1}, -1, INT_MAX-1, D}, +/* this is a crutch for avconv, since it cannot deal with identically named options in different contexts. + * to be removed when avconv is fixed */ +{"f_err_detect", "set error detection flags (deprecated; use err_detect, save via avconv)", OFFSET(error_recognition), AV_OPT_TYPE_FLAGS, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, "err_detect"}, +{"err_detect", "set error detection flags", OFFSET(error_recognition), AV_OPT_TYPE_FLAGS, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, "err_detect"}, +{"crccheck", "verify embedded CRCs", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_CRCCHECK }, INT_MIN, INT_MAX, D, "err_detect"}, +{"bitstream", "detect bitstream specification deviations", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_BITSTREAM }, INT_MIN, INT_MAX, D, "err_detect"}, +{"buffer", "detect improper bitstream length", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_BUFFER }, INT_MIN, INT_MAX, D, "err_detect"}, +{"explode", "abort decoding on minor error detection", 0, AV_OPT_TYPE_CONST, {.dbl = AV_EF_EXPLODE }, INT_MIN, INT_MAX, D, "err_detect"}, +{NULL}, +}; + +#undef E +#undef D +#undef DEFAULT +#undef OFFSET + +#endif // AVFORMAT_OPTIONS_TABLE -- cgit v1.2.3 From 4fea8959d8f8719fa33ea30a5cfc98338aae0af2 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 15 Mar 2012 08:17:05 +0100 Subject: doc/avconv: remove entries for AVOptions. Documentation for those will be generated automatically. --- doc/avconv.texi | 188 ++++----------------------------------------- libavcodec/options_table.h | 20 +++-- 2 files changed, 29 insertions(+), 179 deletions(-) diff --git a/doc/avconv.texi b/doc/avconv.texi index 91283a4831..64892a4da3 100644 --- a/doc/avconv.texi +++ b/doc/avconv.texi @@ -330,25 +330,7 @@ numerator and denominator of the aspect ratio. For example "4:3", @item -vn (@emph{output}) Disable video recording. -@item -bt @var{tolerance} -Set video bitrate tolerance (in bits, default 4000k). -Has a minimum value of: (target_bitrate/target_framerate). -In 1-pass mode, bitrate tolerance specifies how far ratecontrol is -willing to deviate from the target average bitrate value. This is -not related to min/max bitrate. Lowering tolerance too much has -an adverse effect on quality. -@item -maxrate @var{bitrate} -Set max video bitrate (in bit/s). -Requires -bufsize to be set. -@item -minrate @var{bitrate} -Set min video bitrate (in bit/s). -Most useful in setting up a CBR encode: -@example -avconv -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v -@end example -It is of little use elsewise. -@item -bufsize @var{size} -Set video buffer verifier buffer size (in bits). + @item -vcodec @var{codec} (@emph{output}) Set the video codec. This is an alias for @code{-codec:v}. @item -same_quant @@ -392,140 +374,11 @@ Set pixel format. Use @code{-pix_fmts} to show all the supported pixel formats. @item -sws_flags @var{flags} (@emph{input/output}) Set SwScaler flags. -@item -g @var{gop_size} -Set the group of pictures size. @item -vdt @var{n} Discard threshold. -@item -qmin @var{q} -minimum video quantizer scale (VBR) -@item -qmax @var{q} -maximum video quantizer scale (VBR) -@item -qdiff @var{q} -maximum difference between the quantizer scales (VBR) -@item -qblur @var{blur} -video quantizer scale blur (VBR) (range 0.0 - 1.0) -@item -qcomp @var{compression} -video quantizer scale compression (VBR) (default 0.5). -Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0 - -@item -lmin @var{lambda} -minimum video lagrange factor (VBR) -@item -lmax @var{lambda} -max video lagrange factor (VBR) -@item -mblmin @var{lambda} -minimum macroblock quantizer scale (VBR) -@item -mblmax @var{lambda} -maximum macroblock quantizer scale (VBR) - -These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units, -but you may use the QP2LAMBDA constant to easily convert from 'q' units: -@example -avconv -i src.ext -lmax 21*QP2LAMBDA dst.ext -@end example - -@item -rc_init_cplx @var{complexity} -initial complexity for single pass encoding -@item -b_qfactor @var{factor} -qp factor between P- and B-frames -@item -i_qfactor @var{factor} -qp factor between P- and I-frames -@item -b_qoffset @var{offset} -qp offset between P- and B-frames -@item -i_qoffset @var{offset} -qp offset between P- and I-frames -@item -rc_eq @var{equation} -Set rate control equation (see section "Expression Evaluation") -(default = @code{tex^qComp}). - -When computing the rate control equation expression, besides the -standard functions defined in the section "Expression Evaluation", the -following functions are available: -@table @var -@item bits2qp(bits) -@item qp2bits(qp) -@end table - -and the following constants are available: -@table @var -@item iTex -@item pTex -@item tex -@item mv -@item fCode -@item iCount -@item mcVar -@item var -@item isI -@item isP -@item isB -@item avgQP -@item qComp -@item avgIITex -@item avgPITex -@item avgPPTex -@item avgBPTex -@item avgTex -@end table @item -rc_override[:@var{stream_specifier}] @var{override} (@emph{output,per-stream}) rate control override for specific intervals -@item -me_method @var{method} -Set motion estimation method to @var{method}. -Available methods are (from lowest to best quality): -@table @samp -@item zero -Try just the (0, 0) vector. -@item phods -@item log -@item x1 -@item hex -@item umh -@item epzs -(default method) -@item full -exhaustive search (slow and marginally better than epzs) -@end table - -@item -er @var{n} -Set error resilience to @var{n}. -@table @samp -@item 1 -FF_ER_CAREFUL (default) -@item 2 -FF_ER_COMPLIANT -@item 3 -FF_ER_AGGRESSIVE -@item 4 -FF_ER_VERY_AGGRESSIVE -@end table - -@item -ec @var{bit_mask} -Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of -the following values: -@table @samp -@item 1 -FF_EC_GUESS_MVS (default = enabled) -@item 2 -FF_EC_DEBLOCK (default = enabled) -@end table - -@item -bf @var{frames} -Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4). -@item -mbd @var{mode} -macroblock decision -@table @samp -@item 0 -FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in avconv). -@item 1 -FF_MB_DECISION_BITS: Choose the one which needs the fewest bits. -@item 2 -FF_MB_DECISION_RD: rate distortion -@end table - -@item -bug @var{param} -Work around encoder bugs that are not auto-detected. -@item -strict @var{strictness} -How strictly to follow the standards. @item -deinterlace Deinterlace pictures. @@ -586,28 +439,6 @@ of supported sample formats. @table @option @item -atag @var{fourcc/tag} (@emph{output}) Force audio tag/fourcc. This is an alias for @code{-tag:a}. -@item -audio_service_type @var{type} -Set the type of service that the audio stream contains. -@table @option -@item ma -Main Audio Service (default) -@item ef -Effects -@item vi -Visually Impaired -@item hi -Hearing Impaired -@item di -Dialogue -@item co -Commentary -@item em -Emergency -@item vo -Voice Over -@item ka -Karaoke -@end table @end table @section Subtitle options: @@ -739,12 +570,8 @@ Exit after avconv has been running for @var{duration} seconds. Dump each input packet to stderr. @item -hex (@emph{global}) When dumping packets, also dump the payload. -@item -ps @var{size} -Set RTP payload size in bytes. @item -re (@emph{input}) Read input at native frame rate. Mainly used to simulate a grab device. -@item -threads @var{count} -Thread count. @item -vsync @var{parameter} Video sync method. @@ -1034,6 +861,19 @@ avconv -i test1.avi -i test2.avi -map 0.3 -map 0.2 -map 0.1 -map 0.0 -c copy tes The resulting output file @file{test12.avi} will contain first four streams from the input file in reverse order. +@item +To force CBR video output: +@example +avconv -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v +@end example + +@item +The four options lmin, lmax, mblmin and mblmax use 'lambda' units, +but you may use the QP2LAMBDA constant to easily convert from 'q' units: +@example +avconv -i src.ext -lmax 21*QP2LAMBDA dst.ext +@end example + @end itemize @c man end EXAMPLES diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index 46c1e0b061..6615ade1a6 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -33,7 +33,10 @@ static const AVOption options[]={ {"b", "set bitrate (in bits/s)", OFFSET(bit_rate), AV_OPT_TYPE_INT, {.dbl = AV_CODEC_DEFAULT_BITRATE }, INT_MIN, INT_MAX, V|A|E}, -{"bt", "set video bitrate tolerance (in bits/s)", OFFSET(bit_rate_tolerance), AV_OPT_TYPE_INT, {.dbl = AV_CODEC_DEFAULT_BITRATE*20 }, 1, INT_MAX, V|E}, +{"bt", "Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate tolerance specifies how far " + "ratecontrol is willing to deviate from the target average bitrate value. This is not related " + "to min/max bitrate. Lowering tolerance too much has an adverse effect on quality.", + OFFSET(bit_rate_tolerance), AV_OPT_TYPE_INT, {.dbl = AV_CODEC_DEFAULT_BITRATE*20 }, 1, INT_MAX, V|E}, {"flags", NULL, OFFSET(flags), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, 0, UINT_MAX, V|A|E|D, "flags"}, {"mv4", "use four motion vector by macroblock (mpeg4)", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_4MV }, INT_MIN, INT_MAX, V|E, "flags"}, {"qpel", "use 1/4 pel motion compensation", 0, AV_OPT_TYPE_CONST, {.dbl = CODEC_FLAG_QPEL }, INT_MIN, INT_MAX, V|E, "flags"}, @@ -91,7 +94,9 @@ static const AVOption options[]={ {"frame_size", NULL, OFFSET(frame_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|E}, {"frame_number", NULL, OFFSET(frame_number), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, {"delay", NULL, OFFSET(delay), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"qcomp", "video quantizer scale compression (VBR)", OFFSET(qcompress), AV_OPT_TYPE_FLOAT, {.dbl = 0.5 }, -FLT_MAX, FLT_MAX, V|E}, +{"qcomp", "video quantizer scale compression (VBR). Constant of ratecontrol equation. " + "Recommended range for default rc_eq: 0.0-1.0", + OFFSET(qcompress), AV_OPT_TYPE_FLOAT, {.dbl = 0.5 }, -FLT_MAX, FLT_MAX, V|E}, {"qblur", "video quantizer scale blur (VBR)", OFFSET(qblur), AV_OPT_TYPE_FLOAT, {.dbl = 0.5 }, -1, FLT_MAX, V|E}, {"qmin", "min video quantizer scale (VBR)", OFFSET(qmin), AV_OPT_TYPE_INT, {.dbl = 2 }, -1, 69, V|E}, {"qmax", "max video quantizer scale (VBR)", OFFSET(qmax), AV_OPT_TYPE_INT, {.dbl = 31 }, -1, 69, V|E}, @@ -153,9 +158,14 @@ static const AVOption options[]={ {"rc_qmod_amp", "experimental quantizer modulation", OFFSET(rc_qmod_amp), AV_OPT_TYPE_FLOAT, {.dbl = DEFAULT }, -FLT_MAX, FLT_MAX, V|E}, {"rc_qmod_freq", "experimental quantizer modulation", OFFSET(rc_qmod_freq), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|E}, {"rc_override_count", NULL, OFFSET(rc_override_count), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX}, -{"rc_eq", "set rate control equation", OFFSET(rc_eq), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, V|E}, -{"maxrate", "set max bitrate tolerance (in bits/s)", OFFSET(rc_max_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, -{"minrate", "set min bitrate tolerance (in bits/s)", OFFSET(rc_min_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, +{"rc_eq", "Set rate control equation. When computing the expression, besides the standard functions " + "defined in the section 'Expression Evaluation', the following functions are available: " + "bits2qp(bits), qp2bits(qp). Also the following constants are available: iTex pTex tex mv " + "fCode iCount mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex avgTex.", + OFFSET(rc_eq), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, V|E}, +{"maxrate", "Set max bitrate tolerance (in bits/s). Requires bufsize to be set.", OFFSET(rc_max_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, +{"minrate", "Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR encode. It is of little use elsewise.", + OFFSET(rc_min_rate), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, V|A|E}, {"bufsize", "set ratecontrol buffer size (in bits)", OFFSET(rc_buffer_size), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, INT_MIN, INT_MAX, A|V|E}, {"rc_buf_aggressivity", "currently useless", OFFSET(rc_buffer_aggressivity), AV_OPT_TYPE_FLOAT, {.dbl = 1.0 }, -FLT_MAX, FLT_MAX, V|E}, {"i_qfactor", "qp factor between P and I frames", OFFSET(i_quant_factor), AV_OPT_TYPE_FLOAT, {.dbl = -0.8 }, -FLT_MAX, FLT_MAX, V|E}, -- cgit v1.2.3 From 0d0b81f941a2d5011bec754ba48e84a479306661 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Wed, 14 Mar 2012 20:08:50 +0100 Subject: Generate manpages for AV{Format,Codec}Context AVOptions. --- Makefile | 2 +- doc/Makefile | 17 ++++-- doc/avtools-common-opts.texi | 3 ++ doc/print_options.c | 123 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 140 insertions(+), 5 deletions(-) create mode 100644 doc/print_options.c diff --git a/Makefile b/Makefile index ae9191cd10..ae9c5fa489 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,7 @@ PROGS-$(CONFIG_AVSERVER) += avserver PROGS := $(PROGS-yes:%=%$(EXESUF)) OBJS = $(PROGS-yes:%=%.o) cmdutils.o TESTTOOLS = audiogen videogen rotozoom tiny_psnr base64 -HOSTPROGS := $(TESTTOOLS:%=tests/%) +HOSTPROGS := $(TESTTOOLS:%=tests/%) doc/print_options TOOLS = qt-faststart trasher TOOLS-$(CONFIG_ZLIB) += cws2fws diff --git a/doc/Makefile b/doc/Makefile index 0acd9844af..5172707a4b 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -17,18 +17,27 @@ documentation: $(DOCS) TEXIDEP = awk '/^@include/ { printf "$@: $(@D)/%s\n", $$2 }' <$< >$(@:%=%.d) +doc/print_options.o: libavformat/options_table.h libavcodec/options_table.h + +GENTEXI = format codec +GENTEXI := $(GENTEXI:%=doc/avoptions_%.texi) + +$(GENTEXI): TAG = GENTEXI +$(GENTEXI): doc/avoptions_%.texi: doc/print_options + $(M)doc/print_options $* > $@ + doc/%.html: TAG = HTML -doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.init +doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.init $(GENTEXI) $(Q)$(TEXIDEP) $(M)texi2html -monolithic --init-file $(SRC_PATH)/doc/t2h.init --output $@ $< doc/%.pod: TAG = POD -doc/%.pod: doc/%.texi +doc/%.pod: doc/%.texi $(GENTEXI) $(Q)$(TEXIDEP) $(M)$(SRC_PATH)/doc/texi2pod.pl $< $@ doc/%.1: TAG = MAN -doc/%.1: doc/%.pod +doc/%.1: doc/%.pod $(GENTEXI) $(M)pod2man --section=1 --center=" " --release=" " $< > $@ $(DOCS): | doc @@ -46,7 +55,7 @@ uninstall-man: $(RM) $(addprefix "$(MANDIR)/man1/",$(ALLMANPAGES)) clean:: - $(RM) doc/*.html doc/*.pod doc/*.1 $(CLEANSUFFIXES:%=doc/%) + $(RM) doc/*.html doc/*.pod doc/*.1 $(CLEANSUFFIXES:%=doc/%) doc/avoptions_*.texi -include $(wildcard $(DOCS:%=%.d)) diff --git a/doc/avtools-common-opts.texi b/doc/avtools-common-opts.texi index badd35818c..0be9cf0634 100644 --- a/doc/avtools-common-opts.texi +++ b/doc/avtools-common-opts.texi @@ -156,3 +156,6 @@ use @option{-option 0}/@option{-option 1}. Note2 old undocumented way of specifying per-stream AVOptions by prepending v/a/s to the options name is now obsolete and will be removed soon. + +@include avoptions_codec.texi +@include avoptions_format.texi diff --git a/doc/print_options.c b/doc/print_options.c new file mode 100644 index 0000000000..4283e6a86d --- /dev/null +++ b/doc/print_options.c @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2012 Anton Khirnov + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * generate texinfo manpages for avoptions + */ + +#include +#include +#include + +#include "libavformat/avformat.h" +#include "libavcodec/avcodec.h" +#include "libavutil/opt.h" + +static void print_usage(void) +{ + fprintf(stderr, "Usage: enum_options type\n" + "type: format codec\n"); + exit(1); +} + +static void print_option(const AVOption *opts, const AVOption *o, int per_stream) +{ + printf("@item -%s%s @var{", o->name, per_stream ? "[:stream_specifier]" : ""); + switch (o->type) { + case AV_OPT_TYPE_BINARY: printf("hexadecimal string"); break; + case AV_OPT_TYPE_STRING: printf("string"); break; + case AV_OPT_TYPE_INT: + case AV_OPT_TYPE_INT64: printf("integer"); break; + case AV_OPT_TYPE_FLOAT: + case AV_OPT_TYPE_DOUBLE: printf("float"); break; + case AV_OPT_TYPE_RATIONAL: printf("rational number"); break; + case AV_OPT_TYPE_FLAGS: printf("flags"); break; + default: printf("value"); break; + } + printf("} (@emph{"); + + if (o->flags & AV_OPT_FLAG_DECODING_PARAM) { + printf("input"); + if (o->flags & AV_OPT_FLAG_ENCODING_PARAM) + printf("/"); + } + if (o->flags & AV_OPT_FLAG_ENCODING_PARAM) printf("output"); + if (o->flags & AV_OPT_FLAG_AUDIO_PARAM) printf(",audio"); + if (o->flags & AV_OPT_FLAG_VIDEO_PARAM) printf(",video"); + if (o->flags & AV_OPT_FLAG_SUBTITLE_PARAM) printf(",subtitles"); + + printf("})\n"); + if (o->help) + printf("%s\n", o->help); + + if (o->unit) { + const AVOption *u; + printf("\nPossible values:\n@table @samp\n"); + + for (u = opts; u->name; u++) { + if (u->type == AV_OPT_TYPE_CONST && u->unit && !strcmp(u->unit, o->unit)) + printf("@item %s\n%s\n", u->name, u->help ? u->help : ""); + } + printf("@end table\n"); + } +} + +static void show_opts(const AVOption *opts, int per_stream) +{ + const AVOption *o; + + printf("@table @option\n"); + for (o = opts; o->name; o++) { + if (o->type != AV_OPT_TYPE_CONST) + print_option(opts, o, per_stream); + } + printf("@end table\n"); +} + +static void show_format_opts(void) +{ +#include "libavformat/options_table.h" + + printf("@section Format AVOptions\n"); + show_opts(options, 0); +} + +static void show_codec_opts(void) +{ +#include "libavcodec/options_table.h" + + printf("@section Codec AVOptions\n"); + show_opts(options, 1); +} + +int main(int argc, char **argv) +{ + if (argc < 2) + print_usage(); + + if (!strcmp(argv[1], "format")) + show_format_opts(); + else if (!strcmp(argv[1], "codec")) + show_codec_opts(); + else + print_usage(); + + return 0; +} -- cgit v1.2.3 From 4fa57d524f16524e9735f99b387167149dbf5a7b Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Mon, 19 Mar 2012 20:37:10 +0200 Subject: libavformat: Set the default for the max_delay option to -1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make the muxers/demuxers that use the field handle the default -1 in the same way as 0. This allows distinguishing an intentionally set 0 from the default value where the user hasn't set it. Signed-off-by: Martin Storsjö --- libavformat/mpegenc.c | 2 ++ libavformat/mpegtsenc.c | 3 +++ libavformat/options_table.h | 2 +- libavformat/rtpenc.c | 2 +- libavformat/rtsp.c | 6 ++++++ 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c index 852b3f13c9..bda8d8324b 100644 --- a/libavformat/mpegenc.c +++ b/libavformat/mpegenc.c @@ -318,6 +318,8 @@ static int mpeg_mux_init(AVFormatContext *ctx) s->packet_size = ctx->packet_size; } else s->packet_size = 2048; + if (ctx->max_delay < 0) /* Not set by the caller */ + ctx->max_delay = 0; s->vcd_padding_bytes_written = 0; s->vcd_padding_bitrate=0; diff --git a/libavformat/mpegtsenc.c b/libavformat/mpegtsenc.c index 493ae2eb6f..a594ca257f 100644 --- a/libavformat/mpegtsenc.c +++ b/libavformat/mpegtsenc.c @@ -460,6 +460,9 @@ static int mpegts_write_header(AVFormatContext *s) const char *provider_name; int *pids; + if (s->max_delay < 0) /* Not set by the caller */ + s->max_delay = 0; + // round up to a whole number of TS packets ts->pes_payload_size = (ts->pes_payload_size + 14 + 183) / 184 * 184 - 14; diff --git a/libavformat/options_table.h b/libavformat/options_table.h index 7aee448c0f..683596c206 100644 --- a/libavformat/options_table.h +++ b/libavformat/options_table.h @@ -41,7 +41,7 @@ static const AVOption options[]={ {"rtbufsize", "max memory used for buffering real-time frames", OFFSET(max_picture_buffer), AV_OPT_TYPE_INT, {.dbl = 3041280 }, 0, INT_MAX, D}, /* defaults to 1s of 15fps 352x288 YUYV422 video */ {"fdebug", "print specific debug info", OFFSET(debug), AV_OPT_TYPE_FLAGS, {.dbl = DEFAULT }, 0, INT_MAX, E|D, "fdebug"}, {"ts", NULL, 0, AV_OPT_TYPE_CONST, {.dbl = FF_FDEBUG_TS }, INT_MIN, INT_MAX, E|D, "fdebug"}, -{"max_delay", "maximum muxing or demuxing delay in microseconds", OFFSET(max_delay), AV_OPT_TYPE_INT, {.dbl = DEFAULT }, 0, INT_MAX, E|D}, +{"max_delay", "maximum muxing or demuxing delay in microseconds", OFFSET(max_delay), AV_OPT_TYPE_INT, {.dbl = -1 }, -1, INT_MAX, E|D}, {"fpsprobesize", "number of frames used to probe fps", OFFSET(fps_probe_size), AV_OPT_TYPE_INT, {.dbl = -1}, -1, INT_MAX-1, D}, /* this is a crutch for avconv, since it cannot deal with identically named options in different contexts. * to be removed when avconv is fixed */ diff --git a/libavformat/rtpenc.c b/libavformat/rtpenc.c index 6a1be499e2..78121ed3c5 100644 --- a/libavformat/rtpenc.c +++ b/libavformat/rtpenc.c @@ -126,7 +126,7 @@ static int rtp_write_header(AVFormatContext *s1) s->max_payload_size = s1->packet_size - 12; s->max_frames_per_packet = 0; - if (s1->max_delay) { + if (s1->max_delay > 0) { if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) { int frame_size = av_get_audio_frame_duration(st->codec, 0); if (!frame_size) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 56deed3b3a..7afd106cfb 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -1426,6 +1426,9 @@ int ff_rtsp_connect(AVFormatContext *s) if (!ff_network_init()) return AVERROR(EIO); + if (s->max_delay < 0) /* Not set by the caller */ + s->max_delay = 0; + rt->control_transport = RTSP_MODE_PLAIN; if (rt->lower_transport_mask & (1 << RTSP_LOWER_TRANSPORT_HTTP)) { rt->lower_transport_mask = 1 << RTSP_LOWER_TRANSPORT_TCP; @@ -1866,6 +1869,9 @@ static int sdp_read_header(AVFormatContext *s) if (!ff_network_init()) return AVERROR(EIO); + if (s->max_delay < 0) /* Not set by the caller */ + s->max_delay = 0; + /* read the whole sdp file */ /* XXX: better loading */ content = av_malloc(SDP_MAX_SIZE); -- cgit v1.2.3 From ccfa8aa26f666372f47d69bc49e420a9b4239626 Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Mon, 19 Mar 2012 20:40:23 +0200 Subject: rtsp: Set the default delay to 0.1 s for the RTSP/SDP/RTP demuxers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This enables reordering of UDP packets by default, unless the caller explicitly sets -max_delay 0. Signed-off-by: Martin Storsjö --- doc/protocols.texi | 6 +++--- libavformat/rtsp.c | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/protocols.texi b/doc/protocols.texi index 0eb4c69b49..b08233ec80 100644 --- a/doc/protocols.texi +++ b/doc/protocols.texi @@ -288,9 +288,9 @@ Accept packets only from negotiated peer address and port. @end table When receiving data over UDP, the demuxer tries to reorder received packets -(since they may arrive out of order, or packets may get lost totally). In -order for this to be enabled, a maximum delay must be specified in the -@code{max_delay} field of AVFormatContext. +(since they may arrive out of order, or packets may get lost totally). This +can be disabled by setting the maximum demuxing delay to zero (via +the @code{max_delay} field of AVFormatContext). When watching multi-bitrate Real-RTSP streams with @file{avplay}, the streams to display can be chosen with @code{-vst} @var{n} and diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 7afd106cfb..07cf80992e 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -56,6 +56,7 @@ #define MAX_TIMEOUTS READ_PACKET_TIMEOUT_S * 1000 / POLL_TIMEOUT_MS #define SDP_MAX_SIZE 16384 #define RECVBUF_SIZE 10 * RTP_MAX_PACKET_LENGTH +#define DEFAULT_REORDERING_DELAY 100000 #define OFFSET(x) offsetof(RTSPState, x) #define DEC AV_OPT_FLAG_DECODING_PARAM @@ -1427,7 +1428,7 @@ int ff_rtsp_connect(AVFormatContext *s) return AVERROR(EIO); if (s->max_delay < 0) /* Not set by the caller */ - s->max_delay = 0; + s->max_delay = s->iformat ? DEFAULT_REORDERING_DELAY : 0; rt->control_transport = RTSP_MODE_PLAIN; if (rt->lower_transport_mask & (1 << RTSP_LOWER_TRANSPORT_HTTP)) { @@ -1870,7 +1871,7 @@ static int sdp_read_header(AVFormatContext *s) return AVERROR(EIO); if (s->max_delay < 0) /* Not set by the caller */ - s->max_delay = 0; + s->max_delay = DEFAULT_REORDERING_DELAY; /* read the whole sdp file */ /* XXX: better loading */ -- cgit v1.2.3 From 39f5a5462c07234453ad47a2a0158d390d4e42fc Mon Sep 17 00:00:00 2001 From: Martin Storsjö Date: Mon, 19 Mar 2012 19:31:15 +0200 Subject: movenc: Add a min_frag_duration option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The other fragmentation options (frag_duration, frag_size and frag_keyframe) are combined with OR, cutting fragments at the first of the conditions being fulfilled. Signed-off-by: Martin Storsjö --- doc/muxers.texi | 7 +++++++ libavformat/movenc.c | 15 ++++++++++----- libavformat/movenc.h | 1 + 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/doc/muxers.texi b/doc/muxers.texi index 82ea99a17e..4bb6d56a00 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -172,8 +172,15 @@ Allow the caller to manually choose when to cut fragments, by calling @code{av_write_frame(ctx, NULL)} to write a fragment with the packets written so far. (This is only useful with other applications integrating libavformat, not from @command{avconv}.) +@item -min_frag_duration @var{duration} +Don't create fragments that are shorter than @var{duration} microseconds long. @end table +If more than one condition is specified, fragments are cut when +one of the specified conditions is fulfilled. The exception to this is +@code{-min_frag_duration}, which has to be fulfilled for any of the other +conditions to apply. + Additionally, the way the output file is written can be adjusted through a few other options: diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 10bcedc66a..1209b7b114 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -56,6 +56,7 @@ static const AVOption options[] = { { "iods_audio_profile", "iods audio profile atom.", offsetof(MOVMuxContext, iods_audio_profile), AV_OPT_TYPE_INT, {.dbl = -1}, -1, 255, AV_OPT_FLAG_ENCODING_PARAM}, { "iods_video_profile", "iods video profile atom.", offsetof(MOVMuxContext, iods_video_profile), AV_OPT_TYPE_INT, {.dbl = -1}, -1, 255, AV_OPT_FLAG_ENCODING_PARAM}, { "frag_duration", "Maximum fragment duration", offsetof(MOVMuxContext, max_fragment_duration), AV_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, + { "min_frag_duration", "Minimum fragment duration", offsetof(MOVMuxContext, min_fragment_duration), AV_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, { "frag_size", "Maximum fragment size", offsetof(MOVMuxContext, max_fragment_size), AV_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, { "ism_lookahead", "Number of lookahead entries for ISM files", offsetof(MOVMuxContext, ism_lookahead), AV_OPT_TYPE_INT, {.dbl = 0}, 0, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM}, { NULL }, @@ -2831,21 +2832,25 @@ static int mov_write_packet_internal(AVFormatContext *s, AVPacket *pkt) unsigned int samples_in_chunk = 0; int size= pkt->size; uint8_t *reformatted_data = NULL; + int64_t frag_duration = 0; if (!s->pb->seekable && !(mov->flags & FF_MOV_FLAG_EMPTY_MOOV)) return 0; /* Can't handle that */ if (!size) return 0; /* Discard 0 sized packets */ - if ((mov->max_fragment_duration && trk->entry && - av_rescale_q(pkt->dts - trk->cluster[0].dts, - s->streams[pkt->stream_index]->time_base, - AV_TIME_BASE_Q) >= mov->max_fragment_duration) || + if (trk->entry) + frag_duration = av_rescale_q(pkt->dts - trk->cluster[0].dts, + s->streams[pkt->stream_index]->time_base, + AV_TIME_BASE_Q); + if ((mov->max_fragment_duration && + frag_duration >= mov->max_fragment_duration) || (mov->max_fragment_size && mov->mdat_size + size >= mov->max_fragment_size) || (mov->flags & FF_MOV_FLAG_FRAG_KEYFRAME && enc->codec_type == AVMEDIA_TYPE_VIDEO && trk->entry && pkt->flags & AV_PKT_FLAG_KEY)) { - mov_flush_fragment(s); + if (frag_duration >= mov->min_fragment_duration) + mov_flush_fragment(s); } if (mov->flags & FF_MOV_FLAG_FRAGMENT) { diff --git a/libavformat/movenc.h b/libavformat/movenc.h index 350dbe04f2..3be43e0fc9 100644 --- a/libavformat/movenc.h +++ b/libavformat/movenc.h @@ -149,6 +149,7 @@ typedef struct MOVMuxContext { int fragments; int max_fragment_duration; + int min_fragment_duration; int max_fragment_size; int ism_lookahead; AVIOContext *mdat_buf; -- cgit v1.2.3 From b8b207e8963f35a76c6981d7a74d6c08a53abab9 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Tue, 20 Mar 2012 10:53:06 +0000 Subject: doc: texi2pod: add -I flag This allows specifying additional directories to search for @include files. Signed-off-by: Mans Rullgard --- doc/texi2pod.pl | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/doc/texi2pod.pl b/doc/texi2pod.pl index 0eb5e8d9fe..94323be340 100755 --- a/doc/texi2pod.pl +++ b/doc/texi2pod.pl @@ -36,7 +36,7 @@ $shift = ""; %defs = (); $fnno = 1; $inf = ""; -$ibase = ""; +@ibase = (); while ($_ = shift) { if (/^-D(.*)$/) { @@ -52,6 +52,8 @@ while ($_ = shift) { die "flags may only contain letters, digits, hyphens, dashes and underscores\n" unless $flag =~ /^[a-zA-Z0-9_-]+$/; $defs{$flag} = $value; + } elsif (/^-I(.*)$/) { + push @ibase, $1 ne "" ? $1 : shift; } elsif (/^-/) { usage(); } else { @@ -61,10 +63,12 @@ while ($_ = shift) { } } +push @ibase, "."; + if (defined $in) { $inf = gensym(); open($inf, "<$in") or die "opening \"$in\": $!\n"; - $ibase = $1 if $in =~ m|^(.+)/[^/]+$|; + push @ibase, $1 if $in =~ m|^(.+)/[^/]+$|; } else { $inf = \*STDIN; } @@ -74,7 +78,7 @@ if (defined $out) { } while(defined $inf) { -while(<$inf>) { +INF: while(<$inf>) { # Certain commands are discarded without further processing. /^\@(?: [a-z]+index # @*index: useful only in complete manual @@ -104,11 +108,10 @@ while(<$inf>) { push @instack, $inf; $inf = gensym(); - # Try cwd and $ibase. - open($inf, "<" . $1) - or open($inf, "<" . $ibase . "/" . $1) - or die "cannot open $1 or $ibase/$1: $!\n"; - next; + for (@ibase) { + open($inf, "<" . $_ . "/" . $1) and next INF; + } + die "cannot open $1: $!\n"; }; # Look for blocks surrounded by @c man begin SECTION ... @c man end. -- cgit v1.2.3 From 2ac3df858c3afdc1e3a8e19670483a379f7da447 Mon Sep 17 00:00:00 2001 From: Mans Rullgard Date: Tue, 20 Mar 2012 10:54:02 +0000 Subject: doc: pass -Idoc texi2html and texi2pod This fixes doc generation in build tree separate from source. Signed-off-by: Mans Rullgard --- doc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index 5172707a4b..a051f6e6d1 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -29,12 +29,12 @@ $(GENTEXI): doc/avoptions_%.texi: doc/print_options doc/%.html: TAG = HTML doc/%.html: doc/%.texi $(SRC_PATH)/doc/t2h.init $(GENTEXI) $(Q)$(TEXIDEP) - $(M)texi2html -monolithic --init-file $(SRC_PATH)/doc/t2h.init --output $@ $< + $(M)texi2html -I doc -monolithic --init-file $(SRC_PATH)/doc/t2h.init --output $@ $< doc/%.pod: TAG = POD doc/%.pod: doc/%.texi $(GENTEXI) $(Q)$(TEXIDEP) - $(M)$(SRC_PATH)/doc/texi2pod.pl $< $@ + $(M)$(SRC_PATH)/doc/texi2pod.pl -Idoc $< $@ doc/%.1: TAG = MAN doc/%.1: doc/%.pod $(GENTEXI) -- cgit v1.2.3 From 8ae28ac0f37a9971bcf0ed82e591ebd582479fde Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Tue, 20 Mar 2012 07:53:41 +0100 Subject: bink: align plane width to 8 when calculating bundle sizes This fixes decoding of Bink files with non-multiple-of-16 width. --- libavcodec/bink.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavcodec/bink.c b/libavcodec/bink.c index f8a9b5bc73..7a08f49a82 100644 --- a/libavcodec/bink.c +++ b/libavcodec/bink.c @@ -146,6 +146,8 @@ enum BlockTypes { */ static void init_lengths(BinkContext *c, int width, int bw) { + width = FFALIGN(width, 7); + c->bundle[BINK_SRC_BLOCK_TYPES].len = av_log2((width >> 3) + 511) + 1; c->bundle[BINK_SRC_SUB_BLOCK_TYPES].len = av_log2((width >> 4) + 511) + 1; -- cgit v1.2.3 From 1d10afd581a4e6310ac146b270863ffe5e8635f2 Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Tue, 20 Mar 2012 18:43:00 +0100 Subject: bink: fix typo in FFALIGN() argument --- libavcodec/bink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/bink.c b/libavcodec/bink.c index 7a08f49a82..4e9b1a8ca2 100644 --- a/libavcodec/bink.c +++ b/libavcodec/bink.c @@ -146,7 +146,7 @@ enum BlockTypes { */ static void init_lengths(BinkContext *c, int width, int bw) { - width = FFALIGN(width, 7); + width = FFALIGN(width, 8); c->bundle[BINK_SRC_BLOCK_TYPES].len = av_log2((width >> 3) + 511) + 1; -- cgit v1.2.3 From cd2ffb67ad9e9fec1766c501ad33e85dc934eeed Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 20 Mar 2012 11:20:54 -0400 Subject: xa: fix timestamp calculation The packet duration is always 28 samples. --- libavformat/xa.c | 6 ++--- tests/ref/fate/maxis-xa | 60 ++++++++++++++++++++++++------------------------- 2 files changed, 32 insertions(+), 34 deletions(-) diff --git a/libavformat/xa.c b/libavformat/xa.c index c5e5cf5864..82b703f8c5 100644 --- a/libavformat/xa.c +++ b/libavformat/xa.c @@ -38,7 +38,6 @@ typedef struct MaxisXADemuxContext { uint32_t out_size; uint32_t sent_bytes; - uint32_t audio_frame_counter; } MaxisXADemuxContext; static int xa_probe(AVProbeData *p) @@ -87,6 +86,7 @@ static int xa_read_header(AVFormatContext *s) st->codec->bits_per_coded_sample = avio_rl16(pb); avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate); + st->start_time = 0; return 0; } @@ -111,9 +111,7 @@ static int xa_read_packet(AVFormatContext *s, pkt->stream_index = st->index; xa->sent_bytes += packet_size; - pkt->pts = xa->audio_frame_counter; - /* 14 bytes Samples per channel with 2 samples per byte */ - xa->audio_frame_counter += 28 * st->codec->channels; + pkt->duration = 28; return ret; } diff --git a/tests/ref/fate/maxis-xa b/tests/ref/fate/maxis-xa index debaaa5c81..c29738c868 100644 --- a/tests/ref/fate/maxis-xa +++ b/tests/ref/fate/maxis-xa @@ -1,31 +1,31 @@ #tb 0: 1/22050 -0, 0, 0, 0, 30, 0x51750711 -0, 56, 56, 0, 30, 0x9ca20c2a -0, 112, 112, 0, 30, 0x7551081f -0, 168, 168, 0, 30, 0x09540063 -0, 224, 224, 0, 30, 0x02c40018 -0, 280, 280, 0, 30, 0x0f6c0117 -0, 336, 336, 0, 30, 0x2aab0315 -0, 392, 392, 0, 30, 0x0e6d0117 -0, 448, 448, 0, 30, 0x04770036 -0, 504, 504, 0, 30, 0x939c090f -0, 560, 560, 0, 30, 0xde511116 -0, 616, 616, 0, 30, 0x2f0f13f5 -0, 672, 672, 0, 30, 0x65bb0630 -0, 728, 728, 0, 30, 0x1f7a0333 -0, 784, 784, 0, 30, 0xa3d71008 -0, 840, 840, 0, 30, 0x69120801 -0, 896, 896, 0, 30, 0x1e7b0207 -0, 952, 952, 0, 30, 0x02c40018 -0, 1008, 1008, 0, 30, 0x0d050126 -0, 1064, 1064, 0, 30, 0x41c10333 -0, 1120, 1120, 0, 30, 0x16a10207 -0, 1176, 1176, 0, 30, 0x0f210207 -0, 1232, 1232, 0, 30, 0x4e4b073e -0, 1288, 1288, 0, 30, 0xa6f20d1a -0, 1344, 1344, 0, 30, 0xe1e40ff9 -0, 1400, 1400, 0, 30, 0x868b090f -0, 1456, 1456, 0, 30, 0x8c85091e -0, 1512, 1512, 0, 30, 0x5a21094b -0, 1568, 1568, 0, 30, 0x993c0900 -0, 1624, 1624, 0, 30, 0x5b6b04e6 +0, 0, 0, 28, 30, 0x51750711 +0, 28, 28, 28, 30, 0x9ca20c2a +0, 56, 56, 28, 30, 0x7551081f +0, 84, 84, 28, 30, 0x09540063 +0, 112, 112, 28, 30, 0x02c40018 +0, 140, 140, 28, 30, 0x0f6c0117 +0, 168, 168, 28, 30, 0x2aab0315 +0, 196, 196, 28, 30, 0x0e6d0117 +0, 224, 224, 28, 30, 0x04770036 +0, 252, 252, 28, 30, 0x939c090f +0, 280, 280, 28, 30, 0xde511116 +0, 308, 308, 28, 30, 0x2f0f13f5 +0, 336, 336, 28, 30, 0x65bb0630 +0, 364, 364, 28, 30, 0x1f7a0333 +0, 392, 392, 28, 30, 0xa3d71008 +0, 420, 420, 28, 30, 0x69120801 +0, 448, 448, 28, 30, 0x1e7b0207 +0, 476, 476, 28, 30, 0x02c40018 +0, 504, 504, 28, 30, 0x0d050126 +0, 532, 532, 28, 30, 0x41c10333 +0, 560, 560, 28, 30, 0x16a10207 +0, 588, 588, 28, 30, 0x0f210207 +0, 616, 616, 28, 30, 0x4e4b073e +0, 644, 644, 28, 30, 0xa6f20d1a +0, 672, 672, 28, 30, 0xe1e40ff9 +0, 700, 700, 28, 30, 0x868b090f +0, 728, 728, 28, 30, 0x8c85091e +0, 756, 756, 28, 30, 0x5a21094b +0, 784, 784, 28, 30, 0x993c0900 +0, 812, 812, 28, 30, 0x5b6b04e6 -- cgit v1.2.3 From 64de57f64515001225ec8d8d6b3a7d567fc9cdcd Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 20 Mar 2012 11:53:56 -0400 Subject: xa: fix end-of-file handling Do not output an extra packet when out_size is reached. Also return AVERROR_EOF instead of AVERROR(EIO). --- libavformat/xa.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavformat/xa.c b/libavformat/xa.c index 82b703f8c5..aacdd2b62d 100644 --- a/libavformat/xa.c +++ b/libavformat/xa.c @@ -100,8 +100,8 @@ static int xa_read_packet(AVFormatContext *s, unsigned int packet_size; int ret; - if(xa->sent_bytes > xa->out_size) - return AVERROR(EIO); + if (xa->sent_bytes >= xa->out_size) + return AVERROR_EOF; /* 1 byte header and 14 bytes worth of samples * number channels per block */ packet_size = 15*st->codec->channels; -- cgit v1.2.3 From a54bc52265b9b42e0735507f3b28cfb49a9d3c62 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 20 Mar 2012 12:00:00 -0400 Subject: xa: do not set bit_rate, block_align, or bits_per_coded_sample The values in the header refer to decoded data, not compressed data. --- libavformat/xa.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libavformat/xa.c b/libavformat/xa.c index aacdd2b62d..4cec2dae88 100644 --- a/libavformat/xa.c +++ b/libavformat/xa.c @@ -80,10 +80,9 @@ static int xa_read_header(AVFormatContext *s) avio_skip(pb, 2); /* Skip the tag */ st->codec->channels = avio_rl16(pb); st->codec->sample_rate = avio_rl32(pb); - /* Value in file is average byte rate*/ - st->codec->bit_rate = avio_rl32(pb) * 8; - st->codec->block_align = avio_rl16(pb); - st->codec->bits_per_coded_sample = avio_rl16(pb); + avio_skip(pb, 4); /* Skip average byte rate */ + avio_skip(pb, 2); /* Skip block align */ + avio_skip(pb, 2); /* Skip bits-per-sample */ avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate); st->start_time = 0; -- cgit v1.2.3 From 777365fe8602d4b92e2664647d0e5fe2418d4bf6 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 20 Mar 2012 12:13:15 -0400 Subject: xa: set correct bit rate Also fixes stream duration calculation. --- libavformat/xa.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libavformat/xa.c b/libavformat/xa.c index 4cec2dae88..09ef17ff35 100644 --- a/libavformat/xa.c +++ b/libavformat/xa.c @@ -84,6 +84,9 @@ static int xa_read_header(AVFormatContext *s) avio_skip(pb, 2); /* Skip block align */ avio_skip(pb, 2); /* Skip bits-per-sample */ + st->codec->bit_rate = av_clip(15LL * st->codec->channels * 8 * + st->codec->sample_rate / 28, 0, INT_MAX); + avpriv_set_pts_info(st, 64, 1, st->codec->sample_rate); st->start_time = 0; -- cgit v1.2.3 From a1977e0103d23212b842e8398baaf0269891d9e5 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 20 Mar 2012 13:21:52 -0400 Subject: lavc: shrink encoded audio packet size after encoding. --- libavcodec/utils.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index fc48f029f6..a638bbfc91 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -960,8 +960,15 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx, if (fs_tmp) avctx->frame_size = fs_tmp; } - if (!ret) + if (!ret) { + if (!user_packet && avpkt->data) { + uint8_t *new_data = av_realloc(avpkt->data, avpkt->size); + if (new_data) + avpkt->data = new_data; + } + avctx->frame_number++; + } if (ret < 0 || !*got_packet_ptr) av_free_packet(avpkt); -- cgit v1.2.3 From 9b9fc9ba321fe20ed244aacaf9de6e88f2d5386f Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Thu, 1 Mar 2012 13:02:49 -0500 Subject: avconv: pass input stream timestamps to audio encoders 5 FATE test references updated due to using demuxer-generated timestamps that are either not sample-accurate or are slightly off in the input file. --- avconv.c | 1 + tests/ref/fate/amv | 308 +++++++++---------- tests/ref/fate/pcm_dvd | 238 +++++++-------- tests/ref/fate/smjpeg | 684 +++++++++++++++++++++--------------------- tests/ref/fate/truemotion1-15 | 210 ++++++------- tests/ref/fate/truemotion1-24 | 40 +-- 6 files changed, 741 insertions(+), 740 deletions(-) diff --git a/avconv.c b/avconv.c index 4027edbd0a..affb87742e 100644 --- a/avconv.c +++ b/avconv.c @@ -979,6 +979,7 @@ static int encode_audio_frame(AVFormatContext *s, OutputStream *ost, if (!check_recording_time(ost)) return 0; + frame->pts = ost->sync_opts; ost->sync_opts += frame->nb_samples; } diff --git a/tests/ref/fate/amv b/tests/ref/fate/amv index 405c4dfbdc..768ddaf330 100644 --- a/tests/ref/fate/amv +++ b/tests/ref/fate/amv @@ -11,312 +11,312 @@ 1, 5512, 5512, 1380, 2760, 0x51f35cd4 0, 4, 4, 1, 28800, 0x735a6b15 0, 5, 5, 1, 28800, 0xf7e9dc8b -1, 6892, 6892, 1378, 2756, 0x011c51e5 +1, 6891, 6891, 1378, 2756, 0x011c51e5 0, 6, 6, 1, 28800, 0xa108b0cf -1, 8270, 8270, 1378, 2756, 0x8c2c198c +1, 8269, 8269, 1378, 2756, 0x8c2c198c 0, 7, 7, 1, 28800, 0x3d11c138 -1, 9648, 9648, 1378, 2756, 0x2b4a3397 +1, 9647, 9647, 1378, 2756, 0x2b4a3397 0, 8, 8, 1, 28800, 0xed23afda -1, 11026, 11026, 1378, 2756, 0x63794f22 +1, 11025, 11025, 1378, 2756, 0x63794f22 +1, 12403, 12403, 1378, 2756, 0xfc363898 0, 9, 9, 1, 28800, 0x713bb2dc -1, 12404, 12404, 1378, 2756, 0xfc363898 +1, 13781, 13781, 1378, 2756, 0x0da5486e 0, 10, 10, 1, 28800, 0x551ad51e -1, 13782, 13782, 1378, 2756, 0x0da5486e +1, 15159, 15159, 1378, 2756, 0xbae17a5f 0, 11, 11, 1, 28800, 0x49dfcf2d -1, 15160, 15160, 1378, 2756, 0xbae17a5f 0, 12, 12, 1, 28800, 0x6399d5b3 1, 16538, 16538, 1380, 2760, 0xba266e1b 0, 13, 13, 1, 28800, 0x520ad812 -1, 17918, 17918, 1378, 2756, 0xdfb61002 +1, 17916, 17916, 1378, 2756, 0xdfb61002 0, 14, 14, 1, 28800, 0xc46ad9da -1, 19296, 19296, 1378, 2756, 0x15d029da +1, 19294, 19294, 1378, 2756, 0x15d029da 0, 15, 15, 1, 28800, 0xe79edb9e -1, 20674, 20674, 1378, 2756, 0x7bc82012 +1, 20672, 20672, 1378, 2756, 0x7bc82012 0, 16, 16, 1, 28800, 0xdb1acb30 -1, 22052, 22052, 1378, 2756, 0x002e6999 +1, 22050, 22050, 1378, 2756, 0x002e6999 +1, 23428, 23428, 1378, 2756, 0x96346ba6 0, 17, 17, 1, 28800, 0x050fb669 -1, 23430, 23430, 1378, 2756, 0x96346ba6 +1, 24806, 24806, 1378, 2756, 0x3d54543b 0, 18, 18, 1, 28800, 0x096ca687 -1, 24808, 24808, 1378, 2756, 0x3d54543b +1, 26184, 26184, 1380, 2760, 0x601786e1 0, 19, 19, 1, 28800, 0x0054a6bd -1, 26186, 26186, 1380, 2760, 0x601786e1 +1, 27562, 27562, 1378, 2756, 0xf22a5793 0, 20, 20, 1, 28800, 0x6d7daad2 -1, 27566, 27566, 1378, 2756, 0xf22a5793 0, 21, 21, 1, 28800, 0x9c10a9dc -1, 28944, 28944, 1378, 2756, 0x21f54d49 +1, 28941, 28941, 1378, 2756, 0x21f54d49 0, 22, 22, 1, 28800, 0x89b1a623 -1, 30322, 30322, 1378, 2756, 0x0c6d4399 +1, 30319, 30319, 1378, 2756, 0x0c6d4399 0, 23, 23, 1, 28800, 0xa0a19c3f -1, 31700, 31700, 1378, 2756, 0x17282f8e +1, 31697, 31697, 1378, 2756, 0x17282f8e 0, 24, 24, 1, 28800, 0x26c898ad -1, 33078, 33078, 1378, 2756, 0xeb698f75 +1, 33075, 33075, 1378, 2756, 0xeb698f75 +1, 34453, 34453, 1378, 2756, 0x935e1de2 0, 25, 25, 1, 28800, 0x6f639dae -1, 34456, 34456, 1378, 2756, 0x935e1de2 +1, 35831, 35831, 1380, 2760, 0xb6fb4293 0, 26, 26, 1, 28800, 0xa173a9b5 -1, 35834, 35834, 1380, 2760, 0xb6fb4293 +1, 37209, 37209, 1378, 2756, 0x485053dc 0, 27, 27, 1, 28800, 0xa309aa08 -1, 37214, 37214, 1378, 2756, 0x485053dc 0, 28, 28, 1, 28800, 0x2059b6c4 -1, 38592, 38592, 1378, 2756, 0x24c35027 +1, 38588, 38588, 1378, 2756, 0x24c35027 0, 29, 29, 1, 28800, 0x5ae8c761 -1, 39970, 39970, 1378, 2756, 0x09f323ee +1, 39966, 39966, 1378, 2756, 0x09f323ee 0, 30, 30, 1, 28800, 0xb780c9c5 -1, 41348, 41348, 1378, 2756, 0xbc7d58d5 +1, 41344, 41344, 1378, 2756, 0xbc7d58d5 0, 31, 31, 1, 28800, 0xf58ac8fe -1, 42726, 42726, 1378, 2756, 0xaefd487c +1, 42722, 42722, 1378, 2756, 0xaefd487c 0, 32, 32, 1, 28800, 0x9bb307e7 -1, 44104, 44104, 1378, 2756, 0xaca16cc0 +1, 44100, 44100, 1378, 2756, 0xaca16cc0 +1, 45478, 45478, 1380, 2760, 0x98a76091 0, 33, 33, 1, 28800, 0xd32c3e81 -1, 45482, 45482, 1380, 2760, 0x98a76091 +1, 46856, 46856, 1378, 2756, 0x5d357141 0, 34, 34, 1, 28800, 0x4edd51d2 -1, 46862, 46862, 1378, 2756, 0x5d357141 +1, 48234, 48234, 1378, 2756, 0x65ea2657 0, 35, 35, 1, 28800, 0x5a88684d -1, 48240, 48240, 1378, 2756, 0x65ea2657 +1, 49612, 49612, 1378, 2756, 0xb5e1334a 0, 36, 36, 1, 28800, 0x5bd97f0e -1, 49618, 49618, 1378, 2756, 0xb5e1334a 0, 37, 37, 1, 28800, 0x36d67843 -1, 50996, 50996, 1378, 2756, 0x32cd5d91 +1, 50991, 50991, 1378, 2756, 0x32cd5d91 0, 38, 38, 1, 28800, 0x0e18781d -1, 52374, 52374, 1378, 2756, 0xdc23722b +1, 52369, 52369, 1378, 2756, 0xdc23722b 0, 39, 39, 1, 28800, 0xa3168807 -1, 53752, 53752, 1378, 2756, 0x2ba34684 +1, 53747, 53747, 1378, 2756, 0x2ba34684 0, 40, 40, 1, 28800, 0xa7c575b8 -1, 55130, 55130, 1378, 2756, 0xf9755ba8 +1, 55125, 55125, 1378, 2756, 0xf9755ba8 +1, 56503, 56503, 1380, 2760, 0x24221ddb 0, 41, 41, 1, 28800, 0x86367c37 -1, 56508, 56508, 1380, 2760, 0x24221ddb +1, 57881, 57881, 1378, 2756, 0xef843aa4 0, 42, 42, 1, 28800, 0xb0f79180 -1, 57888, 57888, 1378, 2756, 0xef843aa4 +1, 59259, 59259, 1378, 2756, 0x420442fe 0, 43, 43, 1, 28800, 0x61da8c0f -1, 59266, 59266, 1378, 2756, 0x420442fe 0, 44, 44, 1, 28800, 0x9b11948a -1, 60644, 60644, 1378, 2756, 0x5a0933cb +1, 60638, 60638, 1378, 2756, 0x5a0933cb 0, 45, 45, 1, 28800, 0xc53d9b44 -1, 62022, 62022, 1378, 2756, 0xef5f6d61 +1, 62016, 62016, 1378, 2756, 0xef5f6d61 0, 46, 46, 1, 28800, 0xdc699185 -1, 63400, 63400, 1378, 2756, 0xe57e6dc0 +1, 63394, 63394, 1378, 2756, 0xe57e6dc0 0, 47, 47, 1, 28800, 0x7b4f92b5 -1, 64778, 64778, 1378, 2756, 0xc0f0495a +1, 64772, 64772, 1378, 2756, 0xc0f0495a 0, 48, 48, 1, 28800, 0x40469065 -1, 66156, 66156, 1380, 2760, 0x2c3b55df +1, 66150, 66150, 1380, 2760, 0x2c3b55df +1, 67528, 67528, 1378, 2756, 0x39c2586c 0, 49, 49, 1, 28800, 0x737ea07e -1, 67536, 67536, 1378, 2756, 0x39c2586c +1, 68906, 68906, 1378, 2756, 0x7ffc46e5 0, 50, 50, 1, 28800, 0x0db49c8b -1, 68914, 68914, 1378, 2756, 0x7ffc46e5 +1, 70284, 70284, 1378, 2756, 0xa2766664 0, 51, 51, 1, 28800, 0x39249f10 -1, 70292, 70292, 1378, 2756, 0xa2766664 +1, 71662, 71662, 1378, 2756, 0xacb50c6c 0, 52, 52, 1, 28800, 0xc182ab99 -1, 71670, 71670, 1378, 2756, 0xacb50c6c 0, 53, 53, 1, 28800, 0xd8f7a7c9 -1, 73048, 73048, 1378, 2756, 0x7f659084 +1, 73041, 73041, 1378, 2756, 0x7f659084 0, 54, 54, 1, 28800, 0x46789caa -1, 74426, 74426, 1378, 2756, 0xc72e6a12 +1, 74419, 74419, 1378, 2756, 0xc72e6a12 0, 55, 55, 1, 28800, 0x4759a374 -1, 75804, 75804, 1380, 2760, 0xdb6944df +1, 75797, 75797, 1380, 2760, 0xdb6944df 0, 56, 56, 1, 28800, 0xe621b16a -1, 77184, 77184, 1378, 2756, 0x954f45c1 +1, 77175, 77175, 1378, 2756, 0x954f45c1 +1, 78553, 78553, 1378, 2756, 0xa9484240 0, 57, 57, 1, 28800, 0xcf47a999 -1, 78562, 78562, 1378, 2756, 0xa9484240 +1, 79931, 79931, 1378, 2756, 0x1d595349 0, 58, 58, 1, 28800, 0x801dacd4 -1, 79940, 79940, 1378, 2756, 0x1d595349 +1, 81309, 81309, 1378, 2756, 0xcf2a565e 0, 59, 59, 1, 28800, 0xe580af51 -1, 81318, 81318, 1378, 2756, 0xcf2a565e 0, 60, 60, 1, 28800, 0x03d7a887 -1, 82696, 82696, 1378, 2756, 0x391028d5 +1, 82688, 82688, 1378, 2756, 0x391028d5 0, 61, 61, 1, 28800, 0xa67ea51d -1, 84074, 84074, 1378, 2756, 0x348db7ad +1, 84066, 84066, 1378, 2756, 0x348db7ad 0, 62, 62, 1, 28800, 0x9fee0ec8 -1, 85452, 85452, 1380, 2760, 0xb69b5e3a +1, 85444, 85444, 1380, 2760, 0xb69b5e3a 0, 63, 63, 1, 28800, 0x7f602a5e -1, 86832, 86832, 1378, 2756, 0xe3635fbe +1, 86822, 86822, 1378, 2756, 0xe3635fbe 0, 64, 64, 1, 28800, 0x100d432a -1, 88210, 88210, 1378, 2756, 0xdcad3654 +1, 88200, 88200, 1378, 2756, 0xdcad3654 +1, 89578, 89578, 1378, 2756, 0x5c17abef 0, 65, 65, 1, 28800, 0x42164dfb -1, 89588, 89588, 1378, 2756, 0x5c17abef +1, 90956, 90956, 1378, 2756, 0xb3235184 0, 66, 66, 1, 28800, 0x86c05196 -1, 90966, 90966, 1378, 2756, 0xb3235184 +1, 92334, 92334, 1378, 2756, 0xdabb64a6 0, 67, 67, 1, 28800, 0xfc225938 -1, 92344, 92344, 1378, 2756, 0xdabb64a6 +1, 93712, 93712, 1378, 2756, 0xa95dc58d 0, 68, 68, 1, 28800, 0x81085e87 -1, 93722, 93722, 1378, 2756, 0xa95dc58d 0, 69, 69, 1, 28800, 0xaa8f5d0a -1, 95100, 95100, 1380, 2760, 0x8e7ac9eb +1, 95091, 95091, 1380, 2760, 0x8e7ac9eb 0, 70, 70, 1, 28800, 0x605a5f9f -1, 96480, 96480, 1378, 2756, 0x492b658e +1, 96469, 96469, 1378, 2756, 0x492b658e 0, 71, 71, 1, 28800, 0x68dc64b2 -1, 97858, 97858, 1378, 2756, 0x377483ab +1, 97847, 97847, 1378, 2756, 0x377483ab 0, 72, 72, 1, 28800, 0xd08e710b -1, 99236, 99236, 1378, 2756, 0x2c250279 +1, 99225, 99225, 1378, 2756, 0x2c250279 +1, 100603, 100603, 1378, 2756, 0x704dbdb3 0, 73, 73, 1, 28800, 0xf8567939 -1, 100614, 100614, 1378, 2756, 0x704dbdb3 +1, 101981, 101981, 1378, 2756, 0x800d7da2 0, 74, 74, 1, 28800, 0x8dad7a4f -1, 101992, 101992, 1378, 2756, 0x800d7da2 +1, 103359, 103359, 1378, 2756, 0x872aa32e 0, 75, 75, 1, 28800, 0x1a19813c -1, 103370, 103370, 1378, 2756, 0x872aa32e 0, 76, 76, 1, 28800, 0x8a157f0e -1, 104748, 104748, 1378, 2756, 0x2d4837fe +1, 104738, 104738, 1378, 2756, 0x2d4837fe 0, 77, 77, 1, 28800, 0xa4fa7b9d -1, 106126, 106126, 1380, 2760, 0xc89ea57e +1, 106116, 106116, 1380, 2760, 0xc89ea57e 0, 78, 78, 1, 28800, 0x093b7b36 -1, 107506, 107506, 1378, 2756, 0x6447d7ef +1, 107494, 107494, 1378, 2756, 0x6447d7ef 0, 79, 79, 1, 28800, 0xa925755b -1, 108884, 108884, 1378, 2756, 0x144f59cc +1, 108872, 108872, 1378, 2756, 0x144f59cc 0, 80, 80, 1, 28800, 0xa5968138 -1, 110262, 110262, 1378, 2756, 0xc667154e +1, 110250, 110250, 1378, 2756, 0xc667154e +1, 111628, 111628, 1378, 2756, 0xf0de66ae 0, 81, 81, 1, 28800, 0xe00877ac -1, 111640, 111640, 1378, 2756, 0xf0de66ae +1, 113006, 113006, 1378, 2756, 0xeabf3c32 0, 82, 82, 1, 28800, 0xd736183e -1, 113018, 113018, 1378, 2756, 0xeabf3c32 +1, 114384, 114384, 1378, 2756, 0xe98e81d1 0, 83, 83, 1, 28800, 0x356f2068 -1, 114396, 114396, 1378, 2756, 0xe98e81d1 +1, 115762, 115762, 1380, 2760, 0x56aa5889 0, 84, 84, 1, 28800, 0xf9a50f22 -1, 115774, 115774, 1380, 2760, 0x56aa5889 0, 85, 85, 1, 28800, 0x92df2ae8 -1, 117154, 117154, 1378, 2756, 0x4fd34c0e +1, 117141, 117141, 1378, 2756, 0x4fd34c0e 0, 86, 86, 1, 28800, 0x67a43dc8 -1, 118532, 118532, 1378, 2756, 0x67cf6912 +1, 118519, 118519, 1378, 2756, 0x67cf6912 0, 87, 87, 1, 28800, 0xf8ce2ead -1, 119910, 119910, 1378, 2756, 0xfa944def +1, 119897, 119897, 1378, 2756, 0xfa944def 0, 88, 88, 1, 28800, 0xf42f37ee -1, 121288, 121288, 1378, 2756, 0xc12f23b2 +1, 121275, 121275, 1378, 2756, 0xc12f23b2 +1, 122653, 122653, 1378, 2756, 0x5ea325a2 0, 89, 89, 1, 28800, 0x03611f37 -1, 122666, 122666, 1378, 2756, 0x5ea325a2 +1, 124031, 124031, 1378, 2756, 0x2b245824 0, 90, 90, 1, 28800, 0xddda2327 -1, 124044, 124044, 1378, 2756, 0x2b245824 +1, 125409, 125409, 1380, 2760, 0x90ac533e 0, 91, 91, 1, 28800, 0xdf073d85 -1, 125422, 125422, 1380, 2760, 0x90ac533e 0, 92, 92, 1, 28800, 0xa8331fee -1, 126802, 126802, 1378, 2756, 0xcca34d26 +1, 126788, 126788, 1378, 2756, 0xcca34d26 0, 93, 93, 1, 28800, 0x59d3490a -1, 128180, 128180, 1378, 2756, 0xb5f820d0 +1, 128166, 128166, 1378, 2756, 0xb5f820d0 0, 94, 94, 1, 28800, 0xa8335be6 -1, 129558, 129558, 1378, 2756, 0x27f24335 +1, 129544, 129544, 1378, 2756, 0x27f24335 0, 95, 95, 1, 28800, 0xd5483b43 -1, 130936, 130936, 1378, 2756, 0x4a9e87b7 +1, 130922, 130922, 1378, 2756, 0x4a9e87b7 0, 96, 96, 1, 28800, 0x23422dc9 -1, 132314, 132314, 1378, 2756, 0xbd076129 +1, 132300, 132300, 1378, 2756, 0xbd076129 +1, 133678, 133678, 1378, 2756, 0x2e0e3f2e 0, 97, 97, 1, 28800, 0xc04e4689 -1, 133692, 133692, 1378, 2756, 0x2e0e3f2e +1, 135056, 135056, 1380, 2760, 0xdf534478 0, 98, 98, 1, 28800, 0xd4d96372 -1, 135070, 135070, 1380, 2760, 0xdf534478 +1, 136434, 136434, 1378, 2756, 0xca000a2e 0, 99, 99, 1, 28800, 0x9c814e96 -1, 136450, 136450, 1378, 2756, 0xca000a2e +1, 137812, 137812, 1378, 2756, 0x87472df3 0, 100, 100, 1, 28800, 0x7c4b5d3b -1, 137828, 137828, 1378, 2756, 0x87472df3 0, 101, 101, 1, 28800, 0x6bf66c04 -1, 139206, 139206, 1378, 2756, 0x16733810 +1, 139191, 139191, 1378, 2756, 0x16733810 0, 102, 102, 1, 28800, 0x6e8d4bb6 -1, 140584, 140584, 1378, 2756, 0xfa0734b4 +1, 140569, 140569, 1378, 2756, 0xfa0734b4 0, 103, 103, 1, 28800, 0xad964d00 -1, 141962, 141962, 1378, 2756, 0x5eff3fc4 +1, 141947, 141947, 1378, 2756, 0x5eff3fc4 0, 104, 104, 1, 28800, 0x1ff36bd1 -1, 143340, 143340, 1378, 2756, 0xf35346bd +1, 143325, 143325, 1378, 2756, 0xf35346bd +1, 144703, 144703, 1378, 2756, 0xac6411c5 0, 105, 105, 1, 28800, 0xa4664c76 -1, 144718, 144718, 1378, 2756, 0xac6411c5 +1, 146081, 146081, 1380, 2760, 0x478c3c56 0, 106, 106, 1, 28800, 0x50626d82 -1, 146096, 146096, 1380, 2760, 0x478c3c56 +1, 147459, 147459, 1378, 2756, 0xebd30bdd 0, 107, 107, 1, 28800, 0x81906c5c -1, 147476, 147476, 1378, 2756, 0xebd30bdd 0, 108, 108, 1, 28800, 0x5060543f -1, 148854, 148854, 1378, 2756, 0xaef95a31 +1, 148838, 148838, 1378, 2756, 0xaef95a31 0, 109, 109, 1, 28800, 0x231c5a86 -1, 150232, 150232, 1378, 2756, 0x8aad29d1 +1, 150216, 150216, 1378, 2756, 0x8aad29d1 0, 110, 110, 1, 28800, 0x79775d48 -1, 151610, 151610, 1378, 2756, 0x626863f0 +1, 151594, 151594, 1378, 2756, 0x626863f0 0, 111, 111, 1, 28800, 0xbb893571 -1, 152988, 152988, 1378, 2756, 0x68c05707 +1, 152972, 152972, 1378, 2756, 0x68c05707 0, 112, 112, 1, 28800, 0x794c49ed -1, 154366, 154366, 1378, 2756, 0x437c5e8d +1, 154350, 154350, 1378, 2756, 0x437c5e8d +1, 155728, 155728, 1380, 2760, 0x8eca4bdb 0, 113, 113, 1, 28800, 0x70464bac -1, 155744, 155744, 1380, 2760, 0x8eca4bdb +1, 157106, 157106, 1378, 2756, 0x62bd4162 0, 114, 114, 1, 28800, 0xe79549ce -1, 157124, 157124, 1378, 2756, 0x62bd4162 +1, 158484, 158484, 1378, 2756, 0x9f744aa4 0, 115, 115, 1, 28800, 0xa6565555 -1, 158502, 158502, 1378, 2756, 0x9f744aa4 +1, 159862, 159862, 1378, 2756, 0x0f3f6409 0, 116, 116, 1, 28800, 0x2ef1ad6d -1, 159880, 159880, 1378, 2756, 0x0f3f6409 0, 117, 117, 1, 28800, 0xdd22b9aa -1, 161258, 161258, 1378, 2756, 0x3fee827a +1, 161241, 161241, 1378, 2756, 0x3fee827a 0, 118, 118, 1, 28800, 0x26ebaa97 -1, 162636, 162636, 1378, 2756, 0x48a0ac19 +1, 162619, 162619, 1378, 2756, 0x48a0ac19 0, 119, 119, 1, 28800, 0x32bd979e -1, 164014, 164014, 1378, 2756, 0x8e4ce0d0 +1, 163997, 163997, 1378, 2756, 0x8e4ce0d0 0, 120, 120, 1, 28800, 0x4c167c9a -1, 165392, 165392, 1380, 2760, 0xcda82236 +1, 165375, 165375, 1380, 2760, 0xcda82236 +1, 166753, 166753, 1378, 2756, 0x0e523255 0, 121, 121, 1, 28800, 0xfdf76051 -1, 166772, 166772, 1378, 2756, 0x0e523255 +1, 168131, 168131, 1378, 2756, 0x84103d30 0, 122, 122, 1, 28800, 0x966938a8 -1, 168150, 168150, 1378, 2756, 0x84103d30 +1, 169509, 169509, 1378, 2756, 0x13941cde 0, 123, 123, 1, 28800, 0xcea3fbde -1, 169528, 169528, 1378, 2756, 0x13941cde 0, 124, 124, 1, 28800, 0x29a0c213 -1, 170906, 170906, 1378, 2756, 0x9fc834c5 +1, 170888, 170888, 1378, 2756, 0x9fc834c5 0, 125, 125, 1, 28800, 0x5633a1c2 -1, 172284, 172284, 1378, 2756, 0xc0217a77 +1, 172266, 172266, 1378, 2756, 0xc0217a77 0, 126, 126, 1, 28800, 0xdc0b9af8 -1, 173662, 173662, 1378, 2756, 0x3f643659 +1, 173644, 173644, 1378, 2756, 0x3f643659 0, 127, 127, 1, 28800, 0x92138848 -1, 175040, 175040, 1380, 2760, 0x9dbd6002 +1, 175022, 175022, 1380, 2760, 0x9dbd6002 0, 128, 128, 1, 28800, 0xd7308da5 -1, 176420, 176420, 1378, 2756, 0x94f046fb +1, 176400, 176400, 1378, 2756, 0x94f046fb +1, 177778, 177778, 1378, 2756, 0xab01fb12 0, 129, 129, 1, 28800, 0x0c8f9b3f -1, 177798, 177798, 1378, 2756, 0xab01fb12 +1, 179156, 179156, 1378, 2756, 0x04cffe5c 0, 130, 130, 1, 28800, 0xd059b5d1 -1, 179176, 179176, 1378, 2756, 0x04cffe5c +1, 180534, 180534, 1378, 2756, 0xef661c5e 0, 131, 131, 1, 28800, 0xba6ed9cd -1, 180554, 180554, 1378, 2756, 0xef661c5e +1, 181912, 181912, 1378, 2756, 0x094c5fc5 0, 132, 132, 1, 28800, 0x896c1064 -1, 181932, 181932, 1378, 2756, 0x094c5fc5 0, 133, 133, 1, 28800, 0x986e2fc9 -1, 183310, 183310, 1378, 2756, 0xe0c1486a +1, 183291, 183291, 1378, 2756, 0xe0c1486a 0, 134, 134, 1, 28800, 0xcba94e4b -1, 184688, 184688, 1380, 2760, 0x8c3535b7 +1, 184669, 184669, 1380, 2760, 0x8c3535b7 0, 135, 135, 1, 28800, 0xf3e778ed -1, 186068, 186068, 1378, 2756, 0x594934aa +1, 186047, 186047, 1378, 2756, 0x594934aa 0, 136, 136, 1, 28800, 0xc6cd7d48 -1, 187446, 187446, 1378, 2756, 0x74007238 +1, 187425, 187425, 1378, 2756, 0x74007238 +1, 188803, 188803, 1378, 2756, 0x61f1394d 0, 137, 137, 1, 28800, 0xd9bd84d8 -1, 188824, 188824, 1378, 2756, 0x61f1394d +1, 190181, 190181, 1378, 2756, 0x72584f07 0, 138, 138, 1, 28800, 0x391197b4 -1, 190202, 190202, 1378, 2756, 0x72584f07 +1, 191559, 191559, 1378, 2756, 0xced9acf9 0, 139, 139, 1, 28800, 0xf361a1d9 -1, 191580, 191580, 1378, 2756, 0xced9acf9 0, 140, 140, 1, 28800, 0x9a1ea54e -1, 192958, 192958, 1378, 2756, 0x7d2e3ea1 +1, 192938, 192938, 1378, 2756, 0x7d2e3ea1 0, 141, 141, 1, 28800, 0x551aab57 -1, 194336, 194336, 1378, 2756, 0x56c06897 +1, 194316, 194316, 1378, 2756, 0x56c06897 0, 142, 142, 1, 28800, 0x3af8577d -1, 195714, 195714, 1380, 2760, 0x19983bbf +1, 195694, 195694, 1380, 2760, 0x19983bbf 0, 143, 143, 1, 28800, 0x10f76ed0 -1, 197094, 197094, 1378, 2756, 0x4f884f27 +1, 197072, 197072, 1378, 2756, 0x4f884f27 0, 144, 144, 1, 28800, 0x026a7fde -1, 198472, 198472, 1378, 2756, 0x81ab2f63 +1, 198450, 198450, 1378, 2756, 0x81ab2f63 +1, 199828, 199828, 1378, 2756, 0x448e681d 0, 145, 145, 1, 28800, 0x3e0e8db8 -1, 199850, 199850, 1378, 2756, 0x448e681d +1, 201206, 201206, 1378, 2756, 0x0ba9826e 0, 146, 146, 1, 28800, 0x22998d2d -1, 201228, 201228, 1378, 2756, 0x0ba9826e +1, 202584, 202584, 1378, 2756, 0x049f36fa 0, 147, 147, 1, 28800, 0x05978b12 -1, 202606, 202606, 1378, 2756, 0x049f36fa +1, 203962, 203962, 1378, 2756, 0x096a2b62 0, 148, 148, 1, 28800, 0x38b88294 -1, 203984, 203984, 1378, 2756, 0x096a2b62 0, 149, 149, 1, 28800, 0x2ef677d6 -1, 205362, 205362, 1380, 2760, 0x579e2035 +1, 205341, 205341, 1380, 2760, 0x579e2035 0, 150, 150, 1, 28800, 0x0b9a8894 -1, 206742, 206742, 1378, 2756, 0xd13e30e1 +1, 206719, 206719, 1378, 2756, 0xd13e30e1 0, 151, 151, 1, 28800, 0x2dcb6718 -1, 208120, 208120, 1378, 2756, 0x30b6412b +1, 208097, 208097, 1378, 2756, 0x30b6412b 0, 152, 152, 1, 28800, 0xa31b6679 -1, 209498, 209498, 1378, 2756, 0xbb1c3268 +1, 209475, 209475, 1378, 2756, 0xbb1c3268 +1, 210853, 210853, 1378, 2756, 0xbc175b6a 0, 153, 153, 1, 28800, 0x262d6a50 -1, 210876, 210876, 1378, 2756, 0xbc175b6a +1, 212231, 212231, 1378, 2756, 0xf8d160e2 0, 154, 154, 1, 28800, 0xff3d6d0d -1, 212254, 212254, 1378, 2756, 0xf8d160e2 +1, 213609, 213609, 1378, 2756, 0xc1048154 0, 155, 155, 1, 28800, 0x159d7045 -1, 213632, 213632, 1378, 2756, 0xc1048154 0, 156, 156, 1, 28800, 0xf0df7800 -1, 215010, 215010, 1380, 2760, 0xb83548f4 +1, 214988, 214988, 1380, 2760, 0xb83548f4 0, 157, 157, 1, 28800, 0xbe825ea5 -1, 216390, 216390, 1378, 2756, 0x22647962 +1, 216366, 216366, 1378, 2756, 0x22647962 0, 158, 158, 1, 28800, 0x80e25d5a -1, 217768, 217768, 1378, 2756, 0x14ca54d3 +1, 217744, 217744, 1378, 2756, 0x14ca54d3 0, 159, 159, 1, 28800, 0x8cbe263f -1, 219146, 219146, 1378, 2756, 0x58754b3a +1, 219122, 219122, 1378, 2756, 0x58754b3a diff --git a/tests/ref/fate/pcm_dvd b/tests/ref/fate/pcm_dvd index 691e1a6119..6037451006 100644 --- a/tests/ref/fate/pcm_dvd +++ b/tests/ref/fate/pcm_dvd @@ -1,124 +1,124 @@ #tb 0: 1/48000 0, 0, 0, 334, 1336, 0x8e3c0abc -0, 334, 334, 334, 1336, 0x99c41108 -0, 668, 668, 334, 1336, 0xd65be322 -0, 1002, 1002, 334, 1336, 0x15b575fb -0, 1336, 1336, 334, 1336, 0x366f742a -0, 1670, 1670, 334, 1336, 0xed72ad83 -0, 2004, 2004, 334, 1336, 0x73f21c93 -0, 2338, 2338, 334, 1336, 0x4be7a770 -0, 2672, 2672, 334, 1336, 0x69ecf80c -0, 3006, 3006, 334, 1336, 0x835dc0e5 -0, 3340, 3340, 334, 1336, 0x3089458d -0, 3674, 3674, 334, 1336, 0xc73b8cdc -0, 4008, 4008, 334, 1336, 0xc1cdaa8f -0, 4342, 4342, 334, 1336, 0x47a49186 -0, 4676, 4676, 334, 1336, 0x2db387e2 -0, 5010, 5010, 334, 1336, 0x90da9a97 -0, 5344, 5344, 334, 1336, 0xcd34a467 -0, 5678, 5678, 334, 1336, 0xdca8bd29 -0, 6012, 6012, 334, 1336, 0xa09f9da3 -0, 6346, 6346, 334, 1336, 0x47c8acf6 -0, 6680, 6680, 334, 1336, 0x94dfa20e -0, 7014, 7014, 334, 1336, 0x2123a5f6 -0, 7348, 7348, 334, 1336, 0x2f1badde -0, 7682, 7682, 334, 1336, 0x47579528 -0, 8016, 8016, 334, 1336, 0x028daa10 -0, 8350, 8350, 334, 1336, 0x5ed7adcd -0, 8684, 8684, 334, 1336, 0xc5ee8f10 -0, 9018, 9018, 334, 1336, 0xcfacb489 -0, 9352, 9352, 334, 1336, 0x07de937b -0, 9686, 9686, 334, 1336, 0x07bd8f8b -0, 10020, 10020, 334, 1336, 0x4660912e -0, 10354, 10354, 334, 1336, 0x047f97ad -0, 10688, 10688, 334, 1336, 0xe0e8a11f -0, 11022, 11022, 334, 1336, 0xcd9898e6 -0, 11356, 11356, 334, 1336, 0xccfda786 -0, 11690, 11690, 334, 1336, 0xab1b9e40 -0, 12024, 12024, 334, 1336, 0x2ea79ea1 -0, 12358, 12358, 334, 1336, 0xade2ad7e -0, 12692, 12692, 334, 1336, 0xe5cf9684 -0, 13026, 13026, 334, 1336, 0xb57184cf +0, 400, 400, 334, 1336, 0x99c41108 +0, 720, 720, 334, 1336, 0xd65be322 +0, 1040, 1040, 334, 1336, 0x15b575fb +0, 1360, 1360, 334, 1336, 0x366f742a +0, 1680, 1680, 334, 1336, 0xed72ad83 +0, 2000, 2000, 334, 1336, 0x73f21c93 +0, 2400, 2400, 334, 1336, 0x4be7a770 +0, 2720, 2720, 334, 1336, 0x69ecf80c +0, 3040, 3040, 334, 1336, 0x835dc0e5 +0, 3360, 3360, 334, 1336, 0x3089458d +0, 3680, 3680, 334, 1336, 0xc73b8cdc +0, 4080, 4080, 334, 1336, 0xc1cdaa8f +0, 4400, 4400, 334, 1336, 0x47a49186 +0, 4720, 4720, 334, 1336, 0x2db387e2 +0, 5040, 5040, 334, 1336, 0x90da9a97 +0, 5360, 5360, 334, 1336, 0xcd34a467 +0, 5680, 5680, 334, 1336, 0xdca8bd29 +0, 6080, 6080, 334, 1336, 0xa09f9da3 +0, 6400, 6400, 334, 1336, 0x47c8acf6 +0, 6720, 6720, 334, 1336, 0x94dfa20e +0, 7040, 7040, 334, 1336, 0x2123a5f6 +0, 7360, 7360, 334, 1336, 0x2f1badde +0, 7680, 7680, 334, 1336, 0x47579528 +0, 8080, 8080, 334, 1336, 0x028daa10 +0, 8400, 8400, 334, 1336, 0x5ed7adcd +0, 8720, 8720, 334, 1336, 0xc5ee8f10 +0, 9040, 9040, 334, 1336, 0xcfacb489 +0, 9360, 9360, 334, 1336, 0x07de937b +0, 9760, 9760, 334, 1336, 0x07bd8f8b +0, 10080, 10080, 334, 1336, 0x4660912e +0, 10400, 10400, 334, 1336, 0x047f97ad +0, 10720, 10720, 334, 1336, 0xe0e8a11f +0, 11040, 11040, 334, 1336, 0xcd9898e6 +0, 11360, 11360, 334, 1336, 0xccfda786 +0, 11760, 11760, 334, 1336, 0xab1b9e40 +0, 12080, 12080, 334, 1336, 0x2ea79ea1 +0, 12400, 12400, 334, 1336, 0xade2ad7e +0, 12720, 12720, 334, 1336, 0xe5cf9684 +0, 13040, 13040, 334, 1336, 0xb57184cf 0, 13360, 13360, 334, 1336, 0x0668a5ce -0, 13694, 13694, 334, 1336, 0x643a9d96 -0, 14028, 14028, 334, 1336, 0x97dc8ecc -0, 14362, 14362, 334, 1336, 0x72c2b174 -0, 14696, 14696, 334, 1336, 0xe39d8fc3 -0, 15030, 15030, 334, 1336, 0x56fc76d2 -0, 15364, 15364, 334, 1336, 0x91a884b3 -0, 15698, 15698, 334, 1336, 0x7b039a4e -0, 16032, 16032, 334, 1336, 0x3770a9dd -0, 16366, 16366, 334, 1336, 0x317c9cb8 -0, 16700, 16700, 334, 1336, 0xdd97ad48 -0, 17034, 17034, 334, 1336, 0x98066c1b -0, 17368, 17368, 334, 1336, 0xecd3a31c -0, 17702, 17702, 334, 1336, 0x0578b329 -0, 18036, 18036, 334, 1336, 0x6942881c -0, 18370, 18370, 334, 1336, 0x56b5af29 -0, 18704, 18704, 334, 1336, 0xf111a48a -0, 19038, 19038, 334, 1336, 0x1f5a8d45 -0, 19372, 19372, 334, 1336, 0x39abdded -0, 19706, 19706, 334, 1336, 0xdb997fe8 -0, 20040, 20040, 334, 1336, 0xd7f0d0b2 -0, 20374, 20374, 334, 1336, 0xf3219413 -0, 20708, 20708, 334, 1336, 0x9d80899d -0, 21042, 21042, 334, 1336, 0x7238bd63 -0, 21376, 21376, 334, 1336, 0x7376703e -0, 21710, 21710, 334, 1336, 0x0fd56d02 -0, 22044, 22044, 334, 1336, 0xa6c0951e -0, 22378, 22378, 334, 1336, 0xfacb674e -0, 22712, 22712, 334, 1336, 0x805bd289 -0, 23046, 23046, 334, 1336, 0xa2a51a12 -0, 23380, 23380, 334, 1336, 0x8a75d91b -0, 23714, 23714, 334, 1336, 0x34b1ef80 -0, 24048, 24048, 334, 1336, 0x902921e0 -0, 24382, 24382, 334, 1336, 0xc2db7895 -0, 24716, 24716, 334, 1336, 0x7a0db9e1 -0, 25050, 25050, 334, 1336, 0x66a93277 -0, 25384, 25384, 334, 1336, 0x30830a83 -0, 25718, 25718, 334, 1336, 0x251cf132 -0, 26052, 26052, 334, 1336, 0x08dd852c -0, 26386, 26386, 334, 1336, 0x22ea164c +0, 13760, 13760, 334, 1336, 0x643a9d96 +0, 14080, 14080, 334, 1336, 0x97dc8ecc +0, 14400, 14400, 334, 1336, 0x72c2b174 +0, 14720, 14720, 334, 1336, 0xe39d8fc3 +0, 15040, 15040, 334, 1336, 0x56fc76d2 +0, 15360, 15360, 334, 1336, 0x91a884b3 +0, 15760, 15760, 334, 1336, 0x7b039a4e +0, 16080, 16080, 334, 1336, 0x3770a9dd +0, 16400, 16400, 334, 1336, 0x317c9cb8 +0, 16720, 16720, 334, 1336, 0xdd97ad48 +0, 17040, 17040, 334, 1336, 0x98066c1b +0, 17440, 17440, 334, 1336, 0xecd3a31c +0, 17760, 17760, 334, 1336, 0x0578b329 +0, 18080, 18080, 334, 1336, 0x6942881c +0, 18400, 18400, 334, 1336, 0x56b5af29 +0, 18720, 18720, 334, 1336, 0xf111a48a +0, 19040, 19040, 334, 1336, 0x1f5a8d45 +0, 19440, 19440, 334, 1336, 0x39abdded +0, 19760, 19760, 334, 1336, 0xdb997fe8 +0, 20080, 20080, 334, 1336, 0xd7f0d0b2 +0, 20400, 20400, 334, 1336, 0xf3219413 +0, 20720, 20720, 334, 1336, 0x9d80899d +0, 21040, 21040, 334, 1336, 0x7238bd63 +0, 21440, 21440, 334, 1336, 0x7376703e +0, 21760, 21760, 334, 1336, 0x0fd56d02 +0, 22080, 22080, 334, 1336, 0xa6c0951e +0, 22400, 22400, 334, 1336, 0xfacb674e +0, 22720, 22720, 334, 1336, 0x805bd289 +0, 23120, 23120, 334, 1336, 0xa2a51a12 +0, 23440, 23440, 334, 1336, 0x8a75d91b +0, 23760, 23760, 334, 1336, 0x34b1ef80 +0, 24080, 24080, 334, 1336, 0x902921e0 +0, 24400, 24400, 334, 1336, 0xc2db7895 +0, 24720, 24720, 334, 1336, 0x7a0db9e1 +0, 25120, 25120, 334, 1336, 0x66a93277 +0, 25440, 25440, 334, 1336, 0x30830a83 +0, 25760, 25760, 334, 1336, 0x251cf132 +0, 26080, 26080, 334, 1336, 0x08dd852c +0, 26400, 26400, 334, 1336, 0x22ea164c 0, 26720, 26720, 334, 1336, 0x3bdd91c4 -0, 27054, 27054, 334, 1336, 0xa4c0fbd7 -0, 27388, 27388, 334, 1336, 0x83aa81bd -0, 27722, 27722, 334, 1336, 0x8a7b0fdb -0, 28056, 28056, 334, 1336, 0x35c37b01 -0, 28390, 28390, 334, 1336, 0xdede811e -0, 28724, 28724, 334, 1336, 0x7473a657 -0, 29058, 29058, 334, 1336, 0x5b917e2b -0, 29392, 29392, 334, 1336, 0x1c5a7cfc -0, 29726, 29726, 334, 1336, 0xeb7bab0d -0, 30060, 30060, 334, 1336, 0x7337795c -0, 30394, 30394, 334, 1336, 0x68da9d08 -0, 30728, 30728, 334, 1336, 0xe93b87fe -0, 31062, 31062, 334, 1336, 0xd4639f00 -0, 31396, 31396, 334, 1336, 0x1070a91d -0, 31730, 31730, 334, 1336, 0x50e3788f -0, 32064, 32064, 334, 1336, 0x1dac6691 -0, 32398, 32398, 334, 1336, 0xf62c709d -0, 32732, 32732, 334, 1336, 0x2369648d -0, 33066, 33066, 334, 1336, 0xbfc792e6 -0, 33400, 33400, 334, 1336, 0x975eb8e3 -0, 33734, 33734, 334, 1336, 0x35c49ba6 -0, 34068, 34068, 334, 1336, 0xe6198aa9 -0, 34402, 34402, 334, 1336, 0x99f37d9d -0, 34736, 34736, 334, 1336, 0x4815aff1 -0, 35070, 35070, 334, 1336, 0x4fd366ca -0, 35404, 35404, 334, 1336, 0x43cf7bb4 -0, 35738, 35738, 334, 1336, 0x14a576ac -0, 36072, 36072, 334, 1336, 0xc6986978 -0, 36406, 36406, 334, 1336, 0x10f67dc4 -0, 36740, 36740, 334, 1336, 0xcca07f7a -0, 37074, 37074, 334, 1336, 0x6d0a5dfe -0, 37408, 37408, 334, 1336, 0x4e0761ef -0, 37742, 37742, 334, 1336, 0x31368e66 -0, 38076, 38076, 334, 1336, 0x14b895c1 -0, 38410, 38410, 334, 1336, 0x4bb7c111 -0, 38744, 38744, 334, 1336, 0x1676a8bb -0, 39078, 39078, 334, 1336, 0xddaaa459 -0, 39412, 39412, 334, 1336, 0xc43eabce -0, 39746, 39746, 334, 1336, 0x4d9f8d54 +0, 27120, 27120, 334, 1336, 0xa4c0fbd7 +0, 27440, 27440, 334, 1336, 0x83aa81bd +0, 27760, 27760, 334, 1336, 0x8a7b0fdb +0, 28080, 28080, 334, 1336, 0x35c37b01 +0, 28400, 28400, 334, 1336, 0xdede811e +0, 28720, 28720, 334, 1336, 0x7473a657 +0, 29120, 29120, 334, 1336, 0x5b917e2b +0, 29440, 29440, 334, 1336, 0x1c5a7cfc +0, 29760, 29760, 334, 1336, 0xeb7bab0d +0, 30080, 30080, 334, 1336, 0x7337795c +0, 30400, 30400, 334, 1336, 0x68da9d08 +0, 30800, 30800, 334, 1336, 0xe93b87fe +0, 31120, 31120, 334, 1336, 0xd4639f00 +0, 31440, 31440, 334, 1336, 0x1070a91d +0, 31760, 31760, 334, 1336, 0x50e3788f +0, 32080, 32080, 334, 1336, 0x1dac6691 +0, 32400, 32400, 334, 1336, 0xf62c709d +0, 32800, 32800, 334, 1336, 0x2369648d +0, 33120, 33120, 334, 1336, 0xbfc792e6 +0, 33440, 33440, 334, 1336, 0x975eb8e3 +0, 33760, 33760, 334, 1336, 0x35c49ba6 +0, 34080, 34080, 334, 1336, 0xe6198aa9 +0, 34400, 34400, 334, 1336, 0x99f37d9d +0, 34800, 34800, 334, 1336, 0x4815aff1 +0, 35120, 35120, 334, 1336, 0x4fd366ca +0, 35440, 35440, 334, 1336, 0x43cf7bb4 +0, 35760, 35760, 334, 1336, 0x14a576ac +0, 36080, 36080, 334, 1336, 0xc6986978 +0, 36480, 36480, 334, 1336, 0x10f67dc4 +0, 36800, 36800, 334, 1336, 0xcca07f7a +0, 37120, 37120, 334, 1336, 0x6d0a5dfe +0, 37440, 37440, 334, 1336, 0x4e0761ef +0, 37760, 37760, 334, 1336, 0x31368e66 +0, 38080, 38080, 334, 1336, 0x14b895c1 +0, 38480, 38480, 334, 1336, 0x4bb7c111 +0, 38800, 38800, 334, 1336, 0x1676a8bb +0, 39120, 39120, 334, 1336, 0xddaaa459 +0, 39440, 39440, 334, 1336, 0xc43eabce +0, 39760, 39760, 334, 1336, 0x4d9f8d54 0, 40080, 40080, 334, 1336, 0x0ac292cb -0, 40414, 40414, 334, 1336, 0x2d9c74e4 -0, 40748, 40748, 334, 1336, 0xe73da38f +0, 40480, 40480, 334, 1336, 0x2d9c74e4 +0, 40800, 40800, 334, 1336, 0xe73da38f diff --git a/tests/ref/fate/smjpeg b/tests/ref/fate/smjpeg index 928ded7c62..78b750a5ac 100644 --- a/tests/ref/fate/smjpeg +++ b/tests/ref/fate/smjpeg @@ -2,424 +2,424 @@ #tb 1: 1/22050 0, 0, 0, 0, 734, 0x5a042c2c 1, 0, 0, 512, 1024, 0x00000000 -1, 512, 512, 512, 1024, 0x00000000 -1, 1024, 1024, 512, 1024, 0xd89a448e -1, 1536, 1536, 512, 1024, 0x695b369c -1, 2048, 2048, 512, 1024, 0xc8ba5707 +1, 507, 507, 512, 1024, 0x00000000 +1, 1014, 1014, 512, 1024, 0xd89a448e +1, 1521, 1521, 512, 1024, 0x695b369c +1, 2029, 2029, 512, 1024, 0xc8ba5707 0, 111, 111, 0, 763, 0xb5893f2f -1, 2560, 2560, 512, 1024, 0xdf241fc6 -1, 3072, 3072, 512, 1024, 0x61cf4166 -1, 3584, 3584, 512, 1024, 0x97cbc386 -1, 4096, 4096, 512, 1024, 0x44899d04 -1, 4608, 4608, 512, 1024, 0xa7cbaa62 +1, 2558, 2558, 512, 1024, 0xdf241fc6 +1, 3065, 3065, 512, 1024, 0x61cf4166 +1, 3572, 3572, 512, 1024, 0x97cbc386 +1, 4079, 4079, 512, 1024, 0x44899d04 +1, 4586, 4586, 512, 1024, 0xa7cbaa62 0, 222, 222, 0, 3023, 0x0f3907d3 -1, 5120, 5120, 512, 1024, 0xa7aea60c -1, 5632, 5632, 512, 1024, 0xd7b18a89 -1, 6144, 6144, 512, 1024, 0x268e81f6 -1, 6656, 6656, 512, 1024, 0x9cf83a2f -1, 7168, 7168, 512, 1024, 0x5559b508 +1, 5116, 5116, 512, 1024, 0xa7aea60c +1, 5623, 5623, 512, 1024, 0xd7b18a89 +1, 6130, 6130, 512, 1024, 0x268e81f6 +1, 6637, 6637, 512, 1024, 0x9cf83a2f +1, 7166, 7166, 512, 1024, 0x5559b508 0, 333, 333, 0, 4800, 0x22e6e18a -1, 7680, 7680, 512, 1024, 0xe1b9e71c -1, 8192, 8192, 512, 1024, 0xdcee733e -1, 8704, 8704, 512, 1024, 0xe5918f60 -1, 9216, 9216, 512, 1024, 0x29dbd209 -1, 9728, 9728, 512, 1024, 0x9bcbcf16 +1, 7673, 7673, 512, 1024, 0xe1b9e71c +1, 8181, 8181, 512, 1024, 0xdcee733e +1, 8688, 8688, 512, 1024, 0xe5918f60 +1, 9195, 9195, 512, 1024, 0x29dbd209 +1, 9724, 9724, 512, 1024, 0x9bcbcf16 0, 444, 444, 0, 6417, 0x427adde5 -1, 10240, 10240, 512, 1024, 0x86f5f458 -1, 10752, 10752, 512, 1024, 0xabcbda86 -1, 11264, 11264, 512, 1024, 0xc51f77b9 -1, 11776, 11776, 512, 1024, 0xf6b3a504 +1, 10231, 10231, 512, 1024, 0x86f5f458 +1, 10738, 10738, 512, 1024, 0xabcbda86 +1, 11246, 11246, 512, 1024, 0xc51f77b9 +1, 11775, 11775, 512, 1024, 0xf6b3a504 0, 555, 555, 0, 6776, 0x7a74c6ad -1, 12288, 12288, 512, 1024, 0x1af3e40e -1, 12800, 12800, 512, 1024, 0x3866b03b -1, 13312, 13312, 512, 1024, 0xbc005403 -1, 13824, 13824, 512, 1024, 0xe9dfcc51 -1, 14336, 14336, 512, 1024, 0x83c837cb +1, 12282, 12282, 512, 1024, 0x1af3e40e +1, 12789, 12789, 512, 1024, 0x3866b03b +1, 13296, 13296, 512, 1024, 0xbc005403 +1, 13803, 13803, 512, 1024, 0xe9dfcc51 +1, 14332, 14332, 512, 1024, 0x83c837cb 0, 666, 666, 0, 6808, 0x1f6eb7c3 -1, 14848, 14848, 512, 1024, 0xfa649580 -1, 15360, 15360, 512, 1024, 0x519452ea -1, 15872, 15872, 512, 1024, 0xd4978774 -1, 16384, 16384, 512, 1024, 0xe2a3b1cd -1, 16896, 16896, 512, 1024, 0x9a9472ad +1, 14840, 14840, 512, 1024, 0xfa649580 +1, 15347, 15347, 512, 1024, 0x519452ea +1, 15854, 15854, 512, 1024, 0xd4978774 +1, 16383, 16383, 512, 1024, 0xe2a3b1cd +1, 16890, 16890, 512, 1024, 0x9a9472ad 0, 777, 777, 0, 6726, 0x452087e6 -1, 17408, 17408, 512, 1024, 0xa12d4060 -1, 17920, 17920, 512, 1024, 0x31fb0646 -1, 18432, 18432, 512, 1024, 0xfc44343f -1, 18944, 18944, 512, 1024, 0x0847751a -1, 19456, 19456, 512, 1024, 0x227968a2 +1, 17397, 17397, 512, 1024, 0xa12d4060 +1, 17905, 17905, 512, 1024, 0x31fb0646 +1, 18412, 18412, 512, 1024, 0xfc44343f +1, 18941, 18941, 512, 1024, 0x0847751a +1, 19448, 19448, 512, 1024, 0x227968a2 0, 888, 888, 0, 6829, 0xee82b109 -1, 19968, 19968, 512, 1024, 0x7cce9f1c -1, 20480, 20480, 512, 1024, 0xb8356713 +1, 19955, 19955, 512, 1024, 0x7cce9f1c +1, 20462, 20462, 512, 1024, 0xb8356713 1, 20992, 20992, 512, 1024, 0xb29f6e6f -1, 21504, 21504, 512, 1024, 0x9e1430ab -1, 22016, 22016, 512, 1024, 0x26d85423 +1, 21499, 21499, 512, 1024, 0x9e1430ab +1, 22006, 22006, 512, 1024, 0x26d85423 0, 999, 999, 0, 7055, 0xf41f1108 -1, 22528, 22528, 512, 1024, 0x6496547d -1, 23040, 23040, 512, 1024, 0x316b1a86 -1, 23552, 23552, 512, 1024, 0x3cd83afc -1, 24064, 24064, 512, 1024, 0x993ff633 +1, 22513, 22513, 512, 1024, 0x6496547d +1, 23020, 23020, 512, 1024, 0x316b1a86 +1, 23549, 23549, 512, 1024, 0x3cd83afc +1, 24057, 24057, 512, 1024, 0x993ff633 0, 1111, 1111, 0, 6977, 0xf8fe1ede -1, 24576, 24576, 512, 1024, 0x0708d1a2 -1, 25088, 25088, 512, 1024, 0xd7230db9 -1, 25600, 25600, 512, 1024, 0xbb0779ca -1, 26112, 26112, 512, 1024, 0xc6094e1b -1, 26624, 26624, 512, 1024, 0x15a8b039 +1, 24564, 24564, 512, 1024, 0x0708d1a2 +1, 25071, 25071, 512, 1024, 0xd7230db9 +1, 25578, 25578, 512, 1024, 0xbb0779ca +1, 26107, 26107, 512, 1024, 0xc6094e1b +1, 26614, 26614, 512, 1024, 0x15a8b039 0, 1222, 1222, 0, 6942, 0x9ad105c6 -1, 27136, 27136, 512, 1024, 0xd6dbe88c -1, 27648, 27648, 512, 1024, 0x7e8d1140 -1, 28160, 28160, 512, 1024, 0xef88e525 -1, 28672, 28672, 512, 1024, 0x44e21149 -1, 29184, 29184, 512, 1024, 0x65b0f5f4 +1, 27122, 27122, 512, 1024, 0xd6dbe88c +1, 27629, 27629, 512, 1024, 0x7e8d1140 +1, 28158, 28158, 512, 1024, 0xef88e525 +1, 28665, 28665, 512, 1024, 0x44e21149 +1, 29172, 29172, 512, 1024, 0x65b0f5f4 0, 1333, 1333, 0, 6926, 0xe239dad6 -1, 29696, 29696, 512, 1024, 0xb955f687 -1, 30208, 30208, 512, 1024, 0xc85fba9c -1, 30720, 30720, 512, 1024, 0xf59655ad -1, 31232, 31232, 512, 1024, 0x6de80bf1 -1, 31744, 31744, 512, 1024, 0x2dcf6e41 +1, 29679, 29679, 512, 1024, 0xb955f687 +1, 30186, 30186, 512, 1024, 0xc85fba9c +1, 30716, 30716, 512, 1024, 0xf59655ad +1, 31223, 31223, 512, 1024, 0x6de80bf1 +1, 31730, 31730, 512, 1024, 0x2dcf6e41 0, 1444, 1444, 0, 6966, 0x81dcfab1 -1, 32256, 32256, 512, 1024, 0xd0ddcf8a -1, 32768, 32768, 512, 1024, 0x00135c2d -1, 33280, 33280, 512, 1024, 0x697f8efd -1, 33792, 33792, 512, 1024, 0x7a9bada5 +1, 32237, 32237, 512, 1024, 0xd0ddcf8a +1, 32766, 32766, 512, 1024, 0x00135c2d +1, 33273, 33273, 512, 1024, 0x697f8efd +1, 33781, 33781, 512, 1024, 0x7a9bada5 0, 1555, 1555, 0, 6896, 0x31e6cc02 -1, 34304, 34304, 512, 1024, 0x0d22783c -1, 34816, 34816, 512, 1024, 0x7726d07d -1, 35328, 35328, 512, 1024, 0xa2f14f67 -1, 35840, 35840, 512, 1024, 0x7f51060d -1, 36352, 36352, 512, 1024, 0xc4ec6aea +1, 34288, 34288, 512, 1024, 0x0d22783c +1, 34795, 34795, 512, 1024, 0x7726d07d +1, 35324, 35324, 512, 1024, 0xa2f14f67 +1, 35831, 35831, 512, 1024, 0x7f51060d +1, 36338, 36338, 512, 1024, 0xc4ec6aea 0, 1666, 1666, 0, 6889, 0x1cc1006e -1, 36864, 36864, 512, 1024, 0x9bb37ca4 -1, 37376, 37376, 512, 1024, 0x9b085577 -1, 37888, 37888, 512, 1024, 0x8812f8af -1, 38400, 38400, 512, 1024, 0x788f5221 -1, 38912, 38912, 512, 1024, 0x3a2ce642 +1, 36846, 36846, 512, 1024, 0x9bb37ca4 +1, 37375, 37375, 512, 1024, 0x9b085577 +1, 37882, 37882, 512, 1024, 0x8812f8af +1, 38389, 38389, 512, 1024, 0x788f5221 +1, 38896, 38896, 512, 1024, 0x3a2ce642 0, 1777, 1777, 0, 6933, 0xc303f87f -1, 39424, 39424, 512, 1024, 0x72415692 -1, 39936, 39936, 512, 1024, 0xe3dcc105 -1, 40448, 40448, 512, 1024, 0xb26c0599 -1, 40960, 40960, 512, 1024, 0x5c9e55eb -1, 41472, 41472, 512, 1024, 0x8fe88707 +1, 39403, 39403, 512, 1024, 0x72415692 +1, 39933, 39933, 512, 1024, 0xe3dcc105 +1, 40440, 40440, 512, 1024, 0xb26c0599 +1, 40947, 40947, 512, 1024, 0x5c9e55eb +1, 41454, 41454, 512, 1024, 0x8fe88707 0, 1888, 1888, 0, 7034, 0xb4970a20 -1, 41984, 41984, 512, 1024, 0xc5d7beb6 -1, 42496, 42496, 512, 1024, 0xe1d3a3b4 -1, 43008, 43008, 512, 1024, 0x012da0c6 -1, 43520, 43520, 512, 1024, 0x8d010922 -1, 44032, 44032, 512, 1024, 0x3366eb0d +1, 41983, 41983, 512, 1024, 0xc5d7beb6 +1, 42490, 42490, 512, 1024, 0xe1d3a3b4 +1, 42998, 42998, 512, 1024, 0x012da0c6 +1, 43505, 43505, 512, 1024, 0x8d010922 +1, 44012, 44012, 512, 1024, 0x3366eb0d 0, 1999, 1999, 0, 6961, 0xf064095d -1, 44544, 44544, 512, 1024, 0xc9381a27 -1, 45056, 45056, 512, 1024, 0x0774f685 -1, 45568, 45568, 512, 1024, 0xc5cae0a5 -1, 46080, 46080, 512, 1024, 0xa6f4737c +1, 44541, 44541, 512, 1024, 0xc9381a27 +1, 45048, 45048, 512, 1024, 0x0774f685 +1, 45555, 45555, 512, 1024, 0xc5cae0a5 +1, 46062, 46062, 512, 1024, 0xa6f4737c 0, 2111, 2111, 0, 7089, 0x5ba350f9 1, 46592, 46592, 512, 1024, 0x8fb6d0d1 -1, 47104, 47104, 512, 1024, 0x05f579c2 -1, 47616, 47616, 512, 1024, 0x56905d99 -1, 48128, 48128, 512, 1024, 0x002ee18d -1, 48640, 48640, 512, 1024, 0xeb37ef51 +1, 47099, 47099, 512, 1024, 0x05f579c2 +1, 47606, 47606, 512, 1024, 0x56905d99 +1, 48113, 48113, 512, 1024, 0x002ee18d +1, 48620, 48620, 512, 1024, 0xeb37ef51 0, 2222, 2222, 0, 7078, 0xa83f3e88 -1, 49152, 49152, 512, 1024, 0x38025635 -1, 49664, 49664, 512, 1024, 0x4fe643c8 -1, 50176, 50176, 512, 1024, 0x11d66ab1 -1, 50688, 50688, 512, 1024, 0xcc3051e9 -1, 51200, 51200, 512, 1024, 0xcd93e854 +1, 49149, 49149, 512, 1024, 0x38025635 +1, 49657, 49657, 512, 1024, 0x4fe643c8 +1, 50164, 50164, 512, 1024, 0x11d66ab1 +1, 50671, 50671, 512, 1024, 0xcc3051e9 +1, 51178, 51178, 512, 1024, 0xcd93e854 0, 2333, 2333, 0, 7147, 0xcda66cfc -1, 51712, 51712, 512, 1024, 0x38f1196d -1, 52224, 52224, 512, 1024, 0x657a15fc -1, 52736, 52736, 512, 1024, 0x669ce2a9 -1, 53248, 53248, 512, 1024, 0x95862dda -1, 53760, 53760, 512, 1024, 0x1726a7b2 +1, 51707, 51707, 512, 1024, 0x38f1196d +1, 52214, 52214, 512, 1024, 0x657a15fc +1, 52722, 52722, 512, 1024, 0x669ce2a9 +1, 53229, 53229, 512, 1024, 0x95862dda +1, 53758, 53758, 512, 1024, 0x1726a7b2 0, 2444, 2444, 0, 7173, 0xb7455859 -1, 54272, 54272, 512, 1024, 0xd6ece2a1 -1, 54784, 54784, 512, 1024, 0x33ab9553 -1, 55296, 55296, 512, 1024, 0xd50c73a6 -1, 55808, 55808, 512, 1024, 0xfe25b63a -1, 56320, 56320, 512, 1024, 0x7e2959e3 +1, 54265, 54265, 512, 1024, 0xd6ece2a1 +1, 54772, 54772, 512, 1024, 0x33ab9553 +1, 55279, 55279, 512, 1024, 0xd50c73a6 +1, 55786, 55786, 512, 1024, 0xfe25b63a +1, 56316, 56316, 512, 1024, 0x7e2959e3 0, 2555, 2555, 0, 7213, 0x97b89994 -1, 56832, 56832, 512, 1024, 0xa4c07b34 -1, 57344, 57344, 512, 1024, 0xd6d8f15c -1, 57856, 57856, 512, 1024, 0x1eccddd7 -1, 58368, 58368, 512, 1024, 0x2b69f9cb +1, 56823, 56823, 512, 1024, 0xa4c07b34 +1, 57330, 57330, 512, 1024, 0xd6d8f15c +1, 57837, 57837, 512, 1024, 0x1eccddd7 +1, 58366, 58366, 512, 1024, 0x2b69f9cb 0, 2666, 2666, 0, 7170, 0xca8b2948 -1, 58880, 58880, 512, 1024, 0x667b775f -1, 59392, 59392, 512, 1024, 0xad3b84e9 -1, 59904, 59904, 512, 1024, 0x4f29fc67 -1, 60416, 60416, 512, 1024, 0x8d611ab7 -1, 60928, 60928, 512, 1024, 0x278966ea +1, 58874, 58874, 512, 1024, 0x667b775f +1, 59381, 59381, 512, 1024, 0xad3b84e9 +1, 59888, 59888, 512, 1024, 0x4f29fc67 +1, 60395, 60395, 512, 1024, 0x8d611ab7 +1, 60924, 60924, 512, 1024, 0x278966ea 0, 2777, 2777, 0, 7174, 0xc7cc6bbb -1, 61440, 61440, 512, 1024, 0xaf33812b -1, 61952, 61952, 512, 1024, 0xa55f4265 -1, 62464, 62464, 512, 1024, 0x023cb51c -1, 62976, 62976, 512, 1024, 0x1d1f1005 -1, 63488, 63488, 512, 1024, 0x874cccf7 +1, 61431, 61431, 512, 1024, 0xaf33812b +1, 61938, 61938, 512, 1024, 0xa55f4265 +1, 62446, 62446, 512, 1024, 0x023cb51c +1, 62975, 62975, 512, 1024, 0x1d1f1005 +1, 63482, 63482, 512, 1024, 0x874cccf7 0, 2888, 2888, 0, 7235, 0xc2e68d2b -1, 64000, 64000, 512, 1024, 0xda705428 -1, 64512, 64512, 512, 1024, 0x48d9b440 -1, 65024, 65024, 512, 1024, 0xa14e0712 -1, 65536, 65536, 512, 1024, 0x7efbad1f -1, 66048, 66048, 512, 1024, 0xdb82c17f +1, 63989, 63989, 512, 1024, 0xda705428 +1, 64496, 64496, 512, 1024, 0x48d9b440 +1, 65003, 65003, 512, 1024, 0xa14e0712 +1, 65533, 65533, 512, 1024, 0x7efbad1f +1, 66040, 66040, 512, 1024, 0xdb82c17f 0, 3000, 3000, 0, 7261, 0x8204a423 -1, 66560, 66560, 512, 1024, 0xcbe87613 -1, 67072, 67072, 512, 1024, 0x3a63df1d -1, 67584, 67584, 512, 1024, 0xd5636bba -1, 68096, 68096, 512, 1024, 0x9397af23 +1, 66547, 66547, 512, 1024, 0xcbe87613 +1, 67054, 67054, 512, 1024, 0x3a63df1d +1, 67583, 67583, 512, 1024, 0xd5636bba +1, 68090, 68090, 512, 1024, 0x9397af23 0, 3111, 3111, 0, 7353, 0xacc7e7c0 -1, 68608, 68608, 512, 1024, 0x32a07c98 -1, 69120, 69120, 512, 1024, 0x202ca667 -1, 69632, 69632, 512, 1024, 0xdf969011 -1, 70144, 70144, 512, 1024, 0xc434d238 -1, 70656, 70656, 512, 1024, 0xe9ad7562 +1, 68598, 68598, 512, 1024, 0x32a07c98 +1, 69105, 69105, 512, 1024, 0x202ca667 +1, 69612, 69612, 512, 1024, 0xdf969011 +1, 70141, 70141, 512, 1024, 0xc434d238 +1, 70648, 70648, 512, 1024, 0xe9ad7562 0, 3222, 3222, 0, 7065, 0x45035c5c -1, 71168, 71168, 512, 1024, 0xb51b6b50 -1, 71680, 71680, 512, 1024, 0xe70aecd3 +1, 71155, 71155, 512, 1024, 0xb51b6b50 +1, 71662, 71662, 512, 1024, 0xe70aecd3 1, 72192, 72192, 512, 1024, 0x03c816b2 -1, 72704, 72704, 512, 1024, 0x869fdf25 -1, 73216, 73216, 512, 1024, 0xd40a0a62 +1, 72699, 72699, 512, 1024, 0x869fdf25 +1, 73206, 73206, 512, 1024, 0xd40a0a62 0, 3333, 3333, 0, 7269, 0x72edbb76 -1, 73728, 73728, 512, 1024, 0x5af7dd35 -1, 74240, 74240, 512, 1024, 0x891ffc72 -1, 74752, 74752, 512, 1024, 0x1ff68a08 -1, 75264, 75264, 512, 1024, 0x5a7517a9 -1, 75776, 75776, 512, 1024, 0x0f959f74 +1, 73713, 73713, 512, 1024, 0x5af7dd35 +1, 74220, 74220, 512, 1024, 0x891ffc72 +1, 74750, 74750, 512, 1024, 0x1ff68a08 +1, 75257, 75257, 512, 1024, 0x5a7517a9 +1, 75764, 75764, 512, 1024, 0x0f959f74 0, 3444, 3444, 0, 7220, 0xb926772f -1, 76288, 76288, 512, 1024, 0xe92a12a2 -1, 76800, 76800, 512, 1024, 0x38000e55 -1, 77312, 77312, 512, 1024, 0x39fbdd70 -1, 77824, 77824, 512, 1024, 0xca3d9184 -1, 78336, 78336, 512, 1024, 0x66c8995b +1, 76271, 76271, 512, 1024, 0xe92a12a2 +1, 76778, 76778, 512, 1024, 0x38000e55 +1, 77307, 77307, 512, 1024, 0x39fbdd70 +1, 77814, 77814, 512, 1024, 0xca3d9184 +1, 78322, 78322, 512, 1024, 0x66c8995b 0, 3555, 3555, 0, 7326, 0x0a66c632 -1, 78848, 78848, 512, 1024, 0xac25acea -1, 79360, 79360, 512, 1024, 0x3cd1046c -1, 79872, 79872, 512, 1024, 0x6a1df31c -1, 80384, 80384, 512, 1024, 0x21ca10a1 +1, 78829, 78829, 512, 1024, 0xac25acea +1, 79358, 79358, 512, 1024, 0x3cd1046c +1, 79865, 79865, 512, 1024, 0x6a1df31c +1, 80372, 80372, 512, 1024, 0x21ca10a1 0, 3666, 3666, 0, 7225, 0xe39076ab -1, 80896, 80896, 512, 1024, 0x1aeccedc -1, 81408, 81408, 512, 1024, 0xddea1335 -1, 81920, 81920, 512, 1024, 0x19f5ca9f -1, 82432, 82432, 512, 1024, 0x88e95e43 -1, 82944, 82944, 512, 1024, 0x726284fe +1, 80879, 80879, 512, 1024, 0x1aeccedc +1, 81387, 81387, 512, 1024, 0xddea1335 +1, 81916, 81916, 512, 1024, 0x19f5ca9f +1, 82423, 82423, 512, 1024, 0x88e95e43 +1, 82930, 82930, 512, 1024, 0x726284fe 0, 3777, 3777, 0, 7265, 0xe0209036 -1, 83456, 83456, 512, 1024, 0x6b85b40e -1, 83968, 83968, 512, 1024, 0x111fee2a -1, 84480, 84480, 512, 1024, 0x3656b588 -1, 84992, 84992, 512, 1024, 0xa5a2b552 -1, 85504, 85504, 512, 1024, 0x38fb2467 +1, 83437, 83437, 512, 1024, 0x6b85b40e +1, 83966, 83966, 512, 1024, 0x111fee2a +1, 84474, 84474, 512, 1024, 0x3656b588 +1, 84981, 84981, 512, 1024, 0xa5a2b552 +1, 85488, 85488, 512, 1024, 0x38fb2467 0, 3888, 3888, 0, 7337, 0x7a5dc093 -1, 86016, 86016, 512, 1024, 0xaa919ccc -1, 86528, 86528, 512, 1024, 0x15993dbc -1, 87040, 87040, 512, 1024, 0xbe01a7b9 -1, 87552, 87552, 512, 1024, 0xefe93c09 -1, 88064, 88064, 512, 1024, 0x1bb566e5 +1, 85995, 85995, 512, 1024, 0xaa919ccc +1, 86524, 86524, 512, 1024, 0x15993dbc +1, 87031, 87031, 512, 1024, 0xbe01a7b9 +1, 87538, 87538, 512, 1024, 0xefe93c09 +1, 88046, 88046, 512, 1024, 0x1bb566e5 0, 4000, 4000, 0, 7246, 0x519a7a3c -1, 88576, 88576, 512, 1024, 0x15ce6237 -1, 89088, 89088, 512, 1024, 0xa8552e66 -1, 89600, 89600, 512, 1024, 0x9d80187e -1, 90112, 90112, 512, 1024, 0x5df3fc30 -1, 90624, 90624, 512, 1024, 0x1a312aa5 +1, 88575, 88575, 512, 1024, 0x15ce6237 +1, 89082, 89082, 512, 1024, 0xa8552e66 +1, 89589, 89589, 512, 1024, 0x9d80187e +1, 90096, 90096, 512, 1024, 0x5df3fc30 +1, 90603, 90603, 512, 1024, 0x1a312aa5 0, 4111, 4111, 0, 7266, 0x352c8078 -1, 91136, 91136, 512, 1024, 0x6bb8e302 -1, 91648, 91648, 512, 1024, 0xbd9684bb -1, 92160, 92160, 512, 1024, 0x78b0b166 -1, 92672, 92672, 512, 1024, 0xd9af5eae +1, 91133, 91133, 512, 1024, 0x6bb8e302 +1, 91640, 91640, 512, 1024, 0xbd9684bb +1, 92147, 92147, 512, 1024, 0x78b0b166 +1, 92654, 92654, 512, 1024, 0xd9af5eae 0, 4222, 4222, 0, 7323, 0xcaf69d7c -1, 93184, 93184, 512, 1024, 0xdb90fe82 -1, 93696, 93696, 512, 1024, 0x327614e9 -1, 94208, 94208, 512, 1024, 0x1f19b7fe -1, 94720, 94720, 512, 1024, 0x46c53f96 -1, 95232, 95232, 512, 1024, 0x921b2189 +1, 93183, 93183, 512, 1024, 0xdb90fe82 +1, 93690, 93690, 512, 1024, 0x327614e9 +1, 94198, 94198, 512, 1024, 0x1f19b7fe +1, 94705, 94705, 512, 1024, 0x46c53f96 +1, 95212, 95212, 512, 1024, 0x921b2189 0, 4333, 4333, 0, 7309, 0x98c1e6f7 -1, 95744, 95744, 512, 1024, 0xa8fbc85a -1, 96256, 96256, 512, 1024, 0xabfdaaae -1, 96768, 96768, 512, 1024, 0x6acc7387 -1, 97280, 97280, 512, 1024, 0x0d9c27b5 +1, 95741, 95741, 512, 1024, 0xa8fbc85a +1, 96248, 96248, 512, 1024, 0xabfdaaae +1, 96755, 96755, 512, 1024, 0x6acc7387 +1, 97263, 97263, 512, 1024, 0x0d9c27b5 1, 97792, 97792, 512, 1024, 0xba4dd809 0, 4444, 4444, 0, 7121, 0x913d5bd6 -1, 98304, 98304, 512, 1024, 0x2a2ad521 -1, 98816, 98816, 512, 1024, 0x892de38a -1, 99328, 99328, 512, 1024, 0xdc97a2eb -1, 99840, 99840, 512, 1024, 0x4f614ca4 -1, 100352, 100352, 512, 1024, 0x9c8a77ea +1, 98299, 98299, 512, 1024, 0x2a2ad521 +1, 98806, 98806, 512, 1024, 0x892de38a +1, 99313, 99313, 512, 1024, 0xdc97a2eb +1, 99820, 99820, 512, 1024, 0x4f614ca4 +1, 100350, 100350, 512, 1024, 0x9c8a77ea 0, 4555, 4555, 111, 7088, 0x56302362 -1, 100864, 100864, 512, 1024, 0x2d30e646 -1, 101376, 101376, 512, 1024, 0x74e800a7 -1, 101888, 101888, 512, 1024, 0x1e01fb02 -1, 102400, 102400, 512, 1024, 0x4ed2c1d8 +1, 100857, 100857, 512, 1024, 0x2d30e646 +1, 101364, 101364, 512, 1024, 0x74e800a7 +1, 101871, 101871, 512, 1024, 0x1e01fb02 +1, 102378, 102378, 512, 1024, 0x4ed2c1d8 0, 4666, 4666, 111, 7104, 0xc0d14f78 -1, 102912, 102912, 512, 1024, 0xf2fdbe63 -1, 103424, 103424, 512, 1024, 0x8d6f63a1 -1, 103936, 103936, 512, 1024, 0xded468d9 -1, 104448, 104448, 512, 1024, 0xccad839e -1, 104960, 104960, 512, 1024, 0xdde7c082 +1, 102907, 102907, 512, 1024, 0xf2fdbe63 +1, 103414, 103414, 512, 1024, 0x8d6f63a1 +1, 103922, 103922, 512, 1024, 0xded468d9 +1, 104429, 104429, 512, 1024, 0xccad839e +1, 104958, 104958, 512, 1024, 0xdde7c082 0, 4777, 4777, 111, 7169, 0xd03c825b -1, 105472, 105472, 512, 1024, 0x548613c5 -1, 105984, 105984, 512, 1024, 0x383909bd -1, 106496, 106496, 512, 1024, 0xfd37627b -1, 107008, 107008, 512, 1024, 0x6d95a481 -1, 107520, 107520, 512, 1024, 0x56aa87fa +1, 105465, 105465, 512, 1024, 0x548613c5 +1, 105972, 105972, 512, 1024, 0x383909bd +1, 106479, 106479, 512, 1024, 0xfd37627b +1, 106987, 106987, 512, 1024, 0x6d95a481 +1, 107516, 107516, 512, 1024, 0x56aa87fa 0, 4888, 4888, 111, 7038, 0x1ecc201d -1, 108032, 108032, 512, 1024, 0x7b67258c -1, 108544, 108544, 512, 1024, 0x7dd99a92 -1, 109056, 109056, 512, 1024, 0x4a66d102 -1, 109568, 109568, 512, 1024, 0x7b3fce51 -1, 110080, 110080, 512, 1024, 0xbbd968aa +1, 108023, 108023, 512, 1024, 0x7b67258c +1, 108530, 108530, 512, 1024, 0x7dd99a92 +1, 109037, 109037, 512, 1024, 0x4a66d102 +1, 109566, 109566, 512, 1024, 0x7b3fce51 +1, 110074, 110074, 512, 1024, 0xbbd968aa 0, 5000, 5000, 111, 7015, 0x83c94454 -1, 110592, 110592, 512, 1024, 0x8283ec36 -1, 111104, 111104, 512, 1024, 0x3c96493d -1, 111616, 111616, 512, 1024, 0xfa4f8cf8 -1, 112128, 112128, 512, 1024, 0xe2cf872d -1, 112640, 112640, 512, 1024, 0x0a9e7aa6 +1, 110581, 110581, 512, 1024, 0x8283ec36 +1, 111088, 111088, 512, 1024, 0x3c96493d +1, 111595, 111595, 512, 1024, 0xfa4f8cf8 +1, 112124, 112124, 512, 1024, 0xe2cf872d +1, 112631, 112631, 512, 1024, 0x0a9e7aa6 0, 5111, 5111, 111, 6983, 0x9e51f54d -1, 113152, 113152, 512, 1024, 0x6e7a0550 -1, 113664, 113664, 512, 1024, 0x3acfea2f -1, 114176, 114176, 512, 1024, 0x7111d0fa -1, 114688, 114688, 512, 1024, 0xe9a1eca9 +1, 113139, 113139, 512, 1024, 0x6e7a0550 +1, 113646, 113646, 512, 1024, 0x3acfea2f +1, 114175, 114175, 512, 1024, 0x7111d0fa +1, 114682, 114682, 512, 1024, 0xe9a1eca9 0, 5222, 5222, 111, 7088, 0x70d33de1 -1, 115200, 115200, 512, 1024, 0x24da6c46 -1, 115712, 115712, 512, 1024, 0x117cff37 -1, 116224, 116224, 512, 1024, 0x0f27cab6 -1, 116736, 116736, 512, 1024, 0x69b6b4e6 -1, 117248, 117248, 512, 1024, 0x1e6cc841 +1, 115189, 115189, 512, 1024, 0x24da6c46 +1, 115696, 115696, 512, 1024, 0x117cff37 +1, 116204, 116204, 512, 1024, 0x0f27cab6 +1, 116733, 116733, 512, 1024, 0x69b6b4e6 +1, 117240, 117240, 512, 1024, 0x1e6cc841 0, 5333, 5333, 111, 7096, 0x4d0f81b5 -1, 117760, 117760, 512, 1024, 0xb01e2365 -1, 118272, 118272, 512, 1024, 0x14e200d3 -1, 118784, 118784, 512, 1024, 0xd1184c98 -1, 119296, 119296, 512, 1024, 0xef9140e9 -1, 119808, 119808, 512, 1024, 0x4cbb645e +1, 117747, 117747, 512, 1024, 0xb01e2365 +1, 118254, 118254, 512, 1024, 0x14e200d3 +1, 118783, 118783, 512, 1024, 0xd1184c98 +1, 119290, 119290, 512, 1024, 0xef9140e9 +1, 119798, 119798, 512, 1024, 0x4cbb645e 0, 5444, 5444, 111, 7106, 0xd1a83ddc -1, 120320, 120320, 512, 1024, 0xe7fe2f06 -1, 120832, 120832, 512, 1024, 0xf8c45028 -1, 121344, 121344, 512, 1024, 0x561358f4 -1, 121856, 121856, 512, 1024, 0xd0129b77 -1, 122368, 122368, 512, 1024, 0xcc636e88 +1, 120305, 120305, 512, 1024, 0xe7fe2f06 +1, 120812, 120812, 512, 1024, 0xf8c45028 +1, 121341, 121341, 512, 1024, 0x561358f4 +1, 121848, 121848, 512, 1024, 0xd0129b77 +1, 122355, 122355, 512, 1024, 0xcc636e88 0, 5555, 5555, 111, 7219, 0x20f47fe4 -1, 122880, 122880, 512, 1024, 0xe9406321 +1, 122863, 122863, 512, 1024, 0xe9406321 1, 123392, 123392, 512, 1024, 0x9f16a041 -1, 123904, 123904, 512, 1024, 0x468bf409 -1, 124416, 124416, 512, 1024, 0x3df70f7b -1, 124928, 124928, 512, 1024, 0xa880b11b +1, 123899, 123899, 512, 1024, 0x468bf409 +1, 124406, 124406, 512, 1024, 0x3df70f7b +1, 124913, 124913, 512, 1024, 0xa880b11b 0, 5666, 5666, 111, 7184, 0x45dc6a0e -1, 125440, 125440, 512, 1024, 0x3286c489 -1, 125952, 125952, 512, 1024, 0x39fe9ebc -1, 126464, 126464, 512, 1024, 0xc533d83b -1, 126976, 126976, 512, 1024, 0x153b195d +1, 125420, 125420, 512, 1024, 0x3286c489 +1, 125950, 125950, 512, 1024, 0x39fe9ebc +1, 126457, 126457, 512, 1024, 0xc533d83b +1, 126964, 126964, 512, 1024, 0x153b195d 0, 5777, 5777, 111, 7222, 0x488c6499 -1, 127488, 127488, 512, 1024, 0xd84786a1 -1, 128000, 128000, 512, 1024, 0xdc295aaa -1, 128512, 128512, 512, 1024, 0xfb764d8c -1, 129024, 129024, 512, 1024, 0xeebc9db9 -1, 129536, 129536, 512, 1024, 0x7ba9403e +1, 127471, 127471, 512, 1024, 0xd84786a1 +1, 127978, 127978, 512, 1024, 0xdc295aaa +1, 128507, 128507, 512, 1024, 0xfb764d8c +1, 129015, 129015, 512, 1024, 0xeebc9db9 +1, 129522, 129522, 512, 1024, 0x7ba9403e 0, 5888, 5888, 111, 7254, 0xbd097ba7 -1, 130048, 130048, 512, 1024, 0x4e5571ec -1, 130560, 130560, 512, 1024, 0xd965fad4 -1, 131072, 131072, 512, 1024, 0x87e259f2 -1, 131584, 131584, 512, 1024, 0xae7e533b -1, 132096, 132096, 512, 1024, 0x313cf4d6 +1, 130029, 130029, 512, 1024, 0x4e5571ec +1, 130558, 130558, 512, 1024, 0xd965fad4 +1, 131065, 131065, 512, 1024, 0x87e259f2 +1, 131572, 131572, 512, 1024, 0xae7e533b +1, 132080, 132080, 512, 1024, 0x313cf4d6 0, 6000, 6000, 111, 7189, 0x46e06d43 -1, 132608, 132608, 512, 1024, 0xe1844c90 -1, 133120, 133120, 512, 1024, 0xbb057b44 -1, 133632, 133632, 512, 1024, 0xa5099687 -1, 134144, 134144, 512, 1024, 0xbff10707 -1, 134656, 134656, 512, 1024, 0x37c4ffc0 +1, 132587, 132587, 512, 1024, 0xe1844c90 +1, 133116, 133116, 512, 1024, 0xbb057b44 +1, 133623, 133623, 512, 1024, 0xa5099687 +1, 134130, 134130, 512, 1024, 0xbff10707 +1, 134637, 134637, 512, 1024, 0x37c4ffc0 0, 6111, 6111, 111, 7283, 0x19dd7319 -1, 135168, 135168, 512, 1024, 0xf9fb6caa -1, 135680, 135680, 512, 1024, 0x3b6a3a1f -1, 136192, 136192, 512, 1024, 0x83431edb -1, 136704, 136704, 512, 1024, 0x1eb713cf +1, 135166, 135166, 512, 1024, 0xf9fb6caa +1, 135674, 135674, 512, 1024, 0x3b6a3a1f +1, 136181, 136181, 512, 1024, 0x83431edb +1, 136688, 136688, 512, 1024, 0x1eb713cf +1, 137195, 137195, 512, 1024, 0xd7b07a6d 0, 6222, 6222, 111, 7161, 0x23171d02 -1, 137216, 137216, 512, 1024, 0xd7b07a6d -1, 137728, 137728, 512, 1024, 0x81ae3391 -1, 138240, 138240, 512, 1024, 0xf150130a -1, 138752, 138752, 512, 1024, 0x09678eaa -1, 139264, 139264, 512, 1024, 0xb94e06f1 +1, 137724, 137724, 512, 1024, 0x81ae3391 +1, 138231, 138231, 512, 1024, 0xf150130a +1, 138739, 138739, 512, 1024, 0x09678eaa +1, 139246, 139246, 512, 1024, 0xb94e06f1 0, 6333, 6333, 111, 6976, 0xcc610c26 -1, 139776, 139776, 512, 1024, 0x67b1dbc9 -1, 140288, 140288, 512, 1024, 0xd6edc235 -1, 140800, 140800, 512, 1024, 0x34e4c499 -1, 141312, 141312, 512, 1024, 0xeefd89c0 -1, 141824, 141824, 512, 1024, 0x38afdaf1 +1, 139775, 139775, 512, 1024, 0x67b1dbc9 +1, 140282, 140282, 512, 1024, 0xd6edc235 +1, 140789, 140789, 512, 1024, 0x34e4c499 +1, 141296, 141296, 512, 1024, 0xeefd89c0 +1, 141804, 141804, 512, 1024, 0x38afdaf1 0, 6444, 6444, 111, 7056, 0x6cd917b0 -1, 142336, 142336, 512, 1024, 0x29a60d76 -1, 142848, 142848, 512, 1024, 0xe28a4372 -1, 143360, 143360, 512, 1024, 0x7089454d -1, 143872, 143872, 512, 1024, 0x0c01bb7b -1, 144384, 144384, 512, 1024, 0xbd776a72 +1, 142333, 142333, 512, 1024, 0x29a60d76 +1, 142840, 142840, 512, 1024, 0xe28a4372 +1, 143347, 143347, 512, 1024, 0x7089454d +1, 143854, 143854, 512, 1024, 0x0c01bb7b +1, 144383, 144383, 512, 1024, 0xbd776a72 0, 6555, 6555, 111, 6736, 0x02b78951 -1, 144896, 144896, 512, 1024, 0x86776fd0 -1, 145408, 145408, 512, 1024, 0xb37c88f7 -1, 145920, 145920, 512, 1024, 0x5f90aaf8 -1, 146432, 146432, 512, 1024, 0x203d4222 -1, 146944, 146944, 512, 1024, 0x382692a6 +1, 144891, 144891, 512, 1024, 0x86776fd0 +1, 145398, 145398, 512, 1024, 0xb37c88f7 +1, 145905, 145905, 512, 1024, 0x5f90aaf8 +1, 146412, 146412, 512, 1024, 0x203d4222 +1, 146941, 146941, 512, 1024, 0x382692a6 0, 6666, 6666, 111, 6540, 0x767e0854 -1, 147456, 147456, 512, 1024, 0xf37c95fd -1, 147968, 147968, 512, 1024, 0x6c0b8877 -1, 148480, 148480, 512, 1024, 0x2e54a8b6 +1, 147448, 147448, 512, 1024, 0xf37c95fd +1, 147956, 147956, 512, 1024, 0x6c0b8877 +1, 148463, 148463, 512, 1024, 0x2e54a8b6 1, 148992, 148992, 512, 1024, 0x7f266488 0, 6777, 6777, 111, 6170, 0xc84962fb -1, 149504, 149504, 512, 1024, 0xfbf20f9a -1, 150016, 150016, 512, 1024, 0xf2985cc0 -1, 150528, 150528, 512, 1024, 0xc7075340 -1, 151040, 151040, 512, 1024, 0xe4585695 -1, 151552, 151552, 512, 1024, 0xbdffa380 +1, 149499, 149499, 512, 1024, 0xfbf20f9a +1, 150006, 150006, 512, 1024, 0xf2985cc0 +1, 150513, 150513, 512, 1024, 0xc7075340 +1, 151020, 151020, 512, 1024, 0xe4585695 +1, 151550, 151550, 512, 1024, 0xbdffa380 0, 6888, 6888, 111, 6169, 0x27e06c03 -1, 152064, 152064, 512, 1024, 0x2422a8a9 -1, 152576, 152576, 512, 1024, 0x59cbd75f -1, 153088, 153088, 512, 1024, 0x04ad1a8c -1, 153600, 153600, 512, 1024, 0x33c09191 -1, 154112, 154112, 512, 1024, 0x55efa6fd +1, 152057, 152057, 512, 1024, 0x2422a8a9 +1, 152564, 152564, 512, 1024, 0x59cbd75f +1, 153071, 153071, 512, 1024, 0x04ad1a8c +1, 153578, 153578, 512, 1024, 0x33c09191 +1, 154107, 154107, 512, 1024, 0x55efa6fd 0, 7000, 7000, 111, 5864, 0xd14db83f -1, 154624, 154624, 512, 1024, 0xf73d0e5d -1, 155136, 155136, 512, 1024, 0x6141ebae -1, 155648, 155648, 512, 1024, 0x7db17a68 -1, 156160, 156160, 512, 1024, 0xa6c690b6 -1, 156672, 156672, 512, 1024, 0xa6fd6725 +1, 154615, 154615, 512, 1024, 0xf73d0e5d +1, 155122, 155122, 512, 1024, 0x6141ebae +1, 155629, 155629, 512, 1024, 0x7db17a68 +1, 156158, 156158, 512, 1024, 0xa6c690b6 +1, 156665, 156665, 512, 1024, 0xa6fd6725 0, 7111, 7111, 111, 5375, 0x4a21055d -1, 157184, 157184, 512, 1024, 0x50a90b9b -1, 157696, 157696, 512, 1024, 0xef990dc8 -1, 158208, 158208, 512, 1024, 0x75adf6b5 -1, 158720, 158720, 512, 1024, 0x61eac43e -1, 159232, 159232, 512, 1024, 0x67797a19 +1, 157172, 157172, 512, 1024, 0x50a90b9b +1, 157680, 157680, 512, 1024, 0xef990dc8 +1, 158187, 158187, 512, 1024, 0x75adf6b5 +1, 158716, 158716, 512, 1024, 0x61eac43e +1, 159223, 159223, 512, 1024, 0x67797a19 0, 7222, 7222, 111, 5206, 0x95ead3cb -1, 159744, 159744, 512, 1024, 0xf325277a -1, 160256, 160256, 512, 1024, 0x18bf254a -1, 160768, 160768, 512, 1024, 0x2ce6bee3 -1, 161280, 161280, 512, 1024, 0x8d320860 +1, 159730, 159730, 512, 1024, 0xf325277a +1, 160237, 160237, 512, 1024, 0x18bf254a +1, 160767, 160767, 512, 1024, 0x2ce6bee3 +1, 161274, 161274, 512, 1024, 0x8d320860 0, 7333, 7333, 111, 5220, 0xcfdcc37e -1, 161792, 161792, 512, 1024, 0xc979b6e8 -1, 162304, 162304, 512, 1024, 0xdb644b41 -1, 162816, 162816, 512, 1024, 0xe1b368ba -1, 163328, 163328, 512, 1024, 0xacc53d15 -1, 163840, 163840, 512, 1024, 0x42ea8c18 +1, 161781, 161781, 512, 1024, 0xc979b6e8 +1, 162288, 162288, 512, 1024, 0xdb644b41 +1, 162795, 162795, 512, 1024, 0xe1b368ba +1, 163324, 163324, 512, 1024, 0xacc53d15 +1, 163832, 163832, 512, 1024, 0x42ea8c18 0, 7444, 7444, 111, 4946, 0x2d864a77 -1, 164352, 164352, 512, 1024, 0xe52c99a4 -1, 164864, 164864, 512, 1024, 0xd7db54a6 -1, 165376, 165376, 512, 1024, 0x7f27a7e3 -1, 165888, 165888, 512, 1024, 0xf7ffeaa9 -1, 166400, 166400, 512, 1024, 0x792b6088 +1, 164339, 164339, 512, 1024, 0xe52c99a4 +1, 164846, 164846, 512, 1024, 0xd7db54a6 +1, 165375, 165375, 512, 1024, 0x7f27a7e3 +1, 165882, 165882, 512, 1024, 0xf7ffeaa9 +1, 166389, 166389, 512, 1024, 0x792b6088 0, 7555, 7555, 111, 4390, 0x2ab9f462 -1, 166912, 166912, 512, 1024, 0x61d99724 -1, 167424, 167424, 512, 1024, 0x5213720e -1, 167936, 167936, 512, 1024, 0xac09dd30 -1, 168448, 168448, 512, 1024, 0x960bf6bb -1, 168960, 168960, 512, 1024, 0xc90168e1 +1, 166896, 166896, 512, 1024, 0x61d99724 +1, 167404, 167404, 512, 1024, 0x5213720e +1, 167933, 167933, 512, 1024, 0xac09dd30 +1, 168440, 168440, 512, 1024, 0x960bf6bb +1, 168947, 168947, 512, 1024, 0xc90168e1 0, 7666, 7666, 111, 4051, 0x1d09592e -1, 169472, 169472, 512, 1024, 0x43b45768 -1, 169984, 169984, 512, 1024, 0x935d60a1 -1, 170496, 170496, 512, 1024, 0x9a342ef2 -1, 171008, 171008, 512, 1024, 0xc894709f +1, 169454, 169454, 512, 1024, 0x43b45768 +1, 169983, 169983, 512, 1024, 0x935d60a1 +1, 170491, 170491, 512, 1024, 0x9a342ef2 +1, 170998, 170998, 512, 1024, 0xc894709f 0, 7777, 7777, 111, 3680, 0x39bd6a12 -1, 171520, 171520, 512, 1024, 0x59b43b07 -1, 172032, 172032, 512, 1024, 0x36a1a98d -1, 172544, 172544, 512, 1024, 0x9e1a121c -1, 173056, 173056, 512, 1024, 0x02208b78 -1, 173568, 173568, 512, 1024, 0xd1d7b274 +1, 171505, 171505, 512, 1024, 0x59b43b07 +1, 172012, 172012, 512, 1024, 0x36a1a98d +1, 172541, 172541, 512, 1024, 0x9e1a121c +1, 173048, 173048, 512, 1024, 0x02208b78 +1, 173556, 173556, 512, 1024, 0xd1d7b274 0, 7888, 7888, 111, 2910, 0x6337ece9 -1, 174080, 174080, 512, 1024, 0xdacd5096 +1, 174063, 174063, 512, 1024, 0xdacd5096 1, 174592, 174592, 512, 1024, 0x51b71ead -1, 175104, 175104, 512, 1024, 0xd009a7ca -1, 175616, 175616, 512, 1024, 0xb6d5a938 -1, 176128, 176128, 512, 1024, 0xf3d45e47 +1, 175099, 175099, 512, 1024, 0xd009a7ca +1, 175606, 175606, 512, 1024, 0xb6d5a938 +1, 176113, 176113, 512, 1024, 0xf3d45e47 0, 8000, 8000, 111, 2153, 0xf4e3bc17 -1, 176640, 176640, 512, 1024, 0xea8e04fc -1, 177152, 177152, 512, 1024, 0x0b928bd8 -1, 177664, 177664, 512, 1024, 0x0f02caec -1, 178176, 178176, 512, 1024, 0xe2b137a8 -1, 178688, 178688, 512, 1024, 0xd5f94892 +1, 176620, 176620, 512, 1024, 0xea8e04fc +1, 177150, 177150, 512, 1024, 0x0b928bd8 +1, 177657, 177657, 512, 1024, 0x0f02caec +1, 178164, 178164, 512, 1024, 0xe2b137a8 +1, 178671, 178671, 512, 1024, 0xd5f94892 diff --git a/tests/ref/fate/truemotion1-15 b/tests/ref/fate/truemotion1-15 index c4efe8c47f..9a5d3894b0 100644 --- a/tests/ref/fate/truemotion1-15 +++ b/tests/ref/fate/truemotion1-15 @@ -16,205 +16,205 @@ 0, 6, 6, 1, 161280, 0xc39f6b95 1, 18956, 18956, 2708, 10832, 0x401ed099 0, 7, 7, 1, 161280, 0x3b036dcc -1, 21664, 21664, 2708, 10832, 0x432a53bd +1, 21665, 21665, 2708, 10832, 0x432a53bd 0, 8, 8, 1, 161280, 0xa6fac1db -1, 24372, 24372, 2708, 10832, 0xc4276bfd +1, 24373, 24373, 2708, 10832, 0xc4276bfd 0, 9, 9, 1, 161280, 0x67656b62 -1, 27080, 27080, 2708, 10832, 0x51f0fa8c +1, 27081, 27081, 2708, 10832, 0x51f0fa8c 0, 10, 10, 1, 161280, 0xb41f47d1 -1, 29788, 29788, 2708, 10832, 0xcebae622 +1, 29789, 29789, 2708, 10832, 0xcebae622 0, 11, 11, 1, 161280, 0xc207249e -1, 32496, 32496, 2708, 10832, 0xe9f6dc1f -1, 35204, 35204, 2708, 10832, 0xda087fee +1, 32497, 32497, 2708, 10832, 0xe9f6dc1f +1, 35205, 35205, 2708, 10832, 0xda087fee 0, 12, 12, 1, 161280, 0xbee8f843 -1, 37912, 37912, 2708, 10832, 0x67a621bb +1, 37913, 37913, 2708, 10832, 0x67a621bb 0, 13, 13, 1, 161280, 0x092acf46 -1, 40620, 40620, 2708, 10832, 0xd7be207f +1, 40621, 40621, 2708, 10832, 0xd7be207f 0, 14, 14, 1, 161280, 0x8d9e2680 -1, 43328, 43328, 2708, 10832, 0x19d32507 +1, 43329, 43329, 2708, 10832, 0x19d32507 0, 15, 15, 1, 161280, 0x8becc20c -1, 46036, 46036, 2708, 10832, 0xe1a3fbfa +1, 46037, 46037, 2708, 10832, 0xe1a3fbfa 0, 16, 16, 1, 161280, 0x655e444e -1, 48744, 48744, 2708, 10832, 0xd10df779 +1, 48745, 48745, 2708, 10832, 0xd10df779 0, 17, 17, 1, 161280, 0x5c112da0 -1, 51452, 51452, 2708, 10832, 0x4428e1a7 +1, 51453, 51453, 2708, 10832, 0x4428e1a7 0, 18, 18, 1, 161280, 0x232fa9eb -1, 54160, 54160, 2708, 10832, 0x7ea9b33d +1, 54161, 54161, 2708, 10832, 0x7ea9b33d 0, 19, 19, 1, 161280, 0x9721745d -1, 56868, 56868, 2708, 10832, 0x6852a5a5 +1, 56869, 56869, 2708, 10832, 0x6852a5a5 0, 20, 20, 1, 161280, 0x92f1d880 -1, 59576, 59576, 2708, 10832, 0xfeb78863 +1, 59578, 59578, 2708, 10832, 0xfeb78863 0, 21, 21, 1, 161280, 0x16233978 -1, 62284, 62284, 2708, 10832, 0xf157f928 +1, 62286, 62286, 2708, 10832, 0xf157f928 0, 22, 22, 1, 161280, 0x19a27e69 -1, 64992, 64992, 2708, 10832, 0x86414b3e +1, 64994, 64994, 2708, 10832, 0x86414b3e 0, 23, 23, 1, 161280, 0x7b6ad73a -1, 67700, 67700, 2708, 10832, 0x2e28cdf6 -1, 70408, 70408, 2708, 10832, 0x00212e44 +1, 67702, 67702, 2708, 10832, 0x2e28cdf6 +1, 70410, 70410, 2708, 10832, 0x00212e44 0, 24, 24, 1, 161280, 0xa7a674aa -1, 73116, 73116, 2708, 10832, 0x2d7f9378 +1, 73118, 73118, 2708, 10832, 0x2d7f9378 0, 25, 25, 1, 161280, 0x4e434abb -1, 75824, 75824, 2708, 10832, 0x84cb25d7 +1, 75826, 75826, 2708, 10832, 0x84cb25d7 0, 26, 26, 1, 161280, 0xb96eea14 -1, 78532, 78532, 2708, 10832, 0x3aca41fa +1, 78534, 78534, 2708, 10832, 0x3aca41fa 0, 27, 27, 1, 161280, 0x1350188c -1, 81240, 81240, 2708, 10832, 0x27ad34b9 +1, 81242, 81242, 2708, 10832, 0x27ad34b9 0, 28, 28, 1, 161280, 0x79c6f305 -1, 83948, 83948, 2708, 10832, 0xe665144a +1, 83950, 83950, 2708, 10832, 0xe665144a 0, 29, 29, 1, 161280, 0xa9c7782d -1, 86656, 86656, 2708, 10832, 0xf9546626 +1, 86658, 86658, 2708, 10832, 0xf9546626 0, 30, 30, 1, 161280, 0x40a4f456 -1, 89364, 89364, 2708, 10832, 0xe71c4f22 +1, 89366, 89366, 2708, 10832, 0xe71c4f22 0, 31, 31, 1, 161280, 0xaf291ed6 -1, 92072, 92072, 2708, 10832, 0x5e61869c +1, 92074, 92074, 2708, 10832, 0x5e61869c 0, 32, 32, 1, 161280, 0xab29b4e1 -1, 94780, 94780, 2708, 10832, 0x571d2c10 +1, 94782, 94782, 2708, 10832, 0x571d2c10 0, 33, 33, 1, 161280, 0xbfcd2712 -1, 97488, 97488, 2708, 10832, 0xf0e08cd5 +1, 97490, 97490, 2708, 10832, 0xf0e08cd5 0, 34, 34, 1, 161280, 0xff22a0d7 -1, 100196, 100196, 2708, 10832, 0x66650e49 +1, 100199, 100199, 2708, 10832, 0x66650e49 0, 35, 35, 1, 161280, 0xb0ae88a9 -1, 102904, 102904, 2708, 10832, 0x4024deaf -1, 105612, 105612, 2708, 10832, 0xda7bdb14 +1, 102907, 102907, 2708, 10832, 0x4024deaf +1, 105615, 105615, 2708, 10832, 0xda7bdb14 0, 36, 36, 1, 161280, 0x811d1259 -1, 108320, 108320, 2708, 10832, 0xc27a342f +1, 108323, 108323, 2708, 10832, 0xc27a342f 0, 37, 37, 1, 161280, 0x593c39a1 -1, 111028, 111028, 2708, 10832, 0x574fe679 +1, 111031, 111031, 2708, 10832, 0x574fe679 0, 38, 38, 1, 161280, 0x5a5a97f8 -1, 113736, 113736, 2708, 10832, 0x37db464e +1, 113739, 113739, 2708, 10832, 0x37db464e 0, 39, 39, 1, 161280, 0xa5639ecf -1, 116444, 116444, 2708, 10832, 0xb1fa2a83 +1, 116447, 116447, 2708, 10832, 0xb1fa2a83 0, 40, 40, 1, 161280, 0x543920c6 -1, 119152, 119152, 2708, 10832, 0x3d98d9b7 +1, 119155, 119155, 2708, 10832, 0x3d98d9b7 0, 41, 41, 1, 161280, 0xb41689ee -1, 121860, 121860, 2708, 10832, 0xb7c908e2 +1, 121863, 121863, 2708, 10832, 0xb7c908e2 0, 42, 42, 1, 161280, 0xc0ad83de -1, 124568, 124568, 2708, 10832, 0x9f7e44d8 +1, 124571, 124571, 2708, 10832, 0x9f7e44d8 0, 43, 43, 1, 161280, 0x9e9e7456 -1, 127276, 127276, 2708, 10832, 0xae9b8774 +1, 127279, 127279, 2708, 10832, 0xae9b8774 0, 44, 44, 1, 161280, 0x777ccbfe -1, 129984, 129984, 2708, 10832, 0x36916e3f +1, 129987, 129987, 2708, 10832, 0x36916e3f 0, 45, 45, 1, 161280, 0x9c2df916 -1, 132692, 132692, 2708, 10832, 0xd785f5ef +1, 132695, 132695, 2708, 10832, 0xd785f5ef 0, 46, 46, 1, 161280, 0xe0c13b35 -1, 135400, 135400, 2708, 10832, 0x2a3a5673 -1, 138108, 138108, 2708, 10832, 0x7320e379 +1, 135403, 135403, 2708, 10832, 0x2a3a5673 +1, 138112, 138112, 2708, 10832, 0x7320e379 0, 47, 47, 1, 161280, 0x39bfa5a5 -1, 140816, 140816, 2708, 10832, 0xec787be5 +1, 140820, 140820, 2708, 10832, 0xec787be5 0, 48, 48, 1, 161280, 0x35dfb264 -1, 143524, 143524, 2708, 10832, 0xd0d13aa0 +1, 143528, 143528, 2708, 10832, 0xd0d13aa0 0, 49, 49, 1, 161280, 0x43018613 -1, 146232, 146232, 2708, 10832, 0x34dfcb17 +1, 146236, 146236, 2708, 10832, 0x34dfcb17 0, 50, 50, 1, 161280, 0x43584b8a -1, 148940, 148940, 2708, 10832, 0x1a9c29f1 +1, 148944, 148944, 2708, 10832, 0x1a9c29f1 0, 51, 51, 1, 161280, 0xa5cd230a -1, 151648, 151648, 2708, 10832, 0x3e73dcc1 +1, 151652, 151652, 2708, 10832, 0x3e73dcc1 0, 52, 52, 1, 161280, 0x6fe2cfb3 -1, 154356, 154356, 2708, 10832, 0x7855b053 +1, 154360, 154360, 2708, 10832, 0x7855b053 0, 53, 53, 1, 161280, 0x88a7c0db -1, 157064, 157064, 2708, 10832, 0x5588df8f +1, 157068, 157068, 2708, 10832, 0x5588df8f 0, 54, 54, 1, 161280, 0x476f1cd2 -1, 159772, 159772, 2708, 10832, 0x6f621299 +1, 159776, 159776, 2708, 10832, 0x6f621299 0, 55, 55, 1, 161280, 0x96401d49 -1, 162480, 162480, 2708, 10832, 0xce7f39c2 +1, 162484, 162484, 2708, 10832, 0xce7f39c2 0, 56, 56, 1, 161280, 0x7d932919 -1, 165188, 165188, 2708, 10832, 0xd88e6552 +1, 165192, 165192, 2708, 10832, 0xd88e6552 0, 57, 57, 1, 161280, 0x06465481 -1, 167896, 167896, 2708, 10832, 0xddc63597 +1, 167900, 167900, 2708, 10832, 0xddc63597 0, 58, 58, 1, 161280, 0x39631520 -1, 170604, 170604, 2708, 10832, 0xe3071865 -1, 173312, 173312, 2708, 10832, 0x2a44a123 +1, 170608, 170608, 2708, 10832, 0xe3071865 +1, 173316, 173316, 2708, 10832, 0x2a44a123 0, 59, 59, 1, 161280, 0xc3fff780 -1, 176020, 176020, 2708, 10832, 0x08d85d45 +1, 176024, 176024, 2708, 10832, 0x08d85d45 0, 60, 60, 1, 161280, 0xa81faf28 -1, 178728, 178728, 2708, 10832, 0x4dc5f83a +1, 178733, 178733, 2708, 10832, 0x4dc5f83a 0, 61, 61, 1, 161280, 0x7a311f4f -1, 181436, 181436, 2708, 10832, 0x89497812 +1, 181441, 181441, 2708, 10832, 0x89497812 0, 62, 62, 1, 161280, 0x52f9b931 -1, 184144, 184144, 2708, 10832, 0x9ee1db54 +1, 184149, 184149, 2708, 10832, 0x9ee1db54 0, 63, 63, 1, 161280, 0x938cf016 -1, 186852, 186852, 2708, 10832, 0x5277d611 +1, 186857, 186857, 2708, 10832, 0x5277d611 0, 64, 64, 1, 161280, 0xf8f6e19c -1, 189560, 189560, 2708, 10832, 0x570a619c +1, 189565, 189565, 2708, 10832, 0x570a619c 0, 65, 65, 1, 161280, 0xca90561b -1, 192268, 192268, 2708, 10832, 0xa217d70f +1, 192273, 192273, 2708, 10832, 0xa217d70f 0, 66, 66, 1, 161280, 0x8594d06b -1, 194976, 194976, 2708, 10832, 0x6f0ecbf4 +1, 194981, 194981, 2708, 10832, 0x6f0ecbf4 0, 67, 67, 1, 161280, 0xea32bf3b -1, 197684, 197684, 2708, 10832, 0x2704b114 +1, 197689, 197689, 2708, 10832, 0x2704b114 0, 68, 68, 1, 161280, 0x4646111a -1, 200392, 200392, 2708, 10832, 0xf24e679f +1, 200397, 200397, 2708, 10832, 0xf24e679f 0, 69, 69, 1, 161280, 0xee891162 -1, 203100, 203100, 2708, 10832, 0x05572099 +1, 203105, 203105, 2708, 10832, 0x05572099 0, 70, 70, 1, 161280, 0xcfc32082 -1, 205808, 205808, 2708, 10832, 0x33942d0c -1, 208516, 208516, 2708, 10832, 0xa77ea674 +1, 205813, 205813, 2708, 10832, 0x33942d0c +1, 208521, 208521, 2708, 10832, 0xa77ea674 0, 71, 71, 1, 161280, 0x863c281a -1, 211224, 211224, 2708, 10832, 0xeba663bc +1, 211229, 211229, 2708, 10832, 0xeba663bc 0, 72, 72, 1, 161280, 0x01b591aa -1, 213932, 213932, 2708, 10832, 0x1338524a +1, 213937, 213937, 2708, 10832, 0x1338524a 0, 73, 73, 1, 161280, 0x211fbc62 -1, 216640, 216640, 2708, 10832, 0x6182b0b3 +1, 216645, 216645, 2708, 10832, 0x6182b0b3 0, 74, 74, 1, 161280, 0xae2bafe2 -1, 219348, 219348, 2708, 10832, 0xa410a364 +1, 219354, 219354, 2708, 10832, 0xa410a364 0, 75, 75, 1, 161280, 0xcfe46dca -1, 222056, 222056, 2708, 10832, 0x2f4374b0 +1, 222062, 222062, 2708, 10832, 0x2f4374b0 0, 76, 76, 1, 161280, 0xcf8fe8a3 -1, 224764, 224764, 2708, 10832, 0xf41f3a07 +1, 224770, 224770, 2708, 10832, 0xf41f3a07 0, 77, 77, 1, 161280, 0x3f8474eb -1, 227472, 227472, 2708, 10832, 0x2b1c50c6 +1, 227478, 227478, 2708, 10832, 0x2b1c50c6 0, 78, 78, 1, 161280, 0x06da345a -1, 230180, 230180, 2708, 10832, 0x3692ac89 +1, 230186, 230186, 2708, 10832, 0x3692ac89 0, 79, 79, 1, 161280, 0xbd4d3280 -1, 232888, 232888, 2708, 10832, 0x5d6bc87e +1, 232894, 232894, 2708, 10832, 0x5d6bc87e 0, 80, 80, 1, 161280, 0xb5e70fea -1, 235596, 235596, 2708, 10832, 0x1b1cda0c +1, 235602, 235602, 2708, 10832, 0x1b1cda0c 0, 81, 81, 1, 161280, 0x0c99c804 -1, 238304, 238304, 2708, 10832, 0x11eaa15f -1, 241012, 241012, 2708, 10832, 0x73c7d7ef +1, 238310, 238310, 2708, 10832, 0x11eaa15f +1, 241018, 241018, 2708, 10832, 0x73c7d7ef 0, 82, 82, 1, 161280, 0x19841ed4 -1, 243720, 243720, 2708, 10832, 0x65d7e3be +1, 243726, 243726, 2708, 10832, 0x65d7e3be 0, 83, 83, 1, 161280, 0xf81dea50 -1, 246428, 246428, 2708, 10832, 0xb9c00688 +1, 246434, 246434, 2708, 10832, 0xb9c00688 0, 84, 84, 1, 161280, 0x7777d81c -1, 249136, 249136, 2708, 10832, 0x0b98c125 +1, 249142, 249142, 2708, 10832, 0x0b98c125 0, 85, 85, 1, 161280, 0x0497cfd8 -1, 251844, 251844, 2708, 10832, 0x331ed413 +1, 251850, 251850, 2708, 10832, 0x331ed413 0, 86, 86, 1, 161280, 0x50b6eb64 -1, 254552, 254552, 2708, 10832, 0x9b68f485 +1, 254558, 254558, 2708, 10832, 0x9b68f485 0, 87, 87, 1, 161280, 0x5071fc07 -1, 257260, 257260, 2708, 10832, 0x1b865c55 +1, 257267, 257267, 2708, 10832, 0x1b865c55 0, 88, 88, 1, 161280, 0xbb7527fb -1, 259968, 259968, 2708, 10832, 0x68cef565 +1, 259975, 259975, 2708, 10832, 0x68cef565 0, 89, 89, 1, 161280, 0x13054f1f -1, 262676, 262676, 2708, 10832, 0x3a605f15 +1, 262683, 262683, 2708, 10832, 0x3a605f15 0, 90, 90, 1, 161280, 0x4b78fb27 -1, 265384, 265384, 2708, 10832, 0xd72ff22e +1, 265391, 265391, 2708, 10832, 0xd72ff22e 0, 91, 91, 1, 161280, 0xf504968f -1, 268092, 268092, 2708, 10832, 0x1c672b67 +1, 268099, 268099, 2708, 10832, 0x1c672b67 0, 92, 92, 1, 161280, 0x555b10b7 -1, 270800, 270800, 2708, 10832, 0xfd1a7e7e +1, 270807, 270807, 2708, 10832, 0xfd1a7e7e 0, 93, 93, 1, 161280, 0xcc0dde40 -1, 273508, 273508, 2708, 10832, 0x9bf20ead -1, 276216, 276216, 2708, 10832, 0x00000000 +1, 273515, 273515, 2708, 10832, 0x9bf20ead +1, 276223, 276223, 2708, 10832, 0x00000000 0, 94, 94, 1, 161280, 0xcc0dde40 -1, 278924, 278924, 2708, 10832, 0x00000000 +1, 278931, 278931, 2708, 10832, 0x00000000 0, 95, 95, 1, 161280, 0x367f60c8 -1, 281632, 281632, 2708, 10832, 0x00000000 +1, 281639, 281639, 2708, 10832, 0x00000000 0, 96, 96, 1, 161280, 0x367f60c8 -1, 284340, 284340, 2708, 10832, 0x00000000 +1, 284347, 284347, 2708, 10832, 0x00000000 0, 97, 97, 1, 161280, 0x367f60c8 -1, 287048, 287048, 2708, 10832, 0x00000000 +1, 287055, 287055, 2708, 10832, 0x00000000 0, 98, 98, 1, 161280, 0x367f60c8 -1, 289756, 289756, 2708, 10832, 0x00000000 +1, 289763, 289763, 2708, 10832, 0x00000000 0, 99, 99, 1, 161280, 0x367f60c8 -1, 292464, 292464, 2708, 10832, 0x00000000 +1, 292471, 292471, 2708, 10832, 0x00000000 0, 100, 100, 1, 161280, 0x367f60c8 -1, 295172, 295172, 2708, 10832, 0x00000000 +1, 295179, 295179, 2708, 10832, 0x00000000 0, 101, 101, 1, 161280, 0x367f60c8 -1, 297880, 297880, 2708, 10832, 0x00000000 +1, 297888, 297888, 2708, 10832, 0x00000000 0, 102, 102, 1, 161280, 0x367f60c8 -1, 300588, 300588, 2708, 10832, 0x00000000 +1, 300596, 300596, 2708, 10832, 0x00000000 0, 103, 103, 1, 161280, 0x367f60c8 -1, 303296, 303296, 2708, 10832, 0x00000000 +1, 303304, 303304, 2708, 10832, 0x00000000 0, 104, 104, 1, 161280, 0x367f60c8 diff --git a/tests/ref/fate/truemotion1-24 b/tests/ref/fate/truemotion1-24 index a67a482923..8d9b150b8e 100644 --- a/tests/ref/fate/truemotion1-24 +++ b/tests/ref/fate/truemotion1-24 @@ -16,30 +16,30 @@ 0, 6, 6, 1, 69120, 0x433bb6f6 1, 18956, 18956, 2708, 10832, 0x88f5271a 0, 7, 7, 1, 69120, 0xdbac8bee -1, 21664, 21664, 2708, 10832, 0x55c6bbe5 +1, 21665, 21665, 2708, 10832, 0x55c6bbe5 0, 8, 8, 1, 69120, 0x88e2a799 -1, 24372, 24372, 2708, 10832, 0x9b51ae82 +1, 24373, 24373, 2708, 10832, 0x9b51ae82 0, 9, 9, 1, 69120, 0x49617b26 -1, 27080, 27080, 2708, 10832, 0xcdf2409b +1, 27081, 27081, 2708, 10832, 0xcdf2409b 0, 10, 10, 1, 69120, 0xeb44ca01 -1, 29788, 29788, 2708, 10832, 0x0933b1a4 +1, 29789, 29789, 2708, 10832, 0x0933b1a4 0, 11, 11, 1, 69120, 0x6fea37e8 -1, 32496, 32496, 2708, 10832, 0x24b77006 -1, 35204, 35204, 2708, 10832, 0xf612fa8a +1, 32497, 32497, 2708, 10832, 0x24b77006 +1, 35205, 35205, 2708, 10832, 0xf612fa8a 0, 12, 12, 1, 69120, 0xf55d74c7 -1, 37912, 37912, 2708, 10832, 0x99884b06 +1, 37913, 37913, 2708, 10832, 0x99884b06 0, 13, 13, 1, 69120, 0xb5082ca7 -1, 40620, 40620, 2708, 10832, 0x3c746fbe +1, 40621, 40621, 2708, 10832, 0x3c746fbe 0, 14, 14, 1, 69120, 0x5876d758 -1, 43328, 43328, 2708, 10832, 0x05f3b08a -1, 46036, 46036, 2708, 10832, 0xa6560483 -1, 48744, 48744, 2708, 10832, 0xd98a8e19 -1, 51452, 51452, 2708, 10832, 0xf98a0b2e -1, 54160, 54160, 2708, 10832, 0xb1039582 -1, 56868, 56868, 2708, 10832, 0x85dd5c3f -1, 59576, 59576, 2708, 10832, 0x19fc801a -1, 62284, 62284, 2708, 10832, 0x95805089 -1, 64992, 64992, 2708, 10832, 0x576fdec3 -1, 67700, 67700, 2708, 10832, 0x704a0905 -1, 70408, 70408, 2708, 10832, 0xf87ce1fa -1, 73116, 73116, 2708, 10832, 0xfc0076b9 +1, 43329, 43329, 2708, 10832, 0x05f3b08a +1, 46037, 46037, 2708, 10832, 0xa6560483 +1, 48745, 48745, 2708, 10832, 0xd98a8e19 +1, 51453, 51453, 2708, 10832, 0xf98a0b2e +1, 54161, 54161, 2708, 10832, 0xb1039582 +1, 56869, 56869, 2708, 10832, 0x85dd5c3f +1, 59578, 59578, 2708, 10832, 0x19fc801a +1, 62286, 62286, 2708, 10832, 0x95805089 +1, 64994, 64994, 2708, 10832, 0x576fdec3 +1, 67702, 67702, 2708, 10832, 0x704a0905 +1, 70410, 70410, 2708, 10832, 0xf87ce1fa +1, 73118, 73118, 2708, 10832, 0xfc0076b9 -- cgit v1.2.3 From f63412fc741e9936b71141e7f15ab8aa39ad72f9 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Thu, 23 Feb 2012 21:40:14 -0500 Subject: oggdec: output correct timestamps for Vorbis Takes encoder delay into account by comparing first the coded page duration with the calculated page duration. Handles last packet duration if needed, also by comparing coded duration with calculated duration. Also does better handling of timestamp generation for packets in the first page for streamed ogg files where the start time is not necessarily zero. --- libavcodec/Makefile | 2 +- libavformat/oggparsevorbis.c | 83 ++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 82 insertions(+), 3 deletions(-) diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 0c459f690f..78d9d5848c 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -569,7 +569,7 @@ OBJS-$(CONFIG_MPEGTS_MUXER) += mpegvideo.o mpeg4audio.o OBJS-$(CONFIG_MPEGTS_DEMUXER) += mpeg4audio.o mpegaudiodata.o OBJS-$(CONFIG_NUT_MUXER) += mpegaudiodata.o OBJS-$(CONFIG_OGG_DEMUXER) += flacdec.o flacdata.o flac.o \ - dirac.o mpeg12data.o + dirac.o mpeg12data.o vorbis_parser.o OBJS-$(CONFIG_OGG_MUXER) += xiph.o flacdec.o flacdata.o flac.o OBJS-$(CONFIG_RTP_MUXER) += mpeg4audio.o mpegvideo.o xiph.o OBJS-$(CONFIG_SPDIF_DEMUXER) += aacadtsdec.o mpeg4audio.o diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c index b9d9f575e0..f72fd26c4c 100644 --- a/libavformat/oggparsevorbis.c +++ b/libavformat/oggparsevorbis.c @@ -28,6 +28,7 @@ #include "libavutil/dict.h" #include "libavcodec/get_bits.h" #include "libavcodec/bytestream.h" +#include "libavcodec/vorbis_parser.h" #include "avformat.h" #include "internal.h" #include "oggdec.h" @@ -162,6 +163,9 @@ ff_vorbis_comment(AVFormatContext * as, AVDictionary **m, const uint8_t *buf, in struct oggvorbis_private { unsigned int len[3]; unsigned char *packet[3]; + VorbisParseContext vp; + int64_t final_pts; + int final_duration; }; @@ -251,7 +255,6 @@ vorbis_header (AVFormatContext * s, int idx) st->codec->codec_type = AVMEDIA_TYPE_AUDIO; st->codec->codec_id = CODEC_ID_VORBIS; - st->need_parsing = AVSTREAM_PARSE_HEADERS; if (srate > 0) { st->codec->sample_rate = srate; @@ -269,15 +272,91 @@ vorbis_header (AVFormatContext * s, int idx) } } } else { + int ret; st->codec->extradata_size = fixup_vorbis_headers(s, priv, &st->codec->extradata); + if ((ret = avpriv_vorbis_parse_extradata(st->codec, &priv->vp))) { + av_freep(&st->codec->extradata); + st->codec->extradata_size = 0; + return ret; + } } return 1; } +static int vorbis_packet(AVFormatContext *s, int idx) +{ + struct ogg *ogg = s->priv_data; + struct ogg_stream *os = ogg->streams + idx; + struct oggvorbis_private *priv = os->private; + int duration; + + /* first packet handling + here we parse the duration of each packet in the first page and compare + the total duration to the page granule to find the encoder delay and + set the first timestamp */ + if (!os->lastpts) { + int seg; + uint8_t *last_pkt = os->buf + os->pstart; + uint8_t *next_pkt = last_pkt; + int first_duration = 0; + + avpriv_vorbis_parse_reset(&priv->vp); + duration = 0; + for (seg = 0; seg < os->nsegs; seg++) { + if (os->segments[seg] < 255) { + int d = avpriv_vorbis_parse_frame(&priv->vp, last_pkt, 1); + if (d < 0) { + duration = os->granule; + break; + } + if (!duration) + first_duration = d; + duration += d; + last_pkt = next_pkt + os->segments[seg]; + } + next_pkt += os->segments[seg]; + } + os->lastpts = os->lastdts = os->granule - duration; + s->streams[idx]->start_time = os->lastpts + first_duration; + if (s->streams[idx]->duration) + s->streams[idx]->duration -= s->streams[idx]->start_time; + s->streams[idx]->cur_dts = AV_NOPTS_VALUE; + priv->final_pts = AV_NOPTS_VALUE; + avpriv_vorbis_parse_reset(&priv->vp); + } + + /* parse packet duration */ + if (os->psize > 0) { + duration = avpriv_vorbis_parse_frame(&priv->vp, os->buf + os->pstart, 1); + if (duration <= 0) { + os->pflags |= AV_PKT_FLAG_CORRUPT; + return 0; + } + os->pduration = duration; + } + + /* final packet handling + here we save the pts of the first packet in the final page, sum up all + packet durations in the final page except for the last one, and compare + to the page granule to find the duration of the final packet */ + if (os->flags & OGG_FLAG_EOS) { + if (os->lastpts != AV_NOPTS_VALUE) { + priv->final_pts = os->lastpts; + priv->final_duration = 0; + } + if (os->segp == os->nsegs) + os->pduration = os->granule - priv->final_pts - priv->final_duration; + priv->final_duration += os->pduration; + } + + return 0; +} + const struct ogg_codec ff_vorbis_codec = { .magic = "\001vorbis", .magicsize = 7, - .header = vorbis_header + .header = vorbis_header, + .packet = vorbis_packet, }; -- cgit v1.2.3 From 3c90cc2ef21a928a7c11cf5a4583169025cdf847 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Sun, 4 Mar 2012 21:41:59 +0100 Subject: lavf: deprecate av_read_packet(). The caller can achieve the same effect (i.e. getting raw unparsed/mangled packets) with av_read_frame() and AVFMT_FLAG_NOPARSE | AVFMT_FLAG_NOFILLIN --- libavformat/avformat.h | 6 ++++++ libavformat/avidec.c | 6 +++--- libavformat/internal.h | 9 +++++++++ libavformat/rtpdec_asf.c | 2 +- libavformat/utils.c | 16 ++++++++++++---- libavformat/version.h | 3 +++ 6 files changed, 34 insertions(+), 8 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index e0b3b3f8a3..4272a4f91f 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1185,7 +1185,11 @@ int av_find_best_stream(AVFormatContext *ic, AVCodec **decoder_ret, int flags); +#if FF_API_READ_PACKET /** + * @deprecated use AVFMT_FLAG_NOFILLIN | AVFMT_FLAG_NOPARSE to read raw + * unprocessed packets + * * Read a transport packet from a media file. * * This function is obsolete and should never be used. @@ -1195,7 +1199,9 @@ int av_find_best_stream(AVFormatContext *ic, * @param pkt is filled * @return 0 if OK, AVERROR_xxx on error */ +attribute_deprecated int av_read_packet(AVFormatContext *s, AVPacket *pkt); +#endif /** * Return the next frame of a stream. diff --git a/libavformat/avidec.c b/libavformat/avidec.c index 82db45abf3..abfea2c7ee 100644 --- a/libavformat/avidec.c +++ b/libavformat/avidec.c @@ -782,7 +782,7 @@ static int read_gab2_sub(AVStream *st, AVPacket *pkt) { ast->sub_ctx->pb = pb; if (!avformat_open_input(&ast->sub_ctx, "", sub_demuxer, NULL)) { - av_read_packet(ast->sub_ctx, &ast->sub_pkt); + ff_read_packet(ast->sub_ctx, &ast->sub_pkt); *st->codec = *ast->sub_ctx->streams[0]->codec; ast->sub_ctx->streams[0]->codec->extradata = NULL; time_base = ast->sub_ctx->streams[0]->time_base; @@ -824,7 +824,7 @@ static AVStream *get_subtitle_pkt(AVFormatContext *s, AVStream *next_st, ast = sub_st->priv_data; *pkt = ast->sub_pkt; pkt->stream_index = sub_st->index; - if (av_read_packet(ast->sub_ctx, &ast->sub_pkt) < 0) + if (ff_read_packet(ast->sub_ctx, &ast->sub_pkt) < 0) ast->sub_pkt.data = NULL; } return sub_st; @@ -1268,7 +1268,7 @@ static void seek_subtitle(AVStream *st, AVStream *st2, int64_t timestamp) av_free_packet(&ast2->sub_pkt); if (avformat_seek_file(ast2->sub_ctx, 0, INT64_MIN, ts2, ts2, 0) >= 0 || avformat_seek_file(ast2->sub_ctx, 0, ts2, ts2, INT64_MAX, 0) >= 0) - av_read_packet(ast2->sub_ctx, &ast2->sub_pkt); + ff_read_packet(ast2->sub_ctx, &ast2->sub_pkt); } static int avi_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) diff --git a/libavformat/internal.h b/libavformat/internal.h index c30deb7732..ad300325cb 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -318,4 +318,13 @@ int ff_add_param_change(AVPacket *pkt, int32_t channels, */ int ff_framehash_write_header(AVFormatContext *s); +/** + * Read a transport packet from a media file. + * + * @param s media file handle + * @param pkt is filled + * @return 0 if OK, AVERROR_xxx on error + */ +int ff_read_packet(AVFormatContext *s, AVPacket *pkt); + #endif /* AVFORMAT_INTERNAL_H */ diff --git a/libavformat/rtpdec_asf.c b/libavformat/rtpdec_asf.c index 483b196d62..2dd367556d 100644 --- a/libavformat/rtpdec_asf.c +++ b/libavformat/rtpdec_asf.c @@ -256,7 +256,7 @@ static int asfrtp_parse_packet(AVFormatContext *s, PayloadContext *asf, for (;;) { int i; - res = av_read_packet(rt->asf_ctx, pkt); + res = ff_read_packet(rt->asf_ctx, pkt); rt->asf_pb_pos = avio_tell(pb); if (res != 0) break; diff --git a/libavformat/utils.c b/libavformat/utils.c index d17b5752f1..4b302a9531 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -612,7 +612,7 @@ fail: /*******************************************************/ -int av_read_packet(AVFormatContext *s, AVPacket *pkt) +int ff_read_packet(AVFormatContext *s, AVPacket *pkt) { int ret, i; AVStream *st; @@ -698,6 +698,14 @@ int av_read_packet(AVFormatContext *s, AVPacket *pkt) } } +#if FF_API_READ_PACKET +int av_read_packet(AVFormatContext *s, AVPacket *pkt) +{ + return ff_read_packet(s, pkt); +} +#endif + + /**********************************************************/ /** @@ -1156,7 +1164,7 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) AVPacket cur_pkt; /* read next packet */ - ret = av_read_packet(s, &cur_pkt); + ret = ff_read_packet(s, &cur_pkt); if (ret < 0) { if (ret == AVERROR(EAGAIN)) return ret; @@ -1183,7 +1191,7 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt) cur_pkt.size); } if (s->debug & FF_FDEBUG_TS) - av_log(s, AV_LOG_DEBUG, "av_read_packet stream=%d, pts=%"PRId64", dts=%"PRId64", size=%d, duration=%d, flags=%d\n", + av_log(s, AV_LOG_DEBUG, "ff_read_packet stream=%d, pts=%"PRId64", dts=%"PRId64", size=%d, duration=%d, flags=%d\n", cur_pkt.stream_index, cur_pkt.pts, cur_pkt.dts, @@ -1956,7 +1964,7 @@ static void estimate_timings_from_pts(AVFormatContext *ic, int64_t old_offset) break; do { - ret = av_read_packet(ic, pkt); + ret = ff_read_packet(ic, pkt); } while(ret == AVERROR(EAGAIN)); if (ret != 0) break; diff --git a/libavformat/version.h b/libavformat/version.h index bcc8c4dca5..ac1c5473bd 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -53,5 +53,8 @@ #ifndef FF_API_APPLEHTTP_PROTO #define FF_API_APPLEHTTP_PROTO (LIBAVFORMAT_VERSION_MAJOR < 55) #endif +#ifndef FF_API_READ_PACKET +#define FF_API_READ_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) +#endif #endif /* AVFORMAT_VERSION_H */ -- cgit v1.2.3 From a6733202cc6891f9feec48e33e342e657da3873d Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 15 Mar 2012 13:37:43 +0100 Subject: lavf: make av_interleave_packet_per_dts() private. There is no reason for it to be public, it's only meant to be used internally. --- libavformat/avformat.h | 18 +++++------------- libavformat/gxfenc.c | 2 +- libavformat/internal.h | 18 ++++++++++++++++++ libavformat/utils.c | 14 ++++++++++++-- libavformat/version.h | 3 +++ 5 files changed, 39 insertions(+), 16 deletions(-) diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 4272a4f91f..073ca67afc 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -1374,23 +1374,15 @@ int av_write_frame(AVFormatContext *s, AVPacket *pkt); */ int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); +#if FF_API_INTERLEAVE_PACKET /** - * Interleave a packet per dts in an output media file. - * - * Packets with pkt->destruct == av_destruct_packet will be freed inside this - * function, so they cannot be used after it. Note that calling av_free_packet() - * on them is still safe. - * - * @param s media file handle - * @param out the interleaved packet will be output here - * @param pkt the input packet - * @param flush 1 if no further packets are available as input and all - * remaining packets should be output - * @return 1 if a packet was output, 0 if no packet could be output, - * < 0 if an error occurred + * @deprecated this function was never meant to be called by the user + * programs. */ +attribute_deprecated int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush); +#endif /** * Write the stream trailer to an output media file and free the diff --git a/libavformat/gxfenc.c b/libavformat/gxfenc.c index dcd2a8c84d..5069f2f3f8 100644 --- a/libavformat/gxfenc.c +++ b/libavformat/gxfenc.c @@ -936,7 +936,7 @@ static int gxf_interleave_packet(AVFormatContext *s, AVPacket *out, AVPacket *pk if (pkt && s->streams[pkt->stream_index]->codec->codec_type == AVMEDIA_TYPE_VIDEO) pkt->duration = 2; // enforce 2 fields return ff_audio_rechunk_interleave(s, out, pkt, flush, - av_interleave_packet_per_dts, gxf_compare_field_nb); + ff_interleave_packet_per_dts, gxf_compare_field_nb); } AVOutputFormat ff_gxf_muxer = { diff --git a/libavformat/internal.h b/libavformat/internal.h index ad300325cb..a434f99633 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -327,4 +327,22 @@ int ff_framehash_write_header(AVFormatContext *s); */ int ff_read_packet(AVFormatContext *s, AVPacket *pkt); +/** + * Interleave a packet per dts in an output media file. + * + * Packets with pkt->destruct == av_destruct_packet will be freed inside this + * function, so they cannot be used after it. Note that calling av_free_packet() + * on them is still safe. + * + * @param s media file handle + * @param out the interleaved packet will be output here + * @param pkt the input packet + * @param flush 1 if no further packets are available as input and all + * remaining packets should be output + * @return 1 if a packet was output, 0 if no packet could be output, + * < 0 if an error occurred + */ +int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, + AVPacket *pkt, int flush); + #endif /* AVFORMAT_INTERNAL_H */ diff --git a/libavformat/utils.c b/libavformat/utils.c index 4b302a9531..6c985af1a0 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -3068,7 +3068,9 @@ static int ff_interleave_compare_dts(AVFormatContext *s, AVPacket *next, AVPacke return comp > 0; } -int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush){ +int ff_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, + AVPacket *pkt, int flush) +{ AVPacketList *pktl; int stream_count=0; int i; @@ -3098,6 +3100,14 @@ int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, AVPacket *pk } } +#if FF_API_INTERLEAVE_PACKET +int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out, + AVPacket *pkt, int flush) +{ + return ff_interleave_packet_per_dts(s, out, pkt, flush); +} +#endif + /** * Interleave an AVPacket correctly so it can be muxed. * @param out the interleaved packet will be output here @@ -3114,7 +3124,7 @@ static int interleave_packet(AVFormatContext *s, AVPacket *out, AVPacket *in, in av_free_packet(in); return ret; } else - return av_interleave_packet_per_dts(s, out, in, flush); + return ff_interleave_packet_per_dts(s, out, in, flush); } int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt){ diff --git a/libavformat/version.h b/libavformat/version.h index ac1c5473bd..91ddfd27e8 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -56,5 +56,8 @@ #ifndef FF_API_READ_PACKET #define FF_API_READ_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) #endif +#ifndef FF_API_INTERLEAVE_PACKET +#define FF_API_INTERLEAVE_PACKET (LIBAVFORMAT_VERSION_MAJOR < 55) +#endif #endif /* AVFORMAT_VERSION_H */ -- cgit v1.2.3 From e056f8d37dfc1252a288b0272256a7562a870003 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 20 Mar 2012 15:10:39 -0400 Subject: FATE: use +/- flag option syntax for vp8 emu-edge tests --- tests/fate/vpx.mak | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/fate/vpx.mak b/tests/fate/vpx.mak index f6823651f5..1560fe9d68 100644 --- a/tests/fate/vpx.mak +++ b/tests/fate/vpx.mak @@ -41,6 +41,6 @@ fate-vp8-sign-bias$(1): REF = $(SRC_PATH)/tests/ref/fate/vp8-sign-bias endef $(eval $(call FATE_VP8_FULL)) -$(eval $(call FATE_VP8_FULL,-emu-edge,-flags emu_edge)) +$(eval $(call FATE_VP8_FULL,-emu-edge,-flags +emu_edge)) FATE_TESTS += $(FATE_VP8) fate-vp8: $(FATE_VP8) -- cgit v1.2.3 From c9594fe0fb6dd123fa25cb27fe5bc976ff3a9051 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Tue, 20 Mar 2012 15:36:28 -0400 Subject: avconv: free packet in write_frame() when discarding due to frame number limit Fixes a memleak when using the -frames option with audio. --- avconv.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/avconv.c b/avconv.c index affb87742e..9a3c75d59e 100644 --- a/avconv.c +++ b/avconv.c @@ -887,8 +887,10 @@ static void write_frame(AVFormatContext *s, AVPacket *pkt, OutputStream *ost) * reordering, see do_video_out() */ if (!(avctx->codec_type == AVMEDIA_TYPE_VIDEO && avctx->codec)) { - if (ost->frame_number >= ost->max_frames) + if (ost->frame_number >= ost->max_frames) { + av_free_packet(pkt); return; + } ost->frame_number++; } -- cgit v1.2.3