History

Merge pull request #1308 from dongzha/ModifyEncOutput

add crop output for encoder

ruil2 committed 12 years ago

Commit 8935bfa2 parents 81f7b0c 6d4a6283 files · +27 −17Browse files

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

Unified · Split

3 files
  1. codec/encoder/core/inc/encoder.h +2 −2
  2. codec/encoder/core/src/encoder.cpp +23 −12
  3. codec/encoder/core/src/encoder_ext.cpp +2 −3
codec/encoder/core/inc/encoder.h+2−2
@@ -91,12 +91,12 @@ int32_t GetTemporalLevel (SSpatialLayerInternal* fDlp, const int32_t kiFrameNum, · 90 unmodified lines
91 * \brief Dump reconstruction for dependency layer91 * \brief Dump reconstruction for dependency layer
92 */92 */
93 93
94extern "C" void DumpDependencyRec (SPicture* pSrcPic, const char* kpFileName, const int8_t kiDid, bool bAppend);94extern "C" void DumpDependencyRec (SPicture* pSrcPic, const char* kpFileName, const int8_t kiDid, bool bAppend, SDqLayer* pDqLayer);
95 95
96/*!96/*!
97 * \brief Dump the reconstruction pictures97 * \brief Dump the reconstruction pictures
98 */98 */
99void DumpRecFrame (SPicture* pSrcPic, const char* kpFileName, bool bAppend);99void DumpRecFrame (SPicture* pSrcPic, const char* kpFileName, const int8_t kiDid, bool bAppend, SDqLayer* pDqLayer);
100 100
101 101
102/*!102/*!
codec/encoder/core/src/encoder.cpp+23−12
@@ -363,10 +363,13 @@ EVideoFrameType DecideFrameType (sWelsEncCtx* pEncCtx, const int8_t kiSpatialNum · 362 unmodified lines
363 * \brief Dump reconstruction for dependency layer363 * \brief Dump reconstruction for dependency layer
364 */364 */
365 365
366extern "C" void DumpDependencyRec (SPicture* pCurPicture, const char* kpFileName, const int8_t kiDid, bool bAppend) {366extern "C" void DumpDependencyRec (SPicture* pCurPicture, const char* kpFileName, const int8_t kiDid, bool bAppend, SDqLayer* pDqLayer) {
367 WelsFileHandle* pDumpRecFile = NULL;367 WelsFileHandle* pDumpRecFile = NULL;
368 int32_t iWrittenSize = 0;368 int32_t iWrittenSize = 0;
369 const char* openMode = bAppend ? "ab" : "wb";369 const char* openMode = bAppend ? "ab" : "wb";
370 SWelsSPS* pSpsTmp = (kiDid> BASE_DEPENDENCY_ID)? &(pDqLayer->sLayerInfo.pSubsetSpsP->pSps) : pDqLayer->sLayerInfo.pSpsP;
371 bool bFrameCroppingFlag = pSpsTmp->bFrameCroppingFlag;
372 SCropOffset* pFrameCrop = &pSpsTmp->sFrameCrop;
370 373
371 if (NULL == pCurPicture || NULL == kpFileName || kiDid >= MAX_DEPENDENCY_LAYER)374 if (NULL == pCurPicture || NULL == kpFileName || kiDid >= MAX_DEPENDENCY_LAYER)
372 return;375 return;
@@ -385,13 +388,14 @@ extern "C" void DumpDependencyRec (SPicture* pCurPicture, const char* kpFileName · 12 unmodified lines
385 int32_t i = 0;388 int32_t i = 0;
386 int32_t j = 0;389 int32_t j = 0;
387 const int32_t kiStrideY = pCurPicture->iLineSize[0];390 const int32_t kiStrideY = pCurPicture->iLineSize[0];
388 const int32_t kiLumaWidth = pCurPicture->iWidthInPixel;391 const int32_t kiLumaWidth = bFrameCroppingFlag?(pCurPicture->iWidthInPixel-(( pFrameCrop->iCropLeft + pFrameCrop->iCropRight ) << 1 )) : pCurPicture->iWidthInPixel;
389 const int32_t kiLumaHeight = pCurPicture->iHeightInPixel;392 const int32_t kiLumaHeight = bFrameCroppingFlag?(pCurPicture->iHeightInPixel-(( pFrameCrop->iCropTop + pFrameCrop->iCropBottom ) << 1 )) : pCurPicture->iHeightInPixel;
390 const int32_t kiChromaWidth = kiLumaWidth >> 1;393 const int32_t kiChromaWidth = kiLumaWidth >> 1;
391 const int32_t kiChromaHeight = kiLumaHeight >> 1;394 const int32_t kiChromaHeight = kiLumaHeight >> 1;
392 395 uint8_t* pSrc = NULL;
396 pSrc = bFrameCroppingFlag ? (pCurPicture->pData[0] + kiStrideY * ( pFrameCrop->iCropTop << 1 ) + ( pFrameCrop->iCropLeft << 1 )) : pCurPicture->pData[0];
393 for (j = 0; j < kiLumaHeight; ++ j) {397 for (j = 0; j < kiLumaHeight; ++ j) {
394 iWrittenSize = WelsFwrite (&pCurPicture->pData[0][j * kiStrideY], 1, kiLumaWidth, pDumpRecFile);398 iWrittenSize = WelsFwrite (pSrc + j * kiStrideY, 1, kiLumaWidth, pDumpRecFile);
395 assert (iWrittenSize == kiLumaWidth);399 assert (iWrittenSize == kiLumaWidth);
396 if (iWrittenSize < kiLumaWidth) {400 if (iWrittenSize < kiLumaWidth) {
397 assert (0); // make no sense for us if writing failed401 assert (0); // make no sense for us if writing failed
@@ -401,8 +405,9 @@ extern "C" void DumpDependencyRec (SPicture* pCurPicture, const char* kpFileName · 3 unmodified lines
401 }405 }
402 for (i = 1; i < I420_PLANES; ++ i) {406 for (i = 1; i < I420_PLANES; ++ i) {
403 const int32_t kiStrideUV = pCurPicture->iLineSize[i];407 const int32_t kiStrideUV = pCurPicture->iLineSize[i];
408 pSrc = bFrameCroppingFlag ? (pCurPicture->pData[i] + kiStrideUV * pFrameCrop->iCropTop + pFrameCrop->iCropLeft) : pCurPicture->pData[i];
404 for (j = 0; j < kiChromaHeight; ++ j) {409 for (j = 0; j < kiChromaHeight; ++ j) {
405 iWrittenSize = WelsFwrite (&pCurPicture->pData[i][j * kiStrideUV], 1, kiChromaWidth, pDumpRecFile);410 iWrittenSize = WelsFwrite (pSrc + j * kiStrideUV, 1, kiChromaWidth, pDumpRecFile);
406 assert (iWrittenSize == kiChromaWidth);411 assert (iWrittenSize == kiChromaWidth);
407 if (iWrittenSize < kiChromaWidth) {412 if (iWrittenSize < kiChromaWidth) {
408 assert (0); // make no sense for us if writing failed413 assert (0); // make no sense for us if writing failed
@@ -420,8 +425,12 @@ extern "C" void DumpDependencyRec (SPicture* pCurPicture, const char* kpFileName · 11 unmodified lines
420 * \brief Dump the reconstruction pictures425 * \brief Dump the reconstruction pictures
421 */426 */
422 427
423void DumpRecFrame (SPicture* pCurPicture, const char* kpFileName, bool bAppend) {428void DumpRecFrame (SPicture* pCurPicture, const char* kpFileName, const int8_t kiDid, bool bAppend, SDqLayer* pDqLayer) {
424 WelsFileHandle* pDumpRecFile = NULL;429 WelsFileHandle* pDumpRecFile = NULL;
430 SWelsSPS* pSpsTmp = (kiDid> BASE_DEPENDENCY_ID)? &(pDqLayer->sLayerInfo.pSubsetSpsP->pSps) : pDqLayer->sLayerInfo.pSpsP;
431 bool bFrameCroppingFlag = pSpsTmp->bFrameCroppingFlag;
432 SCropOffset* pFrameCrop = &pSpsTmp->sFrameCrop;
433
425 int32_t iWrittenSize = 0;434 int32_t iWrittenSize = 0;
426 const char* openMode = bAppend ? "ab" : "wb";435 const char* openMode = bAppend ? "ab" : "wb";
427 436
@@ -440,13 +449,14 @@ void DumpRecFrame (SPicture* pCurPicture, const char* kpFileName, bool bAppend) · 12 unmodified lines
440 int32_t i = 0;449 int32_t i = 0;
441 int32_t j = 0;450 int32_t j = 0;
442 const int32_t kiStrideY = pCurPicture->iLineSize[0];451 const int32_t kiStrideY = pCurPicture->iLineSize[0];
443 const int32_t kiLumaWidth = pCurPicture->iWidthInPixel;452 const int32_t kiLumaWidth = bFrameCroppingFlag ? (pCurPicture->iWidthInPixel-(( pFrameCrop->iCropLeft + pFrameCrop->iCropRight ) << 1 )) : pCurPicture->iWidthInPixel;
444 const int32_t kiLumaHeight = pCurPicture->iHeightInPixel;453 const int32_t kiLumaHeight = bFrameCroppingFlag ? (pCurPicture->iHeightInPixel-(( pFrameCrop->iCropTop + pFrameCrop->iCropBottom ) << 1 )) : pCurPicture->iHeightInPixel;
445 const int32_t kiChromaWidth = kiLumaWidth >> 1;454 const int32_t kiChromaWidth = kiLumaWidth >> 1;
446 const int32_t kiChromaHeight = kiLumaHeight >> 1;455 const int32_t kiChromaHeight = kiLumaHeight >> 1;
447 456 uint8_t* pSrc = NULL;
457 pSrc = bFrameCroppingFlag ? (pCurPicture->pData[0] + kiStrideY * ( pFrameCrop->iCropTop << 1 ) + ( pFrameCrop->iCropLeft << 1 )) : pCurPicture->pData[0];
448 for (j = 0; j < kiLumaHeight; ++ j) {458 for (j = 0; j < kiLumaHeight; ++ j) {
449 iWrittenSize = WelsFwrite (&pCurPicture->pData[0][j * kiStrideY], 1, kiLumaWidth, pDumpRecFile);459 iWrittenSize = WelsFwrite (pSrc + j * kiStrideY, 1, kiLumaWidth, pDumpRecFile);
450 assert (iWrittenSize == kiLumaWidth);460 assert (iWrittenSize == kiLumaWidth);
451 if (iWrittenSize < kiLumaWidth) {461 if (iWrittenSize < kiLumaWidth) {
452 assert (0); // make no sense for us if writing failed462 assert (0); // make no sense for us if writing failed
@@ -456,8 +466,9 @@ void DumpRecFrame (SPicture* pCurPicture, const char* kpFileName, bool bAppend) · 3 unmodified lines
456 }466 }
457 for (i = 1; i < I420_PLANES; ++ i) {467 for (i = 1; i < I420_PLANES; ++ i) {
458 const int32_t kiStrideUV = pCurPicture->iLineSize[i];468 const int32_t kiStrideUV = pCurPicture->iLineSize[i];
469 pSrc = bFrameCroppingFlag ? (pCurPicture->pData[i] + kiStrideUV * pFrameCrop->iCropTop + pFrameCrop->iCropLeft) : pCurPicture->pData[i];
459 for (j = 0; j < kiChromaHeight; ++ j) {470 for (j = 0; j < kiChromaHeight; ++ j) {
460 iWrittenSize = WelsFwrite (&pCurPicture->pData[i][j * kiStrideUV], 1, kiChromaWidth, pDumpRecFile);471 iWrittenSize = WelsFwrite (pSrc + j * kiStrideUV, 1, kiChromaWidth, pDumpRecFile);
461 assert (iWrittenSize == kiChromaWidth);472 assert (iWrittenSize == kiChromaWidth);
462 if (iWrittenSize < kiChromaWidth) {473 if (iWrittenSize < kiChromaWidth) {
463 assert (0); // make no sense for us if writing failed474 assert (0); // make no sense for us if writing failed
codec/encoder/core/src/encoder_ext.cpp+2−3
@@ -3434,7 +3434,7 @@ int32_t WelsEncoderEncodeExt (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi, const SSour · 3433 unmodified lines
3434#ifdef ENABLE_FRAME_DUMP3434#ifdef ENABLE_FRAME_DUMP
3435 if (iCurDid + 1 < pSvcParam->iSpatialLayerNum) {3435 if (iCurDid + 1 < pSvcParam->iSpatialLayerNum) {
3436 DumpDependencyRec (fsnr, &pSvcParam->sDependencyLayers[iCurDid].sRecFileName[0], iCurDid,3436 DumpDependencyRec (fsnr, &pSvcParam->sDependencyLayers[iCurDid].sRecFileName[0], iCurDid,
3437 pCtx->bDependencyRecFlag[iCurDid]);3437 pCtx->bDependencyRecFlag[iCurDid], pCtx->pCurDqLayer);
3438 pCtx->bDependencyRecFlag[iCurDid] = true;3438 pCtx->bDependencyRecFlag[iCurDid] = true;
3439 }3439 }
3440#endif//ENABLE_FRAME_DUMP3440#endif//ENABLE_FRAME_DUMP
@@ -3601,8 +3601,7 @@ int32_t WelsEncoderEncodeExt (sWelsEncCtx* pCtx, SFrameBSInfo* pFbi, const SSour · 160 unmodified lines
3601 }3601 }
3602 3602
3603#ifdef ENABLE_FRAME_DUMP3603#ifdef ENABLE_FRAME_DUMP
3604 DumpRecFrame (fsnr, &pSvcParam->sDependencyLayers[pSvcParam->iSpatialLayerNum - 1].sRecFileName[0],3604 DumpRecFrame (fsnr, &pSvcParam->sDependencyLayers[pSvcParam->iSpatialLayerNum - 1].sRecFileName[0], pSvcParam->iSpatialLayerNum - 1, pCtx->bRecFlag, pCtx->pCurDqLayer); // pDecPic: final reconstruction output
3605 pCtx->bRecFlag); // pDecPic: final reconstruction output
3606 pCtx->bRecFlag = true;3605 pCtx->bRecFlag = true;
3607 3606
3608#endif//ENABLE_FRAME_DUMP3607#endif//ENABLE_FRAME_DUMP

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