]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/vp8.h
h264_qpel: Use the correct header
[ffmpeg] / libavcodec / vp8.h
index 6d864b9a7f964e9b13cf61f046beccd367d21a45..2919a143af8824382bea5d3231cd5fac98eb1089 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (C) 2010 David Conrad
  * Copyright (C) 2010 Ronald S. Bultje
- * Copyright (C) 2010 Jason Garrett-Glaser
+ * Copyright (C) 2010 Fiona Glaser
  * Copyright (C) 2012 Daniel Kang
  *
  * This file is part of Libav.
 
 #include "libavutil/buffer.h"
 
-#include "vp56.h"
-#include "vp8dsp.h"
 #include "h264pred.h"
 #include "thread.h"
+#include "vp56.h"
+#include "vp8dsp.h"
+
 #if HAVE_PTHREADS
-#include <pthread.h>
+#   include <pthread.h>
 #elif HAVE_W32THREADS
-#include "compat/w32pthreads.h"
+#   include "compat/w32pthreads.h"
 #endif
 
 #define VP8_MAX_QUANT 127
@@ -82,7 +83,7 @@ typedef struct VP8FilterStrength {
 
 typedef struct VP8Macroblock {
     uint8_t skip;
-    // todo: make it possible to check for at least (i4x4 or split_mv)
+    // TODO: make it possible to check for at least (i4x4 or split_mv)
     // in one op. are others needed?
     uint8_t mode;
     uint8_t ref_frame;
@@ -90,7 +91,7 @@ typedef struct VP8Macroblock {
     uint8_t chroma_pred_mode;
     uint8_t segment;
     uint8_t intra4x4_pred_mode_mb[16];
-    uint8_t intra4x4_pred_mode_top[4];
+    DECLARE_ALIGNED(4, uint8_t, intra4x4_pred_mode_top)[4];
     VP56mv mv;
     VP56mv bmv[16];
 } VP8Macroblock;
@@ -116,7 +117,7 @@ typedef struct VP8ThreadData {
     int thread_nr;
 #if HAVE_THREADS
     pthread_mutex_t lock;
-    pthread_cond_t  cond;
+    pthread_cond_t cond;
 #endif
     int thread_mb_pos; // (mb_y << 16) | (mb_x & 0xFFFF)
     int wait_mb_pos; // What the current thread is waiting on.
@@ -203,7 +204,7 @@ typedef struct VP8Context {
          * [7]   - split mv
          *  i16x16 modes never have any adjustment
          */
-        int8_t mode[VP8_MVMODE_SPLIT+1];
+        int8_t mode[VP8_MVMODE_SPLIT + 1];
 
         /**
          * filter strength adjustment for macroblocks that reference:
@@ -215,7 +216,7 @@ typedef struct VP8Context {
         int8_t ref[4];
     } lf_delta;
 
-    uint8_t (*top_border)[16+8+8];
+    uint8_t (*top_border)[16 + 8 + 8];
     uint8_t (*top_nnz)[9];
 
     VP56RangeCoder c;   ///< header context, includes mb modes and motion vectors
@@ -234,8 +235,9 @@ typedef struct VP8Context {
         uint8_t golden;
         uint8_t pred16x16[4];
         uint8_t pred8x8c[3];
-        uint8_t token[4][16][3][NUM_DCT_TOKENS-1];
+        uint8_t token[4][16][3][NUM_DCT_TOKENS - 1];
         uint8_t mvc[2][19];
+        uint8_t scan[16];
     } prob[2];
 
     VP8Macroblock *macroblocks_base;
@@ -262,6 +264,9 @@ typedef struct VP8Context {
     vp8_mc_func put_pixels_tab[3][3][3];
     VP8Frame frames[5];
 
+    uint8_t colorspace; ///< 0 is the only value allowed (meaning bt601)
+    uint8_t fullrange;  ///< whether we can skip clamping in dsp functions
+
     int num_jobs;
     /**
      * This describes the macroblock memory layout.
@@ -269,6 +274,26 @@ typedef struct VP8Context {
      * 1 -> Macroblocks for entire frame alloced (sliced thread).
      */
     int mb_layout;
+
+    /**
+     * Fade bit present in bitstream (VP7)
+     */
+    int fade_present;
+
+    /**
+     * Interframe DC prediction (VP7)
+     * [0] VP56_FRAME_PREVIOUS
+     * [1] VP56_FRAME_GOLDEN
+     */
+    uint16_t inter_dc_pred[2][2];
+
+    /**
+     * Macroblock features (VP7)
+     */
+    uint8_t feature_enabled[4];
+    uint8_t feature_present_prob[4];
+    uint8_t feature_index_prob[4][3];
+    uint8_t feature_value[4][4];
 } VP8Context;
 
 int ff_vp8_decode_init(AVCodecContext *avctx);