Commit cc48409b authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit 'e7c5e17d'

* commit 'e7c5e17d':
  vda: Make output CVPixelBuffer format configurable

Conflicts:
	doc/APIchanges
	libavcodec/version.h
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents a3adba35 e7c5e17d
...@@ -15,6 +15,9 @@ libavutil: 2014-08-09 ...@@ -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) ...@@ -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 { ...@@ -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); ...@@ -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) ...@@ -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 @@ ...@@ -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, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment