From 6e2d756e1bde43a0d725a59614423853987e6106 Mon Sep 17 00:00:00 2001 From: winlin Date: Sat, 4 Apr 2015 18:24:07 +0800 Subject: [PATCH] fix the bug of h.264 bit stream demux. --- trunk/src/kernel/srs_kernel_codec.cpp | 7 +++++++ trunk/src/kernel/srs_kernel_utility.cpp | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/trunk/src/kernel/srs_kernel_codec.cpp b/trunk/src/kernel/srs_kernel_codec.cpp index ca5a7d05b..906bf46c1 100644 --- a/trunk/src/kernel/srs_kernel_codec.cpp +++ b/trunk/src/kernel/srs_kernel_codec.cpp @@ -876,6 +876,13 @@ int SrsAvcAacCodec::avc_demux_sps() // XX 00 00 03 XX, the 03 byte should be drop. if (nb_rbsp > 2 && rbsp[nb_rbsp - 2] == 0 && rbsp[nb_rbsp - 1] == 0 && rbsp[nb_rbsp] == 3) { + // read 1byte more. + if (stream.empty()) { + break; + } + rbsp[nb_rbsp] = stream.read_1bytes(); + nb_rbsp++; + continue; } diff --git a/trunk/src/kernel/srs_kernel_utility.cpp b/trunk/src/kernel/srs_kernel_utility.cpp index 218ac153b..32598a13f 100644 --- a/trunk/src/kernel/srs_kernel_utility.cpp +++ b/trunk/src/kernel/srs_kernel_utility.cpp @@ -73,7 +73,7 @@ int srs_avc_nalu_read_uev(SrsBitStream* stream, int32_t& v) v = (1 << leadingZeroBits) - 1; for (int i = 0; i < leadingZeroBits; i++) { - int64_t b = stream->read_bit(); + int32_t b = stream->read_bit(); v += b << (leadingZeroBits - 1); }