ref: dddb825bbd1818dad9a0c289b3a29751700bb4ac
parent: eb6fb7fc72d219c325646051e8de8ea7cd99eb3d
parent: 6047ff930efc3afce8348b6eabacec01c3a15865
author: HaiboZhu <[email protected]>
date: Fri Aug 22 07:00:07 EDT 2014
Merge pull request #1288 from lyao2/threadIDC fix Loop filter error under multithreads on encoder when #TEST_BED enabled
--- a/codec/encoder/core/inc/param_svc.h
+++ b/codec/encoder/core/inc/param_svc.h
@@ -292,9 +292,6 @@
/* Deblocking loop filter */
iLoopFilterDisableIdc = pCodingParam.iLoopFilterDisableIdc; // 0: on, 1: off, 2: on except for slice boundaries,
- if (iLoopFilterDisableIdc == 0
- && iMultipleThreadIdc != 1) // Loop filter requested to be enabled, with threading enabled
- iLoopFilterDisableIdc = 2; // Disable loop filter on slice boundaries since that's not allowed with multithreading
iLoopFilterAlphaC0Offset = pCodingParam.iLoopFilterAlphaC0Offset; // AlphaOffset: valid range [-6, 6], default 0
iLoopFilterBetaOffset = pCodingParam.iLoopFilterBetaOffset; // BetaOffset: valid range [-6, 6], default 0
--- a/codec/encoder/core/src/encoder_ext.cpp
+++ b/codec/encoder/core/src/encoder_ext.cpp
@@ -1860,7 +1860,9 @@
pCodingParam->iCountThreadsNum = WELS_MIN (kiCpuCores, iMaxSliceCount);
pCodingParam->iMultipleThreadIdc = pCodingParam->iCountThreadsNum;
-
+ if (pCodingParam->iLoopFilterDisableIdc == 0
+ && pCodingParam->iMultipleThreadIdc != 1) // Loop filter requested to be enabled, with threading enabled
+ pCodingParam->iLoopFilterDisableIdc = 2; // Disable loop filter on slice boundaries since that's not allowed with multithreading
*pMaxSliceCount = iMaxSliceCount;
return 0;
@@ -1959,14 +1961,12 @@
iCacheLineSize = 16; // 16 bytes aligned in default
#endif//X86_ASM
-#ifndef WELS_TESTBED
-
#if defined(DYNAMIC_DETECT_CPU_CORES)
if (pCodingParam->iMultipleThreadIdc > 0)
uiCpuCores = pCodingParam->iMultipleThreadIdc;
else {
if (uiCpuCores ==
- 0) // cpuid not supported or doesn't expose the number of cores, use high level system API as followed to detect number of pysical/logic processor
+ 0) // cpuid not supported or doesn't expose the number of cores, use high level system API as followed to detect number of pysical/logic processor
uiCpuCores = DynamicDetectCpuCores();
// So far so many cpu cores up to MAX_THREADS_NUM mean for server platforms,
// for client application here it is constrained by maximal to MAX_THREADS_NUM
@@ -1976,12 +1976,6 @@
uiCpuCores = 1;
}
#endif//DYNAMIC_DETECT_CPU_CORES
-
-#else//WELS_TESTBED
-
- uiCpuCores = pCodingParam->iMultipleThreadIdc; // assigned uiCpuCores from iMultipleThreadIdc from SGE testing
-
-#endif//WELS_TESTBED
uiCpuCores = WELS_CLIP3 (uiCpuCores, 1, MAX_THREADS_NUM);