Explorar o código

omx-il: Add bitrate-control parameter test in enc unit test

Signed-off-by: sw.multimedia <sw.multimedia@starfivetech.com>
Andy Hu %!s(int64=2) %!d(string=hai) anos
pai
achega
43cbe66b09

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

@@ -879,9 +879,9 @@ static OMX_ERRORTYPE InitEncoder(SF_OMX_COMPONENT *pSfOMXComponent)
     {
         config->encOpenParam.EncStdParam.waveParam.intraPeriod = pSfOMXComponent->HEVCComponent[1].nKeyFrameInterval;
     }
-    LOG(SF_LOG_INFO, "Get width = %d, height = %d frameRateInfo = %d intraPeriod = %d \r\n",
+    LOG(SF_LOG_INFO, "Get width = %d, height = %d frameRateInfo = %d intraPeriod = %d bitrate = %d\r\n",
         config->encOpenParam.picWidth, config->encOpenParam.picHeight, config->encOpenParam.frameRateInfo,
-        config->encOpenParam.EncStdParam.waveParam.intraPeriod);
+        config->encOpenParam.EncStdParam.waveParam.intraPeriod, config->encOpenParam.bitRate);
 
     pSfOMXComponent->hSFComponentExecoder = pSfOMXComponent->functions->ComponentCreate("wave_encoder", config);
     pSfOMXComponent->hSFComponentFeeder = pSfOMXComponent->functions->ComponentCreate("yuvfeeder", config);

+ 9 - 2
soft_3rdpart/omx-il/tests/enc_test.c

@@ -41,6 +41,7 @@ typedef struct EncodeTestContext
     char sInputFormat[64];
     char sOutputFormat[64];
     OMX_U32 nFrameBufferSize;
+    OMX_U32 nBitrate;
     OMX_BUFFERHEADERTYPE *pInputBufferArray[64];
     OMX_BUFFERHEADERTYPE *pOutputBufferArray[64];
     int msgid;
@@ -97,7 +98,7 @@ static OMX_ERRORTYPE event_handler(
 static void help()
 {
     printf("./video_enc_test -i <input file> -o <output file> -w <width> -h <height>"
-           "-c <yuv/nv12> -s <h264/h265>\r\n");
+           "-c <yuv/nv12> -s <h264/h265> -b <bitrate>\r\n");
 }
 
 static OMX_ERRORTYPE fill_output_buffer_done_handler(
@@ -201,11 +202,12 @@ int main(int argc, char *argv)
         {"input", required_argument, NULL, 'f'},
         {"color format", required_argument, NULL, 'c'},
         {"stream format", required_argument, NULL, 's'},
+        {"bit rate", optional_argument, NULL, 'b'},
         {"width", required_argument, NULL, 'w'},
         {"height", required_argument, NULL, 'h'},
         {NULL, no_argument, NULL, 0},
     };
-    OMX_S8 *shortOpt = "i:o:f:s:w:h:";
+    OMX_S8 *shortOpt = "i:o:f:s:w:h:b:";
     OMX_U32 c;
     OMX_S32 l;
 
@@ -253,6 +255,10 @@ int main(int argc, char *argv)
             printf("height: %s\r\n", optarg);
             height = atoi(optarg);
             break;
+        case 'b':
+            printf("bit rate: %s\r\n", optarg);
+            encodeTestContext->nBitrate = atoi(optarg);
+            break;
         default:
             help();
             return;
@@ -316,6 +322,7 @@ int main(int argc, char *argv)
     OMX_GetParameter(hComponentEncoder, OMX_IndexParamPortDefinition, &pOutputPortDefinition);
     pOutputPortDefinition.format.video.nFrameWidth = width;
     pOutputPortDefinition.format.video.nFrameHeight = height;
+    pOutputPortDefinition.format.video.nBitrate = encodeTestContext->nBitrate;
     //TODO: input format
     OMX_SetParameter(hComponentEncoder, OMX_IndexParamPortDefinition, &pOutputPortDefinition);