Showing the changes to codec/processing/src (1 of 1 file). Show all
Unified · Split
| @@ -50,8 +50,9 @@ · 49 unmodified lines | ||
| 50 | 50 | #include "common.h" |
| 51 | 51 | |
| 52 | 52 | #define HIGH_MOTION_BLOCK_THRESHOLD 320 |
| 53 | −#define SCENE_CHANGE_MOTION_RATIO_LARGE 0.85f | |
| 53 | +#define SCENE_CHANGE_MOTION_RATIO_LARGE_VIDEO 0.85f | |
| 54 | 54 | #define SCENE_CHANGE_MOTION_RATIO_MEDIUM 0.50f |
| 55 | +#define SCENE_CHANGE_MOTION_RATIO_LARGE_SCREEN 0.80f | |
| 55 | 56 | |
| 56 | 57 | WELSVP_NAMESPACE_BEGIN |
| 57 | 58 | |
| @@ -81,6 +82,9 @@ class CSceneChangeDetectorVideo { · 23 unmodified lines | ||
| 81 | 82 | m_pfSad = WelsProcessingSampleSad8x8_neon; |
| 82 | 83 | } |
| 83 | 84 | #endif |
| 85 | + | |
| 86 | + m_fSceneChangeMotionRatioLarge = SCENE_CHANGE_MOTION_RATIO_LARGE_VIDEO; | |
| 87 | + m_fSceneChangeMotionRatioMedium = SCENE_CHANGE_MOTION_RATIO_MEDIUM; | |
| 84 | 88 | } |
| 85 | 89 | virtual ~CSceneChangeDetectorVideo() { |
| 86 | 90 | } |
| @@ -106,15 +110,21 @@ class CSceneChangeDetectorVideo { · 19 unmodified lines | ||
| 106 | 110 | pCurY += iCurRowStride; |
| 107 | 111 | } |
| 108 | 112 | } |
| 113 | + float GetSceneChangeMotionRatioLarge() const { return m_fSceneChangeMotionRatioLarge; } | |
| 114 | + float GetSceneChangeMotionRatioMedium() const { return m_fSceneChangeMotionRatioMedium; } | |
| 109 | 115 | protected: |
| 110 | 116 | SadFuncPtr m_pfSad; |
| 111 | 117 | SSceneChangeResult& m_sParam; |
| 118 | + float m_fSceneChangeMotionRatioLarge; | |
| 119 | + float m_fSceneChangeMotionRatioMedium; | |
| 112 | 120 | }; |
| 113 | 121 | |
| 114 | 122 | class CSceneChangeDetectorScreen : public CSceneChangeDetectorVideo { |
| 115 | 123 | public: |
| 116 | 124 | CSceneChangeDetectorScreen (SSceneChangeResult& sParam, int32_t iCpuFlag) : CSceneChangeDetectorVideo (sParam, |
| 117 | 125 | iCpuFlag) { |
| 126 | + m_fSceneChangeMotionRatioLarge = SCENE_CHANGE_MOTION_RATIO_LARGE_SCREEN; | |
| 127 | + m_fSceneChangeMotionRatioMedium = SCENE_CHANGE_MOTION_RATIO_MEDIUM; | |
| 118 | 128 | } |
| 119 | 129 | virtual ~CSceneChangeDetectorScreen() { |
| 120 | 130 | } |
| @@ -195,9 +205,9 @@ class CSceneChangeDetection : public IStrategy { · 74 unmodified lines | ||
| 195 | 205 | |
| 196 | 206 | int32_t iBlock8x8Num = m_sLocalParam.iBlock8x8Width * m_sLocalParam.iBlock8x8Height; |
| 197 | 207 | int32_t iSceneChangeThresholdLarge = WelsStaticCast (int32_t, |
| 198 | − SCENE_CHANGE_MOTION_RATIO_LARGE * iBlock8x8Num + 0.5f + PESN); | |
| 208 | + m_cDetector.GetSceneChangeMotionRatioLarge() * iBlock8x8Num + 0.5f + PESN); | |
| 199 | 209 | int32_t iSceneChangeThresholdMedium = WelsStaticCast (int32_t, |
| 200 | − SCENE_CHANGE_MOTION_RATIO_MEDIUM * iBlock8x8Num + 0.5f + PESN); | |
| 210 | + m_cDetector.GetSceneChangeMotionRatioMedium() * iBlock8x8Num + 0.5f + PESN); | |
| 201 | 211 | |
| 202 | 212 | m_sSceneChangeParam.iMotionBlockNum = 0; |
| 203 | 213 | m_sSceneChangeParam.iFrameComplexity = 0; |