gpt4 book ai didi

java - 我使用 MediaCodec 从 Buffer 获得的颜色类型是什么

转载 作者:行者123 更新时间:2023-12-01 13:42:26 25 4
gpt4 key购买 nike

我被关注了 this example为了了解如何使用 MediaCodec。

这个例子对我来说效果很好,除了一件事,我不知道在从缓冲区中抓取帧后如何确定颜色类型。

这就是我抓取框架的方式(Java):

        GLES20.glReadPixels(0, 0, mWidth, mHeight, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE,
mPixelBuf);
mPixelBuf.rewind();

int[] colors = mColorSwapBuf;
mPixelBuf.asIntBuffer().get(colors);

我的问题是:我怎么知道我有什么类型的颜色?

这是输入示例:color[0] = 0xffd2c8bc

最佳答案

这是一个 32 位 RGBA 值。有点像。

glReadPixels()提取数据时,它会抓取一个红色字节,然后抓取一个绿色字节,依此类推。帧抓取代码将其视为小端,因此您会得到0xAABBGGRR。原始代码中的交换代码交换了 B 和 R channel ,留下 0xAARRGGBB

在您的代码示例中,您没有进行交换,因此您仍然采用 ABGR 格式。对于您的示例,这意味着 A=0xff、B=0xd2、G=0xc8、R=0xbc。您可以通过交换字节将其转换为单独的 channel 。您还可以使用 byte[] 而不是 int[] 并单独访问每种颜色(buf[0] 到 buf[3] 是像素 0 的红-绿-蓝-alpha,buf[4] 到 buf[7 ] 适用于像素 1 等)。

关于java - 我使用 MediaCodec 从 Buffer 获得的颜色类型是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com