在相机预览帧上,我在 Android 端获取 yv12 格式的数据。我需要将它转换为 jni 端的 YUV420P。我该怎么做?正如我从 YUV420P 格式的许多来源中读到的那样,y 样本首先出现,然后是 u 样本。u 样本后跟 v 样本。yv12 格式与 YUV420P 相同,只是 u 和 v 样本以相反的顺序出现,这意味着 y 样本之后是 v,然后是 u 样本。牢记这一点,我使用以下交换代码在编码之前从 yv12 数据格式生成 YUV420P 数据。
avpicture_fill((AVPicture*)outframe, (uint8_t*)camData, codecCtx->pix_fmt, codecCtx->width, codecCtx->height);
uint8_t * buf_store = outframe->data[1];
outframe->data[1]=outframe->data[2];
outframe->data[2]=buf_store;
但这似乎不起作用。我应该如何调整我的代码?