Browse Source

sf-omx-il: Add mirror support for codaj12

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

+ 34 - 0
soft_3rdpart/omx-il/component/image/dec/SF_OMX_Mjpeg_decoder.c

@@ -594,6 +594,23 @@ static OMX_ERRORTYPE SF_OMX_GetConfig(
         break;
     }
 
+    case OMX_IndexConfigCommonMirror:
+    {
+        OMX_CONFIG_MIRRORTYPE *mirrParam = (OMX_CONFIG_MIRRORTYPE *)pComponentConfigStructure;
+        DecConfigParam *decConfig = pSfMjpegImplement->config;
+        if(mirrParam->nPortIndex == (OMX_U32)(OMX_OUTPUT_PORT_INDEX))
+        {
+            mirrParam->eMirror = decConfig->mirror;
+            LOG(SF_LOG_INFO, "Get Mirror %d \r\n", decConfig->mirror);
+        }
+        else
+        {
+            LOG(SF_LOG_WARN, "Only output port support Mirror config\r\n");
+            ret = OMX_ErrorBadParameter;
+        }
+        break;
+    }
+
     default:
         break;
     }
@@ -669,6 +686,23 @@ static OMX_ERRORTYPE SF_OMX_SetConfig(
         break;
     }
 
+    case OMX_IndexConfigCommonMirror:
+    {
+        OMX_CONFIG_MIRRORTYPE *mirrParam = (OMX_CONFIG_MIRRORTYPE *)pComponentConfigStructure;
+        DecConfigParam *decConfig = pSfMjpegImplement->config;
+        if(mirrParam->nPortIndex == (OMX_U32)(OMX_OUTPUT_PORT_INDEX))
+        {
+            decConfig->mirror = mirrParam->eMirror;
+            LOG(SF_LOG_INFO, "Set Mirror %d \r\n", decConfig->mirror);
+        }
+        else
+        {
+            LOG(SF_LOG_WARN, "Only output port support Mirror config\r\n");
+            ret = OMX_ErrorBadParameter;
+        }
+        break;
+    }
+
     default:
         break;
     }

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

@@ -48,6 +48,7 @@ typedef struct DecodeTestContext
     OMX_U32 RoiWidth;
     OMX_U32 RoiHeight;
     OMX_U32 Rotation;
+    OMX_U32 Mirror;
 } DecodeTestContext;
 DecodeTestContext *decodeTestContext;
 static OMX_S32 FillInputBuffer(DecodeTestContext *decodeTestContext, OMX_BUFFERHEADERTYPE *pInputBuffer);
@@ -209,9 +210,10 @@ int main(int argc, char **argv)
         {"format", required_argument, NULL, 'f'},
         {"roi", required_argument, NULL, 'c'},
         {"rotation", required_argument, NULL, 'r'},
+        {"mirror", required_argument, NULL, 'm'},
         {NULL, no_argument, NULL, 0},
     };
-    char *shortOpt = "i:o:f:c:r:";
+    char *shortOpt = "i:o:f:c:r:m:";
     OMX_U32 c;
     OMX_S32 l;
     OMX_STRING val;
@@ -283,6 +285,9 @@ int main(int argc, char **argv)
         case 'r':
             decodeTestContext->Rotation = atoi(optarg);
             break;
+        case 'm':
+            decodeTestContext->Mirror = atoi(optarg);
+            break;
         case 'h':
         default:
             help();
@@ -417,6 +422,17 @@ int main(int argc, char **argv)
         OMX_SetConfig(hComponentDecoder, OMX_IndexConfigCommonRotate, &RotatConfig);
     }
 
+    /* Set Mirror config setting*/
+    if(decodeTestContext->Mirror)
+    {
+        OMX_CONFIG_MIRRORTYPE MirrorConfig;
+        OMX_INIT_STRUCTURE(MirrorConfig);
+        MirrorConfig.nPortIndex = 1;
+        OMX_GetConfig(hComponentDecoder, OMX_IndexConfigCommonMirror, &MirrorConfig);
+        MirrorConfig.eMirror = decodeTestContext->Mirror;
+        OMX_SetConfig(hComponentDecoder, OMX_IndexConfigCommonMirror, &MirrorConfig);
+    }
+
     OMX_SendCommand(hComponentDecoder, OMX_CommandStateSet, OMX_StateIdle, NULL);
 
     OMX_PARAM_PORTDEFINITIONTYPE pInputPortDefinition;