* commit '2c6811397bdf13d43ca206e48d6d6da9c2cd47c6': lavc: add profiles to AVCodecDescriptor
Unified · Split
| @@ -15,6 +15,9 @@ libavutil: 2015-08-28 · 14 unmodified lines | |||
| 15 | 15 | ||
| 16 | API changes, most recent first: | 16 | API changes, most recent first: |
| 17 | 17 | ||
| 18 | 2016-01-01 - xxxxxxx - lavc 57.21.100 / 57.12.0 - avcodec.h | ||
| 19 | Add AVCodecDescriptor.profiles and avcodec_profile_name(). | ||
| 20 | |||
| 18 | 2015-12-28 - xxxxxxx - lavf 57.21.100 - avformat.h | 21 | 2015-12-28 - xxxxxxx - lavf 57.21.100 - avformat.h |
| 19 | Add automatic bitstream filtering; add av_apply_bitstream_filters() | 22 | Add automatic bitstream filtering; add av_apply_bitstream_filters() |
| 20 | 23 | ||
| @@ -33,6 +33,7 @@ OBJS = allcodecs.o \ · 32 unmodified lines | |||
| 33 | mathtables.o \ | 33 | mathtables.o \ |
| 34 | options.o \ | 34 | options.o \ |
| 35 | parser.o \ | 35 | parser.o \ |
| 36 | profiles.o \ | ||
| 36 | qsv_api.o \ | 37 | qsv_api.o \ |
| 37 | raw.o \ | 38 | raw.o \ |
| 38 | resample.o \ | 39 | resample.o \ |
| @@ -55,6 +55,7 @@ · 54 unmodified lines | |||
| 55 | #include "aacsbr.h" | 55 | #include "aacsbr.h" |
| 56 | #include "mpeg4audio.h" | 56 | #include "mpeg4audio.h" |
| 57 | #include "aacadtsdec.h" | 57 | #include "aacadtsdec.h" |
| 58 | #include "profiles.h" | ||
| 58 | #include "libavutil/intfloat.h" | 59 | #include "libavutil/intfloat.h" |
| 59 | 60 | ||
| 60 | #include <errno.h> | 61 | #include <errno.h> |
| @@ -555,7 +556,7 @@ AVCodec ff_aac_decoder = { · 494 unmodified lines | |||
| 555 | .channel_layouts = aac_channel_layout, | 556 | .channel_layouts = aac_channel_layout, |
| 556 | .flush = flush, | 557 | .flush = flush, |
| 557 | .priv_class = &aac_decoder_class, | 558 | .priv_class = &aac_decoder_class, |
| 558 | .profiles = profiles, | 559 | .profiles = NULL_IF_CONFIG_SMALL(ff_aac_profiles), |
| 559 | }; | 560 | }; |
| 560 | 561 | ||
| 561 | /* | 562 | /* |
| @@ -579,5 +580,5 @@ AVCodec ff_aac_latm_decoder = { · 17 unmodified lines | |||
| 579 | .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, | 580 | .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, |
| 580 | .channel_layouts = aac_channel_layout, | 581 | .channel_layouts = aac_channel_layout, |
| 581 | .flush = flush, | 582 | .flush = flush, |
| 582 | .profiles = profiles, | 583 | .profiles = NULL_IF_CONFIG_SMALL(ff_aac_profiles), |
| 583 | }; | 584 | }; |
| @@ -80,6 +80,7 @@ · 79 unmodified lines | |||
| 80 | #include "aacsbr.h" | 80 | #include "aacsbr.h" |
| 81 | #include "mpeg4audio.h" | 81 | #include "mpeg4audio.h" |
| 82 | #include "aacadtsdec.h" | 82 | #include "aacadtsdec.h" |
| 83 | #include "profiles.h" | ||
| 83 | #include "libavutil/intfloat.h" | 84 | #include "libavutil/intfloat.h" |
| 84 | 85 | ||
| 85 | #include <math.h> | 86 | #include <math.h> |
| @@ -440,5 +441,6 @@ AVCodec ff_aac_fixed_decoder = { · 354 unmodified lines | |||
| 440 | .capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, | 441 | .capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, |
| 441 | .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, | 442 | .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, |
| 442 | .channel_layouts = aac_channel_layout, | 443 | .channel_layouts = aac_channel_layout, |
| 444 | .profiles = NULL_IF_CONFIG_SMALL(ff_aac_profiles), | ||
| 443 | .flush = flush, | 445 | .flush = flush, |
| 444 | }; | 446 | }; |
| @@ -3232,15 +3232,3 @@ static const AVClass aac_decoder_class = { · 3231 unmodified lines | |||
| 3232 | .option = options, | 3232 | .option = options, |
| 3233 | .version = LIBAVUTIL_VERSION_INT, | 3233 | .version = LIBAVUTIL_VERSION_INT, |
| 3234 | }; | 3234 | }; |
| 3235 | |||
| 3236 | static const AVProfile profiles[] = { | ||
| 3237 | { FF_PROFILE_AAC_MAIN, "Main" }, | ||
| 3238 | { FF_PROFILE_AAC_LOW, "LC" }, | ||
| 3239 | { FF_PROFILE_AAC_SSR, "SSR" }, | ||
| 3240 | { FF_PROFILE_AAC_LTP, "LTP" }, | ||
| 3241 | { FF_PROFILE_AAC_HE, "HE-AAC" }, | ||
| 3242 | { FF_PROFILE_AAC_HE_V2, "HE-AACv2" }, | ||
| 3243 | { FF_PROFILE_AAC_LD, "LD" }, | ||
| 3244 | { FF_PROFILE_AAC_ELD, "ELD" }, | ||
| 3245 | { FF_PROFILE_UNKNOWN }, | ||
| 3246 | }; | ||
| @@ -574,13 +574,17 @@ typedef struct AVCodecDescriptor { · 573 unmodified lines | |||
| 574 | * Codec properties, a combination of AV_CODEC_PROP_* flags. | 574 | * Codec properties, a combination of AV_CODEC_PROP_* flags. |
| 575 | */ | 575 | */ |
| 576 | int props; | 576 | int props; |
| 577 | |||
| 578 | /** | 577 | /** |
| 579 | * MIME type(s) associated with the codec. | 578 | * MIME type(s) associated with the codec. |
| 580 | * May be NULL; if not, a NULL-terminated array of MIME types. | 579 | * May be NULL; if not, a NULL-terminated array of MIME types. |
| 581 | * The first item is always non-NULL and is the preferred MIME type. | 580 | * The first item is always non-NULL and is the preferred MIME type. |
| 582 | */ | 581 | */ |
| 583 | const char *const *mime_types; | 582 | const char *const *mime_types; |
| 583 | /** | ||
| 584 | * If non-NULL, an array of profiles recognized for this codec. | ||
| 585 | * Terminated with FF_PROFILE_UNKNOWN. | ||
| 586 | */ | ||
| 587 | const struct AVProfile *profiles; | ||
| 584 | } AVCodecDescriptor; | 588 | } AVCodecDescriptor; |
| 585 | 589 | ||
| 586 | /** | 590 | /** |
| @@ -5055,6 +5059,19 @@ void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode); · 4468 unmodified lines | |||
| 5055 | */ | 5059 | */ |
| 5056 | const char *av_get_profile_name(const AVCodec *codec, int profile); | 5060 | const char *av_get_profile_name(const AVCodec *codec, int profile); |
| 5057 | 5061 | ||
| 5062 | /** | ||
| 5063 | * Return a name for the specified profile, if available. | ||
| 5064 | * | ||
| 5065 | * @param codec_id the ID of the codec to which the requested profile belongs | ||
| 5066 | * @param profile the profile value for which a name is requested | ||
| 5067 | * @return A name for the profile if found, NULL otherwise. | ||
| 5068 | * | ||
| 5069 | * @note unlike av_get_profile_name(), which searches a list of profiles | ||
| 5070 | * supported by a specific decoder or encoder implementation, this | ||
| 5071 | * function searches the list of profiles from the AVCodecDescriptor | ||
| 5072 | */ | ||
| 5073 | const char *avcodec_profile_name(enum AVCodecID codec_id, int profile); | ||
| 5074 | |||
| 5058 | int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); | 5075 | int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size); |
| 5059 | int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); | 5076 | int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count); |
| 5060 | //FIXME func typedef | 5077 | //FIXME func typedef |
| @@ -24,6 +24,7 @@ · 23 unmodified lines | |||
| 24 | #include "libavutil/common.h" | 24 | #include "libavutil/common.h" |
| 25 | #include "libavutil/internal.h" | 25 | #include "libavutil/internal.h" |
| 26 | #include "avcodec.h" | 26 | #include "avcodec.h" |
| 27 | #include "profiles.h" | ||
| 27 | #include "version.h" | 28 | #include "version.h" |
| 28 | 29 | ||
| 29 | #define MT(...) (const char *const[]){ __VA_ARGS__, NULL } | 30 | #define MT(...) (const char *const[]){ __VA_ARGS__, NULL } |
| @@ -43,6 +44,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 13 unmodified lines | |||
| 43 | .name = "mpeg2video", | 44 | .name = "mpeg2video", |
| 44 | .long_name = NULL_IF_CONFIG_SMALL("MPEG-2 video"), | 45 | .long_name = NULL_IF_CONFIG_SMALL("MPEG-2 video"), |
| 45 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, | 46 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, |
| 47 | .profiles = NULL_IF_CONFIG_SMALL(ff_mpeg2_video_profiles), | ||
| 46 | }, | 48 | }, |
| 47 | #if FF_API_XVMC | 49 | #if FF_API_XVMC |
| 48 | { | 50 | { |
| @@ -102,6 +104,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 53 unmodified lines | |||
| 102 | .name = "mpeg4", | 104 | .name = "mpeg4", |
| 103 | .long_name = NULL_IF_CONFIG_SMALL("MPEG-4 part 2"), | 105 | .long_name = NULL_IF_CONFIG_SMALL("MPEG-4 part 2"), |
| 104 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, | 106 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, |
| 107 | .profiles = NULL_IF_CONFIG_SMALL(ff_mpeg4_video_profiles), | ||
| 105 | }, | 108 | }, |
| 106 | { | 109 | { |
| 107 | .id = AV_CODEC_ID_RAWVIDEO, | 110 | .id = AV_CODEC_ID_RAWVIDEO, |
| @@ -207,6 +210,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 99 unmodified lines | |||
| 207 | .name = "h264", | 210 | .name = "h264", |
| 208 | .long_name = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), | 211 | .long_name = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), |
| 209 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS | AV_CODEC_PROP_REORDER, | 212 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS | AV_CODEC_PROP_REORDER, |
| 213 | .profiles = NULL_IF_CONFIG_SMALL(ff_h264_profiles), | ||
| 210 | }, | 214 | }, |
| 211 | { | 215 | { |
| 212 | .id = AV_CODEC_ID_INDEO3, | 216 | .id = AV_CODEC_ID_INDEO3, |
| @@ -473,6 +477,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 260 unmodified lines | |||
| 473 | .name = "vc1", | 477 | .name = "vc1", |
| 474 | .long_name = NULL_IF_CONFIG_SMALL("SMPTE VC-1"), | 478 | .long_name = NULL_IF_CONFIG_SMALL("SMPTE VC-1"), |
| 475 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, | 479 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, |
| 480 | .profiles = NULL_IF_CONFIG_SMALL(ff_vc1_profiles), | ||
| 476 | }, | 481 | }, |
| 477 | { | 482 | { |
| 478 | .id = AV_CODEC_ID_WMV3, | 483 | .id = AV_CODEC_ID_WMV3, |
| @@ -480,6 +485,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 1 unmodified line | |||
| 480 | .name = "wmv3", | 485 | .name = "wmv3", |
| 481 | .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9"), | 486 | .long_name = NULL_IF_CONFIG_SMALL("Windows Media Video 9"), |
| 482 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, | 487 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, |
| 488 | .profiles = NULL_IF_CONFIG_SMALL(ff_vc1_profiles), | ||
| 483 | }, | 489 | }, |
| 484 | { | 490 | { |
| 485 | .id = AV_CODEC_ID_LOCO, | 491 | .id = AV_CODEC_ID_LOCO, |
| @@ -602,6 +608,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 116 unmodified lines | |||
| 602 | .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY | | 608 | .props = AV_CODEC_PROP_INTRA_ONLY | AV_CODEC_PROP_LOSSY | |
| 603 | AV_CODEC_PROP_LOSSLESS, | 609 | AV_CODEC_PROP_LOSSLESS, |
| 604 | .mime_types= MT("image/jp2"), | 610 | .mime_types= MT("image/jp2"), |
| 611 | .profiles = NULL_IF_CONFIG_SMALL(ff_jpeg2000_profiles), | ||
| 605 | }, | 612 | }, |
| 606 | { | 613 | { |
| 607 | .id = AV_CODEC_ID_VMNC, | 614 | .id = AV_CODEC_ID_VMNC, |
| @@ -1202,6 +1209,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 594 unmodified lines | |||
| 1202 | .name = "hevc", | 1209 | .name = "hevc", |
| 1203 | .long_name = NULL_IF_CONFIG_SMALL("H.265 / HEVC (High Efficiency Video Coding)"), | 1210 | .long_name = NULL_IF_CONFIG_SMALL("H.265 / HEVC (High Efficiency Video Coding)"), |
| 1204 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, | 1211 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_REORDER, |
| 1212 | .profiles = NULL_IF_CONFIG_SMALL(ff_hevc_profiles), | ||
| 1205 | }, | 1213 | }, |
| 1206 | { | 1214 | { |
| 1207 | .id = AV_CODEC_ID_FIC, | 1215 | .id = AV_CODEC_ID_FIC, |
| @@ -2097,6 +2105,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 889 unmodified lines | |||
| 2097 | .name = "aac", | 2105 | .name = "aac", |
| 2098 | .long_name = NULL_IF_CONFIG_SMALL("AAC (Advanced Audio Coding)"), | 2106 | .long_name = NULL_IF_CONFIG_SMALL("AAC (Advanced Audio Coding)"), |
| 2099 | .props = AV_CODEC_PROP_LOSSY, | 2107 | .props = AV_CODEC_PROP_LOSSY, |
| 2108 | .profiles = NULL_IF_CONFIG_SMALL(ff_aac_profiles), | ||
| 2100 | }, | 2109 | }, |
| 2101 | { | 2110 | { |
| 2102 | .id = AV_CODEC_ID_AC3, | 2111 | .id = AV_CODEC_ID_AC3, |
| @@ -2111,6 +2120,7 @@ static const AVCodecDescriptor codec_descriptors[] = { · 8 unmodified lines | |||
| 2111 | .name = "dts", | 2120 | .name = "dts", |
| 2112 | .long_name = NULL_IF_CONFIG_SMALL("DCA (DTS Coherent Acoustics)"), | 2121 | .long_name = NULL_IF_CONFIG_SMALL("DCA (DTS Coherent Acoustics)"), |
| 2113 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS, | 2122 | .props = AV_CODEC_PROP_LOSSY | AV_CODEC_PROP_LOSSLESS, |
| 2123 | .profiles = NULL_IF_CONFIG_SMALL(ff_dca_profiles), | ||
| 2114 | }, | 2124 | }, |
| 2115 | { | 2125 | { |
| 2116 | .id = AV_CODEC_ID_VORBIS, | 2126 | .id = AV_CODEC_ID_VORBIS, |
| @@ -49,6 +49,7 @@ · 48 unmodified lines | |||
| 49 | #include "get_bits.h" | 49 | #include "get_bits.h" |
| 50 | #include "internal.h" | 50 | #include "internal.h" |
| 51 | #include "mathops.h" | 51 | #include "mathops.h" |
| 52 | #include "profiles.h" | ||
| 52 | #include "synth_filter.h" | 53 | #include "synth_filter.h" |
| 53 | 54 | ||
| 54 | #if ARCH_ARM | 55 | #if ARCH_ARM |
| @@ -2030,15 +2031,6 @@ static av_cold int dca_decode_end(AVCodecContext *avctx) · 1975 unmodified lines | |||
| 2030 | return 0; | 2031 | return 0; |
| 2031 | } | 2032 | } |
| 2032 | 2033 | ||
| 2033 | static const AVProfile profiles[] = { | ||
| 2034 | { FF_PROFILE_DTS, "DTS" }, | ||
| 2035 | { FF_PROFILE_DTS_ES, "DTS-ES" }, | ||
| 2036 | { FF_PROFILE_DTS_96_24, "DTS 96/24" }, | ||
| 2037 | { FF_PROFILE_DTS_HD_HRA, "DTS-HD HRA" }, | ||
| 2038 | { FF_PROFILE_DTS_HD_MA, "DTS-HD MA" }, | ||
| 2039 | { FF_PROFILE_UNKNOWN }, | ||
| 2040 | }; | ||
| 2041 | |||
| 2042 | static const AVOption options[] = { | 2034 | static const AVOption options[] = { |
| 2043 | { "disable_xch", "disable decoding of the XCh extension", offsetof(DCAContext, xch_disable), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM }, | 2035 | { "disable_xch", "disable decoding of the XCh extension", offsetof(DCAContext, xch_disable), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM }, |
| 2044 | { "disable_xll", "disable decoding of the XLL extension", offsetof(DCAContext, xll_disable), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM }, | 2036 | { "disable_xll", "disable decoding of the XLL extension", offsetof(DCAContext, xll_disable), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_AUDIO_PARAM }, |
| @@ -2065,6 +2057,6 @@ AVCodec ff_dca_decoder = { · 20 unmodified lines | |||
| 2065 | .capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, | 2057 | .capabilities = AV_CODEC_CAP_CHANNEL_CONF | AV_CODEC_CAP_DR1, |
| 2066 | .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, | 2058 | .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_FLTP, |
| 2067 | AV_SAMPLE_FMT_NONE }, | 2059 | AV_SAMPLE_FMT_NONE }, |
| 2068 | .profiles = NULL_IF_CONFIG_SMALL(profiles), | 2060 | .profiles = NULL_IF_CONFIG_SMALL(ff_dca_profiles), |
| 2069 | .priv_class = &dca_decoder_class, | 2061 | .priv_class = &dca_decoder_class, |
| 2070 | }; | 2062 | }; |
| @@ -46,6 +46,7 @@ · 45 unmodified lines | |||
| 46 | #include "mathops.h" | 46 | #include "mathops.h" |
| 47 | #include "me_cmp.h" | 47 | #include "me_cmp.h" |
| 48 | #include "mpegutils.h" | 48 | #include "mpegutils.h" |
| 49 | #include "profiles.h" | ||
| 49 | #include "rectangle.h" | 50 | #include "rectangle.h" |
| 50 | #include "svq3.h" | 51 | #include "svq3.h" |
| 51 | #include "thread.h" | 52 | #include "thread.h" |
| @@ -1962,23 +1963,6 @@ static const AVClass h264_class = { · 1910 unmodified lines | |||
| 1962 | .version = LIBAVUTIL_VERSION_INT, | 1963 | .version = LIBAVUTIL_VERSION_INT, |
| 1963 | }; | 1964 | }; |
| 1964 | 1965 | ||
| 1965 | static const AVProfile profiles[] = { | ||
| 1966 | { FF_PROFILE_H264_BASELINE, "Baseline" }, | ||
| 1967 | { FF_PROFILE_H264_CONSTRAINED_BASELINE, "Constrained Baseline" }, | ||
| 1968 | { FF_PROFILE_H264_MAIN, "Main" }, | ||
| 1969 | { FF_PROFILE_H264_EXTENDED, "Extended" }, | ||
| 1970 | { FF_PROFILE_H264_HIGH, "High" }, | ||
| 1971 | { FF_PROFILE_H264_HIGH_10, "High 10" }, | ||
| 1972 | { FF_PROFILE_H264_HIGH_10_INTRA, "High 10 Intra" }, | ||
| 1973 | { FF_PROFILE_H264_HIGH_422, "High 4:2:2" }, | ||
| 1974 | { FF_PROFILE_H264_HIGH_422_INTRA, "High 4:2:2 Intra" }, | ||
| 1975 | { FF_PROFILE_H264_HIGH_444, "High 4:4:4" }, | ||
| 1976 | { FF_PROFILE_H264_HIGH_444_PREDICTIVE, "High 4:4:4 Predictive" }, | ||
| 1977 | { FF_PROFILE_H264_HIGH_444_INTRA, "High 4:4:4 Intra" }, | ||
| 1978 | { FF_PROFILE_H264_CAVLC_444, "CAVLC 4:4:4" }, | ||
| 1979 | { FF_PROFILE_UNKNOWN }, | ||
| 1980 | }; | ||
| 1981 | |||
| 1982 | AVCodec ff_h264_decoder = { | 1966 | AVCodec ff_h264_decoder = { |
| 1983 | .name = "h264", | 1967 | .name = "h264", |
| 1984 | .long_name = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), | 1968 | .long_name = NULL_IF_CONFIG_SMALL("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10"), |
| @@ -1995,7 +1979,7 @@ AVCodec ff_h264_decoder = { · 10 unmodified lines | |||
| 1995 | .flush = flush_dpb, | 1979 | .flush = flush_dpb, |
| 1996 | .init_thread_copy = ONLY_IF_THREADS_ENABLED(decode_init_thread_copy), | 1980 | .init_thread_copy = ONLY_IF_THREADS_ENABLED(decode_init_thread_copy), |
| 1997 | .update_thread_context = ONLY_IF_THREADS_ENABLED(ff_h264_update_thread_context), | 1981 | .update_thread_context = ONLY_IF_THREADS_ENABLED(ff_h264_update_thread_context), |
| 1998 | .profiles = NULL_IF_CONFIG_SMALL(profiles), | 1982 | .profiles = NULL_IF_CONFIG_SMALL(ff_h264_profiles), |
| 1999 | .priv_class = &h264_class, | 1983 | .priv_class = &h264_class, |
| 2000 | }; | 1984 | }; |
| 2001 | 1985 | ||
| @@ -38,6 +38,7 @@ · 37 unmodified lines | |||
| 38 | #include "cabac_functions.h" | 38 | #include "cabac_functions.h" |
| 39 | #include "golomb.h" | 39 | #include "golomb.h" |
| 40 | #include "hevc.h" | 40 | #include "hevc.h" |
| 41 | #include "profiles.h" | ||
| 41 | 42 | ||
| 42 | const uint8_t ff_hevc_pel_weight[65] = { [2] = 0, [4] = 1, [6] = 2, [8] = 3, [12] = 4, [16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9 }; | 43 | const uint8_t ff_hevc_pel_weight[65] = { [2] = 0, [4] = 1, [6] = 2, [8] = 3, [12] = 4, [16] = 5, [24] = 6, [32] = 7, [48] = 8, [64] = 9 }; |
| 43 | 44 | ||
| @@ -3314,14 +3315,6 @@ static void hevc_decode_flush(AVCodecContext *avctx) · 3270 unmodified lines | |||
| 3314 | #define OFFSET(x) offsetof(HEVCContext, x) | 3315 | #define OFFSET(x) offsetof(HEVCContext, x) |
| 3315 | #define PAR (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) | 3316 | #define PAR (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM) |
| 3316 | 3317 | ||
| 3317 | static const AVProfile profiles[] = { | ||
| 3318 | { FF_PROFILE_HEVC_MAIN, "Main" }, | ||
| 3319 | { FF_PROFILE_HEVC_MAIN_10, "Main 10" }, | ||
| 3320 | { FF_PROFILE_HEVC_MAIN_STILL_PICTURE, "Main Still Picture" }, | ||
| 3321 | { FF_PROFILE_HEVC_REXT, "Rext" }, | ||
| 3322 | { FF_PROFILE_UNKNOWN }, | ||
| 3323 | }; | ||
| 3324 | |||
| 3325 | static const AVOption options[] = { | 3318 | static const AVOption options[] = { |
| 3326 | { "apply_defdispwin", "Apply default display window from VUI", OFFSET(apply_defdispwin), | 3319 | { "apply_defdispwin", "Apply default display window from VUI", OFFSET(apply_defdispwin), |
| 3327 | AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, PAR }, | 3320 | AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, PAR }, |
| @@ -3352,5 +3345,5 @@ AVCodec ff_hevc_decoder = { · 24 unmodified lines | |||
| 3352 | .init_thread_copy = hevc_init_thread_copy, | 3345 | .init_thread_copy = hevc_init_thread_copy, |
| 3353 | .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | | 3346 | .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | |
| 3354 | AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS, | 3347 | AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS, |
| 3355 | .profiles = NULL_IF_CONFIG_SMALL(profiles), | 3348 | .profiles = NULL_IF_CONFIG_SMALL(ff_hevc_profiles), |
| 3356 | }; | 3349 | }; |
| @@ -39,6 +39,7 @@ · 38 unmodified lines | |||
| 39 | #include "thread.h" | 39 | #include "thread.h" |
| 40 | #include "jpeg2000.h" | 40 | #include "jpeg2000.h" |
| 41 | #include "jpeg2000dsp.h" | 41 | #include "jpeg2000dsp.h" |
| 42 | #include "profiles.h" | ||
| 42 | 43 | ||
| 43 | #define JP2_SIG_TYPE 0x6A502020 | 44 | #define JP2_SIG_TYPE 0x6A502020 |
| 44 | #define JP2_SIG_VALUE 0x0D0A870A | 45 | #define JP2_SIG_VALUE 0x0D0A870A |
| @@ -2142,15 +2143,6 @@ static const AVOption options[] = { · 2097 unmodified lines | |||
| 2142 | { NULL }, | 2143 | { NULL }, |
| 2143 | }; | 2144 | }; |
| 2144 | 2145 | ||
| 2145 | static const AVProfile profiles[] = { | ||
| 2146 | { FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0, "JPEG 2000 codestream restriction 0" }, | ||
| 2147 | { FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1, "JPEG 2000 codestream restriction 1" }, | ||
| 2148 | { FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION, "JPEG 2000 no codestream restrictions" }, | ||
| 2149 | { FF_PROFILE_JPEG2000_DCINEMA_2K, "JPEG 2000 digital cinema 2K" }, | ||
| 2150 | { FF_PROFILE_JPEG2000_DCINEMA_4K, "JPEG 2000 digital cinema 4K" }, | ||
| 2151 | { FF_PROFILE_UNKNOWN }, | ||
| 2152 | }; | ||
| 2153 | |||
| 2154 | static const AVClass jpeg2000_class = { | 2146 | static const AVClass jpeg2000_class = { |
| 2155 | .class_name = "jpeg2000", | 2147 | .class_name = "jpeg2000", |
| 2156 | .item_name = av_default_item_name, | 2148 | .item_name = av_default_item_name, |
| @@ -2170,5 +2162,5 @@ AVCodec ff_jpeg2000_decoder = { · 13 unmodified lines | |||
| 2170 | .decode = jpeg2000_decode_frame, | 2162 | .decode = jpeg2000_decode_frame, |
| 2171 | .priv_class = &jpeg2000_class, | 2163 | .priv_class = &jpeg2000_class, |
| 2172 | .max_lowres = 5, | 2164 | .max_lowres = 5, |
| 2173 | .profiles = NULL_IF_CONFIG_SMALL(profiles) | 2165 | .profiles = NULL_IF_CONFIG_SMALL(ff_jpeg2000_profiles) |
| 2174 | }; | 2166 | }; |
| @@ -29,6 +29,7 @@ · 28 unmodified lines | |||
| 29 | #include "dca.h" | 29 | #include "dca.h" |
| 30 | #include "dca_syncwords.h" | 30 | #include "dca_syncwords.h" |
| 31 | #include "internal.h" | 31 | #include "internal.h" |
| 32 | #include "profiles.h" | ||
| 32 | 33 | ||
| 33 | typedef struct DCADecContext { | 34 | typedef struct DCADecContext { |
| 34 | const AVClass *class; | 35 | const AVClass *class; |
| @@ -292,16 +293,6 @@ static const AVClass dcadec_class = { · 257 unmodified lines | |||
| 292 | .category = AV_CLASS_CATEGORY_DECODER, | 293 | .category = AV_CLASS_CATEGORY_DECODER, |
| 293 | }; | 294 | }; |
| 294 | 295 | ||
| 295 | static const AVProfile profiles[] = { | ||
| 296 | { FF_PROFILE_DTS, "DTS" }, | ||
| 297 | { FF_PROFILE_DTS_ES, "DTS-ES" }, | ||
| 298 | { FF_PROFILE_DTS_96_24, "DTS 96/24" }, | ||
| 299 | { FF_PROFILE_DTS_HD_HRA, "DTS-HD HRA" }, | ||
| 300 | { FF_PROFILE_DTS_HD_MA, "DTS-HD MA" }, | ||
| 301 | { FF_PROFILE_DTS_EXPRESS, "DTS Express" }, | ||
| 302 | { FF_PROFILE_UNKNOWN }, | ||
| 303 | }; | ||
| 304 | |||
| 305 | AVCodec ff_libdcadec_decoder = { | 296 | AVCodec ff_libdcadec_decoder = { |
| 306 | .name = "libdcadec", | 297 | .name = "libdcadec", |
| 307 | .long_name = NULL_IF_CONFIG_SMALL("dcadec DCA decoder"), | 298 | .long_name = NULL_IF_CONFIG_SMALL("dcadec DCA decoder"), |
| @@ -316,5 +307,5 @@ AVCodec ff_libdcadec_decoder = { · 8 unmodified lines | |||
| 316 | .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_S16P, | 307 | .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_S16P, |
| 317 | AV_SAMPLE_FMT_NONE }, | 308 | AV_SAMPLE_FMT_NONE }, |
| 318 | .priv_class = &dcadec_class, | 309 | .priv_class = &dcadec_class, |
| 319 | .profiles = NULL_IF_CONFIG_SMALL(profiles), | 310 | .profiles = NULL_IF_CONFIG_SMALL(ff_dca_profiles), |
| 320 | }; | 311 | }; |
| @@ -44,6 +44,7 @@ · 43 unmodified lines | |||
| 44 | #include "mpegutils.h" | 44 | #include "mpegutils.h" |
| 45 | #include "mpegvideo.h" | 45 | #include "mpegvideo.h" |
| 46 | #include "mpegvideodata.h" | 46 | #include "mpegvideodata.h" |
| 47 | #include "profiles.h" | ||
| 47 | #include "thread.h" | 48 | #include "thread.h" |
| 48 | #include "version.h" | 49 | #include "version.h" |
| 49 | #include "vdpau_compat.h" | 50 | #include "vdpau_compat.h" |
| @@ -2855,18 +2856,6 @@ static av_cold int mpeg_decode_end(AVCodecContext *avctx) · 2805 unmodified lines | |||
| 2855 | return 0; | 2856 | return 0; |
| 2856 | } | 2857 | } |
| 2857 | 2858 | ||
| 2858 | static const AVProfile mpeg2_video_profiles[] = { | ||
| 2859 | { FF_PROFILE_MPEG2_422, "4:2:2" }, | ||
| 2860 | { FF_PROFILE_MPEG2_HIGH, "High" }, | ||
| 2861 | { FF_PROFILE_MPEG2_SS, "Spatially Scalable" }, | ||
| 2862 | { FF_PROFILE_MPEG2_SNR_SCALABLE, "SNR Scalable" }, | ||
| 2863 | { FF_PROFILE_MPEG2_MAIN, "Main" }, | ||
| 2864 | { FF_PROFILE_MPEG2_SIMPLE, "Simple" }, | ||
| 2865 | { FF_PROFILE_RESERVED, "Reserved" }, | ||
| 2866 | { FF_PROFILE_RESERVED, "Reserved" }, | ||
| 2867 | { FF_PROFILE_UNKNOWN }, | ||
| 2868 | }; | ||
| 2869 | |||
| 2870 | AVCodec ff_mpeg1video_decoder = { | 2859 | AVCodec ff_mpeg1video_decoder = { |
| 2871 | .name = "mpeg1video", | 2860 | .name = "mpeg1video", |
| 2872 | .long_name = NULL_IF_CONFIG_SMALL("MPEG-1 video"), | 2861 | .long_name = NULL_IF_CONFIG_SMALL("MPEG-1 video"), |
| @@ -2898,7 +2887,7 @@ AVCodec ff_mpeg2video_decoder = { · 25 unmodified lines | |||
| 2898 | AV_CODEC_CAP_SLICE_THREADS, | 2887 | AV_CODEC_CAP_SLICE_THREADS, |
| 2899 | .flush = flush, | 2888 | .flush = flush, |
| 2900 | .max_lowres = 3, | 2889 | .max_lowres = 3, |
| 2901 | .profiles = NULL_IF_CONFIG_SMALL(mpeg2_video_profiles), | 2890 | .profiles = NULL_IF_CONFIG_SMALL(ff_mpeg2_video_profiles), |
| 2902 | }; | 2891 | }; |
| 2903 | 2892 | ||
| 2904 | //legacy decoder | 2893 | //legacy decoder |
| @@ -32,6 +32,7 @@ · 31 unmodified lines | |||
| 32 | #include "mpegvideodata.h" | 32 | #include "mpegvideodata.h" |
| 33 | #include "mpeg4video.h" | 33 | #include "mpeg4video.h" |
| 34 | #include "h263.h" | 34 | #include "h263.h" |
| 35 | #include "profiles.h" | ||
| 35 | #include "thread.h" | 36 | #include "thread.h" |
| 36 | #include "xvididct.h" | 37 | #include "xvididct.h" |
| 37 | 38 | ||
| @@ -2745,26 +2746,6 @@ static av_cold int decode_init(AVCodecContext *avctx) · 2707 unmodified lines | |||
| 2745 | return 0; | 2746 | return 0; |
| 2746 | } | 2747 | } |
| 2747 | 2748 | ||
| 2748 | static const AVProfile mpeg4_video_profiles[] = { | ||
| 2749 | { FF_PROFILE_MPEG4_SIMPLE, "Simple Profile" }, | ||
| 2750 | { FF_PROFILE_MPEG4_SIMPLE_SCALABLE, "Simple Scalable Profile" }, | ||
| 2751 | { FF_PROFILE_MPEG4_CORE, "Core Profile" }, | ||
| 2752 | { FF_PROFILE_MPEG4_MAIN, "Main Profile" }, | ||
| 2753 | { FF_PROFILE_MPEG4_N_BIT, "N-bit Profile" }, | ||
| 2754 | { FF_PROFILE_MPEG4_SCALABLE_TEXTURE, "Scalable Texture Profile" }, | ||
| 2755 | { FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION, "Simple Face Animation Profile" }, | ||
| 2756 | { FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE, "Basic Animated Texture Profile" }, | ||
| 2757 | { FF_PROFILE_MPEG4_HYBRID, "Hybrid Profile" }, | ||
| 2758 | { FF_PROFILE_MPEG4_ADVANCED_REAL_TIME, "Advanced Real Time Simple Profile" }, | ||
| 2759 | { FF_PROFILE_MPEG4_CORE_SCALABLE, "Code Scalable Profile" }, | ||
| 2760 | { FF_PROFILE_MPEG4_ADVANCED_CODING, "Advanced Coding Profile" }, | ||
| 2761 | { FF_PROFILE_MPEG4_ADVANCED_CORE, "Advanced Core Profile" }, | ||
| 2762 | { FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE, "Advanced Scalable Texture Profile" }, | ||
| 2763 | { FF_PROFILE_MPEG4_SIMPLE_STUDIO, "Simple Studio Profile" }, | ||
| 2764 | { FF_PROFILE_MPEG4_ADVANCED_SIMPLE, "Advanced Simple Profile" }, | ||
| 2765 | { FF_PROFILE_UNKNOWN }, | ||
| 2766 | }; | ||
| 2767 | |||
| 2768 | static const AVOption mpeg4_options[] = { | 2749 | static const AVOption mpeg4_options[] = { |
| 2769 | {"quarter_sample", "1/4 subpel MC", offsetof(MpegEncContext, quarter_sample), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, 0}, | 2750 | {"quarter_sample", "1/4 subpel MC", offsetof(MpegEncContext, quarter_sample), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, 0}, |
| 2770 | {"divx_packed", "divx style packed b frames", offsetof(MpegEncContext, divx_packed), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, 0}, | 2751 | {"divx_packed", "divx style packed b frames", offsetof(MpegEncContext, divx_packed), AV_OPT_TYPE_BOOL, {.i64 = 0}, 0, 1, 0}, |
| @@ -2793,7 +2774,7 @@ AVCodec ff_mpeg4_decoder = { · 22 unmodified lines | |||
| 2793 | .flush = ff_mpeg_flush, | 2774 | .flush = ff_mpeg_flush, |
| 2794 | .max_lowres = 3, | 2775 | .max_lowres = 3, |
| 2795 | .pix_fmts = ff_h263_hwaccel_pixfmt_list_420, | 2776 | .pix_fmts = ff_h263_hwaccel_pixfmt_list_420, |
| 2796 | .profiles = NULL_IF_CONFIG_SMALL(mpeg4_video_profiles), | 2777 | .profiles = NULL_IF_CONFIG_SMALL(ff_mpeg4_video_profiles), |
| 2797 | .update_thread_context = ONLY_IF_THREADS_ENABLED(mpeg4_update_thread_context), | 2778 | .update_thread_context = ONLY_IF_THREADS_ENABLED(mpeg4_update_thread_context), |
| 2798 | .priv_class = &mpeg4_class, | 2779 | .priv_class = &mpeg4_class, |
| 2799 | }; | 2780 | }; |
| @@ -0,0 +1,124 @@ | |||
| 1 | /* | ||
| 2 | * | ||
| 3 | * This file is part of FFmpeg. | ||
| 4 | * | ||
| 5 | * FFmpeg is free software; you can redistribute it and/or | ||
| 6 | * modify it under the terms of the GNU Lesser General Public | ||
| 7 | * License as published by the Free Software Foundation; either | ||
| 8 | * version 2.1 of the License, or (at your option) any later version. | ||
| 9 | * | ||
| 10 | * FFmpeg is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 13 | * Lesser General Public License for more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU Lesser General Public | ||
| 16 | * License along with FFmpeg; if not, write to the Free Software | ||
| 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 18 | */ | ||
| 19 | |||
| 20 | #include "config.h" | ||
| 21 | |||
| 22 | #include "avcodec.h" | ||
| 23 | #include "profiles.h" | ||
| 24 | |||
| 25 | #if !CONFIG_SMALL | ||
| 26 | |||
| 27 | const AVProfile ff_aac_profiles[] = { | ||
| 28 | { FF_PROFILE_AAC_LOW, "LC" }, | ||
| 29 | { FF_PROFILE_AAC_HE, "HE-AAC" }, | ||
| 30 | { FF_PROFILE_AAC_HE_V2, "HE-AACv2" }, | ||
| 31 | { FF_PROFILE_AAC_LD, "LD" }, | ||
| 32 | { FF_PROFILE_AAC_ELD, "ELD" }, | ||
| 33 | { FF_PROFILE_AAC_MAIN, "Main" }, | ||
| 34 | { FF_PROFILE_AAC_LOW, "LC" }, | ||
| 35 | { FF_PROFILE_AAC_SSR, "SSR" }, | ||
| 36 | { FF_PROFILE_AAC_LTP, "LTP" }, | ||
| 37 | { FF_PROFILE_UNKNOWN }, | ||
| 38 | }; | ||
| 39 | |||
| 40 | const AVProfile ff_dca_profiles[] = { | ||
| 41 | { FF_PROFILE_DTS, "DTS" }, | ||
| 42 | { FF_PROFILE_DTS_ES, "DTS-ES" }, | ||
| 43 | { FF_PROFILE_DTS_96_24, "DTS 96/24" }, | ||
| 44 | { FF_PROFILE_DTS_HD_HRA, "DTS-HD HRA" }, | ||
| 45 | { FF_PROFILE_DTS_HD_MA, "DTS-HD MA" }, | ||
| 46 | { FF_PROFILE_DTS_EXPRESS, "DTS Express" }, | ||
| 47 | { FF_PROFILE_UNKNOWN }, | ||
| 48 | }; | ||
| 49 | |||
| 50 | const AVProfile ff_h264_profiles[] = { | ||
| 51 | { FF_PROFILE_H264_BASELINE, "Baseline" }, | ||
| 52 | { FF_PROFILE_H264_CONSTRAINED_BASELINE, "Constrained Baseline" }, | ||
| 53 | { FF_PROFILE_H264_MAIN, "Main" }, | ||
| 54 | { FF_PROFILE_H264_EXTENDED, "Extended" }, | ||
| 55 | { FF_PROFILE_H264_HIGH, "High" }, | ||
| 56 | { FF_PROFILE_H264_HIGH_10, "High 10" }, | ||
| 57 | { FF_PROFILE_H264_HIGH_10_INTRA, "High 10 Intra" }, | ||
| 58 | { FF_PROFILE_H264_HIGH_422, "High 4:2:2" }, | ||
| 59 | { FF_PROFILE_H264_HIGH_422_INTRA, "High 4:2:2 Intra" }, | ||
| 60 | { FF_PROFILE_H264_HIGH_444, "High 4:4:4" }, | ||
| 61 | { FF_PROFILE_H264_HIGH_444_PREDICTIVE, "High 4:4:4 Predictive" }, | ||
| 62 | { FF_PROFILE_H264_HIGH_444_INTRA, "High 4:4:4 Intra" }, | ||
| 63 | { FF_PROFILE_H264_CAVLC_444, "CAVLC 4:4:4" }, | ||
| 64 | { FF_PROFILE_UNKNOWN }, | ||
| 65 | }; | ||
| 66 | |||
| 67 | const AVProfile ff_hevc_profiles[] = { | ||
| 68 | { FF_PROFILE_HEVC_MAIN, "Main" }, | ||
| 69 | { FF_PROFILE_HEVC_MAIN_10, "Main 10" }, | ||
| 70 | { FF_PROFILE_HEVC_MAIN_STILL_PICTURE, "Main Still Picture" }, | ||
| 71 | { FF_PROFILE_HEVC_REXT, "Rext" }, | ||
| 72 | { FF_PROFILE_UNKNOWN }, | ||
| 73 | }; | ||
| 74 | |||
| 75 | const AVProfile ff_jpeg2000_profiles[] = { | ||
| 76 | { FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0, "JPEG 2000 codestream restriction 0" }, | ||
| 77 | { FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1, "JPEG 2000 codestream restriction 1" }, | ||
| 78 | { FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION, "JPEG 2000 no codestream restrictions" }, | ||
| 79 | { FF_PROFILE_JPEG2000_DCINEMA_2K, "JPEG 2000 digital cinema 2K" }, | ||
| 80 | { FF_PROFILE_JPEG2000_DCINEMA_4K, "JPEG 2000 digital cinema 4K" }, | ||
| 81 | { FF_PROFILE_UNKNOWN }, | ||
| 82 | }; | ||
| 83 | |||
| 84 | const AVProfile ff_mpeg2_video_profiles[] = { | ||
| 85 | { FF_PROFILE_MPEG2_422, "4:2:2" }, | ||
| 86 | { FF_PROFILE_MPEG2_HIGH, "High" }, | ||
| 87 | { FF_PROFILE_MPEG2_SS, "Spatially Scalable" }, | ||
| 88 | { FF_PROFILE_MPEG2_SNR_SCALABLE, "SNR Scalable" }, | ||
| 89 | { FF_PROFILE_MPEG2_MAIN, "Main" }, | ||
| 90 | { FF_PROFILE_MPEG2_SIMPLE, "Simple" }, | ||
| 91 | { FF_PROFILE_RESERVED, "Reserved" }, | ||
| 92 | { FF_PROFILE_RESERVED, "Reserved" }, | ||
| 93 | { FF_PROFILE_UNKNOWN }, | ||
| 94 | }; | ||
| 95 | |||
| 96 | const AVProfile ff_mpeg4_video_profiles[] = { | ||
| 97 | { FF_PROFILE_MPEG4_SIMPLE, "Simple Profile" }, | ||
| 98 | { FF_PROFILE_MPEG4_SIMPLE_SCALABLE, "Simple Scalable Profile" }, | ||
| 99 | { FF_PROFILE_MPEG4_CORE, "Core Profile" }, | ||
| 100 | { FF_PROFILE_MPEG4_MAIN, "Main Profile" }, | ||
| 101 | { FF_PROFILE_MPEG4_N_BIT, "N-bit Profile" }, | ||
| 102 | { FF_PROFILE_MPEG4_SCALABLE_TEXTURE, "Scalable Texture Profile" }, | ||
| 103 | { FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION, "Simple Face Animation Profile" }, | ||
| 104 | { FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE, "Basic Animated Texture Profile" }, | ||
| 105 | { FF_PROFILE_MPEG4_HYBRID, "Hybrid Profile" }, | ||
| 106 | { FF_PROFILE_MPEG4_ADVANCED_REAL_TIME, "Advanced Real Time Simple Profile" }, | ||
| 107 | { FF_PROFILE_MPEG4_CORE_SCALABLE, "Code Scalable Profile" }, | ||
| 108 | { FF_PROFILE_MPEG4_ADVANCED_CODING, "Advanced Coding Profile" }, | ||
| 109 | { FF_PROFILE_MPEG4_ADVANCED_CORE, "Advanced Core Profile" }, | ||
| 110 | { FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE, "Advanced Scalable Texture Profile" }, | ||
| 111 | { FF_PROFILE_MPEG4_SIMPLE_STUDIO, "Simple Studio Profile" }, | ||
| 112 | { FF_PROFILE_MPEG4_ADVANCED_SIMPLE, "Advanced Simple Profile" }, | ||
| 113 | { FF_PROFILE_UNKNOWN }, | ||
| 114 | }; | ||
| 115 | |||
| 116 | const AVProfile ff_vc1_profiles[] = { | ||
| 117 | { FF_PROFILE_VC1_SIMPLE, "Simple" }, | ||
| 118 | { FF_PROFILE_VC1_MAIN, "Main" }, | ||
| 119 | { FF_PROFILE_VC1_COMPLEX, "Complex" }, | ||
| 120 | { FF_PROFILE_VC1_ADVANCED, "Advanced" }, | ||
| 121 | { FF_PROFILE_UNKNOWN }, | ||
| 122 | }; | ||
| 123 | |||
| 124 | #endif /* !CONFIG_SMALL */ | ||
| @@ -0,0 +1,34 @@ | |||
| 1 | /* | ||
| 2 | * | ||
| 3 | * This file is part of FFmpeg. | ||
| 4 | * | ||
| 5 | * FFmpeg is free software; you can redistribute it and/or | ||
| 6 | * modify it under the terms of the GNU Lesser General Public | ||
| 7 | * License as published by the Free Software Foundation; either | ||
| 8 | * version 2.1 of the License, or (at your option) any later version. | ||
| 9 | * | ||
| 10 | * FFmpeg is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 13 | * Lesser General Public License for more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU Lesser General Public | ||
| 16 | * License along with FFmpeg; if not, write to the Free Software | ||
| 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 18 | */ | ||
| 19 | |||
| 20 | #ifndef AVCODEC_PROFILES_H | ||
| 21 | #define AVCODEC_PROFILES_H | ||
| 22 | |||
| 23 | #include "avcodec.h" | ||
| 24 | |||
| 25 | extern const AVProfile ff_aac_profiles[]; | ||
| 26 | extern const AVProfile ff_dca_profiles[]; | ||
| 27 | extern const AVProfile ff_h264_profiles[]; | ||
| 28 | extern const AVProfile ff_hevc_profiles[]; | ||
| 29 | extern const AVProfile ff_jpeg2000_profiles[]; | ||
| 30 | extern const AVProfile ff_mpeg2_video_profiles[]; | ||
| 31 | extern const AVProfile ff_mpeg4_video_profiles[]; | ||
| 32 | extern const AVProfile ff_vc1_profiles[]; | ||
| 33 | |||
| 34 | #endif | ||
| @@ -2862,6 +2862,21 @@ const char *av_get_profile_name(const AVCodec *codec, int profile) · 2861 unmodified lines | |||
| 2862 | return NULL; | 2862 | return NULL; |
| 2863 | } | 2863 | } |
| 2864 | 2864 | ||
| 2865 | const char *avcodec_profile_name(enum AVCodecID codec_id, int profile) | ||
| 2866 | { | ||
| 2867 | const AVCodecDescriptor *desc = avcodec_descriptor_get(codec_id); | ||
| 2868 | const AVProfile *p; | ||
| 2869 | |||
| 2870 | if (profile == FF_PROFILE_UNKNOWN || !desc || !desc->profiles) | ||
| 2871 | return NULL; | ||
| 2872 | |||
| 2873 | for (p = desc->profiles; p->profile != FF_PROFILE_UNKNOWN; p++) | ||
| 2874 | if (p->profile == profile) | ||
| 2875 | return p->name; | ||
| 2876 | |||
| 2877 | return NULL; | ||
| 2878 | } | ||
| 2879 | |||
| 2865 | unsigned avcodec_version(void) | 2880 | unsigned avcodec_version(void) |
| 2866 | { | 2881 | { |
| 2867 | // av_assert0(AV_CODEC_ID_V410==164); | 2882 | // av_assert0(AV_CODEC_ID_V410==164); |
| @@ -34,6 +34,7 @@ · 33 unmodified lines | |||
| 34 | #include "mpegvideo.h" | 34 | #include "mpegvideo.h" |
| 35 | #include "msmpeg4.h" | 35 | #include "msmpeg4.h" |
| 36 | #include "msmpeg4data.h" | 36 | #include "msmpeg4data.h" |
| 37 | #include "profiles.h" | ||
| 37 | #include "vc1.h" | 38 | #include "vc1.h" |
| 38 | #include "vc1data.h" | 39 | #include "vc1data.h" |
| 39 | #include "vdpau_compat.h" | 40 | #include "vdpau_compat.h" |
| @@ -1103,14 +1104,6 @@ err: · 1063 unmodified lines | |||
| 1103 | } | 1104 | } |
| 1104 | 1105 | ||
| 1105 | 1106 | ||
| 1106 | static const AVProfile profiles[] = { | ||
| 1107 | { FF_PROFILE_VC1_SIMPLE, "Simple" }, | ||
| 1108 | { FF_PROFILE_VC1_MAIN, "Main" }, | ||
| 1109 | { FF_PROFILE_VC1_COMPLEX, "Complex" }, | ||
| 1110 | { FF_PROFILE_VC1_ADVANCED, "Advanced" }, | ||
| 1111 | { FF_PROFILE_UNKNOWN }, | ||
| 1112 | }; | ||
| 1113 | |||
| 1114 | static const enum AVPixelFormat vc1_hwaccel_pixfmt_list_420[] = { | 1107 | static const enum AVPixelFormat vc1_hwaccel_pixfmt_list_420[] = { |
| 1115 | #if CONFIG_VC1_DXVA2_HWACCEL | 1108 | #if CONFIG_VC1_DXVA2_HWACCEL |
| 1116 | AV_PIX_FMT_DXVA2_VLD, | 1109 | AV_PIX_FMT_DXVA2_VLD, |
| @@ -1140,7 +1133,7 @@ AVCodec ff_vc1_decoder = { · 23 unmodified lines | |||
| 1140 | .flush = ff_mpeg_flush, | 1133 | .flush = ff_mpeg_flush, |
| 1141 | .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, | 1134 | .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, |
| 1142 | .pix_fmts = vc1_hwaccel_pixfmt_list_420, | 1135 | .pix_fmts = vc1_hwaccel_pixfmt_list_420, |
| 1143 | .profiles = NULL_IF_CONFIG_SMALL(profiles) | 1136 | .profiles = NULL_IF_CONFIG_SMALL(ff_vc1_profiles) |
| 1144 | }; | 1137 | }; |
| 1145 | 1138 | ||
| 1146 | #if CONFIG_WMV3_DECODER | 1139 | #if CONFIG_WMV3_DECODER |
| @@ -1156,7 +1149,7 @@ AVCodec ff_wmv3_decoder = { · 9 unmodified lines | |||
| 1156 | .flush = ff_mpeg_flush, | 1149 | .flush = ff_mpeg_flush, |
| 1157 | .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, | 1150 | .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, |
| 1158 | .pix_fmts = vc1_hwaccel_pixfmt_list_420, | 1151 | .pix_fmts = vc1_hwaccel_pixfmt_list_420, |
| 1159 | .profiles = NULL_IF_CONFIG_SMALL(profiles) | 1152 | .profiles = NULL_IF_CONFIG_SMALL(ff_vc1_profiles) |
| 1160 | }; | 1153 | }; |
| 1161 | #endif | 1154 | #endif |
| 1162 | 1155 | ||
| @@ -29,7 +29,7 @@ · 28 unmodified lines | |||
| 29 | #include "libavutil/version.h" | 29 | #include "libavutil/version.h" |
| 30 | 30 | ||
| 31 | #define LIBAVCODEC_VERSION_MAJOR 57 | 31 | #define LIBAVCODEC_VERSION_MAJOR 57 |
| 32 | #define LIBAVCODEC_VERSION_MINOR 20 | 32 | #define LIBAVCODEC_VERSION_MINOR 21 |
| 33 | #define LIBAVCODEC_VERSION_MICRO 100 | 33 | #define LIBAVCODEC_VERSION_MICRO 100 |
| 34 | 34 | ||
| 35 | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | 35 | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |