mm-video-v4l2: vdec: Enable thumbnail for TP10

Added thumbnail generation support for TP10 clips using
combined mode.

Change-Id: I0dda5d74c37d720558e0b492822dd9321564dc5c
CRs-Fixed: 2091107
diff --git a/libc2dcolorconvert/C2DColorConverter.cpp b/libc2dcolorconvert/C2DColorConverter.cpp
index 0551a8f..d36a950 100644
--- a/libc2dcolorconvert/C2DColorConverter.cpp
+++ b/libc2dcolorconvert/C2DColorConverter.cpp
@@ -266,6 +266,7 @@
         case NV12_2K:
         case NV12_128m:
         case NV12_UBWC:
+        case TP10_UBWC:
             return true;
         default:
             return false;
@@ -442,6 +443,8 @@
             return C2D_COLOR_FORMAT_420_YV12;
         case NV12_UBWC:
             return C2D_COLOR_FORMAT_420_NV12 | C2D_FORMAT_UBWC_COMPRESSED;
+        case TP10_UBWC:
+            return C2D_COLOR_FORMAT_420_TP10 | C2D_FORMAT_UBWC_COMPRESSED;
         default:
             ALOGW("%s: Format not supported , %d", __FUNCTION__, format);
             return -1;
@@ -472,6 +475,8 @@
             return ALIGN(width, ALIGN16);
         case NV12_UBWC:
             return VENUS_Y_STRIDE(COLOR_FMT_NV12_UBWC, width);
+        case TP10_UBWC:
+            return VENUS_Y_STRIDE(COLOR_FMT_NV12_BPP10_UBWC, width);
         default:
             ALOGW("%s: Format not supported , %d", __FUNCTION__, format);
             return 0;
@@ -501,6 +506,11 @@
                     VENUS_Y_SCANLINES(COLOR_FMT_NV12_UBWC, height), ALIGN4K) +
                  ALIGN( VENUS_Y_META_STRIDE(COLOR_FMT_NV12_UBWC, width) *
                    VENUS_Y_META_SCANLINES(COLOR_FMT_NV12_UBWC, height), ALIGN4K);
+        case TP10_UBWC:
+            return ALIGN( VENUS_Y_STRIDE(COLOR_FMT_NV12_BPP10_UBWC, width) *
+                          VENUS_Y_SCANLINES(COLOR_FMT_NV12_BPP10_UBWC, height), ALIGN4K) +
+                ALIGN( VENUS_Y_META_STRIDE(COLOR_FMT_NV12_BPP10_UBWC, width) *
+                       VENUS_Y_META_SCANLINES(COLOR_FMT_NV12_BPP10_UBWC, height), ALIGN4K);
         default:
             ALOGW("%s: Format not supported , %d", __FUNCTION__, format);
             return 0;
@@ -569,6 +579,9 @@
         case NV12_UBWC:
             size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12_UBWC, width, height);
             break;
+        case TP10_UBWC:
+            size = VENUS_BUFFER_SIZE(COLOR_FMT_NV12_BPP10_UBWC, width, height);
+            break;
         default:
             ALOGW("%s: Format not supported , %d", __FUNCTION__, format);
             break;
@@ -674,6 +687,7 @@
         case NV12_128m:
           return 1;
         case NV12_UBWC:
+        case TP10_UBWC:
           return ALIGN4K;
         default:
           ALOGW("%s: unknown format (%d) passed for luma alignment number.",
@@ -691,6 +705,7 @@
         case NV12_2K:
         case NV12_128m:
         case NV12_UBWC:
+        case TP10_UBWC:
           return ALIGN4K;
         default:
           ALOGW("%s: unknown format (%d) passed for size alignment number",
@@ -719,6 +734,7 @@
         case NV12_2K:
         case NV12_128m:
         case NV12_UBWC:
+        case TP10_UBWC:
             bpp.numerator = 3;
             bpp.denominator = 2;
             break;
diff --git a/libc2dcolorconvert/C2DColorConverter.h b/libc2dcolorconvert/C2DColorConverter.h
index 3be364f..f1092c0 100644
--- a/libc2dcolorconvert/C2DColorConverter.h
+++ b/libc2dcolorconvert/C2DColorConverter.h
@@ -102,7 +102,7 @@
     NV12_2K,
     NV12_128m,
     NV12_UBWC,
-    NV12_TP10,
+    TP10_UBWC,
     NO_COLOR_FORMAT
 };
 
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
index 797cc49..a754fda 100644
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_v4l2.cpp
@@ -1065,15 +1065,9 @@
     }
 
     if (tp10_enable && !dither_enable) {
-        /* When thumbnails enabled, always output in NV12 UBWC */
-        if(drv_ctx.idr_only_decoding) {
-            drv_ctx.output_format = VDEC_YUV_FORMAT_NV12_UBWC;
-            capture_capability = V4L2_PIX_FMT_NV12_UBWC;
-        } else {
-            drv_ctx.output_format = VDEC_YUV_FORMAT_NV12_TP10_UBWC;
-            capture_capability = V4L2_PIX_FMT_NV12_TP10_UBWC;
+        drv_ctx.output_format = VDEC_YUV_FORMAT_NV12_TP10_UBWC;
+        capture_capability = V4L2_PIX_FMT_NV12_TP10_UBWC;
 
-        }
         memset(&fmt, 0x0, sizeof(struct v4l2_format));
         fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
         rc = ioctl(drv_ctx.video_driver_fd, VIDIOC_G_FMT, &fmt);
@@ -1148,7 +1142,7 @@
                 eRet = set_dpb(false, V4L2_MPEG_VIDC_VIDEO_DPB_COLOR_FMT_NONE);
             }
         } else if (dpb_bit_depth == MSM_VIDC_BIT_DEPTH_10) {
-            if (dither_enable || drv_ctx.idr_only_decoding) {
+            if (dither_enable) {
                 //split DPB-OPB
                 //DPB -> TP10UBWC, OPB -> UBWC
                 eRet = set_dpb(true, V4L2_MPEG_VIDC_VIDEO_DPB_COLOR_FMT_TP10_UBWC);
@@ -10918,7 +10912,7 @@
     mMapOutput2Convert.insert( {
             {VDEC_YUV_FORMAT_NV12, NV12_128m},
             {VDEC_YUV_FORMAT_NV12_UBWC, NV12_UBWC},
-            {VDEC_YUV_FORMAT_NV12_TP10_UBWC, NV12_TP10},
+            {VDEC_YUV_FORMAT_NV12_TP10_UBWC, TP10_UBWC},
         });
 }