Explorar o código

soft_3rdpart:wave420l: Fix the problem that the framerate setting cannot be set.

Enable "SUPPORT_ENCODE_CUSTOM_HEADER" to build custom header,
and write frameRateInfo to SPS->VUI.

Signed-off-by: samin <samin.guo@starfivetech.com>
samin hai 1 ano
pai
achega
fe7737b263

+ 2 - 2
wave420l/code/config.h

@@ -65,9 +65,9 @@
 //------------------------------------------------------------------------------
 // WAVE420
 //------------------------------------------------------------------------------
-//#define SUPPORT_ENCODE_CUSTOM_HEADER    // to make VUI/HRD/SEI data
+#define SUPPORT_ENCODE_CUSTOM_HEADER    // to make VUI/HRD/SEI data
 #ifdef SUPPORT_ENCODE_CUSTOM_HEADER
-//#define TEST_ENCODE_CUSTOM_HEADER
+#define TEST_ENCODE_CUSTOM_HEADER
 #endif
 
 

+ 19 - 19
wave420l/code/sample/helper/main_helper.c

@@ -1309,7 +1309,7 @@ Int32 writeCustomHeader(int coreIdx, EncOpenParam *encOP, vpu_buffer_t *vbCustom
         vui.vui_parameters_presesent_flag = 1;
         vui.vui_timing_info_present_flag = 1;
         vui.vui_num_units_in_tick = 1000;
-        vui.vui_time_scale = 60*1000.0;			
+        vui.vui_time_scale = (encOP->frameRateInfo)*1000.0;
         vui.vui_hrd_parameters_present_flag = 1;	
         vui.def_disp_win_left_offset = 1;
         vui.def_disp_win_right_offset = 1;
@@ -1429,7 +1429,7 @@ Int32 writeCustomHeader(int coreIdx, EncOpenParam *encOP, vpu_buffer_t *vbCustom
             }
         }
 
-        EncodeVUI(&hrd, &vui, pRbspBuf, VUI_HRD_RBSP_BUF_SIZE, &rbspByteSize, &rbspBitSize, 60);
+        EncodeVUI(&hrd, &vui, pRbspBuf, VUI_HRD_RBSP_BUF_SIZE, &rbspByteSize, &rbspBitSize, encOP->frameRateInfo);
         encOP->vuiRbspDataSize = rbspBitSize;
         vdi_write_memory(coreIdx, encOP->vuiRbspDataAddr, pRbspBuf,  rbspByteSize, encOP->streamEndian);
         osal_free(pRbspBuf);
@@ -1932,28 +1932,28 @@ int mkdir_recursive(
 BOOL TestMachineSetup(
     TestMachine*    machine 
     )
-{
-    BOOL success = TRUE;
-
-    osal_init_keyboard();
-
-    InitializeDebugEnv(machine->testEnvOptions);
-
-    return success;
+{
+    BOOL success = TRUE;
+
+    osal_init_keyboard();
+
+    InitializeDebugEnv(machine->testEnvOptions);
+
+    return success;
 }
 
 void TestMachineCleanUp(
     TestMachine*    machine
     )
-{
-    Uint32      i;
-    Listener*   o;
-
-    for (i=0; i<machine->numObservers; i++) {
-        o = &machine->observers[i];
-        o->destruct(o);
-    }
-    ReleaseDebugEnv();
+{
+    Uint32      i;
+    Listener*   o;
+
+    for (i=0; i<machine->numObservers; i++) {
+        o = &machine->observers[i];
+        o->destruct(o);
+    }
+    ReleaseDebugEnv();
     osal_close_keyboard();
 }
 

+ 5 - 0
wave420l/code/sample/helper/vpuhelper.c

@@ -1057,6 +1057,11 @@ int setWaveEncOpenParam(EncOpenParam *pEncOP, TestEncConfig *pEncConfig, ENC_CFG
     param->timeScale            = pCfg->hevcCfg.timeScale;
     param->numTicksPocDiffOne   = pCfg->hevcCfg.numTicksPocDiffOne;
 
+    if(pCfg->hevcCfg.frameRate) {
+        param->numUnitsInTick	= 1000;
+        param->timeScale	= (pCfg->hevcCfg.frameRate)*1000;
+    }
+
     param->vuiParam.vuiParamFlags       = pCfg->hevcCfg.vuiParam.vuiParamFlags;
     param->vuiParam.vuiAspectRatioIdc   = pCfg->hevcCfg.vuiParam.vuiAspectRatioIdc;
     param->vuiParam.vuiSarSize          = pCfg->hevcCfg.vuiParam.vuiSarSize;

+ 2 - 2
wave420l/code/sample/main_w4_enc_test.c

@@ -413,7 +413,7 @@ int TestEncoder(TestEncConfig *param)
         }
     }
 #ifdef TEST_ENCODE_CUSTOM_HEADER
-    if (allocateSeiNalDataBuf(coreIdx, encConfig, &vbSeiNal[0], fbAllocInfo.num) == FALSE) {
+    if (allocateSeiNalDataBuf(coreIdx, &vbSeiNal[0], fbAllocInfo.num) == FALSE) {
         goto ERR_ENC_OPEN;
     }
 #endif
@@ -535,7 +535,7 @@ int TestEncoder(TestEncConfig *param)
 
         setCtuQpMap(coreIdx, &encConfig, encOP, vbCtuQp[srcFrameIdx].phys_addr, &ctuQpMapBuf[0], srcFrameWidth, srcFrameHeight, &encParam, MAX_CTU_NUM);
 #ifdef TEST_ENCODE_CUSTOM_HEADER
-        if (writeSeiNalData(coreIdx, handle, encOP.streamEndian, vbSeiNal[srcFrameIdx].phys_addr, &hrd) == FALSE) {
+        if (writeSeiNalData(handle, encOP.streamEndian, vbSeiNal[srcFrameIdx].phys_addr, &hrd) == FALSE) {
             goto ERR_ENC_OPEN;
         }
 #endif