#ifndef AVCODEC_CAVS_H
#define AVCODEC_CAVS_H
-#include "dsputil.h"
-#include "mpegvideo.h"
+#include "bitstream.h"
#include "cavsdsp.h"
+#include "blockdsp.h"
+#include "h264chroma.h"
+#include "idctdsp.h"
+#include "videodsp.h"
#define SLICE_MAX_START_CODE 0x000001af
#define EXT_START_CODE 0x000001b5
int8_t max_run;
};
+typedef struct AVSFrame {
+ AVFrame *f;
+ int poc;
+} AVSFrame;
+
typedef struct AVSContext {
- MpegEncContext s;
- CAVSDSPContext cdsp;
- Picture picture; ///< currently decoded frame
- Picture DPB[2]; ///< reference frames
+ AVCodecContext *avctx;
+ BlockDSPContext bdsp;
+ H264ChromaContext h264chroma;
+ IDCTDSPContext idsp;
+ VideoDSPContext vdsp;
+ CAVSDSPContext cdsp;
+ BitstreamContext bc;
+ AVSFrame cur; ///< currently decoded frame
+ AVSFrame DPB[2]; ///< reference frames
int dist[2]; ///< temporal distances from current frame to ref frames
+ int low_delay;
int profile, level;
int aspect_ratio;
int mb_width, mb_height;
- int pic_type;
+ int width, height;
int stream_revision; ///<0 for samples from 2006, 1 for rm52j encoder
int progressive;
int pic_structure;
6: A3 X2 X3 */
int pred_mode_Y[3*3];
int *top_pred_Y;
- int l_stride, c_stride;
+ ptrdiff_t l_stride, c_stride;
int luma_scan[4];
int qp;
int qp_fixed;
uint8_t intern_border_y[26];
uint8_t topleft_border_y, topleft_border_u, topleft_border_v;
- void (*intra_pred_l[8])(uint8_t *d,uint8_t *top,uint8_t *left,int stride);
- void (*intra_pred_c[7])(uint8_t *d,uint8_t *top,uint8_t *left,int stride);
+ void (*intra_pred_l[8])(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride);
+ void (*intra_pred_c[7])(uint8_t *d, uint8_t *top, uint8_t *left, ptrdiff_t stride);
uint8_t *col_type_base;
/* scaling factors for MV prediction */
int direct_den[2]; ///< for scaling in direct B block
int scale_den[2]; ///< for scaling neighbouring MVs
+ uint8_t *edge_emu_buffer;
+
int got_keyframe;
- DCTELEM *block;
+ int16_t *block;
} AVSContext;
extern const uint8_t ff_cavs_partition_flags[30];