mirror of https://git.ffmpeg.org/ffmpeg.git
h264: try reading SPS with wrong escaping, it sometimes works better
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
fe70c1f45f
commit
c9c7a776db
|
@ -3801,7 +3801,11 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){
|
||||||
break;
|
break;
|
||||||
case NAL_SPS:
|
case NAL_SPS:
|
||||||
init_get_bits(&s->gb, ptr, bit_length);
|
init_get_bits(&s->gb, ptr, bit_length);
|
||||||
|
if(ff_h264_decode_seq_parameter_set(h) < 0 && h->is_avc && (nalsize != consumed) && nalsize){
|
||||||
|
av_log(h->s.avctx, AV_LOG_DEBUG, "SPS decoding failure, trying alternative mode\n");
|
||||||
|
init_get_bits(&s->gb, &buf[buf_index + 1 - consumed], 8*nalsize);
|
||||||
ff_h264_decode_seq_parameter_set(h);
|
ff_h264_decode_seq_parameter_set(h);
|
||||||
|
}
|
||||||
|
|
||||||
if (s->flags& CODEC_FLAG_LOW_DELAY ||
|
if (s->flags& CODEC_FLAG_LOW_DELAY ||
|
||||||
(h->sps.bitstream_restriction_flag && !h->sps.num_reorder_frames))
|
(h->sps.bitstream_restriction_flag && !h->sps.num_reorder_frames))
|
||||||
|
|
|
@ -228,7 +228,6 @@ static inline int decode_vui_parameters(H264Context *h, SPS *sps){
|
||||||
get_ue_golomb(&s->gb); /*max_dec_frame_buffering*/
|
get_ue_golomb(&s->gb); /*max_dec_frame_buffering*/
|
||||||
|
|
||||||
if(s->gb.size_in_bits < get_bits_count(&s->gb)){
|
if(s->gb.size_in_bits < get_bits_count(&s->gb)){
|
||||||
av_log(h->s.avctx, AV_LOG_ERROR, "Overread VUI by %d bits\n", get_bits_count(&s->gb) - s->gb.size_in_bits);
|
|
||||||
sps->num_reorder_frames=0;
|
sps->num_reorder_frames=0;
|
||||||
sps->bitstream_restriction_flag= 0;
|
sps->bitstream_restriction_flag= 0;
|
||||||
}
|
}
|
||||||
|
@ -238,6 +237,10 @@ static inline int decode_vui_parameters(H264Context *h, SPS *sps){
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(s->gb.size_in_bits < get_bits_count(&s->gb)){
|
||||||
|
av_log(h->s.avctx, AV_LOG_ERROR, "Overread VUI by %d bits\n", get_bits_count(&s->gb) - s->gb.size_in_bits);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue