@ -324,11 +324,12 @@ void ff_cavs_modify_mb_i(AVSContext *h, int *pred_mode_uv) {
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
static inline void mc_dir_part ( AVSContext * h , Picture * pic , int square ,
int chroma_height , int delta , int list , uint8_t * dest_y ,
uint8_t * dest_cb , uint8_t * dest_cr , int src_x_offset ,
int src_y_offset , qpel_mc_func * qpix_op ,
h264_chroma_mc_func chroma_op , cavs_vector * mv ) {
static inline void mc_dir_part ( AVSContext * h , Picture * pic ,
int chroma_height , int delta , int list , uint8_t * dest_y ,
uint8_t * dest_cb , uint8_t * dest_cr , int src_x_offset ,
int src_y_offset , qpel_mc_func * qpix_op ,
h264_chroma_mc_func chroma_op , cavs_vector * mv )
{
MpegEncContext * const s = & h - > s ;
const int mx = mv - > x + src_x_offset * 8 ;
const int my = mv - > y + src_y_offset * 8 ;
@ -360,9 +361,6 @@ static inline void mc_dir_part(AVSContext *h,Picture *pic,int square,
}
qpix_op [ luma_xy ] ( dest_y , src_y , h - > l_stride ) ; //FIXME try variable height perhaps?
if ( ! square ) {
qpix_op [ luma_xy ] ( dest_y + delta , src_y + delta , h - > l_stride ) ;
}
if ( emu ) {
s - > dsp . emulated_edge_mc ( s - > edge_emu_buffer , src_cb , h - > c_stride ,
@ -379,11 +377,12 @@ static inline void mc_dir_part(AVSContext *h,Picture *pic,int square,
chroma_op ( dest_cr , src_cr , h - > c_stride , chroma_height , mx & 7 , my & 7 ) ;
}
static inline void mc_part_std ( AVSContext * h , int square , int chroma_height , int delta ,
uint8_t * dest_y , uint8_t * dest_cb , uint8_t * dest_cr ,
int x_offset , int y_offset , qpel_mc_func * qpix_put ,
h264_chroma_mc_func chroma_put , qpel_mc_func * qpix_avg ,
h264_chroma_mc_func chroma_avg , cavs_vector * mv ) {
static inline void mc_part_std ( AVSContext * h , int chroma_height , int delta ,
uint8_t * dest_y , uint8_t * dest_cb , uint8_t * dest_cr ,
int x_offset , int y_offset , qpel_mc_func * qpix_put ,
h264_chroma_mc_func chroma_put , qpel_mc_func * qpix_avg ,
h264_chroma_mc_func chroma_avg , cavs_vector * mv )
{
qpel_mc_func * qpix_op = qpix_put ;
h264_chroma_mc_func chroma_op = chroma_put ;
@ -395,7 +394,7 @@ static inline void mc_part_std(AVSContext *h,int square,int chroma_height,int de
if ( mv - > ref > = 0 ) {
Picture * ref = & h - > DPB [ mv - > ref ] ;
mc_dir_part ( h , ref , square , chroma_height , delta , 0 ,
mc_dir_part ( h , ref , chroma_height , delta , 0 ,
dest_y , dest_cb , dest_cr , x_offset , y_offset ,
qpix_op , chroma_op , mv ) ;
@ -405,7 +404,7 @@ static inline void mc_part_std(AVSContext *h,int square,int chroma_height,int de
if ( ( mv + MV_BWD_OFFS ) - > ref > = 0 ) {
Picture * ref = & h - > DPB [ 0 ] ;
mc_dir_part ( h , ref , square , chroma_height , delta , 1 ,
mc_dir_part ( h , ref , chroma_height , delta , 1 ,
dest_y , dest_cb , dest_cr , x_offset , y_offset ,
qpix_op , chroma_op , mv + MV_BWD_OFFS ) ;
}
@ -413,28 +412,28 @@ static inline void mc_part_std(AVSContext *h,int square,int chroma_height,int de
void ff_cavs_inter ( AVSContext * h , enum cavs_mb mb_type ) {
if ( ff_cavs_partition_flags [ mb_type ] = = 0 ) { // 16x16
mc_part_std ( h , 1 , 8 , 0 , h - > cy , h - > cu , h - > cv , 0 , 0 ,
mc_part_std ( h , 8 , 0 , h - > cy , h - > cu , h - > cv , 0 , 0 ,
h - > cdsp . put_cavs_qpel_pixels_tab [ 0 ] ,
h - > s . dsp . put_h264_chroma_pixels_tab [ 0 ] ,
h - > cdsp . avg_cavs_qpel_pixels_tab [ 0 ] ,
h - > s . dsp . avg_h264_chroma_pixels_tab [ 0 ] , & h - > mv [ MV_FWD_X0 ] ) ;
} else {
mc_part_std ( h , 1 , 4 , 0 , h - > cy , h - > cu , h - > cv , 0 , 0 ,
mc_part_std ( h , 4 , 0 , h - > cy , h - > cu , h - > cv , 0 , 0 ,
h - > cdsp . put_cavs_qpel_pixels_tab [ 1 ] ,
h - > s . dsp . put_h264_chroma_pixels_tab [ 1 ] ,
h - > cdsp . avg_cavs_qpel_pixels_tab [ 1 ] ,
h - > s . dsp . avg_h264_chroma_pixels_tab [ 1 ] , & h - > mv [ MV_FWD_X0 ] ) ;
mc_part_std ( h , 1 , 4 , 0 , h - > cy , h - > cu , h - > cv , 4 , 0 ,
mc_part_std ( h , 4 , 0 , h - > cy , h - > cu , h - > cv , 4 , 0 ,
h - > cdsp . put_cavs_qpel_pixels_tab [ 1 ] ,
h - > s . dsp . put_h264_chroma_pixels_tab [ 1 ] ,
h - > cdsp . avg_cavs_qpel_pixels_tab [ 1 ] ,
h - > s . dsp . avg_h264_chroma_pixels_tab [ 1 ] , & h - > mv [ MV_FWD_X1 ] ) ;
mc_part_std ( h , 1 , 4 , 0 , h - > cy , h - > cu , h - > cv , 0 , 4 ,
mc_part_std ( h , 4 , 0 , h - > cy , h - > cu , h - > cv , 0 , 4 ,
h - > cdsp . put_cavs_qpel_pixels_tab [ 1 ] ,
h - > s . dsp . put_h264_chroma_pixels_tab [ 1 ] ,
h - > cdsp . avg_cavs_qpel_pixels_tab [ 1 ] ,
h - > s . dsp . avg_h264_chroma_pixels_tab [ 1 ] , & h - > mv [ MV_FWD_X2 ] ) ;
mc_part_std ( h , 1 , 4 , 0 , h - > cy , h - > cu , h - > cv , 4 , 4 ,
mc_part_std ( h , 4 , 0 , h - > cy , h - > cu , h - > cv , 4 , 4 ,
h - > cdsp . put_cavs_qpel_pixels_tab [ 1 ] ,
h - > s . dsp . put_h264_chroma_pixels_tab [ 1 ] ,
h - > cdsp . avg_cavs_qpel_pixels_tab [ 1 ] ,