diff options
Diffstat (limited to 'libavcodec')
47 files changed, 96 insertions, 15 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 5624835023..ec952dd0e8 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -886,6 +886,19 @@ typedef struct RcOverride{ #define AV_CODEC_CAP_VARIABLE_FRAME_SIZE (1 << 16) /** + * Codec is backed by a hardware implementation. Typically used to + * identify a non-hwaccel hardware decoder. + */ +#define AV_CODEC_CAP_HARDWARE (1 << 17) + +/** + * Codec is potentially backed by a hardware implementation, but not + * necessarily. This is used instead of AV_CODEC_CAP_HARDWARE, if the + * implementation provides some sort of internal fallback. + */ +#define AV_CODEC_CAP_HYBRID (1 << 18) + +/** * Pan Scan area. * This specifies the area which should be displayed. * Note there may be multiple such areas for one frame. @@ -2770,6 +2783,18 @@ typedef struct AVCodec { const AVClass *priv_class; ///< AVClass for the private context const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN} + /** + * Group name of the codec implementation. + * This is a short symbolic name of the wrapper backing this codec. A + * wrapper uses some kind of external implementation for the codec, such + * as an external library, or a codec implementation provided by the OS or + * the hardware. + * If this field is NULL, this is a builtin, libavcodec native decoder. + * If non-NULL, this will be the suffix in AVCodec.name in most cases + * (usually AVCodec.name will be of the form "<codec_name>_<wrapper_name>"). + */ + const char *wrapper_name; + /***************************************************************** * No fields below this line are part of the public API. They * may not be used outside of libavcodec and can be changed and diff --git a/libavcodec/libdcadec.c b/libavcodec/libdcadec.c index b88f80763b..d44f4d931e 100644 --- a/libavcodec/libdcadec.c +++ b/libavcodec/libdcadec.c @@ -202,4 +202,5 @@ AVCodec ff_libdcadec_decoder = { .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_NONE }, .profiles = NULL_IF_CONFIG_SMALL(profiles), + .wrapper_name = "libdcadec", }; diff --git a/libavcodec/libfaac.c b/libavcodec/libfaac.c index 5cdbe27686..db04a37701 100644 --- a/libavcodec/libfaac.c +++ b/libavcodec/libfaac.c @@ -237,4 +237,5 @@ AVCodec ff_libfaac_encoder = { AV_SAMPLE_FMT_NONE }, .profiles = NULL_IF_CONFIG_SMALL(profiles), .channel_layouts = faac_channel_layouts, + .wrapper_name = "libfaac", }; diff --git a/libavcodec/libfdk-aacdec.c b/libavcodec/libfdk-aacdec.c index aa30f93ef6..3be65155b5 100644 --- a/libavcodec/libfdk-aacdec.c +++ b/libavcodec/libfdk-aacdec.c @@ -386,4 +386,5 @@ AVCodec ff_libfdk_aac_decoder = { .priv_class = &fdk_aac_dec_class, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, + .wrapper_name = "libfdk", }; diff --git a/libavcodec/libfdk-aacenc.c b/libavcodec/libfdk-aacenc.c index 03879bbf5a..26dfb6dc0b 100644 --- a/libavcodec/libfdk-aacenc.c +++ b/libavcodec/libfdk-aacenc.c @@ -430,4 +430,5 @@ AVCodec ff_libfdk_aac_encoder = { .profiles = profiles, .supported_samplerates = aac_sample_rates, .channel_layouts = aac_channel_layout, + .wrapper_name = "libfdk", }; diff --git a/libavcodec/libgsmdec.c b/libavcodec/libgsmdec.c index e06fe52762..419f36489b 100644 --- a/libavcodec/libgsmdec.c +++ b/libavcodec/libgsmdec.c @@ -130,6 +130,7 @@ AVCodec ff_libgsm_decoder = { .decode = libgsm_decode_frame, .flush = libgsm_flush, .capabilities = AV_CODEC_CAP_DR1, + .wrapper_name = "libgsm", }; AVCodec ff_libgsm_ms_decoder = { @@ -143,4 +144,5 @@ AVCodec ff_libgsm_ms_decoder = { .decode = libgsm_decode_frame, .flush = libgsm_flush, .capabilities = AV_CODEC_CAP_DR1, + .wrapper_name = "libgsm", }; diff --git a/libavcodec/libgsmenc.c b/libavcodec/libgsmenc.c index 4bb4075b2f..1d039b1983 100644 --- a/libavcodec/libgsmenc.c +++ b/libavcodec/libgsmenc.c @@ -117,6 +117,7 @@ AVCodec ff_libgsm_encoder = { .close = libgsm_encode_close, .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }, + .wrapper_name = "libgsm", }; AVCodec ff_libgsm_ms_encoder = { @@ -129,4 +130,5 @@ AVCodec ff_libgsm_ms_encoder = { .close = libgsm_encode_close, .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }, + .wrapper_name = "libgsm", }; diff --git a/libavcodec/libilbc.c b/libavcodec/libilbc.c index 80b69a562c..4b1619936e 100644 --- a/libavcodec/libilbc.c +++ b/libavcodec/libilbc.c @@ -197,4 +197,5 @@ AVCodec ff_libilbc_encoder = { AV_SAMPLE_FMT_NONE }, .defaults = ilbc_encode_defaults, .priv_class = &ilbc_enc_class, + .wrapper_name = "libbilbc", }; diff --git a/libavcodec/libkvazaar.c b/libavcodec/libkvazaar.c index efc98f1f65..fa64bf59df 100644 --- a/libavcodec/libkvazaar.c +++ b/libavcodec/libkvazaar.c @@ -301,4 +301,6 @@ AVCodec ff_libkvazaar_encoder = { .close = libkvazaar_close, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, + + .wrapper_name = "libkvazaar", }; diff --git a/libavcodec/libmp3lame.c b/libavcodec/libmp3lame.c index e4d0e00103..1fe26d12a0 100644 --- a/libavcodec/libmp3lame.c +++ b/libavcodec/libmp3lame.c @@ -315,4 +315,5 @@ AVCodec ff_libmp3lame_encoder = { 0 }, .priv_class = &libmp3lame_class, .defaults = libmp3lame_defaults, + .wrapper_name = "libmp3lame", }; diff --git a/libavcodec/libopencore-amr.c b/libavcodec/libopencore-amr.c index 8200f6719c..8ce5a712db 100644 --- a/libavcodec/libopencore-amr.c +++ b/libavcodec/libopencore-amr.c @@ -379,6 +379,7 @@ AVCodec ff_libopencore_amrwb_decoder = { .close = amr_wb_decode_close, .decode = amr_wb_decode_frame, .capabilities = AV_CODEC_CAP_DR1, + .wrapper_name = "libopencore_amrwb", }; #endif /* CONFIG_LIBOPENCORE_AMRWB_DECODER */ diff --git a/libavcodec/libopenh264dec.c b/libavcodec/libopenh264dec.c index d65d63914c..cdb8d527cf 100644 --- a/libavcodec/libopenh264dec.c +++ b/libavcodec/libopenh264dec.c @@ -145,4 +145,5 @@ AVCodec ff_libopenh264_decoder = { .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS | FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .bsfs = "h264_mp4toannexb", + .wrapper_name = "libopenh264", }; diff --git a/libavcodec/libopenh264enc.c b/libavcodec/libopenh264enc.c index 3b32790bae..d075cb0854 100644 --- a/libavcodec/libopenh264enc.c +++ b/libavcodec/libopenh264enc.c @@ -301,4 +301,5 @@ AVCodec ff_libopenh264_encoder = { .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &class, + .wrapper_name = "libopenh264", }; diff --git a/libavcodec/libopenjpegdec.c b/libavcodec/libopenjpegdec.c index 6b8e210ac6..798b33f13f 100644 --- a/libavcodec/libopenjpegdec.c +++ b/libavcodec/libopenjpegdec.c @@ -438,4 +438,5 @@ AVCodec ff_libopenjpeg_decoder = { .decode = libopenjpeg_decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, .priv_class = &class, + .wrapper_name = "libopenjpeg", }; diff --git a/libavcodec/libopenjpegenc.c b/libavcodec/libopenjpegenc.c index d1af0210e3..953d733c37 100644 --- a/libavcodec/libopenjpegenc.c +++ b/libavcodec/libopenjpegenc.c @@ -426,4 +426,5 @@ AVCodec ff_libopenjpeg_encoder = { AV_PIX_FMT_NONE }, .priv_class = &class, + .wrapper_name = "libopenjpeg", }; diff --git a/libavcodec/libopusdec.c b/libavcodec/libopusdec.c index 781635615c..1dac1a01ab 100644 --- a/libavcodec/libopusdec.c +++ b/libavcodec/libopusdec.c @@ -177,4 +177,5 @@ AVCodec ff_libopus_decoder = { .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }, + .wrapper_name = "libopus", }; diff --git a/libavcodec/libopusenc.c b/libavcodec/libopusenc.c index 500e58c85e..823cab176a 100644 --- a/libavcodec/libopusenc.c +++ b/libavcodec/libopusenc.c @@ -422,4 +422,5 @@ AVCodec ff_libopus_encoder = { .supported_samplerates = libopus_sample_rates, .priv_class = &libopus_class, .defaults = libopus_defaults, + .wrapper_name = "libopus", }; diff --git a/libavcodec/libschroedingerdec.c b/libavcodec/libschroedingerdec.c index 69eed01ce0..246ac486f4 100644 --- a/libavcodec/libschroedingerdec.c +++ b/libavcodec/libschroedingerdec.c @@ -393,4 +393,5 @@ AVCodec ff_libschroedinger_decoder = { .decode = libschroedinger_decode_frame, .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1, .flush = libschroedinger_flush, + .wrapper_name = "libschroedinger", }; diff --git a/libavcodec/libschroedingerenc.c b/libavcodec/libschroedingerenc.c index bf03cb78fc..4a1be9407b 100644 --- a/libavcodec/libschroedingerenc.c +++ b/libavcodec/libschroedingerenc.c @@ -481,4 +481,5 @@ AVCodec ff_libschroedinger_encoder = { .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE }, + .wrapper_name = "libschroedinger", }; diff --git a/libavcodec/libspeexdec.c b/libavcodec/libspeexdec.c index 949a9344c1..e8775fd146 100644 --- a/libavcodec/libspeexdec.c +++ b/libavcodec/libspeexdec.c @@ -179,4 +179,5 @@ AVCodec ff_libspeex_decoder = { .decode = libspeex_decode_frame, .flush = libspeex_decode_flush, .capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1, + .wrapper_name = "libspeex", }; diff --git a/libavcodec/libspeexenc.c b/libavcodec/libspeexenc.c index eb02e8ec6d..b17761fd31 100644 --- a/libavcodec/libspeexenc.c +++ b/libavcodec/libspeexenc.c @@ -366,4 +366,5 @@ AVCodec ff_libspeex_encoder = { .supported_samplerates = (const int[]){ 8000, 16000, 32000, 0 }, .priv_class = &class, .defaults = defaults, + .wrapper_name = "libspeex", }; diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c index b329ed3b34..2676df4233 100644 --- a/libavcodec/libtheoraenc.c +++ b/libavcodec/libtheoraenc.c @@ -382,4 +382,5 @@ AVCodec ff_libtheora_encoder = { .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE }, + .wrapper_name = "libtheora", }; diff --git a/libavcodec/libtwolame.c b/libavcodec/libtwolame.c index 714c30acde..9b0fe165bc 100644 --- a/libavcodec/libtwolame.c +++ b/libavcodec/libtwolame.c @@ -222,4 +222,5 @@ AVCodec ff_libtwolame_encoder = { AV_CH_LAYOUT_STEREO, 0 }, .supported_samplerates = twolame_samplerates, + .wrapper_name = "libtwolame", }; diff --git a/libavcodec/libvo-aacenc.c b/libavcodec/libvo-aacenc.c index 876ef4c197..ae3b54e716 100644 --- a/libavcodec/libvo-aacenc.c +++ b/libavcodec/libvo-aacenc.c @@ -191,4 +191,5 @@ AVCodec ff_libvo_aacenc_encoder = { .capabilities = AV_CODEC_CAP_SMALL_LAST_FRAME | AV_CODEC_CAP_DELAY, .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }, + .wrapper_name = "libvo_aacenc", }; diff --git a/libavcodec/libvo-amrwbenc.c b/libavcodec/libvo-amrwbenc.c index 5439d66110..7be14c260d 100644 --- a/libavcodec/libvo-amrwbenc.c +++ b/libavcodec/libvo-amrwbenc.c @@ -154,4 +154,5 @@ AVCodec ff_libvo_amrwbenc_encoder = { .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_NONE }, .priv_class = &class, + .wrapper_name = "libvo_amrwbenc", }; diff --git a/libavcodec/libvorbis.c b/libavcodec/libvorbis.c index 3dfd589476..972ca6a59e 100644 --- a/libavcodec/libvorbis.c +++ b/libavcodec/libvorbis.c @@ -356,4 +356,5 @@ AVCodec ff_libvorbis_encoder = { AV_SAMPLE_FMT_NONE }, .priv_class = &class, .defaults = defaults, + .wrapper_name = "libvorbis", }; diff --git a/libavcodec/libvpxdec.c b/libavcodec/libvpxdec.c index 6d3b29fefa..84806702fb 100644 --- a/libavcodec/libvpxdec.c +++ b/libavcodec/libvpxdec.c @@ -137,6 +137,7 @@ AVCodec ff_libvpx_vp8_decoder = { .close = vp8_free, .decode = vp8_decode, .capabilities = AV_CODEC_CAP_AUTO_THREADS | AV_CODEC_CAP_DR1, + .wrapper_name = "libvpx", }; #endif /* CONFIG_LIBVPX_VP8_DECODER */ @@ -156,5 +157,6 @@ AVCodec ff_libvpx_vp9_decoder = { .close = vp8_free, .decode = vp8_decode, .capabilities = AV_CODEC_CAP_AUTO_THREADS, + .wrapper_name = "libvpx", }; #endif /* CONFIG_LIBVPX_VP9_DECODER */ diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 7e971fd97f..74d5a0c097 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -649,6 +649,7 @@ AVCodec ff_libvpx_vp8_encoder = { .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &class_vp8, .defaults = defaults, + .wrapper_name = "libvpx", }; #endif /* CONFIG_LIBVPX_VP8_ENCODER */ @@ -695,5 +696,6 @@ AVCodec ff_libvpx_vp9_encoder = { .profiles = NULL_IF_CONFIG_SMALL(profiles), .priv_class = &class_vp9, .defaults = defaults, + .wrapper_name = "libvpx", }; #endif /* CONFIG_LIBVPX_VP9_ENCODER */ diff --git a/libavcodec/libwavpackenc.c b/libavcodec/libwavpackenc.c index 1455d91b21..3f4fc7c608 100644 --- a/libavcodec/libwavpackenc.c +++ b/libavcodec/libwavpackenc.c @@ -191,4 +191,5 @@ AVCodec ff_libwavpack_encoder = { .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SMALL_LAST_FRAME, .sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_S32, AV_SAMPLE_FMT_NONE }, + .wrapper_name = "libwavpack", }; diff --git a/libavcodec/libwebpenc.c b/libavcodec/libwebpenc.c index ef311b7592..29683d7884 100644 --- a/libavcodec/libwebpenc.c +++ b/libavcodec/libwebpenc.c @@ -286,4 +286,5 @@ AVCodec ff_libwebp_encoder = { }, .priv_class = &class, .defaults = libwebp_defaults, + .wrapper_name = "libwebp", }; diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c index 4448d977cf..0dec12edd2 100644 --- a/libavcodec/libx264.c +++ b/libavcodec/libx264.c @@ -826,6 +826,7 @@ AVCodec ff_libx264_encoder = { .init_static_data = X264_init_static, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, + .wrapper_name = "libx264", }; #endif @@ -852,5 +853,6 @@ AVCodec ff_libx262_encoder = { .pix_fmts = pix_fmts_8bit, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, + .wrapper_name = "libx264", }; #endif diff --git a/libavcodec/libx265.c b/libavcodec/libx265.c index add05692c5..fd5452193b 100644 --- a/libavcodec/libx265.c +++ b/libavcodec/libx265.c @@ -382,4 +382,5 @@ AVCodec ff_libx265_encoder = { .priv_class = &class, .defaults = x265_defaults, .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AUTO_THREADS, + .wrapper_name = "libx265", }; diff --git a/libavcodec/libxavs.c b/libavcodec/libxavs.c index 24ddd22e5f..1a80b1a32c 100644 --- a/libavcodec/libxavs.c +++ b/libavcodec/libxavs.c @@ -480,4 +480,5 @@ AVCodec ff_libxavs_encoder = { .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &class, .defaults = xavs_defaults, + .wrapper_name = "libxavs", }; diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c index 896935d31e..ab2e67629a 100644 --- a/libavcodec/libxvid.c +++ b/libavcodec/libxvid.c @@ -925,4 +925,5 @@ AVCodec ff_libxvid_encoder = { .priv_class = &xvid_class, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, + .wrapper_name = "libxvid", }; diff --git a/libavcodec/mmaldec.c b/libavcodec/mmaldec.c index 023ebe80de..3e480ab49a 100644 --- a/libavcodec/mmaldec.c +++ b/libavcodec/mmaldec.c @@ -835,11 +835,12 @@ static const AVOption options[]={ .decode = ffmmal_decode, \ .flush = ffmmal_flush, \ .priv_class = &ffmmal_##NAME##_dec_class, \ - .capabilities = AV_CODEC_CAP_DELAY, \ + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, \ .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS, \ .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_MMAL, \ AV_PIX_FMT_YUV420P, \ AV_PIX_FMT_NONE}, \ + .wrapper_name = "mmal", \ }; FFMMAL_DEC(h264, AV_CODEC_ID_H264) diff --git a/libavcodec/qsvdec_h2645.c b/libavcodec/qsvdec_h2645.c index e3184d8749..03ba303c95 100644 --- a/libavcodec/qsvdec_h2645.c +++ b/libavcodec/qsvdec_h2645.c @@ -220,13 +220,14 @@ AVCodec ff_hevc_qsv_decoder = { .decode = qsv_decode_frame, .flush = qsv_decode_flush, .close = qsv_decode_close, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_HYBRID, .priv_class = &hevc_class, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_P010, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, .bsfs = "hevc_mp4toannexb", + .wrapper_name = "qsv", }; #endif @@ -262,12 +263,13 @@ AVCodec ff_h264_qsv_decoder = { .decode = qsv_decode_frame, .flush = qsv_decode_flush, .close = qsv_decode_close, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_HYBRID, .priv_class = &class, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_P010, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, .bsfs = "h264_mp4toannexb", + .wrapper_name = "qsv", }; #endif diff --git a/libavcodec/qsvdec_other.c b/libavcodec/qsvdec_other.c index 97a763579a..0cea4eee92 100644 --- a/libavcodec/qsvdec_other.c +++ b/libavcodec/qsvdec_other.c @@ -190,11 +190,12 @@ AVCodec ff_mpeg2_qsv_decoder = { .decode = qsv_decode_frame, .flush = qsv_decode_flush, .close = qsv_decode_close, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_HYBRID, .priv_class = &mpeg2_qsv_class, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, + .wrapper_name = "qsv", }; #endif @@ -225,11 +226,12 @@ AVCodec ff_vc1_qsv_decoder = { .decode = qsv_decode_frame, .flush = qsv_decode_flush, .close = qsv_decode_close, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_HYBRID, .priv_class = &vc1_qsv_class, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, + .wrapper_name = "qsv", }; #endif @@ -260,10 +262,11 @@ AVCodec ff_vp8_qsv_decoder = { .decode = qsv_decode_frame, .flush = qsv_decode_flush, .close = qsv_decode_close, - .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_HYBRID, .priv_class = &vp8_qsv_class, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, + .wrapper_name = "qsv", }; #endif diff --git a/libavcodec/qsvenc_h264.c b/libavcodec/qsvenc_h264.c index 1365faccea..1552d7691d 100644 --- a/libavcodec/qsvenc_h264.c +++ b/libavcodec/qsvenc_h264.c @@ -127,7 +127,7 @@ AVCodec ff_h264_qsv_encoder = { .init = qsv_enc_init, .encode2 = qsv_enc_frame, .close = qsv_enc_close, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_P010, AV_PIX_FMT_QSV, @@ -135,4 +135,5 @@ AVCodec ff_h264_qsv_encoder = { .priv_class = &class, .defaults = qsv_enc_defaults, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .wrapper_name = "qsv", }; diff --git a/libavcodec/qsvenc_hevc.c b/libavcodec/qsvenc_hevc.c index dbb55e2f18..471d174873 100644 --- a/libavcodec/qsvenc_hevc.c +++ b/libavcodec/qsvenc_hevc.c @@ -272,7 +272,7 @@ AVCodec ff_hevc_qsv_encoder = { .init = qsv_enc_init, .encode2 = qsv_enc_frame, .close = qsv_enc_close, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_P010, AV_PIX_FMT_QSV, @@ -280,4 +280,5 @@ AVCodec ff_hevc_qsv_encoder = { .priv_class = &class, .defaults = qsv_enc_defaults, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .wrapper_name = "qsv", }; diff --git a/libavcodec/qsvenc_jpeg.c b/libavcodec/qsvenc_jpeg.c index 3fa17f13ab..e11b74dc9f 100644 --- a/libavcodec/qsvenc_jpeg.c +++ b/libavcodec/qsvenc_jpeg.c @@ -83,9 +83,10 @@ AVCodec ff_mjpeg_qsv_encoder = { .init = qsv_enc_init, .encode2 = qsv_enc_frame, .close = qsv_enc_close, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, .priv_class = &class, + .wrapper_name = "qsv", }; diff --git a/libavcodec/qsvenc_mpeg2.c b/libavcodec/qsvenc_mpeg2.c index f29f445182..9986d8b1e4 100644 --- a/libavcodec/qsvenc_mpeg2.c +++ b/libavcodec/qsvenc_mpeg2.c @@ -104,11 +104,12 @@ AVCodec ff_mpeg2_qsv_encoder = { .init = qsv_enc_init, .encode2 = qsv_enc_frame, .close = qsv_enc_close, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HYBRID, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_NV12, AV_PIX_FMT_QSV, AV_PIX_FMT_NONE }, .priv_class = &class, .defaults = qsv_enc_defaults, .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .wrapper_name = "qsv", }; diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c index 6b47d932b6..b7eee756e1 100644 --- a/libavcodec/vaapi_encode_h264.c +++ b/libavcodec/vaapi_encode_h264.c @@ -1074,10 +1074,11 @@ AVCodec ff_h264_vaapi_encoder = { .encode2 = &ff_vaapi_encode2, .close = &vaapi_encode_h264_close, .priv_class = &vaapi_encode_h264_class, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, .defaults = vaapi_encode_h264_defaults, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_VAAPI, AV_PIX_FMT_NONE, }, + .wrapper_name = "vaapi", }; diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c index 8fa277bf94..a9853a3aa0 100644 --- a/libavcodec/vaapi_encode_h265.c +++ b/libavcodec/vaapi_encode_h265.c @@ -1018,10 +1018,11 @@ AVCodec ff_hevc_vaapi_encoder = { .encode2 = &ff_vaapi_encode2, .close = &vaapi_encode_h265_close, .priv_class = &vaapi_encode_h265_class, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, .defaults = vaapi_encode_h265_defaults, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_VAAPI, AV_PIX_FMT_NONE, }, + .wrapper_name = "vaapi", }; diff --git a/libavcodec/vaapi_encode_mjpeg.c b/libavcodec/vaapi_encode_mjpeg.c index b96715146d..a3cd8caea6 100644 --- a/libavcodec/vaapi_encode_mjpeg.c +++ b/libavcodec/vaapi_encode_mjpeg.c @@ -422,9 +422,11 @@ AVCodec ff_mjpeg_vaapi_encoder = { .encode2 = &ff_vaapi_encode2, .close = &ff_vaapi_encode_close, .priv_class = &vaapi_encode_mjpeg_class, + .capabilities = AV_CODEC_CAP_HARDWARE, .defaults = vaapi_encode_mjpeg_defaults, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_VAAPI, AV_PIX_FMT_NONE, }, + .wrapper_name = "vaapi", }; diff --git a/libavcodec/vaapi_encode_mpeg2.c b/libavcodec/vaapi_encode_mpeg2.c index 8b956eb3e0..954b60733c 100644 --- a/libavcodec/vaapi_encode_mpeg2.c +++ b/libavcodec/vaapi_encode_mpeg2.c @@ -669,10 +669,11 @@ AVCodec ff_mpeg2_vaapi_encoder = { .init = &vaapi_encode_mpeg2_init, .encode2 = &ff_vaapi_encode2, .close = &vaapi_encode_mpeg2_close, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, .defaults = vaapi_encode_mpeg2_defaults, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_VAAPI, AV_PIX_FMT_NONE, }, + .wrapper_name = "vaapi", }; diff --git a/libavcodec/vaapi_encode_vp8.c b/libavcodec/vaapi_encode_vp8.c index d1a8087b82..857054dc64 100644 --- a/libavcodec/vaapi_encode_vp8.c +++ b/libavcodec/vaapi_encode_vp8.c @@ -259,10 +259,11 @@ AVCodec ff_vp8_vaapi_encoder = { .encode2 = &ff_vaapi_encode2, .close = &ff_vaapi_encode_close, .priv_class = &vaapi_encode_vp8_class, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, .defaults = vaapi_encode_vp8_defaults, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_VAAPI, AV_PIX_FMT_NONE, }, + .wrapper_name = "vaapi", }; diff --git a/libavcodec/vaapi_encode_vp9.c b/libavcodec/vaapi_encode_vp9.c index 5d3eec1775..6d9899d2a7 100644 --- a/libavcodec/vaapi_encode_vp9.c +++ b/libavcodec/vaapi_encode_vp9.c @@ -302,10 +302,11 @@ AVCodec ff_vp9_vaapi_encoder = { .encode2 = &ff_vaapi_encode2, .close = &ff_vaapi_encode_close, .priv_class = &vaapi_encode_vp9_class, - .capabilities = AV_CODEC_CAP_DELAY, + .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_HARDWARE, .defaults = vaapi_encode_vp9_defaults, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_VAAPI, AV_PIX_FMT_NONE, }, + .wrapper_name = "vaapi", }; |