什么是 COLOR_FormatYUV420Flexible?
what is COLOR_FormatYUV420Flexible?
我想在我的 android 编码器上编码 video/avc。编码器 (Samsung S5) 发布 COLOR_FormatYUV420Flexible 作为其支持的格式之一。耶!
但我不太明白它是什么以及如何使用它。文档说:
Flexible 12 bits per pixel, subsampled YUV color format with 8-bit chroma and luma components.
Chroma planes are subsampled by 2 both horizontally and vertically. Use this format with Image. This format corresponds to YUV_420_888, and can represent the COLOR_FormatYUV411Planar, COLOR_FormatYUV411PackedPlanar, COLOR_FormatYUV420Planar, COLOR_FormatYUV420PackedPlanar, COLOR_FormatYUV420SemiPlanar and COLOR_FormatYUV420PackedSemiPlanar formats
这似乎表明我可以将此 const 用于几乎任何类型的 YUV 数据:平面、半平面、打包等。这似乎不太可能:除非我指定,否则编码器如何知道如何解释数据U/V 值的确切位置?
除了这个常量之外,我还需要提供任何元数据吗?有用吗?
差不多,但不完全是。
这个常数几乎可以用于任何形式的 YUV(平面、半平面、打包等等)。但是,要注意的是,不是您可以选择布局,编码器必须支持它——恰恰相反。 encoder会选择surface layout,通过flexible description来描述,需要你支持,随便哪个。
在实践中,当使用这个时,你不调用 getInputBuffers()
或 getInputBuffer(int index)
,你调用 getInputImage(int index)
,returns 和 Image,其中包含指向三个平面起点的指针,以及它们的行和像素步幅。
注意 - 之后调用 queueInputBuffer
时,您必须提供一个大小参数,这可能很难弄清楚 - 有关详细信息,请参阅 。
我想在我的 android 编码器上编码 video/avc。编码器 (Samsung S5) 发布 COLOR_FormatYUV420Flexible 作为其支持的格式之一。耶!
但我不太明白它是什么以及如何使用它。文档说:
Flexible 12 bits per pixel, subsampled YUV color format with 8-bit chroma and luma components.
Chroma planes are subsampled by 2 both horizontally and vertically. Use this format with Image. This format corresponds to YUV_420_888, and can represent the COLOR_FormatYUV411Planar, COLOR_FormatYUV411PackedPlanar, COLOR_FormatYUV420Planar, COLOR_FormatYUV420PackedPlanar, COLOR_FormatYUV420SemiPlanar and COLOR_FormatYUV420PackedSemiPlanar formats
这似乎表明我可以将此 const 用于几乎任何类型的 YUV 数据:平面、半平面、打包等。这似乎不太可能:除非我指定,否则编码器如何知道如何解释数据U/V 值的确切位置?
除了这个常量之外,我还需要提供任何元数据吗?有用吗?
差不多,但不完全是。
这个常数几乎可以用于任何形式的 YUV(平面、半平面、打包等等)。但是,要注意的是,不是您可以选择布局,编码器必须支持它——恰恰相反。 encoder会选择surface layout,通过flexible description来描述,需要你支持,随便哪个。
在实践中,当使用这个时,你不调用 getInputBuffers()
或 getInputBuffer(int index)
,你调用 getInputImage(int index)
,returns 和 Image,其中包含指向三个平面起点的指针,以及它们的行和像素步幅。
注意 - 之后调用 queueInputBuffer
时,您必须提供一个大小参数,这可能很难弄清楚 - 有关详细信息,请参阅