Browse Source

sf-omx-il: Add starfive's color format extensions to unify the usage format

Signed-off-by: Som Qin <som.qin@starfivetech.com>
Som Qin 2 years ago
parent
commit
71a6b487db

+ 3 - 7
soft_3rdpart/omx-il/component/image/dec/SF_OMX_Mjpeg_decoder.c

@@ -317,7 +317,7 @@ static OMX_ERRORTYPE SF_OMX_GetParameter(
             portFormat->eColorFormat = OMX_COLOR_FormatYUV420SemiPlanar; //NV12
             break;
         case 4:
-            portFormat->eColorFormat = OMX_COLOR_FormatYVU420PackedPlanar; //NV21
+            portFormat->eColorFormat = OMX_COLOR_FormatYVU420SemiPlanar; //NV21
             break;
         default:
             if (index > 0)
@@ -437,13 +437,11 @@ static OMX_ERRORTYPE SF_OMX_SetParameter(
                         pOutputPort->nBufferSize = (width * height * 3) / 2;
                         break;
                     case OMX_COLOR_FormatYUV420SemiPlanar: //NV12
-                    case OMX_COLOR_FormatYUV420PackedSemiPlanar:
                         decConfig->cbcrInterleave = CBCR_INTERLEAVE;
                         decConfig->packedFormat = PACKED_FORMAT_NONE;
                         pOutputPort->nBufferSize = (width * height * 3) / 2;
                         break;
-                    case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
-                    case OMX_COLOR_FormatYVU420PackedPlanar:
+                    case OMX_COLOR_FormatYVU420SemiPlanar: //NV21
                         decConfig->cbcrInterleave = CRCB_INTERLEAVE;
                         decConfig->packedFormat = PACKED_FORMAT_NONE;
                         pOutputPort->nBufferSize = (width * height * 3) / 2;
@@ -482,14 +480,12 @@ static OMX_ERRORTYPE SF_OMX_SetParameter(
             pPort->format.video.eColorFormat = portFormat->eColorFormat;
             break;
         case OMX_COLOR_FormatYUV420SemiPlanar: //NV12
-        case OMX_COLOR_FormatYUV420PackedSemiPlanar:
             decConfig->cbcrInterleave = CBCR_INTERLEAVE;
             decConfig->packedFormat = PACKED_FORMAT_NONE;
             pSfMjpegImplement->frameFormat = FORMAT_420;
             pPort->format.video.eColorFormat = portFormat->eColorFormat;
             break;
-        case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
-        case OMX_COLOR_FormatYVU420PackedPlanar:
+        case OMX_COLOR_FormatYVU420SemiPlanar: //NV21
             decConfig->cbcrInterleave = CRCB_INTERLEAVE;
             decConfig->packedFormat = PACKED_FORMAT_NONE;
             pSfMjpegImplement->frameFormat = FORMAT_420;

+ 4 - 10
soft_3rdpart/omx-il/component/video/dec/SF_OMX_Vdec_decoder.c

@@ -165,9 +165,7 @@ static void OnEventArrived(Component com, unsigned long event, void *data, void
         {
         case OMX_COLOR_FormatYUV420Planar:
         case OMX_COLOR_FormatYUV420SemiPlanar:
-        case OMX_COLOR_FormatYUV420PackedSemiPlanar:
-        case OMX_COLOR_FormatYVU420PackedSemiPlanar:
-        case OMX_COLOR_FormatYVU420PackedPlanar:
+        case OMX_COLOR_FormatYVU420SemiPlanar:
             if (nWidth && nHeight) {
                 pSfOMXComponent->portDefinition[1].nBufferSize = (nWidth * nHeight * 3) / 2;
             }
@@ -464,7 +462,7 @@ static OMX_ERRORTYPE SF_OMX_GetParameter(
             break;
         case 2:
             portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
-            portFormat->eColorFormat = OMX_COLOR_FormatYVU420PackedPlanar;
+            portFormat->eColorFormat = OMX_COLOR_FormatYVU420SemiPlanar;
             portFormat->xFramerate = 30;
             break;
         default:
@@ -560,13 +558,11 @@ static OMX_ERRORTYPE SF_OMX_SetParameter(
                 pPort->format.video.eColorFormat = portFormat->eColorFormat;
                 break;
             case OMX_COLOR_FormatYUV420SemiPlanar: //NV12
-            case OMX_COLOR_FormatYUV420PackedSemiPlanar:
                 pTestDecConfig->cbcrInterleave = TRUE;
                 pTestDecConfig->nv21 = FALSE;
                 pPort->format.video.eColorFormat = portFormat->eColorFormat;
                 break;
-            case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
-            case OMX_COLOR_FormatYVU420PackedPlanar:
+            case OMX_COLOR_FormatYVU420SemiPlanar: //NV21
                 pTestDecConfig->cbcrInterleave = TRUE;
                 pTestDecConfig->nv21 = TRUE;
                 pPort->format.video.eColorFormat = portFormat->eColorFormat;
@@ -675,14 +671,12 @@ static OMX_ERRORTYPE SF_OMX_SetParameter(
                     pOutputPort->nBufferSize = (width * height * 3) / 2;
                 break;
             case OMX_COLOR_FormatYUV420SemiPlanar: //NV12
-            case OMX_COLOR_FormatYUV420PackedSemiPlanar:
                 pTestDecConfig->cbcrInterleave = TRUE;
                 pTestDecConfig->nv21 = FALSE;
                 if (width && height)
                     pOutputPort->nBufferSize = (width * height * 3) / 2;
                 break;
-            case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
-            case OMX_COLOR_FormatYVU420PackedPlanar:
+            case OMX_COLOR_FormatYVU420SemiPlanar: //NV21
                 pTestDecConfig->cbcrInterleave = TRUE;
                 pTestDecConfig->nv21 = TRUE;
                 if (width && height)

+ 3 - 7
soft_3rdpart/omx-il/component/video/enc/SF_OMX_Venc_encoder.c

@@ -408,7 +408,7 @@ static OMX_ERRORTYPE SF_OMX_GetParameter(
             break;
         case 2:
             portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
-            portFormat->eColorFormat = OMX_COLOR_FormatYVU420PackedPlanar;
+            portFormat->eColorFormat = OMX_COLOR_FormatYVU420SemiPlanar;
             portFormat->xFramerate = 30;
             break;
         default:
@@ -575,12 +575,10 @@ static OMX_ERRORTYPE SF_OMX_SetParameter(
                 pTestEncConfig->nv21 = FALSE;
                 break;
             case OMX_COLOR_FormatYUV420SemiPlanar: //NV12
-            case OMX_COLOR_FormatYUV420PackedSemiPlanar:
                 pTestEncConfig->cbcrInterleave = TRUE;
                 pTestEncConfig->nv21 = FALSE;
                 break;
-            case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
-            case OMX_COLOR_FormatYVU420PackedPlanar:
+            case OMX_COLOR_FormatYVU420SemiPlanar: //NV21
                 pTestEncConfig->cbcrInterleave = TRUE;
                 pTestEncConfig->nv21 = TRUE;
                 break;
@@ -611,9 +609,7 @@ static OMX_ERRORTYPE SF_OMX_SetParameter(
             {
             case OMX_COLOR_FormatYUV420Planar:
             case OMX_COLOR_FormatYUV420SemiPlanar:
-            case OMX_COLOR_FormatYUV420PackedSemiPlanar:
-            case OMX_COLOR_FormatYVU420PackedSemiPlanar:
-            case OMX_COLOR_FormatYVU420PackedPlanar:
+            case OMX_COLOR_FormatYVU420SemiPlanar:
                 if (width && height)
                     pOutputPort->nBufferSize = (width * height * 3) / 2;
                 break;

+ 73 - 2
soft_3rdpart/omx-il/include/khronos/OMX_IVCommon.h

@@ -132,8 +132,79 @@ typedef enum OMX_COLOR_FORMATTYPE {
     OMX_COLOR_Format24BitABGR6666,
     OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
     OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
-    OMX_COLOR_FormatYVU420PackedPlanar,
-    OMX_COLOR_FormatYVU420PackedSemiPlanar,
+
+    /* Starfive extensions */
+    /* I420 */
+    OMX_COLOR_FormatYUV420Planar_P10_16BIT_MSB,
+    OMX_COLOR_FormatYUV420Planar_P10_16BIT_LSB,
+    OMX_COLOR_FormatYUV420Planar_P12_16BIT_MSB,
+    OMX_COLOR_FormatYUV420Planar_P12_16BIT_LSB,
+    /* NV12 */
+    OMX_COLOR_FormatYUV420SemiPlanar_P10_16BIT_MSB,
+    OMX_COLOR_FormatYUV420SemiPlanar_P10_16BIT_LSB,
+    OMX_COLOR_FormatYUV420SemiPlanar_P12_16BIT_MSB,
+    OMX_COLOR_FormatYUV420SemiPlanar_P12_16BIT_LSB,
+    /* NV21 */
+    OMX_COLOR_FormatYVU420SemiPlanar,
+    OMX_COLOR_FormatYVU420SemiPlanar_P10_16BIT_MSB,
+    OMX_COLOR_FormatYVU420SemiPlanar_P10_16BIT_LSB,
+    OMX_COLOR_FormatYVU420SemiPlanar_P12_16BIT_MSB,
+    OMX_COLOR_FormatYVU420SemiPlanar_P12_16BIT_LSB,
+    /* I422 */
+    OMX_COLOR_FormatYUV422Planar_P10_16BIT_MSB,
+    OMX_COLOR_FormatYUV422Planar_P10_16BIT_LSB,
+    OMX_COLOR_FormatYUV422Planar_P12_16BIT_MSB,
+    OMX_COLOR_FormatYUV422Planar_P12_16BIT_LSB,
+    /* NV16 */
+    OMX_COLOR_FormatYUV422SemiPlanar_P10_16BIT_MSB,
+    OMX_COLOR_FormatYUV422SemiPlanar_P10_16BIT_LSB,
+    OMX_COLOR_FormatYUV422SemiPlanar_P12_16BIT_MSB,
+    OMX_COLOR_FormatYUV422SemiPlanar_P12_16BIT_LSB,
+    /* NV61 */
+    OMX_COLOR_FormatYVU422SemiPlanar,
+    OMX_COLOR_FormatYVU422SemiPlanar_P10_16BIT_MSB,
+    OMX_COLOR_FormatYVU422SemiPlanar_P10_16BIT_LSB,
+    OMX_COLOR_FormatYVU422SemiPlanar_P12_16BIT_MSB,
+    OMX_COLOR_FormatYVU422SemiPlanar_P12_16BIT_LSB,
+    /* YUYV */
+    OMX_COLOR_FormatYCbYCr_P10_16BIT_MSB,
+    OMX_COLOR_FormatYCbYCr_P10_16BIT_LSB,
+    OMX_COLOR_FormatYCbYCr_P12_16BIT_MSB,
+    OMX_COLOR_FormatYCbYCr_P12_16BIT_LSB,
+    /* YVYU */
+    OMX_COLOR_FormatYCrYCb_P10_16BIT_MSB,
+    OMX_COLOR_FormatYCrYCb_P10_16BIT_LSB,
+    OMX_COLOR_FormatYCrYCb_P12_16BIT_MSB,
+    OMX_COLOR_FormatYCrYCb_P12_16BIT_LSB,
+    /* UYVY */
+    OMX_COLOR_FormatCbYCrY_P10_16BIT_MSB,
+    OMX_COLOR_FormatCbYCrY_P10_16BIT_LSB,
+    OMX_COLOR_FormatCbYCrY_P12_16BIT_MSB,
+    OMX_COLOR_FormatCbYCrY_P12_16BIT_LSB,
+    /* VYUY */
+    OMX_COLOR_FormatCrYCbY_P10_16BIT_MSB,
+    OMX_COLOR_FormatCrYCbY_P10_16BIT_LSB,
+    OMX_COLOR_FormatCrYCbY_P12_16BIT_MSB,
+    OMX_COLOR_FormatCrYCbY_P12_16BIT_LSB,
+    /* I444 */
+    OMX_COLOR_FormatYUV444Planar,
+    OMX_COLOR_FormatYUV444Planar_P10_16BIT_MSB,
+    OMX_COLOR_FormatYUV444Planar_P10_16BIT_LSB,
+    OMX_COLOR_FormatYUV444Planar_P12_16BIT_MSB,
+    OMX_COLOR_FormatYUV444Planar_P12_16BIT_LSB,
+    /* YUV444PACKED */
+    OMX_COLOR_FormatYUV444Interleaved_P10_16BIT_MSB,
+    OMX_COLOR_FormatYUV444Interleaved_P10_16BIT_LSB,
+    OMX_COLOR_FormatYUV444Interleaved_P12_16BIT_MSB,
+    OMX_COLOR_FormatYUV444Interleaved_P12_16BIT_LSB,
+    /* YUV400 */
+    OMX_COLOR_FormatYUV400,
+    OMX_COLOR_FormatYUV400_P10_16BIT_MSB,
+    OMX_COLOR_FormatYUV400_P10_16BIT_LSB,
+    OMX_COLOR_FormatYUV400_P12_16BIT_MSB,
+    OMX_COLOR_FormatYUV400_P12_16BIT_LSB,
+    /* Starfive extensions end */
+
     OMX_COLOR_FormatMax = 0x7FFFFFFF
 } OMX_COLOR_FORMATTYPE;
 

+ 1 - 1
soft_3rdpart/omx-il/tests/dec_test.c

@@ -333,7 +333,7 @@ int main(int argc, char **argv)
     }
     else if (strstr(decodeTestContext->sOutputFormat, "nv21") != NULL)
     {
-        pOutputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420PackedPlanar;
+        pOutputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420SemiPlanar;
     }
     else if (strstr(decodeTestContext->sOutputFormat, "i420") != NULL)
     {

+ 1 - 1
soft_3rdpart/omx-il/tests/enc_test.c

@@ -332,7 +332,7 @@ int main(int argc, char **argv)
     }
     else if (strstr(encodeTestContext->sInputFormat, "nv21") != NULL)
     {
-        pInputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420PackedPlanar;
+        pInputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420SemiPlanar;
     }
     else
     {

+ 1 - 1
soft_3rdpart/omx-il/tests/mjpeg_dec_test.c

@@ -334,7 +334,7 @@ int main(int argc, char **argv)
     }
     else if (strstr(decodeTestContext->sOutputFormat, "nv21") != NULL)
     {
-        pOutputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420PackedPlanar;
+        pOutputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420SemiPlanar;
     }
     else if (strstr(decodeTestContext->sOutputFormat, "i420") != NULL)
     {