WRS: fixed the regression that black/green pixels appear during video playback.
am: 6a3d9478ea

Change-Id: Ic5be5eeb98740ada64014b90021ba55ae779a481
diff --git a/base/inc/componentbase.h b/base/inc/componentbase.h
index 3310f68..247439d 100644
--- a/base/inc/componentbase.h
+++ b/base/inc/componentbase.h
@@ -354,6 +354,8 @@
         ComponentSetConfig(OMX_INDEXTYPE nIndex,
                            OMX_PTR pComponentConfigStructure) = 0;
 
+    virtual OMX_COLOR_FORMATTYPE GetOutputColorFormat(int width);
+
     /* buffer processing */
     /* implement WorkableInterface */
     virtual void Work(void); /* handle this->ports, hold ports_block */
diff --git a/base/src/componentbase.cpp b/base/src/componentbase.cpp
index f7ff029..fc8905b 100755
--- a/base/src/componentbase.cpp
+++ b/base/src/componentbase.cpp
@@ -29,6 +29,7 @@
 #include <queue.h>
 #include <workqueue.h>
 #include <OMX_IndexExt.h>
+#include <OMX_IntelVideoExt.h>
 #include <HardwareAPI.h>
 
 //#define LOG_NDEBUG 0
@@ -589,6 +590,11 @@
                 p->nBufferSize = p->format.video.nFrameWidth * p->format.video.nFrameHeight *3/2;
         }
 
+        if ((p->format.video.eColorFormat == OMX_COLOR_FormatUnused) ||
+                (p->format.video.eColorFormat == OMX_INTEL_COLOR_FormatYUV420PackedSemiPlanar) ||
+                (p->format.video.eColorFormat == OMX_INTEL_COLOR_FormatYUV420PackedSemiPlanar_Tiled))
+            p->format.video.eColorFormat = GetOutputColorFormat(p->format.video.nFrameWidth);
+
         ret = port->SetPortDefinition(p, false);
         if (ret != OMX_ErrorNone) {
             return ret;
@@ -1888,6 +1894,12 @@
     return OMX_ErrorNone;
 }
 
+OMX_COLOR_FORMATTYPE ComponentBase::GetOutputColorFormat(int width)
+{
+    LOGD("%s: width = %d", __func__, width);
+    return OMX_INTEL_COLOR_FormatYUV420PackedSemiPlanar;
+}
+
 /* buffer processing */
 /* implement WorkableInterface */
 void ComponentBase::Work(void)