Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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
Android 我是否可以强制编解码器将H264数据解码为特定的颜色格式(从其支持的颜色格式)?_Android_Decode_H.264_Yuv_Android Mediacodec - Fatal编程技术网

Android 我是否可以强制编解码器将H264数据解码为特定的颜色格式(从其支持的颜色格式)?

Android 我是否可以强制编解码器将H264数据解码为特定的颜色格式(从其支持的颜色格式)?,android,decode,h.264,yuv,android-mediacodec,Android,Decode,H.264,Yuv,Android Mediacodec,在安卓4.1及以上版本上,我使用MediaCodecframework对H264数据进行解码。我看到我正在使用的编解码器实例(通过createDecoderByType)支持多种颜色格式。但是,它总是以第一个索引颜色格式(从其支持的列表)提供输出 有没有一种方法可以强制解码器根据其支持的颜色格式以特定的颜色格式发送解码数据?我知道开发人员文档确实提到,keykey\u COLOR\u FORMAT只能为编码器设置,但请帮助我了解解码器支持多种颜色格式的原因是什么?否,目前无法为解码器输出指定颜色

在安卓4.1及以上版本上,我使用
MediaCodec
framework对H264数据进行解码。我看到我正在使用的编解码器实例(通过
createDecoderByType
)支持多种颜色格式。但是,它总是以第一个索引颜色格式(从其支持的列表)提供输出


有没有一种方法可以强制解码器根据其支持的颜色格式以特定的颜色格式发送解码数据?我知道开发人员文档确实提到,key
key\u COLOR\u FORMAT
只能为编码器设置,但请帮助我了解解码器支持多种颜色格式的原因是什么?

否,目前无法为解码器输出指定颜色格式

这在使用未记录的专有缓冲区布局的设备上尤其令人讨厌


将输出定向到曲面会导致更加一致和可移植的行为,但截至API 19,仍然没有方便的方法获取像素数据(不适用于MediaCodec输出格式,
glReadPixels()
可能速度较慢,并且适用于RGB等)。如果您可以使用OpenGL着色器实现所需的功能,那么一切都会运行得很好(请参见“”)或者是否有本机颜色过滤器可用于将解码器输出数据从一种格式转换为另一种格式?平台中没有通过公共API提供任何本机颜色过滤器。视频解码器的ByteBuffer输出不是很有用,除非您仅针对特定设备。