comparison cavs.c @ 12356:1241c824de46 libavcodec

Move cavs dsp functions to their own struct
author mru
date Tue, 03 Aug 2010 20:59:00 +0000
parents 7dd2a45249a9
children
comparison
equal deleted inserted replaced
12355:e25a985a550c 12356:1241c824de46
111 } 111 }
112 if(AV_RN64(bs)) { 112 if(AV_RN64(bs)) {
113 if(h->flags & A_AVAIL) { 113 if(h->flags & A_AVAIL) {
114 qp_avg = (h->qp + h->left_qp + 1) >> 1; 114 qp_avg = (h->qp + h->left_qp + 1) >> 1;
115 SET_PARAMS; 115 SET_PARAMS;
116 h->s.dsp.cavs_filter_lv(h->cy,h->l_stride,alpha,beta,tc,bs[0],bs[1]); 116 h->cdsp.cavs_filter_lv(h->cy,h->l_stride,alpha,beta,tc,bs[0],bs[1]);
117 h->s.dsp.cavs_filter_cv(h->cu,h->c_stride,alpha,beta,tc,bs[0],bs[1]); 117 h->cdsp.cavs_filter_cv(h->cu,h->c_stride,alpha,beta,tc,bs[0],bs[1]);
118 h->s.dsp.cavs_filter_cv(h->cv,h->c_stride,alpha,beta,tc,bs[0],bs[1]); 118 h->cdsp.cavs_filter_cv(h->cv,h->c_stride,alpha,beta,tc,bs[0],bs[1]);
119 } 119 }
120 qp_avg = h->qp; 120 qp_avg = h->qp;
121 SET_PARAMS; 121 SET_PARAMS;
122 h->s.dsp.cavs_filter_lv(h->cy + 8,h->l_stride,alpha,beta,tc,bs[2],bs[3]); 122 h->cdsp.cavs_filter_lv(h->cy + 8,h->l_stride,alpha,beta,tc,bs[2],bs[3]);
123 h->s.dsp.cavs_filter_lh(h->cy + 8*h->l_stride,h->l_stride,alpha,beta,tc, 123 h->cdsp.cavs_filter_lh(h->cy + 8*h->l_stride,h->l_stride,alpha,beta,tc,
124 bs[6],bs[7]); 124 bs[6],bs[7]);
125 125
126 if(h->flags & B_AVAIL) { 126 if(h->flags & B_AVAIL) {
127 qp_avg = (h->qp + h->top_qp[h->mbx] + 1) >> 1; 127 qp_avg = (h->qp + h->top_qp[h->mbx] + 1) >> 1;
128 SET_PARAMS; 128 SET_PARAMS;
129 h->s.dsp.cavs_filter_lh(h->cy,h->l_stride,alpha,beta,tc,bs[4],bs[5]); 129 h->cdsp.cavs_filter_lh(h->cy,h->l_stride,alpha,beta,tc,bs[4],bs[5]);
130 h->s.dsp.cavs_filter_ch(h->cu,h->c_stride,alpha,beta,tc,bs[4],bs[5]); 130 h->cdsp.cavs_filter_ch(h->cu,h->c_stride,alpha,beta,tc,bs[4],bs[5]);
131 h->s.dsp.cavs_filter_ch(h->cv,h->c_stride,alpha,beta,tc,bs[4],bs[5]); 131 h->cdsp.cavs_filter_ch(h->cv,h->c_stride,alpha,beta,tc,bs[4],bs[5]);
132 } 132 }
133 } 133 }
134 } 134 }
135 h->left_qp = h->qp; 135 h->left_qp = h->qp;
136 h->top_qp[h->mbx] = h->qp; 136 h->top_qp[h->mbx] = h->qp;
412 } 412 }
413 413
414 void ff_cavs_inter(AVSContext *h, enum cavs_mb mb_type) { 414 void ff_cavs_inter(AVSContext *h, enum cavs_mb mb_type) {
415 if(ff_cavs_partition_flags[mb_type] == 0){ // 16x16 415 if(ff_cavs_partition_flags[mb_type] == 0){ // 16x16
416 mc_part_std(h, 1, 8, 0, h->cy, h->cu, h->cv, 0, 0, 416 mc_part_std(h, 1, 8, 0, h->cy, h->cu, h->cv, 0, 0,
417 h->s.dsp.put_cavs_qpel_pixels_tab[0], 417 h->cdsp.put_cavs_qpel_pixels_tab[0],
418 h->s.dsp.put_h264_chroma_pixels_tab[0], 418 h->s.dsp.put_h264_chroma_pixels_tab[0],
419 h->s.dsp.avg_cavs_qpel_pixels_tab[0], 419 h->cdsp.avg_cavs_qpel_pixels_tab[0],
420 h->s.dsp.avg_h264_chroma_pixels_tab[0],&h->mv[MV_FWD_X0]); 420 h->s.dsp.avg_h264_chroma_pixels_tab[0],&h->mv[MV_FWD_X0]);
421 }else{ 421 }else{
422 mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 0, 0, 422 mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 0, 0,
423 h->s.dsp.put_cavs_qpel_pixels_tab[1], 423 h->cdsp.put_cavs_qpel_pixels_tab[1],
424 h->s.dsp.put_h264_chroma_pixels_tab[1], 424 h->s.dsp.put_h264_chroma_pixels_tab[1],
425 h->s.dsp.avg_cavs_qpel_pixels_tab[1], 425 h->cdsp.avg_cavs_qpel_pixels_tab[1],
426 h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X0]); 426 h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X0]);
427 mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 4, 0, 427 mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 4, 0,
428 h->s.dsp.put_cavs_qpel_pixels_tab[1], 428 h->cdsp.put_cavs_qpel_pixels_tab[1],
429 h->s.dsp.put_h264_chroma_pixels_tab[1], 429 h->s.dsp.put_h264_chroma_pixels_tab[1],
430 h->s.dsp.avg_cavs_qpel_pixels_tab[1], 430 h->cdsp.avg_cavs_qpel_pixels_tab[1],
431 h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X1]); 431 h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X1]);
432 mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 0, 4, 432 mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 0, 4,
433 h->s.dsp.put_cavs_qpel_pixels_tab[1], 433 h->cdsp.put_cavs_qpel_pixels_tab[1],
434 h->s.dsp.put_h264_chroma_pixels_tab[1], 434 h->s.dsp.put_h264_chroma_pixels_tab[1],
435 h->s.dsp.avg_cavs_qpel_pixels_tab[1], 435 h->cdsp.avg_cavs_qpel_pixels_tab[1],
436 h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X2]); 436 h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X2]);
437 mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 4, 4, 437 mc_part_std(h, 1, 4, 0, h->cy, h->cu, h->cv, 4, 4,
438 h->s.dsp.put_cavs_qpel_pixels_tab[1], 438 h->cdsp.put_cavs_qpel_pixels_tab[1],
439 h->s.dsp.put_h264_chroma_pixels_tab[1], 439 h->s.dsp.put_h264_chroma_pixels_tab[1],
440 h->s.dsp.avg_cavs_qpel_pixels_tab[1], 440 h->cdsp.avg_cavs_qpel_pixels_tab[1],
441 h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X3]); 441 h->s.dsp.avg_h264_chroma_pixels_tab[1],&h->mv[MV_FWD_X3]);
442 } 442 }
443 } 443 }
444 444
445 /***************************************************************************** 445 /*****************************************************************************
670 av_cold int ff_cavs_init(AVCodecContext *avctx) { 670 av_cold int ff_cavs_init(AVCodecContext *avctx) {
671 AVSContext *h = avctx->priv_data; 671 AVSContext *h = avctx->priv_data;
672 MpegEncContext * const s = &h->s; 672 MpegEncContext * const s = &h->s;
673 673
674 MPV_decode_defaults(s); 674 MPV_decode_defaults(s);
675 ff_cavsdsp_init(&h->cdsp, avctx);
675 s->avctx = avctx; 676 s->avctx = avctx;
676 677
677 avctx->pix_fmt= PIX_FMT_YUV420P; 678 avctx->pix_fmt= PIX_FMT_YUV420P;
678 679
679 h->luma_scan[0] = 0; 680 h->luma_scan[0] = 0;