#include "dsputil.h"
#include "mpegvideo.h"
+#include "cavsdsp.h"
#define SLICE_MAX_START_CODE 0x000001af
#define EXT_START_CODE 0x000001b5
MV_BWD_X3
};
-DECLARE_ALIGNED_8(typedef, struct) {
+DECLARE_ALIGNED(8, typedef, struct) {
int16_t x;
int16_t y;
int16_t dist;
typedef struct {
MpegEncContext s;
+ CAVSDSPContext cdsp;
Picture picture; ///< currently decoded frame
Picture DPB[2]; ///< reference frames
int dist[2]; ///< temporal distances from current frame to ref frames
int aspect_ratio;
int mb_width, mb_height;
int pic_type;
+ int stream_revision; ///<0 for samples from 2006, 1 for rm52j encoder
int progressive;
int pic_structure;
int skip_mode_flag; ///< select between skip_count or one skip_flag per MB
int loop_filter_disable;
int alpha_offset, beta_offset;
int ref_flag;
- int mbx, mby; ///< macroblock coordinates
+ int mbx, mby, mbidx; ///< macroblock coordinates
int flags; ///< availability flags of neighbouring macroblocks
int stc; ///< last start code
uint8_t *cy, *cu, *cv; ///< current MB sample pointers
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);
uint8_t *col_type_base;
- uint8_t *col_type;
/* scaling factors for MV prediction */
int sym_factor; ///< for scaling in symmetrical B block
}
static inline void set_intra_mode_default(AVSContext *h) {
- h->pred_mode_Y[3] = h->pred_mode_Y[6] = INTRA_L_LP;
- h->top_pred_Y[h->mbx*2+0] = h->top_pred_Y[h->mbx*2+1] = INTRA_L_LP;
+ if(h->stream_revision > 0) {
+ h->pred_mode_Y[3] = h->pred_mode_Y[6] = NOT_AVAIL;
+ h->top_pred_Y[h->mbx*2+0] = h->top_pred_Y[h->mbx*2+1] = NOT_AVAIL;
+ } else {
+ h->pred_mode_Y[3] = h->pred_mode_Y[6] = INTRA_L_LP;
+ h->top_pred_Y[h->mbx*2+0] = h->top_pred_Y[h->mbx*2+1] = INTRA_L_LP;
+ }
}
static inline void set_mvs(cavs_vector *mv, enum cavs_block size) {
h->mv[MV_BWD_X0] = ff_cavs_intra_mv;
set_mvs(&h->mv[MV_BWD_X0], BLK_16X16);
if(h->pic_type != FF_B_TYPE)
- *h->col_type = I_8X8;
+ h->col_type_base[h->mbidx] = I_8X8;
}
static inline int dequant(AVSContext *h, DCTELEM *level_buf, uint8_t *run_buf,