mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-08-08 17:11:08 +00:00
avcodec/get_buffer: use frame pixel format instead of context
The documentation for get_buffer2() states:
"This callback must use the frame values, not the codec context values, to
calculate the required buffer size."
Fixes wrong output on hbd LCEVC enhanced samples where the base stream is
8bit.
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit e1c1b6c558)
This commit is contained in:
committed by
ffmpeg-devel
parent
9b6ffd74b5
commit
2481392fe5
@@ -100,7 +100,7 @@ static int update_frame_pool(AVCodecContext *avctx, AVFrame *frame)
|
||||
do {
|
||||
// NOTE: do not align linesizes individually, this breaks e.g. assumptions
|
||||
// that linesize[0] == 2*linesize[1] in the MPEG-encoder for 4:2:2
|
||||
ret = av_image_fill_linesizes(linesize, avctx->pix_fmt, w);
|
||||
ret = av_image_fill_linesizes(linesize, frame->format, w);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
// increase alignment of w for next try (rhs gives the lowest bit set in w)
|
||||
@@ -113,7 +113,7 @@ static int update_frame_pool(AVCodecContext *avctx, AVFrame *frame)
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
linesize1[i] = linesize[i];
|
||||
ret = av_image_fill_plane_sizes(size, avctx->pix_fmt, h, linesize1);
|
||||
ret = av_image_fill_plane_sizes(size, frame->format, h, linesize1);
|
||||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user