From d749615333084e62c9fcc480d1ae466369fdf14f Mon Sep 17 00:00:00 2001 From: Vittorio Giovara Date: Sun, 13 Sep 2015 23:45:24 +0200 Subject: [PATCH] lavc: Move timecode_frame_start to codec private options This option is only used by mpeg2. It is a very codec-specific option, so deprecate the global variant. Signed-off-by: Vittorio Giovara --- libavcodec/avcodec.h | 9 ++++----- libavcodec/mpeg12enc.c | 13 +++++++++++-- libavcodec/mpegvideo.h | 1 + libavcodec/options_table.h | 2 ++ 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 695f5349d7..ca7cfa688f 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -2398,12 +2398,11 @@ typedef struct AVCodecContext { */ int max_prediction_order; - /** - * GOP timecode frame start number, in non drop frame format - * - encoding: Set by user. - * - decoding: unused - */ +#if FF_API_PRIVATE_OPT + /** @deprecated use encoder private options instead */ + attribute_deprecated int64_t timecode_frame_start; +#endif #if FF_API_RTP_CALLBACK /** diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 61716785a1..67bc467f5b 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -182,6 +182,13 @@ static av_cold int encode_init(AVCodecContext *avctx) return -1; } +#if FF_API_PRIVATE_OPT +FF_DISABLE_DEPRECATION_WARNINGS + if (avctx->timecode_frame_start) + s->timecode_frame_start = avctx->timecode_frame_start; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + return 0; } @@ -307,7 +314,7 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s) * fake MPEG frame rate in case of low frame rate */ fps = (framerate.num + framerate.den / 2) / framerate.den; time_code = s->current_picture_ptr->f->coded_picture_number + - s->avctx->timecode_frame_start; + s->timecode_frame_start; s->gop_picture_number = s->current_picture_ptr->f->coded_picture_number; if (s->drop_frame_timecode) { @@ -1050,7 +1057,9 @@ av_cold void ff_mpeg1_encode_init(MpegEncContext *s) { "drop_frame_timecode", "Timecode is in drop frame format.", \ OFFSET(drop_frame_timecode), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE }, \ { "scan_offset", "Reserve space for SVCD scan offset user data.", \ - OFFSET(scan_offset), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE }, + OFFSET(scan_offset), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE }, \ + { "timecode_frame_start", "GOP timecode frame start number, in non-drop-frame format", \ + OFFSET(timecode_frame_start), AV_OPT_TYPE_INT64, {.i64 = 0 }, 0, INT64_MAX, VE}, \ static const AVOption mpeg1_options[] = { COMMON_OPTS diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 208c8af251..c1755eba3b 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -439,6 +439,7 @@ typedef struct MpegEncContext { // picture structure defines are loaded from mpegutils.h int picture_structure; + int64_t timecode_frame_start; ///< GOP timecode frame start number, in non drop frame format int intra_dc_precision; int frame_pred_frame_dct; int top_field_first; diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index afc5c1dfc9..3dbe315452 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -412,7 +412,9 @@ static const AVOption avcodec_options[] = { {"compression_level", NULL, OFFSET(compression_level), AV_OPT_TYPE_INT, {.i64 = FF_COMPRESSION_DEFAULT }, INT_MIN, INT_MAX, V|A|E}, {"min_prediction_order", NULL, OFFSET(min_prediction_order), AV_OPT_TYPE_INT, {.i64 = -1 }, INT_MIN, INT_MAX, A|E}, {"max_prediction_order", NULL, OFFSET(max_prediction_order), AV_OPT_TYPE_INT, {.i64 = -1 }, INT_MIN, INT_MAX, A|E}, +#if FF_API_PRIVATE_OPT {"timecode_frame_start", "GOP timecode frame start number, in non-drop-frame format", OFFSET(timecode_frame_start), AV_OPT_TYPE_INT64, {.i64 = 0 }, 0, INT64_MAX, V|E}, +#endif {"bits_per_raw_sample", NULL, OFFSET(bits_per_raw_sample), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX}, {"channel_layout", NULL, OFFSET(channel_layout), AV_OPT_TYPE_INT64, {.i64 = DEFAULT }, 0, INT64_MAX, A|E|D, "channel_layout"}, {"request_channel_layout", NULL, OFFSET(request_channel_layout), AV_OPT_TYPE_INT64, {.i64 = DEFAULT }, 0, INT64_MAX, A|D, "request_channel_layout"},