History

Merge pull request #2127 from huili2/repos_DecoderConfigParam

move DecoderConfigParam into InitDecoder

HaiboZhu committed 11 years ago

Commit f9f2bbf2 parents 6efeb0e ecab6834 files · +49 −43Browse files

Showing the changes to codec/decoder (3 of 4 files). Show all

Unified · Split

3 files
  1. codec/decoder/core/src/decoder.cpp +8 −7
  2. codec/decoder/plus/inc/welsDecoderExt.h +1 −1
  3. codec/decoder/plus/src/welsDecoderExt.cpp +15 −13
codec/decoder/core/src/decoder.cpp+8−7
@@ -525,13 +525,6 @@ int32_t DecoderConfigParam (PWelsDecoderContext pCtx, const SDecodingParam* kpPa · 524 unmodified lines
525525 if (NULL == pCtx || NULL == kpParam)
526526 return 1;
527527
528− CMemoryAlign* pMa = pCtx->pMemAlign;
529−
530− pCtx->pParam = (SDecodingParam*)pMa->WelsMallocz (sizeof (SDecodingParam), "SDecodingParam");
531−
532− if (NULL == pCtx->pParam)
533− return 1;
534−
535528 memcpy (pCtx->pParam, kpParam, sizeof (SDecodingParam));
536529 pCtx->eOutputColorFormat = pCtx->pParam->eOutputColorFormat;
537530 if (!pCtx->bParseOnly) {
@@ -539,6 +532,14 @@ int32_t DecoderConfigParam (PWelsDecoderContext pCtx, const SDecodingParam* kpPa · 1 unmodified line
539532 if (iRet)
540533 return iRet;
541534 }
535+ if ((pCtx->pParam->eEcActiveIdc > ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE)
536+ || (pCtx->pParam->eEcActiveIdc < ERROR_CON_DISABLE)) {
537+ WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING,
538+ "eErrorConMethod (%d) not in range: (%d - %d). Set as default value: (%d).", pCtx->pParam->eEcActiveIdc,
539+ ERROR_CON_DISABLE, ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE,
540+ ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE);
541+ pCtx->pParam->eEcActiveIdc = ERROR_CON_SLICE_MV_COPY_CROSS_IDR_FREEZE_RES_CHANGE;
542+ }
542543 pCtx->eErrorConMethod = pCtx->pParam->eEcActiveIdc;
543544
544545 if (pCtx->bParseOnly) //parse only, disable EC method
codec/decoder/plus/inc/welsDecoderExt.h+1−1
@@ -109,7 +109,7 @@ virtual long EXTAPI GetOption (DECODER_OPTION eOptID, void* pOption); · 108 unmodified lines
109109 PWelsDecoderContext m_pDecContext;
110110 welsCodecTrace* m_pWelsTrace;
111111
112−int32_t InitDecoder (const bool);
112+int32_t InitDecoder (const SDecodingParam* pParam);
113113 void UninitDecoder (void);
114114 int32_t ResetDecoder();
115115
codec/decoder/plus/src/welsDecoderExt.cpp+15−13
@@ -198,11 +198,7 @@ long CWelsDecoder::Initialize (const SDecodingParam* pParam) { · 197 unmodified lines
198198 }
199199
200200 // H.264 decoder initialization,including memory allocation,then open it ready to decode
201− iRet = InitDecoder (pParam->bParseOnly);
202− if (iRet)
203− return iRet;
204−
205− iRet = DecoderConfigParam (m_pDecContext, pParam);
201+ iRet = InitDecoder (pParam);
206202 if (iRet)
207203 return iRet;
208204
@@ -241,11 +237,11 @@ void CWelsDecoder::UninitDecoder (void) { · 32 unmodified lines
241237 }
242238
243239 // the return value of this function is not suitable, it need report failure info to upper layer.
244−int32_t CWelsDecoder::InitDecoder (const bool bParseOnly) {
240+int32_t CWelsDecoder::InitDecoder (const SDecodingParam* pParam) {
245241
246242 WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_INFO,
247243 "CWelsDecoder::init_decoder(), openh264 codec version = %s, ParseOnly = %d",
248− VERSION_NUMBER, (int32_t)bParseOnly);
244+ VERSION_NUMBER, (int32_t)pParam->bParseOnly);
249245
250246 if (m_pDecContext) //free
251247 UninitDecoder();
@@ -256,7 +252,17 @@ int32_t CWelsDecoder::InitDecoder (const bool bParseOnly) { · 4 unmodified lines
256252 m_pDecContext->pMemAlign = new CMemoryAlign (iCacheLineSize);
257253 WELS_VERIFY_RETURN_PROC_IF (1, (NULL == m_pDecContext->pMemAlign), UninitDecoder())
258254
259− return WelsInitDecoder (m_pDecContext, bParseOnly, &m_pWelsTrace->m_sLogCtx);
255+ WELS_VERIFY_RETURN_PROC_IF (cmInitParaError, WelsInitDecoder (m_pDecContext, pParam->bParseOnly,
256+ &m_pWelsTrace->m_sLogCtx), UninitDecoder())
257+
258+ //check param and update decoder context
259+ m_pDecContext->pParam = (SDecodingParam*) m_pDecContext->pMemAlign->WelsMallocz (sizeof (SDecodingParam),
260+ "SDecodingParam");
261+ WELS_VERIFY_RETURN_PROC_IF (cmMallocMemeError, (NULL == m_pDecContext->pParam), UninitDecoder());
262+ int32_t iRet = DecoderConfigParam (m_pDecContext, pParam);
263+ WELS_VERIFY_RETURN_IFNEQ (iRet, cmResultSuccess);
264+
265+ return cmResultSuccess;
260266 }
261267
262268 int32_t CWelsDecoder::ResetDecoder() {
@@ -267,11 +273,7 @@ int32_t CWelsDecoder::ResetDecoder() { · 4 unmodified lines
267273 SDecodingParam sPrevParam;
268274 memcpy (&sPrevParam, m_pDecContext->pParam, sizeof (SDecodingParam));
269275
270− int32_t iRet = InitDecoder (m_pDecContext->bParseOnly);
271− if (iRet)
272− return iRet;
273−
274− return DecoderConfigParam (m_pDecContext, &sPrevParam);
276+ WELS_VERIFY_RETURN_PROC_IF (cmInitParaError, InitDecoder (&sPrevParam), UninitDecoder());
275277 } else if (m_pWelsTrace != NULL) {
276278 WelsLog (&m_pWelsTrace->m_sLogCtx, WELS_LOG_ERROR, "ResetDecoder() failed as decoder context null");
277279 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t