Loading include/media/stagefright/ColorConverter.h +3 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,9 @@ private: status_t convertYUV420Planar( const BitmapParams &src, const BitmapParams &dst); status_t convertYUV420PlanarUseLibYUV( const BitmapParams &src, const BitmapParams &dst); status_t convertQCOMYUV420SemiPlanar( const BitmapParams &src, const BitmapParams &dst); Loading media/libstagefright/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,7 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := \ libstagefright_color_conversion \ libyuv_static \ libstagefright_aacenc \ libstagefright_matroska \ libstagefright_mediafilter \ Loading media/libstagefright/colorconversion/Android.mk +5 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,11 @@ LOCAL_SRC_FILES:= \ LOCAL_C_INCLUDES := \ $(TOP)/frameworks/native/include/media/openmax \ $(TOP)/hardware/msm7k $(TOP)/hardware/msm7k \ $(TOP)/external/libyuv/files/include LOCAL_STATIC_LIBRARIES := \ libyuv_static \ LOCAL_CFLAGS += -Werror LOCAL_CLANG := true Loading media/libstagefright/colorconversion/ColorConverter.cpp +36 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,10 @@ #include <media/stagefright/ColorConverter.h> #include <media/stagefright/MediaErrors.h> #include "libyuv/convert_from.h" #define USE_LIBYUV namespace android { ColorConverter::ColorConverter( Loading Loading @@ -103,7 +107,11 @@ status_t ColorConverter::convert( switch (mSrcFormat) { case OMX_COLOR_FormatYUV420Planar: #ifdef USE_LIBYUV err = convertYUV420PlanarUseLibYUV(src, dst); #else err = convertYUV420Planar(src, dst); #endif break; case OMX_COLOR_FormatCbYCrY: Loading Loading @@ -196,6 +204,34 @@ status_t ColorConverter::convertCbYCrY( return OK; } status_t ColorConverter::convertYUV420PlanarUseLibYUV( const BitmapParams &src, const BitmapParams &dst) { if (!((src.mCropLeft & 1) == 0 && src.cropWidth() == dst.cropWidth() && src.cropHeight() == dst.cropHeight())) { return ERROR_UNSUPPORTED; } uint16_t *dst_ptr = (uint16_t *)dst.mBits + dst.mCropTop * dst.mWidth + dst.mCropLeft; const uint8_t *src_y = (const uint8_t *)src.mBits + src.mCropTop * src.mWidth + src.mCropLeft; const uint8_t *src_u = (const uint8_t *)src_y + src.mWidth * src.mHeight + src.mCropTop * (src.mWidth / 2) + src.mCropLeft / 2; const uint8_t *src_v = src_u + (src.mWidth / 2) * (src.mHeight / 2); libyuv::I420ToRGB565(src_y, src.mWidth, src_u, src.mWidth / 2, src_v, src.mWidth / 2, (uint8 *)dst_ptr, dst.mWidth * 2, dst.mWidth, dst.mHeight); return OK; } status_t ColorConverter::convertYUV420Planar( const BitmapParams &src, const BitmapParams &dst) { if (!((src.mCropLeft & 1) == 0 Loading Loading
include/media/stagefright/ColorConverter.h +3 −0 Original line number Diff line number Diff line Loading @@ -70,6 +70,9 @@ private: status_t convertYUV420Planar( const BitmapParams &src, const BitmapParams &dst); status_t convertYUV420PlanarUseLibYUV( const BitmapParams &src, const BitmapParams &dst); status_t convertQCOMYUV420SemiPlanar( const BitmapParams &src, const BitmapParams &dst); Loading
media/libstagefright/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,7 @@ LOCAL_SHARED_LIBRARIES := \ LOCAL_STATIC_LIBRARIES := \ libstagefright_color_conversion \ libyuv_static \ libstagefright_aacenc \ libstagefright_matroska \ libstagefright_mediafilter \ Loading
media/libstagefright/colorconversion/Android.mk +5 −1 Original line number Diff line number Diff line Loading @@ -7,7 +7,11 @@ LOCAL_SRC_FILES:= \ LOCAL_C_INCLUDES := \ $(TOP)/frameworks/native/include/media/openmax \ $(TOP)/hardware/msm7k $(TOP)/hardware/msm7k \ $(TOP)/external/libyuv/files/include LOCAL_STATIC_LIBRARIES := \ libyuv_static \ LOCAL_CFLAGS += -Werror LOCAL_CLANG := true Loading
media/libstagefright/colorconversion/ColorConverter.cpp +36 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,10 @@ #include <media/stagefright/ColorConverter.h> #include <media/stagefright/MediaErrors.h> #include "libyuv/convert_from.h" #define USE_LIBYUV namespace android { ColorConverter::ColorConverter( Loading Loading @@ -103,7 +107,11 @@ status_t ColorConverter::convert( switch (mSrcFormat) { case OMX_COLOR_FormatYUV420Planar: #ifdef USE_LIBYUV err = convertYUV420PlanarUseLibYUV(src, dst); #else err = convertYUV420Planar(src, dst); #endif break; case OMX_COLOR_FormatCbYCrY: Loading Loading @@ -196,6 +204,34 @@ status_t ColorConverter::convertCbYCrY( return OK; } status_t ColorConverter::convertYUV420PlanarUseLibYUV( const BitmapParams &src, const BitmapParams &dst) { if (!((src.mCropLeft & 1) == 0 && src.cropWidth() == dst.cropWidth() && src.cropHeight() == dst.cropHeight())) { return ERROR_UNSUPPORTED; } uint16_t *dst_ptr = (uint16_t *)dst.mBits + dst.mCropTop * dst.mWidth + dst.mCropLeft; const uint8_t *src_y = (const uint8_t *)src.mBits + src.mCropTop * src.mWidth + src.mCropLeft; const uint8_t *src_u = (const uint8_t *)src_y + src.mWidth * src.mHeight + src.mCropTop * (src.mWidth / 2) + src.mCropLeft / 2; const uint8_t *src_v = src_u + (src.mWidth / 2) * (src.mHeight / 2); libyuv::I420ToRGB565(src_y, src.mWidth, src_u, src.mWidth / 2, src_v, src.mWidth / 2, (uint8 *)dst_ptr, dst.mWidth * 2, dst.mWidth, dst.mHeight); return OK; } status_t ColorConverter::convertYUV420Planar( const BitmapParams &src, const BitmapParams &dst) { if (!((src.mCropLeft & 1) == 0 Loading