summaryrefslogtreecommitdiff
path: root/libavcodec/vp8.h
diff options
context:
space:
mode:
authorMark Thompson <sw@jkqxz.net>2016-09-04 13:26:37 +0100
committerMark Thompson <sw@jkqxz.net>2016-09-08 21:58:22 +0100
commit4e528206bc4d968706401206cf54471739250ec7 (patch)
treece89cc42d26422b42556f467de65f538dbf5ee7f /libavcodec/vp8.h
parent131a85a1fed9966bbd38517f76abfac0237e39dc (diff)
vp8: Add hwaccel hooks
Also adds some extra fields to the main context structure that may be needed by a hwaccel decoder.
Diffstat (limited to 'libavcodec/vp8.h')
-rw-r--r--libavcodec/vp8.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/libavcodec/vp8.h b/libavcodec/vp8.h
index 65948e1d6b..1870705ad2 100644
--- a/libavcodec/vp8.h
+++ b/libavcodec/vp8.h
@@ -130,12 +130,17 @@ typedef struct VP8ThreadData {
typedef struct VP8Frame {
ThreadFrame tf;
AVBufferRef *seg_map;
+
+ AVBufferRef *hwaccel_priv_buf;
+ void *hwaccel_picture_private;
} VP8Frame;
#define MAX_THREADS 8
typedef struct VP8Context {
VP8ThreadData *thread_data;
AVCodecContext *avctx;
+ enum AVPixelFormat pix_fmt;
+
VP8Frame *framep[4];
VP8Frame *next_framep[4];
VP8Frame *curframe;
@@ -165,6 +170,7 @@ typedef struct VP8Context {
uint8_t enabled;
uint8_t absolute_vals;
uint8_t update_map;
+ uint8_t update_feature_data;
int8_t base_quant[4];
int8_t filter_level[4]; ///< base loop filter level
} segmentation;
@@ -192,8 +198,19 @@ typedef struct VP8Context {
int16_t chroma_qmul[2];
} qmat[4];
+ // Raw quantisation values, which may be needed by hwaccel decode.
+ struct {
+ int yac_qi;
+ int ydc_delta;
+ int y2dc_delta;
+ int y2ac_delta;
+ int uvdc_delta;
+ int uvac_delta;
+ } quant;
+
struct {
uint8_t enabled; ///< whether each mb can have a different strength based on mode/ref
+ uint8_t update;
/**
* filter strength adjustment for the following macroblock modes:
@@ -221,6 +238,20 @@ typedef struct VP8Context {
VP56RangeCoder c; ///< header context, includes mb modes and motion vectors
+ /* This contains the entropy coder state at the end of the header
+ * block, in the form specified by the standard. For use by
+ * hwaccels, so that a hardware decoder has the information to
+ * start decoding at the macroblock layer.
+ */
+ struct {
+ const uint8_t *input;
+ uint32_t range;
+ uint32_t value;
+ int bit_count;
+ } coder_state_at_header_end;
+
+ int header_partition_size;
+
/**
* These are all of the updatable probabilities for binary decisions.
* They are only implicitly reset on keyframes, making it quite likely
@@ -258,6 +289,7 @@ typedef struct VP8Context {
*/
int num_coeff_partitions;
VP56RangeCoder coeff_partition[8];
+ int coeff_partition_size[8];
VideoDSPContext vdsp;
VP8DSPContext vp8dsp;
H264PredContext hpc;