aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/h264.h
diff options
context:
space:
mode:
authorClément Bœsch <clement@stupeflix.com>2016-06-20 13:00:17 +0200
committerClément Bœsch <clement@stupeflix.com>2016-06-20 15:34:26 +0200
commit405398989093f5ef19cb63eab6a9205a0c40ce4f (patch)
treee92a5fbaf5f1bc4f151939e7ffb753f85c6eaa86 /libavcodec/h264.h
parentc8f7a23319e54059c6a355746845c4e4e0215509 (diff)
parentb77fffa127663028169c5ed543956af4b9496c29 (diff)
downloadffmpeg-405398989093f5ef19cb63eab6a9205a0c40ce4f.tar.gz
Merge commit 'b77fffa127663028169c5ed543956af4b9496c29'
* commit 'b77fffa127663028169c5ed543956af4b9496c29': h264: make slice threading work with deblocking_filter=1 again label, and SLICE_SINGLETHREAD error handling are preserved as that SLICE_SINGLETHREAD can be raised on a remaining case. slice_context_count is also kept since it's still in use. Merged-by: Clément Bœsch <clement@stupeflix.com>
Diffstat (limited to 'libavcodec/h264.h')
-rw-r--r--libavcodec/h264.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/h264.h b/libavcodec/h264.h
index 5e9827d6c8..61d94cd6d4 100644
--- a/libavcodec/h264.h
+++ b/libavcodec/h264.h
@@ -407,7 +407,6 @@ typedef struct H264SliceContext {
H264Ref ref_list[2][48]; /**< 0..15: frame refs, 16..47: mbaff field refs.
* Reordered version of default_ref_list
* according to picture reordering in slice header */
- int ref2frm[MAX_SLICES][2][64]; ///< reference to frame number lists, used in the loop filter, the first 2 are for -2,-1
const uint8_t *intra_pcm_ptr;
int16_t *dc_val_base;
@@ -494,6 +493,11 @@ typedef struct H264Context {
int context_initialized;
int flags;
int workaround_bugs;
+ /* Set when slice threading is used and at least one slice uses deblocking
+ * mode 1 (i.e. across slice boundaries). Then we disable the loop filter
+ * during normal MB decoding and execute it serially at the end.
+ */
+ int postpone_filter;
int8_t(*intra4x4_pred_mode);
H264PredContext hpc;
@@ -685,6 +689,7 @@ typedef struct H264Context {
AVBufferPool *mb_type_pool;
AVBufferPool *motion_val_pool;
AVBufferPool *ref_index_pool;
+ int ref2frm[MAX_SLICES][2][64]; ///< reference to frame number lists, used in the loop filter, the first 2 are for -2,-1
} H264Context;
extern const uint16_t ff_h264_mb_sizes[4];