我试图分别获取 Y、U、V 值,以便将它们传递给 openGL 并映射到纹理。我知道这些值可以在 AVPicture.data[0] (Y) 和 AVPicture.data[1] (U) 和 AVPicture.data[2] (V) 中找到
avcodec_decode_video2(ctx, frame, &frameFinished, packet_data->packet);
AVPicture _avPicture;
picSize = avpicture_get_size(ctx->pix_fmt, ctx->width, ctx->height);
avpicture_alloc(&_avPicture, ctx->pix_fmt,ctx->width, ctx->height );
avpicture_fill(&_avPicture, packet_data->packet, ctx->pix_fmt,ctx->width,ctx->height);
^^ 那工作得很好。我遇到的问题是通过 JNI 将 Y、U、V 值传递回 Java。我必须知道 AVPicture.data[x] 指针指向的数据的大小。我试过 AVPicture.linesize 无济于事,以及:
for (y = 0; y < ctx->height; y++){
for (x = 0; x < ctx->width; x++){
yDataSize++;
}
}
/* Cb and Cr */
for (y = 0; y < ctx->height / 2; y++) {
for (x = 0; x < ctx->width / 2; x++) {
uDataSize++;
vDataSize++;
}
}
我真的卡住了,谢谢!