#include "dsputil.h"
#include "get_bits.h"
#include "bytestream.h"
+#include "videodsp.h"
#include "vp3dsp.h"
#include "vp56dsp.h"
typedef struct vp56_context VP56Context;
-typedef struct {
+typedef struct VP56mv {
DECLARE_ALIGNED(4, int16_t, x);
int16_t y;
} VP56mv;
+#define VP56_SIZE_CHANGE 1
+
typedef void (*VP56ParseVectorAdjustment)(VP56Context *s,
VP56mv *vect);
typedef void (*VP56Filter)(VP56Context *s, uint8_t *dst, uint8_t *src,
typedef int (*VP56ParseHeader)(VP56Context *s, const uint8_t *buf,
int buf_size);
-typedef struct {
+typedef struct VP56RangeCoder {
int high;
int bits; /* stored negated (i.e. negative "bits" is a positive number of
bits left) in order to eliminate a negate in cache refilling */
unsigned int code_word;
} VP56RangeCoder;
-typedef struct {
+typedef struct VP56RefDc {
uint8_t not_null_dc;
VP56Frame ref_frame;
DCTELEM dc_coeff;
} VP56RefDc;
-typedef struct {
+typedef struct VP56Macroblock {
uint8_t type;
VP56mv mv;
} VP56Macroblock;
-typedef struct {
+typedef struct VP56Model {
uint8_t coeff_reorder[64]; /* used in vp6 only */
uint8_t coeff_index_to_pos[64]; /* used in vp6 only */
uint8_t vector_sig[2]; /* delta sign */
struct vp56_context {
AVCodecContext *avctx;
DSPContext dsp;
+ VideoDSPContext vdsp;
VP3DSPContext vp3dsp;
VP56DSPContext vp56dsp;
ScanTable scantable;
int ff_vp56_free(AVCodecContext *avctx);
int ff_vp56_free_context(VP56Context *s);
void ff_vp56_init_dequant(VP56Context *s, int quantizer);
-int ff_vp56_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
+int ff_vp56_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
AVPacket *avpkt);