00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _MACROBLOCK_H_
00019 #define _MACROBLOCK_H_
00020
00021 #include "block.h"
00022
00023 void next_macroblock (ImageParameters *img, Macroblock* currMB);
00024 void start_macroblock (ImageParameters *img, Slice *currSlice, Macroblock** currMB, int mb_addr, byte mb_field);
00025 void reset_macroblock (ImageParameters *img, Macroblock *currMB, int prev_mb);
00026 void end_macroblock (ImageParameters *img, Slice *currSlice, Macroblock* currMB, Boolean *end_of_slice, Boolean *recode_macroblock);
00027 void write_macroblock (ImageParameters *img, Slice *currSlice, Macroblock* currMB, int eos_bit, Boolean prev_recode_mb);
00028
00029 int LumaResidualCoding8x8(Macroblock* currMB, int*, int64*, int, short, int, int, short, short, int);
00030 void LumaResidualCoding (Macroblock *currMB, int is_cavlc);
00031 void ChromaResidualCoding (Macroblock *currMB, int is_cavlc);
00032
00033 void IntraChromaPrediction(Macroblock *currMB, int*, int*, int*);
00034 void IntraChromaRDDecision(Macroblock *currMB, RD_PARAMS);
00035
00036 int TransformDecision(Macroblock *currMB, int, int*);
00037
00038 int B8Mode2Value (short b8mode, short b8pdir);
00039
00040 int writeMBLayer (Slice* currSlice, Macroblock *currMB, int rdopt, int *coeff_rate);
00041 void write_terminating_bit (Slice* currSlice, short bit);
00042
00043 int writeReferenceFrame (Slice* currSlice, Macroblock *currMB, int mode, int i, int j, int fwd_flag, int ref);
00044 int writeMotionVector8x8 (Slice* currSlice, Macroblock *currMB, int i0, int j0, int i1, int j1, int refframe, int list_idx, int mv_mode, short bipred_me);
00045
00046 int writeCoeff4x4_CABAC (Slice* currSlice, Macroblock *currMB, ColorPlane, int, int, int);
00047 int writeCoeff8x8_CABAC (Slice* currSlice, Macroblock* currMB, ColorPlane, int, int);
00048 int writeCoeff8x8 (Slice* currSlice, Macroblock* currMB, ColorPlane, int, int, int);
00049 int writeCoeff16x16 (Slice* currSlice, Macroblock* currMB, ColorPlane, int);
00050
00051 int writeCoeff4x4_CAVLC (Slice* currSlice, Macroblock* currMB, int block_type, int b8, int b4, int param);
00052
00053 int distortion_sad(imgpel **img_org, imgpel **pred_img);
00054 int distortion_sse(imgpel **img_org, imgpel **pred_img);
00055 int distortion_hadamard(imgpel **img_org, imgpel **pred_img);
00056
00057 double (*find_sad_16x16) (Macroblock *currMB, int *intra_mode);
00058 double find_sad_16x16_JM (Macroblock *currMB, int *intra_mode);
00059
00060 void SetLagrangianMultipliersOn();
00061 void SetLagrangianMultipliersOff();
00062 void (*SetLagrangianMultipliers)();
00063
00064 int predict_nnz(Macroblock *currMB, int block_type, int i,int j);
00065 int predict_nnz_chroma(Macroblock *currMB, int i,int j);
00066
00067
00068 #endif
00069