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);
^^それはうまくいっています。私が遭遇した問題は、Y、U、V の値を JNI 経由で 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++;
}
}
私は本当に立ち往生しています、ありがとう!