diff options
author | Anton Khirnov <anton@khirnov.net> | 2015-01-17 22:28:46 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2015-03-21 11:27:14 +0100 |
commit | 7bbc254d646ed9cf6deffc3fda75ae6729f95979 (patch) | |
tree | e0dd13404bf3af7d6ca13abef367a1aa093c7a64 /libavcodec | |
parent | d4d9068cdf8f4b2b87ae87a2ef880d243f77b977 (diff) | |
download | ffmpeg-7bbc254d646ed9cf6deffc3fda75ae6729f95979.tar.gz |
h264: move resync_mb_{x,y} into the per-slice context
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/h264.h | 4 | ||||
-rw-r--r-- | libavcodec/h264_slice.c | 24 |
2 files changed, 14 insertions, 14 deletions
diff --git a/libavcodec/h264.h b/libavcodec/h264.h index 1e0b2327b1..282de69e6a 100644 --- a/libavcodec/h264.h +++ b/libavcodec/h264.h @@ -358,6 +358,8 @@ typedef struct H264SliceContext { int mb_x, mb_y; int mb_xy; + int resync_mb_x; + int resync_mb_y; int mb_skip_run; int is_complex; @@ -528,8 +530,6 @@ typedef struct H264Context { int x264_build; int mb_y; - int resync_mb_x; - int resync_mb_y; int mb_height, mb_width; int mb_stride; int mb_num; diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index cea213e158..fea263addf 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1557,11 +1557,11 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl, H264Contex av_log(h->avctx, AV_LOG_ERROR, "first_mb_in_slice overflow\n"); return AVERROR_INVALIDDATA; } - h->resync_mb_x = sl->mb_x = first_mb_in_slice % h->mb_width; - h->resync_mb_y = sl->mb_y = (first_mb_in_slice / h->mb_width) << - FIELD_OR_MBAFF_PICTURE(h); + sl->resync_mb_x = sl->mb_x = first_mb_in_slice % h->mb_width; + sl->resync_mb_y = sl->mb_y = (first_mb_in_slice / h->mb_width) << + FIELD_OR_MBAFF_PICTURE(h); if (h->picture_structure == PICT_BOTTOM_FIELD) - h->resync_mb_y = sl->mb_y = sl->mb_y + 1; + sl->resync_mb_y = sl->mb_y = sl->mb_y + 1; assert(sl->mb_y < h->mb_height); if (h->picture_structure == PICT_FRAME) { @@ -2224,7 +2224,7 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) if ((h->workaround_bugs & FF_BUG_TRUNCATED) && sl->cabac.bytestream > sl->cabac.bytestream_end + 2) { - er_add_slice(h, sl, h->resync_mb_x, h->resync_mb_y, sl->mb_x - 1, + er_add_slice(h, sl, sl->resync_mb_x, sl->resync_mb_y, sl->mb_x - 1, sl->mb_y, ER_MB_END); if (sl->mb_x >= lf_x_start) loop_filter(h, sl, lf_x_start, sl->mb_x + 1); @@ -2235,7 +2235,7 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) "error while decoding MB %d %d, bytestream %td\n", sl->mb_x, sl->mb_y, sl->cabac.bytestream_end - sl->cabac.bytestream); - er_add_slice(h, sl, h->resync_mb_x, h->resync_mb_y, sl->mb_x, + er_add_slice(h, sl, sl->resync_mb_x, sl->resync_mb_y, sl->mb_x, sl->mb_y, ER_MB_ERROR); return AVERROR_INVALIDDATA; } @@ -2255,7 +2255,7 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) if (eos || sl->mb_y >= h->mb_height) { tprintf(h->avctx, "slice end %d %d\n", get_bits_count(&h->gb), h->gb.size_in_bits); - er_add_slice(h, sl, h->resync_mb_x, h->resync_mb_y, sl->mb_x - 1, + er_add_slice(h, sl, sl->resync_mb_x, sl->resync_mb_y, sl->mb_x - 1, sl->mb_y, ER_MB_END); if (sl->mb_x > lf_x_start) loop_filter(h, sl, lf_x_start, sl->mb_x); @@ -2282,7 +2282,7 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) if (ret < 0) { av_log(h->avctx, AV_LOG_ERROR, "error while decoding MB %d %d\n", sl->mb_x, sl->mb_y); - er_add_slice(h, sl, h->resync_mb_x, h->resync_mb_y, sl->mb_x, + er_add_slice(h, sl, sl->resync_mb_x, sl->resync_mb_y, sl->mb_x, sl->mb_y, ER_MB_ERROR); return ret; } @@ -2302,12 +2302,12 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) get_bits_count(&h->gb), h->gb.size_in_bits); if (get_bits_left(&h->gb) == 0) { - er_add_slice(h, sl, h->resync_mb_x, h->resync_mb_y, + er_add_slice(h, sl, sl->resync_mb_x, sl->resync_mb_y, sl->mb_x - 1, sl->mb_y, ER_MB_END); return 0; } else { - er_add_slice(h, sl, h->resync_mb_x, h->resync_mb_y, + er_add_slice(h, sl, sl->resync_mb_x, sl->resync_mb_y, sl->mb_x - 1, sl->mb_y, ER_MB_END); return AVERROR_INVALIDDATA; @@ -2320,14 +2320,14 @@ static int decode_slice(struct AVCodecContext *avctx, void *arg) get_bits_count(&h->gb), h->gb.size_in_bits); if (get_bits_left(&h->gb) == 0) { - er_add_slice(h, sl, h->resync_mb_x, h->resync_mb_y, + er_add_slice(h, sl, sl->resync_mb_x, sl->resync_mb_y, sl->mb_x - 1, sl->mb_y, ER_MB_END); if (sl->mb_x > lf_x_start) loop_filter(h, sl, lf_x_start, sl->mb_x); return 0; } else { - er_add_slice(h, sl, h->resync_mb_x, h->resync_mb_y, sl->mb_x, + er_add_slice(h, sl, sl->resync_mb_x, sl->resync_mb_y, sl->mb_x, sl->mb_y, ER_MB_ERROR); return AVERROR_INVALIDDATA; |