Опитвам се да декодирам h264 поток на живо от WIFI камера от madiacodec в Galaxy S3, видеото се възпроизвежда добре, но изглежда, че mediacode ниско ниво винаги буферира 1 секунда видео кадри, нов кадър може да бъде декодиран само от нова входяща NAL единица . Това причинява около 1 секунда латентност.
Когато се извика MediaCodec.createDecoderByType("video/avc");
, мога да видя от logcat, че са разпределени 22 буфера,
01-04 15:39:02.799: I/ExtendedCodec(13374): Smoothstreaming Enabled
01-04 15:39:02.809: I/ACodec(13374): [OMX.qcom.video.decoder.avc] Now Loaded->Idle
01-04 15:39:02.809: I/ACodec(13374): [OMX.qcom.video.decoder.avc] Allocating 22 buffers from a native window of size 245760 on output port
01-04 15:39:02.889: D/DecodeActivity(13374): Decoder started at --- 1388867942894
01-04 15:39:02.889: I/ACodec(13374): [OMX.qcom.video.decoder.avc] Now Idle->Executing
01-04 15:39:03.019: I/ACodec(13374): [OMX.qcom.video.decoder.avc] Now Executing
И виждам, че около 16 NAL единици трябва да бъдат поставени в декодера, преди да мога да извадя някакъв кадър.
Въпросът ми е защо това видео буфериране? по всякакъв начин мога да опитам да разпределя по-малко буфер, ако това е проблемът. Мога ли все пак да намаля това видео буфериране?