mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-29 18:53:02 +00:00
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.
This commit is contained in:
parent
5fcae3b3f9
commit
fdfe01365d
@ -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…
Reference in New Issue
Block a user