13306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong/* ------------------------------------------------------------------ 23306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Copyright (C) 1998-2009 PacketVideo 33306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 43306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Licensed under the Apache License, Version 2.0 (the "License"); 53306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * you may not use this file except in compliance with the License. 63306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * You may obtain a copy of the License at 73306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 83306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * http://www.apache.org/licenses/LICENSE-2.0 93306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * 103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * Unless required by applicable law or agreed to in writing, software 113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * distributed under the License is distributed on an "AS IS" BASIS, 123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * express or implied. 143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * See the License for the specific language governing permissions 153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * and limitations under the License. 163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong * ------------------------------------------------------------------- 173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong */ 183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#include "mp4dec_lib.h" 193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#include "post_proc.h" 203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef PV_POSTPROC_ON 223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dongvoid Deringing_Luma( 243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *Rec_Y, 253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int width, 263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int height, 273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int16 *QP_store, 283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int, 293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *pp_mod) 303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong{ 313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*---------------------------------------------------------------------------- 323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; Define all local variables 333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ----------------------------------------------------------------------------*/ 343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int thres[4], range[4], max_range_blk, max_thres_blk; 353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int MB_V, MB_H, BLK_V, BLK_H; 363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int v_blk, h_blk; 373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int max_diff; 383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int max_blk, min_blk; 393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int v0, h0; 403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong uint8 *ptr; 413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int thr, blks, incr; 423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong int mb_indx, blk_indx; 433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*---------------------------------------------------------------------------- 453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; Function body here 463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ----------------------------------------------------------------------------*/ 473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong incr = width - BLKSIZE; 483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* Dering the first line of macro blocks */ 503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (MB_H = 0; MB_H < width; MB_H += MBSIZE) 513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_diff = (QP_store[(MB_H)>>4] >> 2) + 4; 533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold determination */ 553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_range_blk = max_thres_blk = 0; 563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks = 0; 573306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (BLK_V = 0; BLK_V < MBSIZE; BLK_V += BLKSIZE) 593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (BLK_H = 0; BLK_H < MBSIZE; BLK_H += BLKSIZE) 613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ptr = &Rec_Y[(int32)(BLK_V) * width + MB_H + BLK_H]; 633306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong FindMaxMin(ptr, &min_blk, &max_blk, incr); 643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thres[blks] = (max_blk + min_blk + 1) >> 1; 663306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong range[blks] = max_blk - min_blk; 673306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 683306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (range[blks] >= max_range_blk) 693306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 703306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_range_blk = range[blks]; 713306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_thres_blk = thres[blks]; 723306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 733306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks++; 743306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 753306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 763306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 773306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks = 0; 783306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (v_blk = 0; v_blk < MBSIZE; v_blk += BLKSIZE) 793306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 803306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong v0 = ((v_blk - 1) >= 1) ? (v_blk - 1) : 1; 813306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (h_blk = MB_H; h_blk < MB_H + MBSIZE; h_blk += BLKSIZE) 823306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 833306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong h0 = ((h_blk - 1) >= 1) ? (h_blk - 1) : 1; 843306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 853306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold rearrangement for flat region adjacent to non-flat region */ 863306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (range[blks]<32 && max_range_blk >= 64) 873306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thres[blks] = max_thres_blk; 883306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 893306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold rearrangement for deblocking 903306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong (blockiness annoying at DC dominant region) */ 913306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (max_range_blk >= 16) 923306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 933306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* adaptive smoothing */ 943306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thr = thres[blks]; 953306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 963306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong AdaptiveSmooth_NoMMX(Rec_Y, v0, h0, v_blk, h_blk, 973306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thr, width, max_diff); 983306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 993306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks++; 1003306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } /* block level (Luminance) */ 1013306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1023306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } /* macroblock level */ 1033306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1043306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1053306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* Do the rest of the macro-block-lines */ 1063306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (MB_V = MBSIZE; MB_V < height; MB_V += MBSIZE) 1073306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1083306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* First macro-block */ 1093306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_diff = (QP_store[((((int32)MB_V*width)>>4))>>4] >> 2) + 4; 1103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold determination */ 1113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_range_blk = max_thres_blk = 0; 1123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks = 0; 1133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (BLK_V = 0; BLK_V < MBSIZE; BLK_V += BLKSIZE) 1143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (BLK_H = 0; BLK_H < MBSIZE; BLK_H += BLKSIZE) 1163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ptr = &Rec_Y[(int32)(MB_V + BLK_V) * width + BLK_H]; 1183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong FindMaxMin(ptr, &min_blk, &max_blk, incr); 1193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thres[blks] = (max_blk + min_blk + 1) >> 1; 1203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong range[blks] = max_blk - min_blk; 1213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (range[blks] >= max_range_blk) 1233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_range_blk = range[blks]; 1253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_thres_blk = thres[blks]; 1263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks++; 1283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks = 0; 1323306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (v_blk = MB_V; v_blk < MB_V + MBSIZE; v_blk += BLKSIZE) 1333306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1343306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong v0 = v_blk - 1; 1353306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (h_blk = 0; h_blk < MBSIZE; h_blk += BLKSIZE) 1363306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1373306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong h0 = ((h_blk - 1) >= 1) ? (h_blk - 1) : 1; 1383306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1393306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold rearrangement for flat region adjacent to non-flat region */ 1403306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (range[blks]<32 && max_range_blk >= 64) 1413306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thres[blks] = max_thres_blk; 1423306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1433306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold rearrangement for deblocking 1443306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong (blockiness annoying at DC dominant region) */ 1453306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (max_range_blk >= 16) 1463306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1473306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* adaptive smoothing */ 1483306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thr = thres[blks]; 1493306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1503306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong AdaptiveSmooth_NoMMX(Rec_Y, v0, h0, v_blk, h_blk, 1513306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thr, width, max_diff); 1523306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1533306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks++; 1543306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1553306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } /* block level (Luminance) */ 1563306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1573306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* Rest of the macro-blocks */ 1583306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (MB_H = MBSIZE; MB_H < width; MB_H += MBSIZE) 1593306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1603306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_diff = (QP_store[((((int32)MB_V*width)>>4)+MB_H)>>4] >> 2) + 4; 1613306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1623306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold determination */ 1633306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_range_blk = max_thres_blk = 0; 1643306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks = 0; 1653306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1663306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong mb_indx = (MB_V / 8) * (width / 8) + MB_H / 8; 1673306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (BLK_V = 0; BLK_V < MBSIZE; BLK_V += BLKSIZE) 1683306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1693306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (BLK_H = 0; BLK_H < MBSIZE; BLK_H += BLKSIZE) 1703306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1713306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blk_indx = mb_indx + (BLK_V / 8) * width / 8 + BLK_H / 8; 1723306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* Update based on pp_mod only */ 1733306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if ((pp_mod[blk_indx]&0x4) != 0) 1743306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1753306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ptr = &Rec_Y[(int32)(MB_V + BLK_V) * width + MB_H + BLK_H]; 1763306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong FindMaxMin(ptr, &min_blk, &max_blk, incr); 1773306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thres[blks] = (max_blk + min_blk + 1) >> 1; 1783306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong range[blks] = max_blk - min_blk; 1793306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1803306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (range[blks] >= max_range_blk) 1813306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1823306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_range_blk = range[blks]; 1833306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong max_thres_blk = thres[blks]; 1843306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1853306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1863306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks++; 1873306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1883306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 1893306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 1903306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks = 0; 1913306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (v_blk = MB_V; v_blk < MB_V + MBSIZE; v_blk += BLKSIZE) 1923306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1933306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong v0 = v_blk - 1; 1943306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong mb_indx = (v_blk / 8) * (width / 8); 1953306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong for (h_blk = MB_H; h_blk < MB_H + MBSIZE; h_blk += BLKSIZE) 1963306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 1973306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong h0 = h_blk - 1; 1983306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blk_indx = mb_indx + h_blk / 8; 1993306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if ((pp_mod[blk_indx]&0x4) != 0) 2003306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 2013306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold rearrangement for flat region adjacent to non-flat region */ 2023306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (range[blks]<32 && max_range_blk >= 64) 2033306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thres[blks] = max_thres_blk; 2043306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2053306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* threshold rearrangement for deblocking 2063306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong (blockiness annoying at DC dominant region) */ 2073306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong if (max_range_blk >= 16) 2083306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong { 2093306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /* adaptive smoothing */ 2103306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thr = thres[blks]; 2113306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#ifdef NoMMX 2123306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong AdaptiveSmooth_NoMMX(Rec_Y, v0, h0, v_blk, h_blk, 2133306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong thr, width, max_diff); 2143306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#else 2153306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong DeringAdaptiveSmoothMMX(&Rec_Y[v0*width+h0], 2163306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong width, thr, max_diff); 2173306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 2183306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 2193306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 2203306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong blks++; 2213306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } 2223306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } /* block level (Luminance) */ 2233306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } /* macroblock level */ 2243306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong } /* macroblock level */ 2253306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong 2263306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong /*---------------------------------------------------------------------------- 2273306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ; Return nothing or data or data pointer 2283306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong ----------------------------------------------------------------------------*/ 2293306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong return; 2303306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong} 2313306cfee3bf38ab207a0504e49c2d492bb73ffbfJames Dong#endif 232