Browse Source

sf-omx-il: Add OMX_COLOR_FormatYVU420PackedSemiPlanar for NV21

Signed-off-by: sw.multimedia <sw.multimedia@starfivetech.com>
sw.multimedia 2 years ago
parent
commit
bab577d057

+ 5 - 3
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_FormatYUV420PackedSemiPlanar; //NV21
+            portFormat->eColorFormat = OMX_COLOR_FormatYVU420PackedSemiPlanar; //NV21
             break;
         default:
             if (index > 0)
@@ -437,11 +437,12 @@ 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_FormatYUV420PackedSemiPlanar: //NV21
+                    case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
                         decConfig->cbcrInterleave = CRCB_INTERLEAVE;
                         decConfig->packedFormat = PACKED_FORMAT_NONE;
                         pOutputPort->nBufferSize = (width * height * 3) / 2;
@@ -480,12 +481,13 @@ 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_FormatYUV420PackedSemiPlanar: //NV21
+        case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
             decConfig->cbcrInterleave = CRCB_INTERLEAVE;
             decConfig->packedFormat = PACKED_FORMAT_NONE;
             pSfMjpegImplement->frameFormat = FORMAT_420;

+ 7 - 3
soft_3rdpart/omx-il/component/video/dec/SF_OMX_Vdec_decoder.c

@@ -165,6 +165,8 @@ 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:
             if (nWidth && nHeight) {
                 pSfOMXComponent->portDefinition[1].nBufferSize = (nWidth * nHeight * 3) / 2;
             }
@@ -461,7 +463,7 @@ static OMX_ERRORTYPE SF_OMX_GetParameter(
             break;
         case 2:
             portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
-            portFormat->eColorFormat = OMX_COLOR_FormatYUV420PackedSemiPlanar;
+            portFormat->eColorFormat = OMX_COLOR_FormatYVU420PackedSemiPlanar;
             portFormat->xFramerate = 30;
             break;
         default:
@@ -557,11 +559,12 @@ 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_FormatYUV420PackedSemiPlanar: //NV21
+            case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
                 pTestDecConfig->cbcrInterleave = TRUE;
                 pTestDecConfig->nv21 = TRUE;
                 pPort->format.video.eColorFormat = portFormat->eColorFormat;
@@ -670,12 +673,13 @@ 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_FormatYUV420PackedSemiPlanar: //NV21
+            case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
                 pTestDecConfig->cbcrInterleave = TRUE;
                 pTestDecConfig->nv21 = TRUE;
                 if (width && height)

+ 9 - 1
soft_3rdpart/omx-il/component/video/enc/SF_OMX_Venc_encoder.c

@@ -406,6 +406,11 @@ static OMX_ERRORTYPE SF_OMX_GetParameter(
             portFormat->eColorFormat = OMX_COLOR_FormatYUV420Planar;
             portFormat->xFramerate = 30;
             break;
+        case 2:
+            portFormat->eCompressionFormat = OMX_VIDEO_CodingUnused;
+            portFormat->eColorFormat = OMX_COLOR_FormatYVU420PackedSemiPlanar;
+            portFormat->xFramerate = 30;
+            break;
         default:
             if (index > 0)
             {
@@ -570,10 +575,11 @@ 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_FormatYUV420PackedSemiPlanar: //NV21
+            case OMX_COLOR_FormatYVU420PackedSemiPlanar: //NV21
                 pTestEncConfig->cbcrInterleave = TRUE;
                 pTestEncConfig->nv21 = TRUE;
                 break;
@@ -604,6 +610,8 @@ static OMX_ERRORTYPE SF_OMX_SetParameter(
             {
             case OMX_COLOR_FormatYUV420Planar:
             case OMX_COLOR_FormatYUV420SemiPlanar:
+            case OMX_COLOR_FormatYUV420PackedSemiPlanar:
+            case OMX_COLOR_FormatYVU420PackedSemiPlanar:
                 if (width && height)
                     pOutputPort->nBufferSize = (width * height * 3) / 2;
                 break;

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

@@ -132,6 +132,8 @@ 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,
     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_FormatYUV420PackedSemiPlanar;
+        pOutputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420PackedSemiPlanar;
     }
     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_FormatYUV420PackedSemiPlanar;
+        pInputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420PackedSemiPlanar;
     }
     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_FormatYUV420PackedSemiPlanar;
+        pOutputPortDefinition.format.video.eColorFormat = OMX_COLOR_FormatYVU420PackedSemiPlanar;
     }
     else if (strstr(decodeTestContext->sOutputFormat, "i420") != NULL)
     {