假设我在内存中有一个 NV12 帧作为字节数组。我知道:
- 它的宽度和高度
- 它的步幅(包括填充在内的线的总宽度),根据 NV12 规范,对于 Y 和 UV 分量来说是相同的
- 我知道 Y 从哪里开始,U 从 Y +(步幅 * 高度)开始,V 从 U + 1 开始(与 U 交错)。
现在这就是我到目前为止所拥有的:
SwsContext* context = sws_getContext(frameWidth, frameHeight, AV_PIX_FMT_NV12, frameWidth, frameHeight, AV_PIX_FMT_RGB32, 0, nullptr, nullptr, nullptr);
sws_scale(context,
所以我不知道sws_scale的参数应该是什么:
- srcSlice:指向字节数组的指针?它显然应该是一个指向指针的指针,但我所拥有的只是一个一维字节数组。
- srcStride :显然需要一组步幅,但我对整个文件只有一个步幅。我应该传递一个只有一个元素的数组吗?
- srcSliceY :我猜是第一个字节的偏移量?那么应该是0。
- srcSliceH :我猜的帧高度
- dst :再一次指向一个指针,但我的目标输出实际上只是另一个字节数组......
- dstStride : Width * 4 我猜?
任何帮助表示赞赏。