diff options
author | Austin Hu <austin.hu@intel.com> | 2017-04-21 16:39:54 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-04-21 16:39:54 +0000 |
commit | 379b32df6c88e181b20ae90dc2a0a64416d8178e (patch) | |
tree | 0fffefb0bff87f710789554dbf32b396ee257596 | |
parent | fc9f5689b892105bf984871945ea34647366f944 (diff) | |
parent | f83c66484e5f6261e4f31a5018ee6b2e581ca28f (diff) | |
download | wrs_omxil_core-379b32df6c88e181b20ae90dc2a0a64416d8178e.tar.gz |
WRS: fixed the regression that black/green pixels appear during video playback. am: 6a3d9478ea
am: f83c66484e
Change-Id: Id45b450ce60dc3711cd62bdcc112618e49512bf6
-rw-r--r-- | base/inc/componentbase.h | 2 | ||||
-rwxr-xr-x | base/src/componentbase.cpp | 12 |
2 files changed, 14 insertions, 0 deletions
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 @@ private: 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 @@ OMX_ERRORTYPE ComponentBase::CBaseSetParameter( 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 @@ OMX_ERRORTYPE ComponentBase::FreePorts(void) 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) |