summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/m4v_h263/enc/src/sad.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/m4v_h263/enc/src/sad.cpp')
-rw-r--r--media/libstagefright/codecs/m4v_h263/enc/src/sad.cpp375
1 files changed, 0 insertions, 375 deletions
diff --git a/media/libstagefright/codecs/m4v_h263/enc/src/sad.cpp b/media/libstagefright/codecs/m4v_h263/enc/src/sad.cpp
deleted file mode 100644
index 8d18f45..0000000
--- a/media/libstagefright/codecs/m4v_h263/enc/src/sad.cpp
+++ /dev/null
@@ -1,375 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- * -------------------------------------------------------------------
- */
-#include "mp4def.h"
-#include "mp4lib_int.h"
-
-#include "sad_inline.h"
-
-#define Cached_lx 176
-
-#ifdef _SAD_STAT
-ULong num_sad_MB = 0;
-ULong num_sad_Blk = 0;
-ULong num_sad_MB_call = 0;
-ULong num_sad_Blk_call = 0;
-
-#define NUM_SAD_MB_CALL() num_sad_MB_call++
-#define NUM_SAD_MB() num_sad_MB++
-#define NUM_SAD_BLK_CALL() num_sad_Blk_call++
-#define NUM_SAD_BLK() num_sad_Blk++
-
-#else
-
-#define NUM_SAD_MB_CALL()
-#define NUM_SAD_MB()
-#define NUM_SAD_BLK_CALL()
-#define NUM_SAD_BLK()
-
-#endif
-
-
-/* consist of
-Int SAD_Macroblock_C(UChar *ref,UChar *blk,Int dmin,Int lx,void *extra_info)
-Int SAD_MB_HTFM_Collect(UChar *ref,UChar *blk,Int dmin,Int lx,void *extra_info)
-Int SAD_MB_HTFM(UChar *ref,UChar *blk,Int dmin,Int lx,void *extra_info)
-Int SAD_Block_C(UChar *ref,UChar *blk,Int dmin,Int lx,void *extra_info)
-Int SAD_Blk_PADDING(UChar *ref,UChar *cur,Int dmin,Int lx,void *extra_info)
-Int SAD_MB_PADDING(UChar *ref,UChar *cur,Int dmin,Int lx,void *extra_info)
-Int SAD_MB_PAD1(UChar *ref,UChar *cur,Int dmin,Int lx,Int *rep);
-Int SAD_MB_PADDING_HTFM_Collect(UChar *ref,UChar *cur,Int dmin,Int lx,void *extra_info)
-Int SAD_MB_PADDING_HTFM(UChar *ref,UChar *cur,Int dmin,Int lx,void *vptr)
-*/
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
- Int SAD_MB_PAD1(UChar *ref, UChar *cur, Int dmin, Int lx, Int *rep);
-
-
- /*==================================================================
- Function: SAD_Macroblock
- Date: 09/07/2000
- Purpose: Compute SAD 16x16 between blk and ref.
- To do: Uniform subsampling will be inserted later!
- Hypothesis Testing Fast Matching to be used later!
- Changes:
- 11/7/00: implemented MMX
- 1/24/01: implemented SSE
- ==================================================================*/
- /********** C ************/
- Int SAD_Macroblock_C(UChar *ref, UChar *blk, Int dmin_lx, void *extra_info)
- {
- int32 x10;
- Int dmin = (ULong)dmin_lx >> 16;
- Int lx = dmin_lx & 0xFFFF;
-
- OSCL_UNUSED_ARG(extra_info);
-
- NUM_SAD_MB_CALL();
-
- x10 = simd_sad_mb(ref, blk, dmin, lx);
-
- return x10;
- }
-
-#ifdef HTFM /* HTFM with uniform subsampling implementation, 2/28/01 */
- /*===============================================================
- Function: SAD_MB_HTFM_Collect and SAD_MB_HTFM
- Date: 3/2/1
- Purpose: Compute the SAD on a 16x16 block using
- uniform subsampling and hypothesis testing fast matching
- for early dropout. SAD_MB_HP_HTFM_Collect is to collect
- the statistics to compute the thresholds to be used in
- SAD_MB_HP_HTFM.
- Input/Output:
- Changes:
- ===============================================================*/
-
- Int SAD_MB_HTFM_Collect(UChar *ref, UChar *blk, Int dmin_lx, void *extra_info)
- {
- Int i;
- Int sad = 0;
- UChar *p1;
- Int lx4 = (dmin_lx << 2) & 0x3FFFC;
- ULong cur_word;
- Int saddata[16], tmp, tmp2; /* used when collecting flag (global) is on */
- Int difmad;
- HTFM_Stat *htfm_stat = (HTFM_Stat*) extra_info;
- Int *abs_dif_mad_avg = &(htfm_stat->abs_dif_mad_avg);
- UInt *countbreak = &(htfm_stat->countbreak);
- Int *offsetRef = htfm_stat->offsetRef;
-
- NUM_SAD_MB_CALL();
-
- blk -= 4;
- for (i = 0; i < 16; i++)
- {
- p1 = ref + offsetRef[i];
- cur_word = *((ULong*)(blk += 4));
- tmp = p1[12];
- tmp2 = (cur_word >> 24) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[8];
- tmp2 = (cur_word >> 16) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[4];
- tmp2 = (cur_word >> 8) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[0];
- p1 += lx4;
- tmp2 = (cur_word & 0xFF);
- sad = SUB_SAD(sad, tmp, tmp2);
-
- cur_word = *((ULong*)(blk += 4));
- tmp = p1[12];
- tmp2 = (cur_word >> 24) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[8];
- tmp2 = (cur_word >> 16) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[4];
- tmp2 = (cur_word >> 8) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[0];
- p1 += lx4;
- tmp2 = (cur_word & 0xFF);
- sad = SUB_SAD(sad, tmp, tmp2);
-
- cur_word = *((ULong*)(blk += 4));
- tmp = p1[12];
- tmp2 = (cur_word >> 24) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[8];
- tmp2 = (cur_word >> 16) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[4];
- tmp2 = (cur_word >> 8) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[0];
- p1 += lx4;
- tmp2 = (cur_word & 0xFF);
- sad = SUB_SAD(sad, tmp, tmp2);
-
- cur_word = *((ULong*)(blk += 4));
- tmp = p1[12];
- tmp2 = (cur_word >> 24) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[8];
- tmp2 = (cur_word >> 16) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[4];
- tmp2 = (cur_word >> 8) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[0];
- p1 += lx4;
- tmp2 = (cur_word & 0xFF);
- sad = SUB_SAD(sad, tmp, tmp2);
-
- NUM_SAD_MB();
-
- saddata[i] = sad;
-
- if (i > 0)
- {
- if ((ULong)sad > ((ULong)dmin_lx >> 16))
- {
- difmad = saddata[0] - ((saddata[1] + 1) >> 1);
- (*abs_dif_mad_avg) += ((difmad > 0) ? difmad : -difmad);
- (*countbreak)++;
- return sad;
- }
- }
- }
-
- difmad = saddata[0] - ((saddata[1] + 1) >> 1);
- (*abs_dif_mad_avg) += ((difmad > 0) ? difmad : -difmad);
- (*countbreak)++;
- return sad;
- }
-
- Int SAD_MB_HTFM(UChar *ref, UChar *blk, Int dmin_lx, void *extra_info)
- {
- Int sad = 0;
- UChar *p1;
-
- Int i;
- Int tmp, tmp2;
- Int lx4 = (dmin_lx << 2) & 0x3FFFC;
- Int sadstar = 0, madstar;
- Int *nrmlz_th = (Int*) extra_info;
- Int *offsetRef = (Int*) extra_info + 32;
- ULong cur_word;
-
- madstar = (ULong)dmin_lx >> 20;
-
- NUM_SAD_MB_CALL();
-
- blk -= 4;
- for (i = 0; i < 16; i++)
- {
- p1 = ref + offsetRef[i];
- cur_word = *((ULong*)(blk += 4));
- tmp = p1[12];
- tmp2 = (cur_word >> 24) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[8];
- tmp2 = (cur_word >> 16) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[4];
- tmp2 = (cur_word >> 8) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[0];
- p1 += lx4;
- tmp2 = (cur_word & 0xFF);
- sad = SUB_SAD(sad, tmp, tmp2);
-
- cur_word = *((ULong*)(blk += 4));
- tmp = p1[12];
- tmp2 = (cur_word >> 24) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[8];
- tmp2 = (cur_word >> 16) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[4];
- tmp2 = (cur_word >> 8) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[0];
- p1 += lx4;
- tmp2 = (cur_word & 0xFF);
- sad = SUB_SAD(sad, tmp, tmp2);
-
- cur_word = *((ULong*)(blk += 4));
- tmp = p1[12];
- tmp2 = (cur_word >> 24) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[8];
- tmp2 = (cur_word >> 16) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[4];
- tmp2 = (cur_word >> 8) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[0];
- p1 += lx4;
- tmp2 = (cur_word & 0xFF);
- sad = SUB_SAD(sad, tmp, tmp2);
-
- cur_word = *((ULong*)(blk += 4));
- tmp = p1[12];
- tmp2 = (cur_word >> 24) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[8];
- tmp2 = (cur_word >> 16) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[4];
- tmp2 = (cur_word >> 8) & 0xFF;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = p1[0];
- p1 += lx4;
- tmp2 = (cur_word & 0xFF);
- sad = SUB_SAD(sad, tmp, tmp2);
-
- NUM_SAD_MB();
-
- sadstar += madstar;
- if (((ULong)sad <= ((ULong)dmin_lx >> 16)) && (sad <= (sadstar - *nrmlz_th++)))
- ;
- else
- return 65536;
- }
-
- return sad;
- }
-#endif /* HTFM */
-
-#ifndef NO_INTER4V
- /*==================================================================
- Function: SAD_Block
- Date: 09/07/2000
- Purpose: Compute SAD 16x16 between blk and ref.
- To do: Uniform subsampling will be inserted later!
- Hypothesis Testing Fast Matching to be used later!
- Changes:
- 11/7/00: implemented MMX
- 1/24/01: implemented SSE
- ==================================================================*/
- /********** C ************/
- Int SAD_Block_C(UChar *ref, UChar *blk, Int dmin, Int lx, void *)
- {
- Int sad = 0;
-
- Int i;
- UChar *ii;
- Int *kk;
- Int tmp, tmp2, tmp3, mask = 0xFF;
- Int width = (lx - 32);
-
- NUM_SAD_BLK_CALL();
-
- ii = ref;
- kk = (Int*)blk; /* assuming word-align for blk */
- for (i = 0; i < 8; i++)
- {
- tmp3 = kk[1];
- tmp = ii[7];
- tmp2 = (UInt)tmp3 >> 24;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = ii[6];
- tmp2 = (tmp3 >> 16) & mask;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = ii[5];
- tmp2 = (tmp3 >> 8) & mask;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = ii[4];
- tmp2 = tmp3 & mask;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp3 = *kk;
- kk += (width >> 2);
- tmp = ii[3];
- tmp2 = (UInt)tmp3 >> 24;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = ii[2];
- tmp2 = (tmp3 >> 16) & mask;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = ii[1];
- tmp2 = (tmp3 >> 8) & mask;
- sad = SUB_SAD(sad, tmp, tmp2);
- tmp = *ii;
- ii += lx;
- tmp2 = tmp3 & mask;
- sad = SUB_SAD(sad, tmp, tmp2);
-
- NUM_SAD_BLK();
-
- if (sad > dmin)
- return sad;
- }
-
- return sad;
- }
-
-#endif /* NO_INTER4V */
-
-#ifdef __cplusplus
-}
-#endif
-
-
-