This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

why does Dm368 decode only 22 fps of h.264 file ?

I have just upgraded  my board DM368 arm clock from 297 Mhz to 432 Mhz . Then I test the demo program :

 ./decode -y 3 -v davincieffect.264 ,

shows only 22 fps:

ARM Load: 9% Video fps: 21 fps Video bit rate: 793 kbps Sound bit rate: 0 kbps Time: 00:00:04 Demo: Decode Display: 720P 60Hz Video Codec: H.264 HP Video Resolution: 1280x720 Sound Codec: N/A Sampling Freq: N/A

ARM Load: 7% Video fps: 22 fps Video bit rate: 1146 kbps Sound bit rate: 0 kbps Time: 00:00:06 Demo: Decode Display: 720P 60Hz Video Codec: H.264 HP Video Resolution: 1280x720 Sound Codec: N/A Sampling Freq: N/A

ARM Load: 10% Video fps: 22 fps Video bit rate: 1427 kbps Sound bit rate: 0 kbps Time: 00:00:07 Demo: Decode Display: 720P 60Hz Video Codec: H.264 HP Video Resolution: 1280x720 Sound Codec: N/A Sampling Freq: N/A

Both dvsdk_2_10_01_18 and dvsdk_dm368_4_02_00_06 show same output , only at 22 fps. I have not modified the driver and other else, everything is keeped along with dvsdk's original .

But at 297 Mhz  , It could decode fully at 30 fps.

Could anybody help me ?

