From e7c5e17d4fbd7c83fb331bf327e25ebd8e6a8623 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sun, 10 May 2015 21:32:59 +0200 Subject: vda: Make output CVPixelBuffer format configurable This is useful for client programs to ask for nv12 surfaces instead of the current default (uyvy), since those are more efficient to decode to. Signed-off-by: Luca Barbato --- libavcodec/vda.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'libavcodec/vda.c') diff --git a/libavcodec/vda.c b/libavcodec/vda.c index f71fb16488..eb4b9982cb 100644 --- a/libavcodec/vda.c +++ b/libavcodec/vda.c @@ -28,15 +28,22 @@ AVVDAContext *av_vda_alloc_context(void) { AVVDAContext *ret = av_mallocz(sizeof(*ret)); - if (ret) + if (ret) { ret->output_callback = ff_vda_output_callback; + ret->cv_pix_fmt_type = kCVPixelFormatType_422YpCbCr8; + } return ret; } 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) return AVERROR(ENOMEM); return ff_vda_default_init(avctx); -- cgit v1.2.3