Color_FormatSurface 实施

Color_FormatSurface implementation

是否有关于 Color_FormatSurface (AndroidOpaque) 颜色格式的可用文档?我的视频编码器目前不支持这种格式,我应该添加该功能,但我找不到任何相关信息。

如有任何帮助,我们将不胜感激。

没有关于它的文档,因为它是不透明的。这是编程意义上的 "opaque",而不是 alpha 混合意义上的。

"opaque" 格式背后的想法是,设备制造商决定最适合该设备的格式。 YV12、NV21、RGBA、BGRA 等等……在 qcom 设备上,这可能是他们古怪的格式之一。视频编码器和 GPU 需要就格式是什么达成一致,以便它们可以相互传递表面,但应用程序应该使用 GPU 来读取或写入数据。

表面的格式在 gralloc 缓冲区元数据中指定。要读取 "opaque" 表面,您可能需要对专有格式进行逆向工程。要编写一个 "opaque" 表面,您可以分配一个 gralloc 缓冲区并手动设置颜色格式...因为 "opaque" 仅意味着 "whatever the encoder feels like",您可以自由选择,但请记住GPU 可能无法处理所有格式,某些格式的处理效率可能比其他格式高得多。

在 Android 5.0 中,软件编码器也可以使用表面进行输入。此提交显示了它是如何实现的:https://android.googlesource.com/platform/frameworks/av/+/2edda09a%5E%21/