diff options
author | codeworkx <codeworkx@cyanogenmod.org> | 2012-11-24 14:39:44 +0100 |
---|---|---|
committer | codeworkx <codeworkx@cyanogenmod.org> | 2012-11-30 04:05:54 +0100 |
commit | 16be9b2826de9eb129c090b0e8edb75c6c63aad3 (patch) | |
tree | dcbd6946d8054ad6587efbbd46a12dcbbec0c24e /media/libstagefright/colorconversion | |
parent | 001573b26e5ccfb6bee9a34837ec4f29d5f73f7f (diff) | |
download | frameworks_av-16be9b2826de9eb129c090b0e8edb75c6c63aad3.zip frameworks_av-16be9b2826de9eb129c090b0e8edb75c6c63aad3.tar.gz frameworks_av-16be9b2826de9eb129c090b0e8edb75c6c63aad3.tar.bz2 |
exynos4: libstragefright: add support for samsung colorformat/omx/mfc
Source:
http://git.insignal.co.kr/samsung/exynos/android/platform/frameworks/av/commit/?h=exynos-jb&id=1614612f7ca2a00473d202dbedcb135fadc608ad
Change-Id: Ib40b3cfa1480ecbb69831e7967a81f63719e2ff7
Diffstat (limited to 'media/libstagefright/colorconversion')
-rw-r--r-- | media/libstagefright/colorconversion/SoftwareRenderer.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/media/libstagefright/colorconversion/SoftwareRenderer.cpp b/media/libstagefright/colorconversion/SoftwareRenderer.cpp index 2704a37..834e6b3 100644 --- a/media/libstagefright/colorconversion/SoftwareRenderer.cpp +++ b/media/libstagefright/colorconversion/SoftwareRenderer.cpp @@ -94,11 +94,20 @@ SoftwareRenderer::SoftwareRenderer( CHECK(mCropHeight > 0); CHECK(mConverter == NULL || mConverter->isValid()); +#ifdef EXYNOS4_ENHANCEMENTS + CHECK_EQ(0, + native_window_set_usage( + mNativeWindow.get(), + GRALLOC_USAGE_SW_READ_NEVER | GRALLOC_USAGE_SW_WRITE_OFTEN + | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_EXTERNAL_DISP + | GRALLOC_USAGE_HW_FIMC1 | GRALLOC_USAGE_HWC_HWOVERLAY)); +#else CHECK_EQ(0, native_window_set_usage( mNativeWindow.get(), GRALLOC_USAGE_SW_READ_NEVER | GRALLOC_USAGE_SW_WRITE_OFTEN | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_EXTERNAL_DISP)); +#endif CHECK_EQ(0, native_window_set_scaling_mode( @@ -200,13 +209,25 @@ void SoftwareRenderer::render( const uint8_t *src_uv = (const uint8_t *)data + mWidth * (mHeight - mCropTop / 2); - uint8_t *dst_y = (uint8_t *)dst; +#ifdef EXYNOS4_ENHANCEMENTS + void *pYUVBuf[3]; + + CHECK_EQ(0, mapper.unlock(buf->handle)); + CHECK_EQ(0, mapper.lock( + buf->handle, GRALLOC_USAGE_SW_WRITE_OFTEN | GRALLOC_USAGE_YUV_ADDR, bounds, pYUVBuf)); + size_t dst_c_stride = buf->stride / 2; + uint8_t *dst_y = (uint8_t *)pYUVBuf[0]; + uint8_t *dst_v = (uint8_t *)pYUVBuf[1]; + uint8_t *dst_u = (uint8_t *)pYUVBuf[2]; +#else size_t dst_y_size = buf->stride * buf->height; size_t dst_c_stride = ALIGN(buf->stride / 2, 16); size_t dst_c_size = dst_c_stride * buf->height / 2; + uint8_t *dst_y = (uint8_t *)dst; uint8_t *dst_v = dst_y + dst_y_size; uint8_t *dst_u = dst_v + dst_c_size; +#endif for (int y = 0; y < mCropHeight; ++y) { memcpy(dst_y, src_y, mCropWidth); |