diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2023-04-17 10:52:10 -0400 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2023-04-19 09:49:09 -0400 |
commit | 989ff02472acb0566416bca13a161793bc59f52e (patch) | |
tree | 3454e4b2d826210f456bdf1cee4a7a18f1cfa986 | |
parent | 13450b67229540fd79075a84185b29db1eec2687 (diff) | |
download | ffmpeg-989ff02472acb0566416bca13a161793bc59f52e.tar.gz |
yuv4mpegenc: add bitdepth multiplier after rounding width.
Fixes output of HBD odd-width chroma.
-rw-r--r-- | libavformat/yuv4mpegenc.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/libavformat/yuv4mpegenc.c b/libavformat/yuv4mpegenc.c index fc6b08e0cd..2fa5ee2714 100644 --- a/libavformat/yuv4mpegenc.c +++ b/libavformat/yuv4mpegenc.c @@ -195,13 +195,14 @@ static int yuv4_write_packet(AVFormatContext *s, AVPacket *pkt) /* The following code presumes all planes to be non-interleaved. */ for (int k = 0; k < desc->nb_components; k++) { - int plane_height = height, plane_width = width * desc->comp[k].step; + int plane_height = height, plane_width = width; const uint8_t *ptr = frame->data[k]; if (desc->nb_components >= 3 && (k == 1 || k == 2)) { /* chroma? */ plane_width = AV_CEIL_RSHIFT(plane_width, desc->log2_chroma_w); plane_height = AV_CEIL_RSHIFT(plane_height, desc->log2_chroma_h); } + plane_width *= desc->comp[k].step; for (int i = 0; i < plane_height; i++) { avio_write(pb, ptr, plane_width); |