Thanks

 

 

  • As a clue , follow is an output of CE_DEBUG=3 ./decode -y3 -v davincieffect.264 on dvsdk2 . It seems there are a long time wait in Sem_pend or Sem_post.

    @478,209,913us: [+0 T:0x41ac1490 S:0x41ac0c94] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efc8]
    @478,210,178us: [+0 T:0x41ac1490 S:0x41ac0304] ti.sdo.ce.video2.VIDDEC2 - VIDDEC2_process> Enter (handle=0x1ee238, inBufs=0x41ac0464, outBufs=0x41ac0458, inArgs=0x41ac0cc8, outArgs=0x41ac0528)
    @478,210,392us: [+5 T:0x41ac1490 S:0x41ac02e4] CV - VISA_enter(visa=0x1ee238): algHandle = 0x1ee270
    @478,210,775us: [+0 T:0x41ac1490 S:0x41ac02d4] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Enter(alg=0x1ee270)
    @478,210,936us: [+0 T:0x41ac1490 S:0x41ac029c] ti.sdo.ce.osal.SemMP - Entered SemMP_pend> sem[0x1b62b0] timeout[0xffffffff]
    @478,211,087us: [+0 T:0x41ac1490 S:0x41ac029c] ti.sdo.ce.osal.SemMP - Leaving SemMP_pend> sem[0x1b62b0] status[0]
    @478,211,323us: [+0 T:0x41ac1490 S:0x41ac02e4] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Exit
    @478,212,236us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efe0] status[0]
    @478,212,408us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efb0] timeout[0xffffffff]
    @478,212,557us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efb0] status[0]
    @478,212,695us: [+0 T:0x44d83490 S:0x44d82d8c] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efb0]
    @478,212,843us: [+0 T:0x44d83490 S:0x44d82d9c] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efb0]
    @478,212,978us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efc8] timeout[0xffffffff]
    @478,213,104us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efc8] status[0]
    @478,213,575us: [+0 T:0x44d83490 S:0x44d82d8c] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efc8]
    @478,213,771us: [+0 T:0x44d83490 S:0x44d82d9c] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efc8]
    @478,857,596us: [+5 T:0x41ac1490 S:0x41ac02ec] CV - VISA_exit(visa=0x1ee238): algHandle = 0x1ee270
    @478,857,774us: [+0 T:0x41ac1490 S:0x41ac02dc] ti.sdo.ce.alg.Algorithm - Algorithm_deactivate> Enter(alg=0x1ee270)
    @478,858,015us: [+0 T:0x41ac1490 S:0x41ac02bc] ti.sdo.ce.osal.SemMP - Entered SemMP_post> sem[0x1b62b0]
    @478,858,198us: [+0 T:0x41ac1490 S:0x41ac02bc] ti.sdo.ce.osal.SemMP - Leaving SemMP_post> sem[0x1b62b0]
    @478,858,328us: [+0 T:0x41ac1490 S:0x41ac02ec] ti.sdo.ce.alg.Algorithm - Algorithm_deactivate> Exit
    @478,858,441us: [+0 T:0x41ac1490 S:0x41ac0304] ti.sdo.ce.video2.VIDDEC2 - VIDDEC2_process> Exit (handle=0x1ee238, retVal=0x0)
    @478,858,561us: [+2 T:0x41ac1490 S:0x41ac0354] ti.sdo.dmai - [Vdec2] VIDDEC2_process() ret 0 inId 1 inUse 0 consumed 5041
    @478,858,980us: [+0 T:0x41ac1490 S:0x41ac0c74] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efc8] timeout[0xffffffff]
    @478,859,205us: [+0 T:0x41ac1490 S:0x41ac0c74] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efc8] status[0]
    @478,859,574us: [+0 T:0x41ac1490 S:0x41ac0c4c] OM - Memory_getBufferPhysicalAddress> Enter(virtAddr=0x44395472, size=4)
    @478,859,771us: [+1 T:0x41ac1490 S:0x41ac0c4c] OM - Memory__getPhysicalAddress> Enter(virtAddr=0x44395472, size=4)
    @478,859,942us: [+1 T:0x41ac1490 S:0x41ac0c4c] OM - Memory__getPhysicalAddress> found in cb(Sc=0x4427a000, Ec=0x4450c7c0, Ss=0x44395472, Es=0x44395476, PSc=0x87a04000)
    @478,860,102us: [+1 T:0x41ac1490 S:0x41ac0c4c] OM - Memory__getPhysicalAddress> returning physAddr=0x87b1f472
    @478,860,245us: [+0 T:0x41ac1490 S:0x41ac0c4c] OM - Memory_getBufferPhysicalAddress> return (0x87b1f472)
    @478,860,411us: [+2 T:0x41ac1490 S:0x41ac0c84] ti.sdo.dmai - [Buffer] Set user pointer 0x44395472 (physical 0x87b1f472)
    @478,860,572us: [+0 T:0x41ac1490 S:0x41ac0c84] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efc8]
    @478,860,744us: [+0 T:0x41ac1490 S:0x41ac0c94] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efc8]
    @478,861,199us: [+0 T:0x41ac1490 S:0x41ac0304] ti.sdo.ce.video2.VIDDEC2 - VIDDEC2_process> Enter (handle=0x1ee238, inBufs=0x41ac0464, outBufs=0x41ac0458, inArgs=0x41ac0cc8, outArgs=0x41ac0528)
    @478,861,442us: [+5 T:0x41ac1490 S:0x41ac02e4] CV - VISA_enter(visa=0x1ee238): algHandle = 0x1ee270
    @478,861,615us: [+0 T:0x41ac1490 S:0x41ac02d4] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Enter(alg=0x1ee270)
    @478,861,775us: [+0 T:0x41ac1490 S:0x41ac029c] ti.sdo.ce.osal.SemMP - Entered SemMP_pend> sem[0x1b62b0] timeout[0xffffffff]
    @478,861,972us: [+0 T:0x41ac1490 S:0x41ac029c] ti.sdo.ce.osal.SemMP - Leaving SemMP_pend> sem[0x1b62b0] status[0]
    @478,862,485us: [+0 T:0x41ac1490 S:0x41ac02e4] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Exit
    @478,863,377us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efb0] timeout[0xffffffff]
    @478,863,550us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efb0] status[0]
    @478,863,719us: [+0 T:0x44d83490 S:0x44d82d8c] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efb0]
    @478,863,877us: [+0 T:0x44d83490 S:0x44d82d9c] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efb0]
    @478,864,013us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efc8] timeout[0xffffffff]
    @478,864,151us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efc8] status[0]
    @478,864,514us: [+0 T:0x44d83490 S:0x44d82d8c] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efc8]
    @478,864,700us: [+0 T:0x44d83490 S:0x44d82d9c] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efc8]
    @478,864,849us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efb0] timeout[0xffffffff]
    @478,864,985us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efb0] status[0]
    @478,865,160us: [+0 T:0x44d83490 S:0x44d82d8c] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efb0]
    @478,865,302us: [+0 T:0x44d83490 S:0x44d82d9c] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efb0]
    @478,865,436us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efc8] timeout[0xffffffff]
    @478,865,581us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efc8] status[0]
    @478,865,722us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efc8]
    @478,865,858us: [+0 T:0x44d83490 S:0x44d82d8c] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efc8]
    @478,865,984us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efe0] timeout[0xffffffff]
    @478,880,317us: [+5 T:0x41ac1490 S:0x41ac02ec] CV - VISA_exit(visa=0x1ee238): algHandle = 0x1ee270
    @478,880,496us: [+0 T:0x41ac1490 S:0x41ac02dc] ti.sdo.ce.alg.Algorithm - Algorithm_deactivate> Enter(alg=0x1ee270)
    @478,880,736us: [+0 T:0x41ac1490 S:0x41ac02bc] ti.sdo.ce.osal.SemMP - Entered SemMP_post> sem[0x1b62b0]
    @478,880,880us: [+0 T:0x41ac1490 S:0x41ac02bc] ti.sdo.ce.osal.SemMP - Leaving SemMP_post> sem[0x1b62b0]
    @478,880,999us: [+0 T:0x41ac1490 S:0x41ac02ec] ti.sdo.ce.alg.Algorithm - Algorithm_deactivate> Exit
    @478,881,109us: [+0 T:0x41ac1490 S:0x41ac0304] ti.sdo.ce.video2.VIDDEC2 - VIDDEC2_process> Exit (handle=0x1ee238, retVal=0x0)
    @478,881,226us: [+2 T:0x41ac1490 S:0x41ac0354] ti.sdo.dmai - [Vdec2] VIDDEC2_process() ret 0 inId 2 inUse 0 consumed 8314
    @478,881,658us: [+0 T:0x41ac1490 S:0x41ac0c74] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efc8] timeout[0xffffffff]
    @478,881,930us: [+0 T:0x41ac1490 S:0x41ac0c74] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efc8] status[0]
    @478,882,106us: [+0 T:0x41ac1490 S:0x41ac0c4c] OM - Memory_getBufferPhysicalAddress> Enter(virtAddr=0x443974ec, size=4)
    @478,882,276us: [+1 T:0x41ac1490 S:0x41ac0c4c] OM - Memory__getPhysicalAddress> Enter(virtAddr=0x443974ec, size=4)
    @478,882,435us: [+1 T:0x41ac1490 S:0x41ac0c4c] OM - Memory__getPhysicalAddress> found in cb(Sc=0x4427a000, Ec=0x4450c7c0, Ss=0x443974ec, Es=0x443974f0, PSc=0x87a04000)
    @478,882,592us: [+1 T:0x41ac1490 S:0x41ac0c4c] OM - Memory__getPhysicalAddress> returning physAddr=0x87b214ec
    @478,882,729us: [+0 T:0x41ac1490 S:0x41ac0c4c] OM - Memory_getBufferPhysicalAddress> return (0x87b214ec)
    @478,882,871us: [+2 T:0x41ac1490 S:0x41ac0c84] ti.sdo.dmai - [Buffer] Set user pointer 0x443974ec (physical 0x87b214ec)
    @478,883,031us: [+0 T:0x41ac1490 S:0x41ac0c84] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efe0]
    @478,883,282us: [+0 T:0x41ac1490 S:0x41ac0c94] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efe0]
    @478,883,450us: [+0 T:0x41ac1490 S:0x41ac0c84] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efc8]
    @478,883,826us: [+0 T:0x41ac1490 S:0x41ac0c94] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efc8]
    @478,884,122us: [+0 T:0x41ac1490 S:0x41ac0304] ti.sdo.ce.video2.VIDDEC2 - VIDDEC2_process> Enter (handle=0x1ee238, inBufs=0x41ac0464, outBufs=0x41ac0458, inArgs=0x41ac0cc8, outArgs=0x41ac0528)
    @478,884,337us: [+5 T:0x41ac1490 S:0x41ac02e4] CV - VISA_enter(visa=0x1ee238): algHandle = 0x1ee270
    @478,884,550us: [+0 T:0x41ac1490 S:0x41ac02d4] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Enter(alg=0x1ee270)
    @478,884,914us: [+0 T:0x41ac1490 S:0x41ac029c] ti.sdo.ce.osal.SemMP - Entered SemMP_pend> sem[0x1b62b0] timeout[0xffffffff]
    @478,885,087us: [+0 T:0x41ac1490 S:0x41ac029c] ti.sdo.ce.osal.SemMP - Leaving SemMP_pend> sem[0x1b62b0] status[0]
    @478,885,327us: [+0 T:0x41ac1490 S:0x41ac02e4] ti.sdo.ce.alg.Algorithm - Algorithm_activate> Exit
    @478,886,239us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efe0] status[0]
    @478,886,414us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efb0] timeout[0xffffffff]
    @478,886,557us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efb0] status[0]
    @478,886,689us: [+0 T:0x44d83490 S:0x44d82d8c] ti.sdo.ce.osal.Sem - Entered Sem_post> sem[0x22efb0]
    @478,886,838us: [+0 T:0x44d83490 S:0x44d82d9c] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x22efb0]
    @478,886,980us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x22efc8] timeout[0xffffffff]
    @478,887,110us: [+0 T:0x44d83490 S:0x44d82d7c] ti.sdo.ce.osal.Sem - Leaving Sem_pend> sem[0x22efc8] status[0]
    @479,531,590us: [+5 T:0x41ac1490 S:0x41ac02ec] CV - VISA_exit(visa=0x1ee238): algHandle = 0x1ee270

  • I have solved it by modifying  DVSDK_ROOT/dvsdk_dm368_4_02_00_06/psp/linux-2.6.32.17/drivers/media/video/davinci/davinci_platform.c .

    int davinci_enc_select_venc_clock(int clk){

      ......

      enable_hd_clk();
       __raw_writel(0x18, IO_ADDRESS(SYS_VPSS_CLKCTL));

    }