Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用libffmpeg时如何计算AVPicture.data[x]指针(YUV420p)的大小_Java_Android_Ffmpeg_Video Streaming_H.264 - Fatal编程技术网

Java 使用libffmpeg时如何计算AVPicture.data[x]指针(YUV420p)的大小

Java 使用libffmpeg时如何计算AVPicture.data[x]指针(YUV420p)的大小,java,android,ffmpeg,video-streaming,h.264,Java,Android,Ffmpeg,Video Streaming,H.264,我试图分别获取Y、U、V值,以便将它们传递给openGL并映射到纹理。我知道这些值可以在AVPicture.data[0](Y)和AVPicture.data[1](U)以及AVPicture.data[2](V)中找到 ^^那很好。 我遇到的问题是通过JNI将Y、U、V值传递回Java。我必须知道AVPicture.data[x]指针指向的数据的大小。我尝试了AVPicture.linesize,但没有效果,并且: for (y = 0; y < ctx->h

我试图分别获取Y、U、V值,以便将它们传递给openGL并映射到纹理。我知道这些值可以在AVPicture.data[0](Y)和AVPicture.data[1](U)以及AVPicture.data[2](V)中找到

^^那很好。 我遇到的问题是通过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++;
                }
            }
(y=0;yheight;y++)的
{
对于(x=0;xwidth;x++){
yDataSize++;
}
}
/*Cb和Cr*/
对于(y=0;yheight/2;y++){
对于(x=0;xwidth/2;x++){
uDataSize++;
vDataSize++;
}
}

我真的卡住了,谢谢

缓冲区大小是行大小乘以高度(行大小是每行字节数,乘以行数得到总数)。所以
\u avPicture.linesize[x]*ctx->height
。计算C++侧,将值传递给java。< /P>我非常感谢快速响应。但愿我能不止一次投票。
           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++;
                }
            }