From 23b310971ef1d6d1f21b3174ef7650c8cd665daf Mon Sep 17 00:00:00 2001 From: winlin Date: Thu, 9 Apr 2015 18:03:45 +0800 Subject: [PATCH] guess again when annexb change to ibmf. --- trunk/src/kernel/srs_kernel_codec.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/trunk/src/kernel/srs_kernel_codec.cpp b/trunk/src/kernel/srs_kernel_codec.cpp index 906bf46c1..116cfe754 100644 --- a/trunk/src/kernel/srs_kernel_codec.cpp +++ b/trunk/src/kernel/srs_kernel_codec.cpp @@ -696,7 +696,19 @@ int SrsAvcAacCodec::video_avc_demux(char* data, int size, SrsCodecSample* sample // One or more NALUs (Full frames are required) // try "AnnexB" from H.264-AVC-ISO_IEC_14496-10.pdf, page 211. if ((ret = avc_demux_annexb_format(stream, sample)) != ERROR_SUCCESS) { - return ret; + // ok, we guess out the payload is annexb, but maybe changed to ibmf. + if (ret != ERROR_HLS_AVC_TRY_OTHERS) { + srs_error("avc demux for annexb failed. ret=%d", ret); + return ret; + } + + // try "ISO Base Media File Format" from H.264-AVC-ISO_IEC_14496-15.pdf, page 20 + if ((ret = avc_demux_ibmf_format(stream, sample)) != ERROR_SUCCESS) { + return ret; + } else { + payload_format = SrsAvcPayloadFormatIbmf; + srs_warn("hls avc payload change from annexb to ibmf format."); + } } srs_info("hls decode avc payload in annexb format."); }