|
|
@@ -850,6 +850,7 @@ int ff_decode_frame_props(AVCodecContext *avctx, AVFrame *frame) |
|
|
|
|
|
|
|
static int get_buffer_internal(AVCodecContext *avctx, AVFrame *frame, int flags) |
|
|
|
{ |
|
|
|
const AVHWAccel *hwaccel = avctx->hwaccel; |
|
|
|
int override_dimensions = 1; |
|
|
|
int ret; |
|
|
|
|
|
|
@@ -872,6 +873,11 @@ static int get_buffer_internal(AVCodecContext *avctx, AVFrame *frame, int flags) |
|
|
|
if ((ret = ff_init_buffer_info(avctx, frame)) < 0) |
|
|
|
return ret; |
|
|
|
|
|
|
|
if (hwaccel && hwaccel->alloc_frame) { |
|
|
|
ret = hwaccel->alloc_frame(avctx, frame); |
|
|
|
goto end; |
|
|
|
} |
|
|
|
|
|
|
|
#if FF_API_GET_BUFFER |
|
|
|
FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
/* |
|
|
@@ -898,7 +904,7 @@ FF_DISABLE_DEPRECATION_WARNINGS |
|
|
|
* avcodec_default_get_buffer |
|
|
|
*/ |
|
|
|
if (frame->buf[0]) |
|
|
|
goto end; |
|
|
|
goto end0; |
|
|
|
|
|
|
|
priv = av_mallocz(sizeof(*priv)); |
|
|
|
if (!priv) { |
|
|
@@ -974,7 +980,7 @@ do { \ |
|
|
|
|
|
|
|
av_buffer_unref(&dummy_buf); |
|
|
|
|
|
|
|
end: |
|
|
|
end0: |
|
|
|
frame->width = avctx->width; |
|
|
|
frame->height = avctx->height; |
|
|
|
|
|
|
@@ -991,6 +997,7 @@ FF_ENABLE_DEPRECATION_WARNINGS |
|
|
|
|
|
|
|
ret = avctx->get_buffer2(avctx, frame, flags); |
|
|
|
|
|
|
|
end: |
|
|
|
if (avctx->codec_type == AVMEDIA_TYPE_VIDEO && !override_dimensions) { |
|
|
|
frame->width = avctx->width; |
|
|
|
frame->height = avctx->height; |
|
|
|