shithub: openh264

Download patch

ref: fb6379eeb174a396ad08846fdb0c8c307afa24ef
parent: f638546d81c93fbddcc0323a5dff548885c00324
author: huili2 <huili2@cisco.com>
date: Sun Jul 6 20:02:39 EDT 2014

use grey instead of green in EC without ref

--- a/codec/decoder/core/src/error_concealment.cpp
+++ b/codec/decoder/core/src/error_concealment.cpp
@@ -73,9 +73,9 @@
   int32_t iStrideY = pDstPic->iLinesize[0];
   int32_t iStrideUV = pDstPic->iLinesize[1];
   if (pSrcPic == NULL) { //no ref pic, assign specific data to picture
-    memset (pDstPic->pData[0], 0, uiHeightInPixelY * iStrideY);
-    memset (pDstPic->pData[1], 0, (uiHeightInPixelY >> 1) * iStrideUV);
-    memset (pDstPic->pData[2], 0, (uiHeightInPixelY >> 1) * iStrideUV);
+    memset (pDstPic->pData[0], 128, uiHeightInPixelY * iStrideY);
+    memset (pDstPic->pData[1], 128, (uiHeightInPixelY >> 1) * iStrideUV);
+    memset (pDstPic->pData[2], 128, (uiHeightInPixelY >> 1) * iStrideUV);
   } else { //has ref pic here
     memcpy (pDstPic->pData[0], pSrcPic->pData[0], uiHeightInPixelY * iStrideY);
     memcpy (pDstPic->pData[1], pSrcPic->pData[1], (uiHeightInPixelY >> 1) * iStrideUV);
@@ -121,19 +121,19 @@
           //Y component
           pDstData = pDstPic->pData[0] + iMbY * 16 * iDstStride + iMbX * 16;
           for (int32_t i = 0; i < 16; ++i) {
-            memset (pDstData, 0, 16);
+            memset (pDstData, 128, 16);
             pDstData += iDstStride;
           }
           //U component
           pDstData = pDstPic->pData[1] + iMbY * 8 * iDstStride / 2 + iMbX * 8;
           for (int32_t i = 0; i < 8; ++i) {
-            memset (pDstData, 0, 8);
+            memset (pDstData, 128, 8);
             pDstData += iDstStride / 2;
           }
           //V component
           pDstData = pDstPic->pData[2] + iMbY * 8 * iDstStride / 2 + iMbX * 8;
           for (int32_t i = 0; i < 8; ++i) {
-            memset (pDstData, 0, 8);
+            memset (pDstData, 128, 8);
             pDstData += iDstStride / 2;
           }
         } //
--- a/test/decoder/DecUT_ErrorConcealment.cpp
+++ b/test/decoder/DecUT_ErrorConcealment.cpp
@@ -163,19 +163,19 @@
           //Y component
           pDstData = pDstPic->pData[0] + iMbY * 16 * iDstStride + iMbX * 16;
           for (i = 0; i < 16; ++i) {
-            memset (pDstData, 0, 16);
+            memset (pDstData, 128, 16);
             pDstData += iDstStride;
           }
           //U component
           pDstData = pDstPic->pData[1] + iMbY * 8 * iDstStride / 2 + iMbX * 8;
           for (i = 0; i < 8; ++i) {
-            memset (pDstData, 0, 8);
+            memset (pDstData, 128, 8);
             pDstData += iDstStride / 2;
           }
           //V component
           pDstData = pDstPic->pData[2] + iMbY * 8 * iDstStride / 2 + iMbX * 8;
           for (i = 0; i < 8; ++i) {
-            memset (pDstData, 0, 8);
+            memset (pDstData, 128, 8);
             pDstData += iDstStride / 2;
           }
         } //
@@ -238,7 +238,7 @@
   DoErrorConFrameCopy (pECCtx->pCtx);
 
   int32_t iLumaSize = pECCtx->iMbWidth * pECCtx->iMbHeight * 256;
-  memset (pECCtx->sAncPic.pData[0], 0, iLumaSize * 3 / 2); //should be the same as known EC method, here all 0
+  memset (pECCtx->sAncPic.pData[0], 128, iLumaSize * 3 / 2); //should be the same as known EC method, here all 128
   bOK = ComparePictureDataI420 (pECCtx->sAncPic.pData[0], pECCtx->sWelsPic.pData[0], pECCtx->iLinesize[0],
                                 pECCtx->iMbHeight * 16);
   EXPECT_EQ (bOK, true);