ref: d81f3d5037b7bf1e638377738e1b91803c4ea706
parent: b9d34ff07bda20d6c5cefa1f867d9d8cce536562
parent: 49c24646a94f60cb9214836d1b246a695eb8f4de
author: volvet <[email protected]>
date: Tue Feb 11 05:32:58 EST 2014
Merge pull request #279 from sijchen/sad_fix2 fix the range of SAD
--- a/codec/encoder/core/inc/svc_motion_estimate.h
+++ b/codec/encoder/core/inc/svc_motion_estimate.h
@@ -50,15 +50,15 @@
#define BASE_MV_MB_NMB ((2*(MV_RANGE+ITERATIVE_TIMES)/MB_WIDTH_LUMA)-1)
union SadPredISatdUnit {
-uint16_t uiSadPred;
-uint16_t uiSatd; //reuse the sad_pred as a temp satd pData
+uint32_t uiSadPred;
+uint32_t uiSatd; //reuse the sad_pred as a temp satd pData
};
typedef struct TagWelsME {
/* input */
uint16_t* pMvdCost;
union SadPredISatdUnit uSadPredISatd; //reuse the sad_pred as a temp pData
-uint16_t uiSadCost; //used by ME and RC
-uint16_t uiSatdCost; /* satd + lm * nbits */
+uint32_t uiSadCost; //used by ME and RC //max SAD should be max_delta*size+lambda*mvdsize = 255*256+91*33*2 = 65280 + 6006 = 71286 > (2^16)-1 = 65535
+uint32_t uiSatdCost; /* satd + lm * nbits */
uint8_t uiPixel; /* PIXEL_WxH */
uint8_t uiReserved;