gpt4 book ai didi

c++ - ffmpeg:sws_scale 在 RGB 到 YUV420 转换期间返回平面 V 中的错误值

转载 作者:太空宇宙 更新时间:2023-11-04 12:11:46 26 4
gpt4 key购买 nike

我正在尝试使用 sws_scale 将图像从 RGB 转换为 YUV420P。我在 C++ 中使用的代码如下:

SwsContext *swscontext = sws_getContext(current_width,
current_height,
PIX_FMT_RGB24,
current_width,
current_height,
PIX_FMT_YUV420P,
SWS_FAST_BILINEAR,
NULL,
NULL,
NULL);
const int srcstride[3] = {current_width * 3, 0, 0};
BYTE *data_pos[3] = {data, NULL, NULL};
BYTE *dest[3] = {yuv,
yuv + current_width * current_height,
yuv + (current_width * current_height)
+ ((current_width * current_height) / 2)};
const int dststride[3] = {current_width, current_width / 2, current_width / 2};
sws_scale(swscontext, data_pos, srcstride, 0, current_height,
dest, dststride);

Y 和 U 平面编码正确,但 V 平面完全写入值 0x80 我想知道我是否做错了什么。

最佳答案

我仍然不知道它为什么起作用,但这解决了问题:

BYTE *dest[3] = {yuv,
yuv + current_width * current_height,
yuv + (current_width * current_height)
+ ((current_width >> 1) * (current_height >> 1))};

在语义上它们是相同的,所以我将保留这个问题,以防有人提出解释。

关于c++ - ffmpeg:sws_scale 在 RGB 到 YUV420 转换期间返回平面 V 中的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9497259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com