diff options
author | Linux Build Service Account <lnxbuild@localhost> | 2017-07-25 12:15:47 -0600 |
---|---|---|
committer | Linux Build Service Account <lnxbuild@localhost> | 2017-07-25 12:15:47 -0600 |
commit | 8593baccee63f9fa97ede297cfd8c8bea2a2272e (patch) | |
tree | 9d599941bced91fa1ed81a6fea9dfa469a4deb9d /libc2dcolorconvert | |
parent | 76a2ca3356229fd61570609dbbc4ad227e38fbe7 (diff) | |
parent | c989f7319c543164d6e0182a78a9ea1cddc29124 (diff) | |
download | media-8593baccee63f9fa97ede297cfd8c8bea2a2272e.tar.gz |
Merge c989f7319c543164d6e0182a78a9ea1cddc29124 on remote branch
Change-Id: I19f52ea49fe9e5b270f89cf23d148ebbca2cc245
Diffstat (limited to 'libc2dcolorconvert')
-rw-r--r-- | libc2dcolorconvert/C2DColorConverter.cpp | 108 |
1 files changed, 62 insertions, 46 deletions
diff --git a/libc2dcolorconvert/C2DColorConverter.cpp b/libc2dcolorconvert/C2DColorConverter.cpp index 47c54a85..8bc64889 100644 --- a/libc2dcolorconvert/C2DColorConverter.cpp +++ b/libc2dcolorconvert/C2DColorConverter.cpp @@ -35,54 +35,63 @@ C2DColorConverter::C2DColorConverter() { enabled = true; + mSrcSurface = 0; + mDstSurface = 0; pthread_mutex_init(&mLock, NULL); mC2DLibHandle = dlopen("libC2D2.so", RTLD_NOW); if (!mC2DLibHandle) { - ALOGE("FATAL ERROR: could not dlopen libc2d2.so: %s", dlerror()); + ALOGE("ERROR: could not dlopen libc2d2.so: %s. C2D is disabled.", dlerror()); enabled = false; return; } mAdrenoUtilsHandle = dlopen("libadreno_utils.so", RTLD_NOW); if (!mAdrenoUtilsHandle) { - ALOGE("FATAL ERROR: could not dlopen libadreno_utils.so: %s", dlerror()); + ALOGE("ERROR: could not dlopen libadreno_utils.so: %s.. C2D is disabled.", dlerror()); enabled = false; return; } mC2DCreateSurface = (LINK_c2dCreateSurface)dlsym(mC2DLibHandle, "c2dCreateSurface"); - mC2DUpdateSurface = (LINK_c2dUpdateSurface)dlsym(mC2DLibHandle, "c2dUpdateSurface"); - mC2DReadSurface = (LINK_c2dReadSurface)dlsym(mC2DLibHandle, "c2dReadSurface"); - mC2DDraw = (LINK_c2dDraw)dlsym(mC2DLibHandle, "c2dDraw"); - mC2DFlush = (LINK_c2dFlush)dlsym(mC2DLibHandle, "c2dFlush"); - mC2DFinish = (LINK_c2dFinish)dlsym(mC2DLibHandle, "c2dFinish"); - mC2DWaitTimestamp = (LINK_c2dWaitTimestamp)dlsym(mC2DLibHandle, "c2dWaitTimestamp"); - mC2DDestroySurface = (LINK_c2dDestroySurface)dlsym(mC2DLibHandle, "c2dDestroySurface"); - mC2DMapAddr = (LINK_c2dMapAddr)dlsym(mC2DLibHandle, "c2dMapAddr"); - mC2DUnMapAddr = (LINK_c2dUnMapAddr)dlsym(mC2DLibHandle, "c2dUnMapAddr"); - - if (!mC2DCreateSurface || !mC2DUpdateSurface || !mC2DReadSurface + mC2DUpdateSurface = (LINK_c2dUpdateSurface)dlsym(mC2DLibHandle, "c2dUpdateSurface"); + mC2DReadSurface = (LINK_c2dReadSurface)dlsym(mC2DLibHandle, "c2dReadSurface"); + mC2DDraw = (LINK_c2dDraw)dlsym(mC2DLibHandle, "c2dDraw"); + mC2DFlush = (LINK_c2dFlush)dlsym(mC2DLibHandle, "c2dFlush"); + mC2DFinish = (LINK_c2dFinish)dlsym(mC2DLibHandle, "c2dFinish"); + mC2DWaitTimestamp = (LINK_c2dWaitTimestamp)dlsym(mC2DLibHandle, "c2dWaitTimestamp"); + mC2DDestroySurface = (LINK_c2dDestroySurface)dlsym(mC2DLibHandle, "c2dDestroySurfaceq"); + mC2DMapAddr = (LINK_c2dMapAddr)dlsym(mC2DLibHandle, "c2dMapAddr"); + mC2DUnMapAddr = (LINK_c2dUnMapAddr)dlsym(mC2DLibHandle, "c2dUnMapAddr"); + + if (!mC2DCreateSurface || !mC2DUpdateSurface || !mC2DReadSurface || !mC2DDraw || !mC2DFlush || !mC2DFinish || !mC2DWaitTimestamp || !mC2DDestroySurface || !mC2DMapAddr || !mC2DUnMapAddr) { - ALOGE("%s: dlsym ERROR", __FUNCTION__); - enabled = false; - return; - } - - mAdrenoComputeAlignedWidthAndHeight = (LINK_AdrenoComputeAlignedWidthAndHeight)dlsym(mAdrenoUtilsHandle, "compute_aligned_width_and_height"); - if (!mAdrenoComputeAlignedWidthAndHeight) { - ALOGE("%s: dlsym ERROR", __FUNCTION__); - enabled = false; - return; - } + ALOGE("%s: dlsym ERROR. C2D is disabled.", __FUNCTION__); + enabled = false; + return; + } + + mAdrenoComputeAlignedWidthAndHeight = (LINK_AdrenoComputeAlignedWidthAndHeight)dlsym(mAdrenoUtilsHandle, "compute_aligned_width_and_height"); + if (!mAdrenoComputeAlignedWidthAndHeight) { + ALOGE("%s: dlsym compute_aligned_width_and_height ERROR. C2D is disabled.", __FUNCTION__); + enabled = false; + return; + } } C2DColorConverter::~C2DColorConverter() { if (enabled) { - mC2DDestroySurface(mDstSurface); - mC2DDestroySurface(mSrcSurface); + if (mDstSurface) { + mC2DDestroySurface(mDstSurface); + mDstSurface = 0; + } + if (mSrcSurface) { + mC2DDestroySurface(mSrcSurface); + mSrcSurface = 0; + } + if (isYUVSurface(mSrcFormat)) { delete ((C2D_YUV_SURFACE_DEF *)mSrcSurfaceDef); } else { @@ -167,7 +176,7 @@ bool C2DColorConverter::convertC2D(int srcFd, void *srcBase, void * srcData, if (srcFd < 0 || dstFd < 0 || srcData == NULL || dstData == NULL || srcBase == NULL || dstBase == NULL) { - ALOGE("Incorrect input parameters\n"); + ALOGE("%s: Color conversion failed. Incorrect input parameters", __FUNCTION__); status = false; } else { @@ -209,24 +218,24 @@ bool C2DColorConverter::convertC2D(int srcFd, void *srcBase, void * srcData, unmappedDstSuccess = unmapGPUAddr((unsigned long)dstMappedGpuAddr); if (!unmappedSrcSuccess || !unmappedDstSuccess) { - ALOGE("unmapping GPU address failed (%d:%d)\n", unmappedSrcSuccess, - unmappedDstSuccess); + ALOGE("%s: unmapping GPU address failed (%d:%d)", __FUNCTION__, + unmappedSrcSuccess, unmappedDstSuccess); status = false; } else { status = true; } } else { - ALOGE("C2D Draw failed (%d)\n", ret); + ALOGE("%s: C2D Draw failed (%d)", __FUNCTION__, ret); status = false; } } else { - ALOGE("Update dst surface def failed (%d)\n", ret); + ALOGE("%s; Update dst surface def failed (%d)", __FUNCTION__, ret); unmapGPUAddr((unsigned long)srcMappedGpuAddr); unmapGPUAddr((unsigned long)dstMappedGpuAddr); status = false; } } else { - ALOGE("Update src surface def failed )%d)\n", ret); + ALOGE("%s: Update src surface def failed (%d)", __FUNCTION__, ret); unmapGPUAddr((unsigned long)srcMappedGpuAddr); status = false; } @@ -268,7 +277,7 @@ int32_t C2DColorConverter::getDummySurfaceDef(ColorConvertFormat format, *surfaceYUVDef = (C2D_YUV_SURFACE_DEF *) calloc(1, sizeof(C2D_YUV_SURFACE_DEF)); if (*surfaceYUVDef == NULL) { - ALOGE("C2D Draw failed\n"); + ALOGE("%s: surfaceYUVDef allocation failed", __FUNCTION__); return -1; } } else { @@ -304,7 +313,7 @@ int32_t C2DColorConverter::getDummySurfaceDef(ColorConvertFormat format, *surfaceRGBDef = (C2D_RGB_SURFACE_DEF *) calloc(1, sizeof(C2D_RGB_SURFACE_DEF)); if (*surfaceRGBDef == NULL) { - ALOGE("C2D Draw failed\n"); + ALOGE("%s: surfaceRGBDef allocation failed", __FUNCTION__); return -1; } } else { @@ -381,7 +390,7 @@ C2D_STATUS C2DColorConverter::updateRGBSurfaceDef(uint8_t *gpuAddr, void * data, } else { C2D_RGB_SURFACE_DEF * dstSurfaceDef = (C2D_RGB_SURFACE_DEF *)mDstSurfaceDef; dstSurfaceDef->buffer = data; - ALOGV("dstSurfaceDef->buffer = %p\n", data); + ALOGV("%s: dstSurfaceDef->buffer = %p", __FUNCTION__, data); dstSurfaceDef->phys = gpuAddr; return mC2DUpdateSurface(mDstSurface, C2D_TARGET, (C2D_SURFACE_TYPE)(C2D_SURFACE_RGB_HOST | C2D_SURFACE_WITH_PHYS), @@ -414,7 +423,7 @@ uint32_t C2DColorConverter::getC2DFormat(ColorConvertFormat format) case NV12_UBWC: return C2D_COLOR_FORMAT_420_NV12 | C2D_FORMAT_UBWC_COMPRESSED; default: - ALOGE("Format not supported , %d\n", format); + ALOGW("%s: Format not supported , %d", __FUNCTION__, format); return -1; } } @@ -444,6 +453,7 @@ size_t C2DColorConverter::calcStride(ColorConvertFormat format, size_t width) case NV12_UBWC: return VENUS_Y_STRIDE(COLOR_FMT_NV12_UBWC, width); default: + ALOGW("%s: Format not supported , %d", __FUNCTION__, format); return 0; } } @@ -472,6 +482,7 @@ size_t C2DColorConverter::calcYSize(ColorConvertFormat format, size_t width, siz ALIGN( VENUS_Y_META_STRIDE(COLOR_FMT_NV12_UBWC, width) * VENUS_Y_META_SCANLINES(COLOR_FMT_NV12_UBWC, height), ALIGN4K); default: + ALOGW("%s: Format not supported , %d", __FUNCTION__, format); return 0; } } @@ -526,7 +537,8 @@ size_t C2DColorConverter::calcSize(ColorConvertFormat format, size_t width, size size_t lumaSize = ALIGN(alignedw * height, ALIGN2K); size_t chromaSize = ALIGN((alignedw * height)/2, ALIGN2K); size = ALIGN(lumaSize + chromaSize, ALIGN4K); - ALOGV("NV12_2k, width = %zu, height = %zu, size = %d", width, height, size); + ALOGV("%s: NV12_2k, width = %zu, height = %zu, size = %d", + __FUNCTION__, width, height, size); } break; case NV12_128m: @@ -538,6 +550,7 @@ size_t C2DColorConverter::calcSize(ColorConvertFormat format, size_t width, size size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12_UBWC, width, height); break; default: + ALOGW("%s: Format not supported , %d", __FUNCTION__, format); break; } return size; @@ -553,11 +566,11 @@ void * C2DColorConverter::getMappedGPUAddr(int bufFD, void *bufPtr, size_t bufLe status = mC2DMapAddr(bufFD, bufPtr, bufLen, 0, KGSL_USER_MEM_TYPE_ION, &gpuaddr); if (status != C2D_STATUS_OK) { - ALOGE("c2dMapAddr failed: status %d fd %d ptr %p len %zu flags %d\n", + ALOGE("c2dMapAddr failed: status %d fd %d ptr %p len %zu flags %d", status, bufFD, bufPtr, bufLen, KGSL_USER_MEM_TYPE_ION); return NULL; } - ALOGV("c2d mapping created: gpuaddr %p fd %d ptr %p len %zu\n", + ALOGV("c2d mapping created: gpuaddr %p fd %d ptr %p len %zu", gpuaddr, bufFD, bufPtr, bufLen); return gpuaddr; @@ -569,7 +582,7 @@ bool C2DColorConverter::unmapGPUAddr(unsigned long gAddr) C2D_STATUS status = mC2DUnMapAddr((void*)gAddr); if (status != C2D_STATUS_OK) - ALOGE("c2dUnMapAddr failed: status %d gpuaddr %08lx\n", status, gAddr); + ALOGE("c2dUnMapAddr failed: status %d gpuaddr %08lx", status, gAddr); return (status == C2D_STATUS_OK); } @@ -616,7 +629,7 @@ bool C2DColorConverter::getBuffReq(int32_t port, C2DBuffReq *req) { req->sizeAlign = calcSizeAlign(mSrcFormat); req->size = calcSize(mSrcFormat, mSrcWidth, mSrcHeight); req->bpp = calcBytesPerPixel(mSrcFormat); - ALOGV("input req->size = %d\n", req->size); + ALOGV("%s: input req->size = %d", __FUNCTION__, req->size); } else if (port == C2D_OUTPUT) { req->width = mDstWidth; req->height = mDstHeight; @@ -626,7 +639,7 @@ bool C2DColorConverter::getBuffReq(int32_t port, C2DBuffReq *req) { req->sizeAlign = calcSizeAlign(mDstFormat); req->size = calcSize(mDstFormat, mDstWidth, mDstHeight); req->bpp = calcBytesPerPixel(mDstFormat); - ALOGV("output req->size = %d\n", req->size); + ALOGV("%s: output req->size = %d", __FUNCTION__, req->size); } return true; } @@ -642,7 +655,8 @@ size_t C2DColorConverter::calcLumaAlign(ColorConvertFormat format) { case NV12_UBWC: return ALIGN4K; default: - ALOGE("unknown format passed for luma alignment number"); + ALOGW("%s: unknown format (%d) passed for luma alignment number.", + __FUNCTION__, format); return 1; } } @@ -658,7 +672,8 @@ size_t C2DColorConverter::calcSizeAlign(ColorConvertFormat format) { case NV12_UBWC: return ALIGN4K; default: - ALOGE("unknown format passed for size alignment number"); + ALOGW("%s: unknown format (%d) passed for size alignment number", + __FUNCTION__, format); return 1; } } @@ -687,6 +702,7 @@ C2DBytesPerPixel C2DColorConverter::calcBytesPerPixel(ColorConvertFormat format) bpp.denominator = 2; break; default: + ALOGW("%s: unknown format (%d) passed.", __FUNCTION__, format); break; } return bpp; @@ -703,7 +719,7 @@ int32_t C2DColorConverter::dumpOutput(char * filename, char mode) { } if ((fd = open(filename, flags)) < 0) { - ALOGE("open dump file failed w/ errno %s", strerror(errno)); + ALOGE("%s: open dump file failed w/ errno %s", __FUNCTION__, strerror(errno)); return -1; } @@ -782,7 +798,7 @@ int32_t C2DColorConverter::dumpOutput(char * filename, char mode) { } cleanup: if (ret < 0) { - ALOGE("file write failed w/ errno %s", strerror(errno)); + ALOGE("%s: file write failed w/ errno %s", __FUNCTION__, strerror(errno)); } close(fd); return ret < 0 ? ret : 0; |