Browse Source

hwcontext: allocate the destination frame for the pool size

The source frame may be cropped, so that its dimensions are smaller than
the pool dimensions. The transfer_data API requires the allocated size
of the destination frame to be the same as the pool size.
tags/n3.3
Anton Khirnov 9 years ago
parent
commit
fdfe01365d
1 changed files with 6 additions and 2 deletions
  1. +6
    -2
      libavutil/hwcontext.c

+ 6
- 2
libavutil/hwcontext.c View File

@@ -321,6 +321,7 @@ int av_hwframe_transfer_get_formats(AVBufferRef *hwframe_ref,

static int transfer_data_alloc(AVFrame *dst, const AVFrame *src, int flags)
{
AVHWFramesContext *ctx = (AVHWFramesContext*)src->hw_frames_ctx->data;
AVFrame *frame_tmp;
int ret = 0;

@@ -343,8 +344,8 @@ static int transfer_data_alloc(AVFrame *dst, const AVFrame *src, int flags)
frame_tmp->format = formats[0];
av_freep(&formats);
}
frame_tmp->width = src->width;
frame_tmp->height = src->height;
frame_tmp->width = ctx->width;
frame_tmp->height = ctx->height;

ret = av_frame_get_buffer(frame_tmp, 32);
if (ret < 0)
@@ -354,6 +355,9 @@ static int transfer_data_alloc(AVFrame *dst, const AVFrame *src, int flags)
if (ret < 0)
goto fail;

frame_tmp->width = src->width;
frame_tmp->height = src->height;

av_frame_move_ref(dst, frame_tmp);

fail:


Loading…
Cancel
Save