ffmpeg | branch: master | James Almer <jamr...@gmail.com> | Mon Aug 1 18:15:07 2016 -0300| [517dd04f6df3103a6f2bc20b43b956d055ad983f] | committer: James Almer
Merge commit 'bc7f4268514624e1286ea76d27a89a56b4ee18e1' * commit 'bc7f4268514624e1286ea76d27a89a56b4ee18e1': h264: drop tests whether the codec id is AV_CODEC_ID_H264 Conflicts: libavcodec/h264dec.c Merged-by: James Almer <jamr...@gmail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=517dd04f6df3103a6f2bc20b43b956d055ad983f --- libavcodec/h264_slice.c | 1 - libavcodec/h264dec.c | 14 ++++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index fcc8443..7d1817c 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -2349,7 +2349,6 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) sl->deblocking_filter = 0; sl->is_complex = FRAME_MBAFF(h) || h->picture_structure != PICT_FRAME || - avctx->codec_id != AV_CODEC_ID_H264 || (CONFIG_GRAY && (h->flags & AV_CODEC_FLAG_GRAY)); if (!(h->avctx->active_thread_type & FF_THREAD_SLICE) && h->picture_structure == PICT_FRAME && h->slice_ctx[0].er.error_status_table) { diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index d944a8c..323639d 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -406,15 +406,13 @@ av_cold int ff_h264_decode_init(AVCodecContext *avctx) return AVERROR_UNKNOWN; } - if (avctx->codec_id == AV_CODEC_ID_H264) { - if (avctx->ticks_per_frame == 1) { - if(h->avctx->time_base.den < INT_MAX/2) { - h->avctx->time_base.den *= 2; - } else - h->avctx->time_base.num /= 2; - } - avctx->ticks_per_frame = 2; + if (avctx->ticks_per_frame == 1) { + if(h->avctx->time_base.den < INT_MAX/2) { + h->avctx->time_base.den *= 2; + } else + h->avctx->time_base.num /= 2; } + avctx->ticks_per_frame = 2; if (avctx->extradata_size > 0 && avctx->extradata) { ret = ff_h264_decode_extradata(avctx->extradata, avctx->extradata_size, ====================================================================== diff --cc libavcodec/h264_slice.c index fcc8443,eee222f..7d1817c --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@@ -2349,19 -2111,8 +2349,18 @@@ static int decode_slice(struct AVCodecC sl->deblocking_filter = 0; sl->is_complex = FRAME_MBAFF(h) || h->picture_structure != PICT_FRAME || - avctx->codec_id != AV_CODEC_ID_H264 || (CONFIG_GRAY && (h->flags & AV_CODEC_FLAG_GRAY)); + if (!(h->avctx->active_thread_type & FF_THREAD_SLICE) && h->picture_structure == PICT_FRAME && h->slice_ctx[0].er.error_status_table) { + const int start_i = av_clip(sl->resync_mb_x + sl->resync_mb_y * h->mb_width, 0, h->mb_num - 1); + if (start_i) { + int prev_status = h->slice_ctx[0].er.error_status_table[h->slice_ctx[0].er.mb_index2xy[start_i - 1]]; + prev_status &= ~ VP_START; + if (prev_status != (ER_MV_END | ER_DC_END | ER_AC_END)) + h->slice_ctx[0].er.error_occurred = 1; + } + } + if (h->ps.pps->cabac) { /* realign */ align_get_bits(&sl->gb); diff --cc libavcodec/h264dec.c index d944a8c,cc5bdca..323639d --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@@ -406,24 -371,18 +406,22 @@@ av_cold int ff_h264_decode_init(AVCodec return AVERROR_UNKNOWN; } - if (avctx->codec_id == AV_CODEC_ID_H264) { - if (avctx->ticks_per_frame == 1) { - if(h->avctx->time_base.den < INT_MAX/2) { - h->avctx->time_base.den *= 2; - } else - h->avctx->time_base.num /= 2; - } - avctx->ticks_per_frame = 2; - if (avctx->ticks_per_frame == 1) - h->avctx->framerate.num *= 2; ++ if (avctx->ticks_per_frame == 1) { ++ if(h->avctx->time_base.den < INT_MAX/2) { ++ h->avctx->time_base.den *= 2; ++ } else ++ h->avctx->time_base.num /= 2; + } + avctx->ticks_per_frame = 2; if (avctx->extradata_size > 0 && avctx->extradata) { - ret = ff_h264_decode_extradata(avctx->extradata, avctx->extradata_size, - &h->ps, &h->is_avc, &h->nal_length_size, - avctx->err_recognition, avctx); - if (ret < 0) { - h264_decode_end(avctx); - return ret; - } + ret = ff_h264_decode_extradata(avctx->extradata, avctx->extradata_size, + &h->ps, &h->is_avc, &h->nal_length_size, + avctx->err_recognition, avctx); + if (ret < 0) { + h264_decode_end(avctx); + return ret; + } } if (h->ps.sps && h->ps.sps->bitstream_restriction_flag && _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog