aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2015-01-17 22:28:46 +0100
committerAnton Khirnov <anton@khirnov.net>2015-03-21 11:27:14 +0100
commit7bbc254d646ed9cf6deffc3fda75ae6729f95979 (patch)
treee0dd13404bf3af7d6ca13abef367a1aa093c7a64 /libavcodec
parentd4d9068cdf8f4b2b87ae87a2ef880d243f77b977 (diff)
downloadffmpeg-7bbc254d646ed9cf6deffc3fda75ae6729f95979.tar.gz
h264: move resync_mb_{x,y} into the per-slice context
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/h264.h4
-rw-r--r--libavcodec/h264_slice.c24
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;