* commit 'e7c5e17d4fbd7c83fb331bf327e25ebd8e6a8623': vda: Make output CVPixelBuffer format configurable Conflicts: doc/APIchanges libavcodec/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>tags/n2.7
@@ -15,6 +15,9 @@ libavutil: 2014-08-09 | |||||
API changes, most recent first: | API changes, most recent first: | ||||
2015-05-13 - xxxxxxx - lavc 56.39.100 / 56.23.0 | |||||
Add av_vda_default_init2. | |||||
2015-05-11 - XXXXXXX - lavf 56.33.100 - avformat.h | 2015-05-11 - XXXXXXX - lavf 56.33.100 - avformat.h | ||||
Add AVOpenCallback AVFormatContext.open_cb | Add AVOpenCallback AVFormatContext.open_cb | ||||
@@ -28,15 +28,22 @@ AVVDAContext *av_vda_alloc_context(void) | |||||
{ | { | ||||
AVVDAContext *ret = av_mallocz(sizeof(*ret)); | AVVDAContext *ret = av_mallocz(sizeof(*ret)); | ||||
if (ret) | |||||
if (ret) { | |||||
ret->output_callback = ff_vda_output_callback; | ret->output_callback = ff_vda_output_callback; | ||||
ret->cv_pix_fmt_type = kCVPixelFormatType_422YpCbCr8; | |||||
} | |||||
return ret; | return ret; | ||||
} | } | ||||
int av_vda_default_init(AVCodecContext *avctx) | int av_vda_default_init(AVCodecContext *avctx) | ||||
{ | { | ||||
avctx->hwaccel_context = av_vda_alloc_context(); | |||||
return av_vda_default_init2(avctx, NULL); | |||||
} | |||||
int av_vda_default_init2(AVCodecContext *avctx, AVVDAContext *vdactx) | |||||
{ | |||||
avctx->hwaccel_context = vdactx ?: av_vda_alloc_context(); | |||||
if (!avctx->hwaccel_context) | if (!avctx->hwaccel_context) | ||||
return AVERROR(ENOMEM); | return AVERROR(ENOMEM); | ||||
return ff_vda_default_init(avctx); | return ff_vda_default_init(avctx); | ||||
@@ -171,6 +171,12 @@ typedef struct AVVDAContext { | |||||
* Set by av_vda_alloc_context(). | * Set by av_vda_alloc_context(). | ||||
*/ | */ | ||||
VDADecoderOutputCallback output_callback; | VDADecoderOutputCallback output_callback; | ||||
/** | |||||
* CVPixelBuffer Format Type that VDA will use for decoded frames; set by | |||||
* the caller. | |||||
*/ | |||||
OSType cv_pix_fmt_type; | |||||
} AVVDAContext; | } AVVDAContext; | ||||
/** | /** | ||||
@@ -198,6 +204,17 @@ AVVDAContext *av_vda_alloc_context(void); | |||||
*/ | */ | ||||
int av_vda_default_init(AVCodecContext *avctx); | int av_vda_default_init(AVCodecContext *avctx); | ||||
/** | |||||
* This is a convenience function that creates and sets up the VDA context using | |||||
* an internal implementation. | |||||
* | |||||
* @param avctx the corresponding codec context | |||||
* @param vdactx the VDA context to use | |||||
* | |||||
* @return >= 0 on success, a negative AVERROR code on failure | |||||
*/ | |||||
int av_vda_default_init2(AVCodecContext *avctx, AVVDAContext *vdactx); | |||||
/** | /** | ||||
* This function must be called to free the VDA context initialized with | * This function must be called to free the VDA context initialized with | ||||
* av_vda_default_init(). | * av_vda_default_init(). | ||||
@@ -430,7 +430,7 @@ int ff_vda_default_init(AVCodecContext *avctx) | |||||
CFMutableDictionaryRef buffer_attributes; | CFMutableDictionaryRef buffer_attributes; | ||||
CFMutableDictionaryRef io_surface_properties; | CFMutableDictionaryRef io_surface_properties; | ||||
CFNumberRef cv_pix_fmt; | CFNumberRef cv_pix_fmt; | ||||
int32_t fmt = 'avc1', pix_fmt = kCVPixelFormatType_422YpCbCr8; | |||||
int32_t fmt = 'avc1', pix_fmt = vda_ctx->cv_pix_fmt_type; | |||||
// kCVPixelFormatType_420YpCbCr8Planar; | // kCVPixelFormatType_420YpCbCr8Planar; | ||||
@@ -29,7 +29,7 @@ | |||||
#include "libavutil/version.h" | #include "libavutil/version.h" | ||||
#define LIBAVCODEC_VERSION_MAJOR 56 | #define LIBAVCODEC_VERSION_MAJOR 56 | ||||
#define LIBAVCODEC_VERSION_MINOR 38 | |||||
#define LIBAVCODEC_VERSION_MINOR 39 | |||||
#define LIBAVCODEC_VERSION_MICRO 100 | #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, \ | ||||