* commit 'ca22d1dea2842fca0422dd1d2bd09e7eb2c8f118': vdpau: add a convenience function for getting a decoder profile. Conflicts: doc/APIchanges libavcodec/vdpau.c libavcodec/vdpau.h libavcodec/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.2-rc1
| @@ -15,6 +15,9 @@ libavutil: 2012-10-22 | |||||
| API changes, most recent first: | API changes, most recent first: | ||||
| 2013-11-xx - xxxxxxx - lavc 55.26.0 - vdpau.h | |||||
| Add av_vdpau_get_profile(). | |||||
| 2013-11-xx - xxxxxxx - lavc 55.41.100 / 55.25.0 - avcodec.h | 2013-11-xx - xxxxxxx - lavc 55.41.100 / 55.25.0 - avcodec.h | ||||
| lavu 52.51.100 - frame.h | lavu 52.51.100 - frame.h | ||||
| Add ITU-R BT.2020 and other not yet included values to color primaries, | Add ITU-R BT.2020 and other not yet included values to color primaries, | ||||
| @@ -438,4 +438,47 @@ void ff_vdpau_mpeg4_decode_picture(MpegEncContext *s, const uint8_t *buf, | |||||
| } | } | ||||
| #endif /* CONFIG_MPEG4_VDPAU_DECODER */ | #endif /* CONFIG_MPEG4_VDPAU_DECODER */ | ||||
| int av_vdpau_get_profile(AVCodecContext *avctx, VdpDecoderProfile *profile) | |||||
| { | |||||
| #define PROFILE(prof) \ | |||||
| do { \ | |||||
| *profile = prof; \ | |||||
| return 0; \ | |||||
| } while (0) | |||||
| switch (avctx->codec_id) { | |||||
| case AV_CODEC_ID_MPEG1VIDEO: PROFILE(VDP_DECODER_PROFILE_MPEG1); | |||||
| case AV_CODEC_ID_MPEG2VIDEO: | |||||
| switch (avctx->profile) { | |||||
| case FF_PROFILE_MPEG2_MAIN: PROFILE(VDP_DECODER_PROFILE_MPEG2_MAIN); | |||||
| case FF_PROFILE_MPEG2_SIMPLE: PROFILE(VDP_DECODER_PROFILE_MPEG2_SIMPLE); | |||||
| default: return AVERROR(EINVAL); | |||||
| } | |||||
| case AV_CODEC_ID_H263: PROFILE(VDP_DECODER_PROFILE_MPEG4_PART2_ASP); | |||||
| case AV_CODEC_ID_MPEG4: | |||||
| switch (avctx->profile) { | |||||
| case FF_PROFILE_MPEG4_SIMPLE: PROFILE(VDP_DECODER_PROFILE_MPEG4_PART2_SP); | |||||
| case FF_PROFILE_MPEG4_ADVANCED_SIMPLE: PROFILE(VDP_DECODER_PROFILE_MPEG4_PART2_ASP); | |||||
| default: return AVERROR(EINVAL); | |||||
| } | |||||
| case AV_CODEC_ID_H264: | |||||
| switch (avctx->profile) { | |||||
| case FF_PROFILE_H264_CONSTRAINED_BASELINE: | |||||
| case FF_PROFILE_H264_BASELINE: PROFILE(VDP_DECODER_PROFILE_H264_BASELINE); | |||||
| case FF_PROFILE_H264_MAIN: PROFILE(VDP_DECODER_PROFILE_H264_MAIN); | |||||
| case FF_PROFILE_H264_HIGH: PROFILE(VDP_DECODER_PROFILE_H264_HIGH); | |||||
| default: return AVERROR(EINVAL); | |||||
| } | |||||
| case AV_CODEC_ID_WMV3: | |||||
| case AV_CODEC_ID_VC1: | |||||
| switch (avctx->profile) { | |||||
| case FF_PROFILE_VC1_SIMPLE: PROFILE(VDP_DECODER_PROFILE_VC1_SIMPLE); | |||||
| case FF_PROFILE_VC1_MAIN: PROFILE(VDP_DECODER_PROFILE_VC1_MAIN); | |||||
| case FF_PROFILE_VC1_ADVANCED: PROFILE(VDP_DECODER_PROFILE_VC1_ADVANCED); | |||||
| default: return AVERROR(EINVAL); | |||||
| } | |||||
| } | |||||
| return AVERROR(EINVAL); | |||||
| } | |||||
| /* @}*/ | /* @}*/ | ||||
| @@ -53,6 +53,8 @@ | |||||
| #include <vdpau/vdpau_x11.h> | #include <vdpau/vdpau_x11.h> | ||||
| #include "libavutil/avconfig.h" | #include "libavutil/avconfig.h" | ||||
| #include "libavutil/attributes.h" | #include "libavutil/attributes.h" | ||||
| #include "avcodec.h" | |||||
| #include "version.h" | #include "version.h" | ||||
| #if FF_API_BUFS_VDPAU | #if FF_API_BUFS_VDPAU | ||||
| @@ -143,6 +145,19 @@ AVVDPAUContext *av_alloc_vdpaucontext(void); | |||||
| AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *); | AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *); | ||||
| void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2); | void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2); | ||||
| /** | |||||
| * Get a decoder profile that should be used for initializing a VDPAU decoder. | |||||
| * Should be called from the AVCodecContext.get_format() callback. | |||||
| * | |||||
| * @param avctx the codec context being used for decoding the stream | |||||
| * @param profile a pointer into which the result will be written on success. | |||||
| * The contents of profile are undefined if this function returns | |||||
| * an error. | |||||
| * | |||||
| * @return 0 on success (non-negative), a negative AVERROR on failure. | |||||
| */ | |||||
| int av_vdpau_get_profile(AVCodecContext *avctx, VdpDecoderProfile *profile); | |||||
| #if FF_API_CAP_VDPAU | #if FF_API_CAP_VDPAU | ||||
| /** @brief The videoSurface is used for rendering. */ | /** @brief The videoSurface is used for rendering. */ | ||||
| #define FF_VDPAU_STATE_USED_FOR_RENDER 1 | #define FF_VDPAU_STATE_USED_FOR_RENDER 1 | ||||
| @@ -29,8 +29,8 @@ | |||||
| #include "libavutil/avutil.h" | #include "libavutil/avutil.h" | ||||
| #define LIBAVCODEC_VERSION_MAJOR 55 | #define LIBAVCODEC_VERSION_MAJOR 55 | ||||
| #define LIBAVCODEC_VERSION_MINOR 41 | |||||
| #define LIBAVCODEC_VERSION_MICRO 101 | |||||
| #define LIBAVCODEC_VERSION_MINOR 42 | |||||
| #define LIBAVCODEC_VERSION_MICRO 100 | |||||
| #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ | ||||
| LIBAVCODEC_VERSION_MINOR, \ | LIBAVCODEC_VERSION_MINOR, \ | ||||