winlin

fix the bug of h.264 bit stream demux.

@@ -876,6 +876,13 @@ int SrsAvcAacCodec::avc_demux_sps() @@ -876,6 +876,13 @@ int SrsAvcAacCodec::avc_demux_sps()
876 876
877 // XX 00 00 03 XX, the 03 byte should be drop. 877 // XX 00 00 03 XX, the 03 byte should be drop.
878 if (nb_rbsp > 2 && rbsp[nb_rbsp - 2] == 0 && rbsp[nb_rbsp - 1] == 0 && rbsp[nb_rbsp] == 3) { 878 if (nb_rbsp > 2 && rbsp[nb_rbsp - 2] == 0 && rbsp[nb_rbsp - 1] == 0 && rbsp[nb_rbsp] == 3) {
  879 + // read 1byte more.
  880 + if (stream.empty()) {
  881 + break;
  882 + }
  883 + rbsp[nb_rbsp] = stream.read_1bytes();
  884 + nb_rbsp++;
  885 +
879 continue; 886 continue;
880 } 887 }
881 888
@@ -73,7 +73,7 @@ int srs_avc_nalu_read_uev(SrsBitStream* stream, int32_t& v) @@ -73,7 +73,7 @@ int srs_avc_nalu_read_uev(SrsBitStream* stream, int32_t& v)
73 73
74 v = (1 << leadingZeroBits) - 1; 74 v = (1 << leadingZeroBits) - 1;
75 for (int i = 0; i < leadingZeroBits; i++) { 75 for (int i = 0; i < leadingZeroBits; i++) {
76 - int64_t b = stream->read_bit(); 76 + int32_t b = stream->read_bit();
77 v += b << (leadingZeroBits - 1); 77 v += b << (leadingZeroBits - 1);
78 } 78 }
79 79