From 82f9eb6f6c7165a404426bee8a61aac76508a177 Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sun, 10 May 2020 21:58:35 +0200 Subject: [PATCH] avcodec: move mpeg4 profiles to profiles.h Also bump micro version after the recent option changes. Signed-off-by: Marton Balint --- doc/codecs.texi | 17 ++--------------- libavcodec/mpeg4videoenc.c | 2 ++ libavcodec/options_table.h | 4 ---- libavcodec/profiles.h | 6 ++++++ libavcodec/v4l2_m2m_enc.c | 34 ++++++++++++++++++++++------------ libavcodec/version.h | 2 +- 6 files changed, 33 insertions(+), 32 deletions(-) diff --git a/doc/codecs.texi b/doc/codecs.texi index c08229ba7e..ece8d50edd 100644 --- a/doc/codecs.texi +++ b/doc/codecs.texi @@ -837,21 +837,8 @@ Set number of macroblock rows at the bottom which are skipped. @item profile @var{integer} (@emph{encoding,audio,video}) -Possible values: -@table @samp -@item unknown - -@item mpeg4_sp - -@item mpeg4_core - -@item mpeg4_main - -@item mpeg4_asp - -@end table - -Encoder specific profiles are documented in the relevant encoder documentation. +Set encoder codec profile. Default value is @samp{unknown}. Encoder specific +profiles are documented in the relevant encoder documentation. @item level @var{integer} (@emph{encoding,audio,video}) diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c index 2cd5a8c015..2e0b119d7f 100644 --- a/libavcodec/mpeg4videoenc.c +++ b/libavcodec/mpeg4videoenc.c @@ -27,6 +27,7 @@ #include "mpegvideo.h" #include "h263.h" #include "mpeg4video.h" +#include "profiles.h" /* The uni_DCtab_* tables below contain unified bits+length tables to encode DC * differences in MPEG-4. Unified in the sense that the specification specifies @@ -1376,6 +1377,7 @@ static const AVOption options[] = { { "data_partitioning", "Use data partitioning.", OFFSET(data_partitioning), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, { "alternate_scan", "Enable alternate scantable.", OFFSET(alternate_scan), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, FF_MPV_COMMON_OPTS + FF_MPEG4_PROFILE_OPTS { NULL }, }; diff --git a/libavcodec/options_table.h b/libavcodec/options_table.h index b609080b82..8ba137f51e 100644 --- a/libavcodec/options_table.h +++ b/libavcodec/options_table.h @@ -263,10 +263,6 @@ static const AVOption avcodec_options[] = { {"skip_bottom", "number of macroblock rows at the bottom which are skipped", OFFSET(skip_bottom), AV_OPT_TYPE_INT, {.i64 = DEFAULT }, INT_MIN, INT_MAX, V|D}, {"profile", NULL, OFFSET(profile), AV_OPT_TYPE_INT, {.i64 = FF_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E|CC, "avctx.profile"}, {"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "avctx.profile"}, -{"mpeg4_sp", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_SIMPLE }, INT_MIN, INT_MAX, V|E, "avctx.profile"}, -{"mpeg4_core", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_CORE }, INT_MIN, INT_MAX, V|E, "avctx.profile"}, -{"mpeg4_main", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_MAIN }, INT_MIN, INT_MAX, V|E, "avctx.profile"}, -{"mpeg4_asp", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_MPEG4_ADVANCED_SIMPLE }, INT_MIN, INT_MAX, V|E, "avctx.profile"}, {"main10", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_PROFILE_HEVC_MAIN_10 }, INT_MIN, INT_MAX, V|E, "avctx.profile"}, {"level", NULL, OFFSET(level), AV_OPT_TYPE_INT, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"}, {"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = FF_LEVEL_UNKNOWN }, INT_MIN, INT_MAX, V|A|E, "level"}, diff --git a/libavcodec/profiles.h b/libavcodec/profiles.h index d950971875..e414ea77a7 100644 --- a/libavcodec/profiles.h +++ b/libavcodec/profiles.h @@ -37,6 +37,12 @@ FF_AVCTX_PROFILE_OPTION("mpeg2_aac_low", NULL, AUDIO, FF_PROFILE_MPEG2_AAC_LOW)\ FF_AVCTX_PROFILE_OPTION("mpeg2_aac_he", NULL, AUDIO, FF_PROFILE_MPEG2_AAC_HE)\ +#define FF_MPEG4_PROFILE_OPTS \ + FF_AVCTX_PROFILE_OPTION("mpeg4_sp", NULL, VIDEO, FF_PROFILE_MPEG4_SIMPLE)\ + FF_AVCTX_PROFILE_OPTION("mpeg4_core", NULL, VIDEO, FF_PROFILE_MPEG4_CORE)\ + FF_AVCTX_PROFILE_OPTION("mpeg4_main", NULL, VIDEO, FF_PROFILE_MPEG4_MAIN)\ + FF_AVCTX_PROFILE_OPTION("mpeg4_asp", NULL, VIDEO, FF_PROFILE_MPEG4_ADVANCED_SIMPLE)\ + extern const AVProfile ff_aac_profiles[]; extern const AVProfile ff_dca_profiles[]; extern const AVProfile ff_dnxhd_profiles[]; diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c index ebb575f349..a21a7b6c65 100644 --- a/libavcodec/v4l2_m2m_enc.c +++ b/libavcodec/v4l2_m2m_enc.c @@ -29,6 +29,7 @@ #include "libavutil/pixdesc.h" #include "libavutil/pixfmt.h" #include "libavutil/opt.h" +#include "profiles.h" #include "v4l2_context.h" #include "v4l2_m2m.h" #include "v4l2_fmt.h" @@ -370,10 +371,19 @@ static av_cold int v4l2_encode_close(AVCodecContext *avctx) #define OFFSET(x) offsetof(V4L2m2mPriv, x) #define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM +#define V4L_M2M_CAPTURE_OPTS \ + V4L_M2M_DEFAULT_OPTS,\ + { "num_capture_buffers", "Number of buffers in the capture context", \ + OFFSET(num_capture_buffers), AV_OPT_TYPE_INT, {.i64 = 4 }, 4, INT_MAX, FLAGS } + +static const AVOption mpeg4_options[] = { + V4L_M2M_CAPTURE_OPTS, + FF_MPEG4_PROFILE_OPTS + { NULL }, +}; + static const AVOption options[] = { - V4L_M2M_DEFAULT_OPTS, - { "num_capture_buffers", "Number of buffers in the capture context", - OFFSET(num_capture_buffers), AV_OPT_TYPE_INT, {.i64 = 4 }, 4, INT_MAX, FLAGS }, + V4L_M2M_CAPTURE_OPTS, { NULL }, }; @@ -383,16 +393,16 @@ static const AVCodecDefault v4l2_m2m_defaults[] = { { NULL }, }; -#define M2MENC_CLASS(NAME) \ +#define M2MENC_CLASS(NAME, OPTIONS_NAME) \ static const AVClass v4l2_m2m_ ## NAME ## _enc_class = { \ .class_name = #NAME "_v4l2m2m_encoder", \ .item_name = av_default_item_name, \ - .option = options, \ + .option = OPTIONS_NAME, \ .version = LIBAVUTIL_VERSION_INT, \ }; -#define M2MENC(NAME, LONGNAME, CODEC) \ - M2MENC_CLASS(NAME) \ +#define M2MENC(NAME, LONGNAME, OPTIONS_NAME, CODEC) \ + M2MENC_CLASS(NAME, OPTIONS_NAME) \ AVCodec ff_ ## NAME ## _v4l2m2m_encoder = { \ .name = #NAME "_v4l2m2m" , \ .long_name = NULL_IF_CONFIG_SMALL("V4L2 mem2mem " LONGNAME " encoder wrapper"), \ @@ -409,8 +419,8 @@ static const AVCodecDefault v4l2_m2m_defaults[] = { .wrapper_name = "v4l2m2m", \ }; -M2MENC(mpeg4,"MPEG4", AV_CODEC_ID_MPEG4); -M2MENC(h263, "H.263", AV_CODEC_ID_H263); -M2MENC(h264, "H.264", AV_CODEC_ID_H264); -M2MENC(hevc, "HEVC", AV_CODEC_ID_HEVC); -M2MENC(vp8, "VP8", AV_CODEC_ID_VP8); +M2MENC(mpeg4,"MPEG4", mpeg4_options, AV_CODEC_ID_MPEG4); +M2MENC(h263, "H.263", options, AV_CODEC_ID_H263); +M2MENC(h264, "H.264", options, AV_CODEC_ID_H264); +M2MENC(hevc, "HEVC", options, AV_CODEC_ID_HEVC); +M2MENC(vp8, "VP8", options, AV_CODEC_ID_VP8); diff --git a/libavcodec/version.h b/libavcodec/version.h index 9fc637313d..238e6db9e0 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -29,7 +29,7 @@ #define LIBAVCODEC_VERSION_MAJOR 58 #define LIBAVCODEC_VERSION_MINOR 87 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \