Я пытаюсь декодировать прямой эфир h264 с камеры WIFI с помощью madiacodec в Galaxy S3, видео воспроизводится нормально, но кажется, что низкий уровень медиакода всегда буферизует 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 должны быть загружены в декодер, прежде чем я смогу получить какой-либо кадр.
У меня вопрос, зачем эта буферизация видео? в любом случае я могу попытаться выделить меньше буфера, если это проблема. Можно ли как-нибудь уменьшить эту буферизацию видео?