Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: patched-ffmpeg-mt/libavcodec/cavs.c

Issue 789004: ffmpeg roll of source to mar 9 version... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/ffmpeg/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Chinese AVS video (AVS1-P2, JiZhun profile) decoder. 2 * Chinese AVS video (AVS1-P2, JiZhun profile) decoder.
3 * Copyright (c) 2006 Stefan Gehrer <stefan.gehrer@gmx.de> 3 * Copyright (c) 2006 Stefan Gehrer <stefan.gehrer@gmx.de>
4 * 4 *
5 * This file is part of FFmpeg. 5 * This file is part of FFmpeg.
6 * 6 *
7 * FFmpeg is free software; you can redistribute it and/or 7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public 8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version. 10 * version 2.1 of the License, or (at your option) any later version.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 * boundary strength (bs) mapping: 66 * boundary strength (bs) mapping:
67 * 67 *
68 * --4---5-- 68 * --4---5--
69 * 0 2 | 69 * 0 2 |
70 * | 6 | 7 | 70 * | 6 | 7 |
71 * 1 3 | 71 * 1 3 |
72 * --------- 72 * ---------
73 * 73 *
74 */ 74 */
75 void ff_cavs_filter(AVSContext *h, enum cavs_mb mb_type) { 75 void ff_cavs_filter(AVSContext *h, enum cavs_mb mb_type) {
76 DECLARE_ALIGNED_8(uint8_t, bs)[8]; 76 uint8_t bs[8];
77 int qp_avg, alpha, beta, tc; 77 int qp_avg, alpha, beta, tc;
78 int i; 78 int i;
79 79
80 /* save un-deblocked lines */ 80 /* save un-deblocked lines */
81 h->topleft_border_y = h->top_border_y[h->mbx*16+15]; 81 h->topleft_border_y = h->top_border_y[h->mbx*16+15];
82 h->topleft_border_u = h->top_border_u[h->mbx*10+8]; 82 h->topleft_border_u = h->top_border_u[h->mbx*10+8];
83 h->topleft_border_v = h->top_border_v[h->mbx*10+8]; 83 h->topleft_border_v = h->top_border_v[h->mbx*10+8];
84 memcpy(&h->top_border_y[h->mbx*16], h->cy + 15* h->l_stride,16); 84 memcpy(&h->top_border_y[h->mbx*16], h->cy + 15* h->l_stride,16);
85 memcpy(&h->top_border_u[h->mbx*10+1], h->cu + 7* h->c_stride,8); 85 memcpy(&h->top_border_u[h->mbx*10+1], h->cu + 7* h->c_stride,8);
86 memcpy(&h->top_border_v[h->mbx*10+1], h->cv + 7* h->c_stride,8); 86 memcpy(&h->top_border_v[h->mbx*10+1], h->cv + 7* h->c_stride,8);
87 for(i=0;i<8;i++) { 87 for(i=0;i<8;i++) {
88 h->left_border_y[i*2+1] = *(h->cy + 15 + (i*2+0)*h->l_stride); 88 h->left_border_y[i*2+1] = *(h->cy + 15 + (i*2+0)*h->l_stride);
89 h->left_border_y[i*2+2] = *(h->cy + 15 + (i*2+1)*h->l_stride); 89 h->left_border_y[i*2+2] = *(h->cy + 15 + (i*2+1)*h->l_stride);
90 h->left_border_u[i+1] = *(h->cu + 7 + i*h->c_stride); 90 h->left_border_u[i+1] = *(h->cu + 7 + i*h->c_stride);
91 h->left_border_v[i+1] = *(h->cv + 7 + i*h->c_stride); 91 h->left_border_v[i+1] = *(h->cv + 7 + i*h->c_stride);
92 } 92 }
93 if(!h->loop_filter_disable) { 93 if(!h->loop_filter_disable) {
94 /* determine bs */ 94 /* determine bs */
95 if(mb_type == I_8X8) 95 if(mb_type == I_8X8)
96 *((uint64_t *)bs) = 0x0202020202020202ULL; 96 memset(bs,2,8);
97 else{ 97 else{
98 *((uint64_t *)bs) = 0; 98 memset(bs,0,8);
99 if(ff_cavs_partition_flags[mb_type] & SPLITV){ 99 if(ff_cavs_partition_flags[mb_type] & SPLITV){
100 bs[2] = get_bs(&h->mv[MV_FWD_X0], &h->mv[MV_FWD_X1], mb_type > P _8X8); 100 bs[2] = get_bs(&h->mv[MV_FWD_X0], &h->mv[MV_FWD_X1], mb_type > P _8X8);
101 bs[3] = get_bs(&h->mv[MV_FWD_X2], &h->mv[MV_FWD_X3], mb_type > P _8X8); 101 bs[3] = get_bs(&h->mv[MV_FWD_X2], &h->mv[MV_FWD_X3], mb_type > P _8X8);
102 } 102 }
103 if(ff_cavs_partition_flags[mb_type] & SPLITH){ 103 if(ff_cavs_partition_flags[mb_type] & SPLITH){
104 bs[6] = get_bs(&h->mv[MV_FWD_X0], &h->mv[MV_FWD_X2], mb_type > P _8X8); 104 bs[6] = get_bs(&h->mv[MV_FWD_X0], &h->mv[MV_FWD_X2], mb_type > P _8X8);
105 bs[7] = get_bs(&h->mv[MV_FWD_X1], &h->mv[MV_FWD_X3], mb_type > P _8X8); 105 bs[7] = get_bs(&h->mv[MV_FWD_X1], &h->mv[MV_FWD_X3], mb_type > P _8X8);
106 } 106 }
107 bs[0] = get_bs(&h->mv[MV_FWD_A1], &h->mv[MV_FWD_X0], mb_type > P_8X8 ); 107 bs[0] = get_bs(&h->mv[MV_FWD_A1], &h->mv[MV_FWD_X0], mb_type > P_8X8 );
108 bs[1] = get_bs(&h->mv[MV_FWD_A3], &h->mv[MV_FWD_X2], mb_type > P_8X8 ); 108 bs[1] = get_bs(&h->mv[MV_FWD_A3], &h->mv[MV_FWD_X2], mb_type > P_8X8 );
109 bs[4] = get_bs(&h->mv[MV_FWD_B2], &h->mv[MV_FWD_X0], mb_type > P_8X8 ); 109 bs[4] = get_bs(&h->mv[MV_FWD_B2], &h->mv[MV_FWD_X0], mb_type > P_8X8 );
110 bs[5] = get_bs(&h->mv[MV_FWD_B3], &h->mv[MV_FWD_X1], mb_type > P_8X8 ); 110 bs[5] = get_bs(&h->mv[MV_FWD_B3], &h->mv[MV_FWD_X1], mb_type > P_8X8 );
111 } 111 }
112 if( *((uint64_t *)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->s.dsp.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->s.dsp.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->s.dsp.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->s.dsp.cavs_filter_lv(h->cy + 8,h->l_stride,alpha,beta,tc,bs[2],bs [3]);
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 av_free(h->top_mv[1]); 706 av_free(h->top_mv[1]);
707 av_free(h->top_pred_Y); 707 av_free(h->top_pred_Y);
708 av_free(h->top_border_y); 708 av_free(h->top_border_y);
709 av_free(h->top_border_u); 709 av_free(h->top_border_u);
710 av_free(h->top_border_v); 710 av_free(h->top_border_v);
711 av_free(h->col_mv); 711 av_free(h->col_mv);
712 av_free(h->col_type_base); 712 av_free(h->col_type_base);
713 av_free(h->block); 713 av_free(h->block);
714 return 0; 714 return 0;
715 } 715 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698