summaryrefslogtreecommitdiff
path: root/libc2dcolorconvert
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2017-08-14 11:09:52 -0600
committerLinux Build Service Account <lnxbuild@localhost>2017-08-14 11:09:52 -0600
commit07dd57ddb64267fac8c5fbe614bde7bac92d23ab (patch)
treed1b8d571b4480610fb378cfe50c2ecc0122e8e39 /libc2dcolorconvert
parentc54e8de7a669850e403f8ce5281af01af140e197 (diff)
parent8d75312359b7f5e6d5deeaa4261d685dc0a8e6df (diff)
downloadmedia-07dd57ddb64267fac8c5fbe614bde7bac92d23ab.tar.gz
Merge 8d75312359b7f5e6d5deeaa4261d685dc0a8e6df on remote branch
Change-Id: Idc17617c059cb1ae44064e62ff43c1eed53fac0c
Diffstat (limited to 'libc2dcolorconvert')
-rw-r--r--libc2dcolorconvert/C2DColorConverter.cpp63
-rw-r--r--libc2dcolorconvert/C2DColorConverter.h4
2 files changed, 44 insertions, 23 deletions
diff --git a/libc2dcolorconvert/C2DColorConverter.cpp b/libc2dcolorconvert/C2DColorConverter.cpp
index 8bc64889..0551a8fd 100644
--- a/libc2dcolorconvert/C2DColorConverter.cpp
+++ b/libc2dcolorconvert/C2DColorConverter.cpp
@@ -41,13 +41,15 @@ C2DColorConverter::C2DColorConverter()
mC2DLibHandle = dlopen("libC2D2.so", RTLD_NOW);
if (!mC2DLibHandle) {
- ALOGE("ERROR: could not dlopen libc2d2.so: %s. C2D is disabled.", dlerror());
+ ALOGE("%s: ERROR: could not dlopen libc2d2.so: %s. C2D is disabled.",
+ __FUNCTION__, dlerror());
enabled = false;
return;
}
mAdrenoUtilsHandle = dlopen("libadreno_utils.so", RTLD_NOW);
if (!mAdrenoUtilsHandle) {
- ALOGE("ERROR: could not dlopen libadreno_utils.so: %s.. C2D is disabled.", dlerror());
+ ALOGE("%s: ERROR: could not dlopen libadreno_utils.so: %s.. C2D is disabled.",
+ __FUNCTION__, dlerror());
enabled = false;
return;
}
@@ -59,14 +61,18 @@ C2DColorConverter::C2DColorConverter()
mC2DFlush = (LINK_c2dFlush)dlsym(mC2DLibHandle, "c2dFlush");
mC2DFinish = (LINK_c2dFinish)dlsym(mC2DLibHandle, "c2dFinish");
mC2DWaitTimestamp = (LINK_c2dWaitTimestamp)dlsym(mC2DLibHandle, "c2dWaitTimestamp");
- mC2DDestroySurface = (LINK_c2dDestroySurface)dlsym(mC2DLibHandle, "c2dDestroySurfaceq");
+ mC2DDestroySurface = (LINK_c2dDestroySurface)dlsym(mC2DLibHandle, "c2dDestroySurface");
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. C2D is disabled.", __FUNCTION__);
+ ALOGE("%s: dlsym ERROR. C2D is disabled. mC2DCreateSurface[%p] mC2DUpdateSurface[%p] "
+ "mC2DReadSurface[%p] mC2DDraw[%p] mC2DFlush[%p] mC2DFinish[%p] mC2DWaitTimestamp[%p] "
+ "mC2DDestroySurface[%p] mC2DMapAddr[%p] mC2DUnMapAddr[%p]", __FUNCTION__,
+ mC2DCreateSurface, mC2DUpdateSurface, mC2DReadSurface, mC2DDraw, mC2DFlush, mC2DFinish,
+ mC2DWaitTimestamp, mC2DDestroySurface, mC2DMapAddr, mC2DUnMapAddr);
enabled = false;
return;
}
@@ -181,8 +187,10 @@ bool C2DColorConverter::convertC2D(int srcFd, void *srcBase, void * srcData,
} else {
srcMappedGpuAddr = (uint8_t *)getMappedGPUAddr(srcFd, srcData, mSrcSize);
- if (!srcMappedGpuAddr)
- return false;
+ if (!srcMappedGpuAddr) {
+ pthread_mutex_unlock(&mLock);
+ return false;
+ }
if (isYUVSurface(mSrcFormat)) {
ret = updateYUVSurfaceDef(srcMappedGpuAddr, srcBase, srcData, true);
@@ -195,6 +203,7 @@ bool C2DColorConverter::convertC2D(int srcFd, void *srcBase, void * srcData,
dstMappedGpuAddr = (uint8_t *)getMappedGPUAddr(dstFd, dstData, mDstSize);
if (!dstMappedGpuAddr) {
unmapGPUAddr((unsigned long)srcMappedGpuAddr);
+ pthread_mutex_unlock(&mLock);
return false;
}
@@ -229,7 +238,7 @@ bool C2DColorConverter::convertC2D(int srcFd, void *srcBase, void * srcData,
status = false;
}
} else {
- ALOGE("%s; Update dst surface def failed (%d)", __FUNCTION__, ret);
+ ALOGE("%s: Update dst surface def failed (%d)", __FUNCTION__, ret);
unmapGPUAddr((unsigned long)srcMappedGpuAddr);
unmapGPUAddr((unsigned long)dstMappedGpuAddr);
status = false;
@@ -269,6 +278,17 @@ int32_t C2DColorConverter::getDummySurfaceDef(ColorConvertFormat format,
{
void *surfaceDef = NULL;
C2D_SURFACE_TYPE hostSurfaceType;
+ C2D_STATUS ret;
+
+ if (isSource){
+ if (mSrcSurface) {
+ mC2DDestroySurface(mSrcSurface);
+ mSrcSurface = 0;
+ }
+ } else if (mDstSurface) {
+ mC2DDestroySurface(mDstSurface);
+ mDstSurface = 0;
+ }
if (isYUVSurface(format)) {
C2D_YUV_SURFACE_DEF **surfaceYUVDef = (C2D_YUV_SURFACE_DEF **)
@@ -298,7 +318,7 @@ int32_t C2DColorConverter::getDummySurfaceDef(ColorConvertFormat format,
if (format == YCbCr420P ||
format == YCrCb420P) {
- printf("half stride for Cb Cr planes \n");
+ ALOGI("%s: half stride for Cb Cr planes \n", __FUNCTION__);
(*surfaceYUVDef)->stride1 = calcStride(format, width) / 2;
(*surfaceYUVDef)->phys2 = (void *)0xaaaaaaaa;
(*surfaceYUVDef)->stride2 = calcStride(format, width) / 2;
@@ -333,14 +353,14 @@ int32_t C2DColorConverter::getDummySurfaceDef(ColorConvertFormat format,
hostSurfaceType = C2D_SURFACE_RGB_HOST;
}
- mC2DCreateSurface(isSource ? &mSrcSurface :
+ ret = mC2DCreateSurface(isSource ? &mSrcSurface :
&mDstSurface,
isSource ? C2D_SOURCE : C2D_TARGET,
(C2D_SURFACE_TYPE)(hostSurfaceType
| C2D_SURFACE_WITH_PHYS
| C2D_SURFACE_WITH_PHYS_DUMMY),
surfaceDef);
- return 0;
+ return (int32_t) ret;
}
C2D_STATUS C2DColorConverter::updateYUVSurfaceDef(uint8_t *gpuAddr, void *base,
@@ -566,12 +586,12 @@ 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",
- status, bufFD, bufPtr, bufLen, KGSL_USER_MEM_TYPE_ION);
+ ALOGE("%s: c2dMapAddr failed: status %d fd %d ptr %p len %zu flags %d",
+ __FUNCTION__, status, bufFD, bufPtr, bufLen, KGSL_USER_MEM_TYPE_ION);
return NULL;
}
- ALOGV("c2d mapping created: gpuaddr %p fd %d ptr %p len %zu",
- gpuaddr, bufFD, bufPtr, bufLen);
+ ALOGV("%s: c2d mapping created: gpuaddr %p fd %d ptr %p len %zu",
+ __FUNCTION__, gpuaddr, bufFD, bufPtr, bufLen);
return gpuaddr;
}
@@ -582,7 +602,8 @@ bool C2DColorConverter::unmapGPUAddr(unsigned long gAddr)
C2D_STATUS status = mC2DUnMapAddr((void*)gAddr);
if (status != C2D_STATUS_OK)
- ALOGE("c2dUnMapAddr failed: status %d gpuaddr %08lx", status, gAddr);
+ ALOGE("%s: c2dUnMapAddr failed: status %d gpuaddr %08lx",
+ __FUNCTION__, status, gAddr);
return (status == C2D_STATUS_OK);
}
@@ -738,7 +759,7 @@ int32_t C2DColorConverter::dumpOutput(char * filename, char mode) {
if (mDstFormat == YCbCr420P ||
mDstFormat == YCrCb420P) {
- printf("Dump Cb and Cr separately for Planar\n");
+ ALOGI("%s: Dump Cb and Cr separately for Planar\n", __FUNCTION__);
//dump Cb/Cr
base = (uint8_t *)dstSurfaceDef->plane1;
stride = dstSurfaceDef->stride1;
@@ -774,9 +795,11 @@ int32_t C2DColorConverter::dumpOutput(char * filename, char mode) {
stride = dstSurfaceDef->stride;
sliceHeight = dstSurfaceDef->height;
- printf("rgb surface base is %p", base);
- printf("rgb surface dumpsslice height is %lu\n", (unsigned long)sliceHeight);
- printf("rgb surface dump stride is %lu\n", (unsigned long)stride);
+ ALOGI("%s: rgb surface base is %p", __FUNCTION__, base);
+ ALOGI("%s: rgb surface dumpsslice height is %lu\n",
+ __FUNCTION__, (unsigned long)sliceHeight);
+ ALOGI("%s: rgb surface dump stride is %lu\n",
+ __FUNCTION__, (unsigned long)stride);
int bpp = 1; //bytes per pixel
if (mDstFormat == RGB565) {
@@ -789,7 +812,7 @@ int32_t C2DColorConverter::dumpOutput(char * filename, char mode) {
for (size_t i = 0; i < sliceHeight; i++) {
ret = write(fd, base, mDstWidth*bpp);
if (ret < 0) {
- printf("write failed, count = %d\n", count);
+ ALOGI("%s: write failed, count = %d\n", __FUNCTION__, count);
goto cleanup;
}
base += stride;
diff --git a/libc2dcolorconvert/C2DColorConverter.h b/libc2dcolorconvert/C2DColorConverter.h
index 4b2bc7d3..3be364f7 100644
--- a/libc2dcolorconvert/C2DColorConverter.h
+++ b/libc2dcolorconvert/C2DColorConverter.h
@@ -103,6 +103,7 @@ enum ColorConvertFormat {
NV12_128m,
NV12_UBWC,
NV12_TP10,
+ NO_COLOR_FORMAT
};
typedef struct {
@@ -171,9 +172,6 @@ class C2DColorConverter{
C2DColorConverter();
~C2DColorConverter();
- ColorMapping mMapCovertor2PixelFormat;
- ColorMapping mMapPixelFormat2Covertor;
-
bool setResolution(size_t srcWidth, size_t srcHeight, size_t dstWidth,
size_t dstHeight, ColorConvertFormat srcFormat,
ColorConvertFormat dstFormat, int32_t flags,