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.

TMS320DM368:top



我在做1080p、30的编码时发现实际的帧率只有27左右,如下:

但当我在capture时降到15fps时,在上图的capture->Frame-rate就可以到30。

另外,30fps时很快就死机了(串口没反应),使用top命令如下:

内存居然有526%,这应该很不正常吧!

想请教一下,这是怎么回事?

  • 你好,

    请问你的采集使用的是continue mode么?你的系统除了有一路1080p的编码,是否还有其他大量访问DDR的应用?看起来像是DDR资源不够导致的问题。

  • Chris Meng,

    请问,continue mode模式怎么判断呢?

  • 你好,

    请在DM36x VPFE guide里面寄存器部分搜索continuous mode关键字,并检查相关寄存器在你系统中的配置。

  • Chris Meng ,

    您好!

    请问,您所提到的continuous mode是指哪里的?

    因为,我在VPFE文档中的寄存器发现continuous mode在IPIPEIF、IPIPE的BOX和RSZ的RZA和RZB都有。

  • 你好,

    只要你使用到的模块,都请看一下使用的模式。一般来说,应该都是一致的。

    另外也请搜索一下one shot,就是continous mode的反面,IPIPE.SRC_EN也是相关寄存器。

  • Chris Meng ,

    您好!

    我发现我使用的模块中:

    对于continous mode,IPIPEIF的CFG1(04h)和RSZ中的RZA_MODE(5ch)均为1,即one shot模式;

    对于one shot,IPIPE中SRC_MODE(04h)的WRT和OST均为0,RSZ中SRC_MODE(04h)的WRT和OST为0、1;

    另外,IPIPE.SRC_EN=0,RSZ.SRC_EN=0。

    以下是我运行程序后的打印信息:

    root@192:/opt/ipnc# ./av_server.out DM368 1080P H264 4000000 VBR AUTO MUNUOFF RT
    SP &
    root@192:/opt/ipnc#
    DM365MM Init Successful
    AVSERVER UI: Initializing.

    CLK Hz,
    ARM Hz = 432000000
    DDR Hz = 340000000
    VPSS Hz = 340000000
    IMCOP Hz = 340000000

    [OSA_FILE ] Reading file [/mnt/nand/IMG_Paramset.bin] ... ERROR
    IMAGE TUNE: Paramset File is not available..... Setting DEFAULT parameter

    DM365MM Init SuccessfulSYSTEM.MSTPRI0 value changed to 00440011

    CONFIGURING AVSERVER FOR DM368 .....
    config->captureConfig[i].frameSkipMask:3fffffff
    config->encodeConfig[i].frameSkipMask:3fffffff
    qid = -1
    Creat queue id:32769
    queue id:32769
    AVSERVER UI: Starting Streaming Server...
    ApproDrvInit: 10
    qid = 0
    ApproDrvInit: 9
    qid = 0
    queue id:0
    ApproDrvInit: 8
    ApproDrvInit: 2
    qid = 0
    queue id:0
    ApproDrvInit: 6
    qid = 0
    queue id:0
    qid = 0
    queue id:0
    queue id:0
    AVSERVER UI: Starting Streaming Server...DONE
    CAPTURE: Recevied CMD = 0x0300
    CAPTURE: Create...
    gAVSERVER_config.sensorFps:30
    CAPTURE: Opening capture on imager MICRON_MT9P031_5MP.
    CAPTURE: Opening imager MICRON_MT9P031_5MP.
    width = 1920
    height = 1092
    SENSOR FPS VALUE = 30
    Sensor Mode Info,
    Width = 1920
    Height = 1092
    validStartX = 0
    validStartY = 2
    validWidth = 1920
    validHeight = 1088
    fps = 30
    Bin Enable = 0

    Sensor Frame Timing Info,
    fps = 30
    t_frame (ns) = 33333334.000000
    t_row (ns) = 29375.000000
    t_pclk (ns) = 10.416667
    W = 1920
    H = 1092
    SW = 1134
    SD = 0
    HB = 450
    VB = 42
    HBmin = 450
    VBmin = 9
    f_pclk = 96000000
    shutterOverhead (ns) = 4437.500000
    col_size = 1919
    row_size = 1091
    col_skip = 0
    row_skip = 0
    col_bin = 0
    row_bin = 0
    col_start = 336
    row_start = 468
    pll_M = 16
    pll_N = 1
    pll_DIV = 1

    CAPTURE: Opening ISIF.

    select rec656!
    CAPTURE: Opening H3A.

    H3A Settings,
    AEWB Win Start H = 32
    AEWB Win Start V = 34
    AEWB Win Num H = 12
    AEWB Win Num V = 16
    AEWB Win Width = 154
    AEWB Win Height = 64
    AEWB Win Inc H = 22
    AEWB Win Inc V = 22
    AEWB Win Pixels/Color = 21

    CAPTURE: Opening IPIPE.
    CAPTURE: Open DONE.
    capture_width:1920
    capture_width:1088
    CAPTURE: Create...DONE
    ENCODE: Recevied CMD = 0x0300
    ENCODE: Create...
    createPrm.width:1920
    createPrm.height:1072
    STREAM: Recevied CMD = 0x0300
    STREAM: Create...
    STREAM: Ext 0: 0x0
    STREAM: Ext 1: 0x0
    qid = 0
    queue id:0
    streamSet.ImageWidth:1920
    streamSet.ImageHeight:1072
    STREAM: Create...DONE
    FD: Received CMD = 0x0300
    FD: Create...

    FR : 0 users registered from exsiting face album
    2A: Recevied CMD = 0x0300
    2A: Create...
    IPNC_DM368_5.0.0 (root@ubuntu) (gcc version 4.3.3 (GCC) ) #1 PREEMPT Thu Nov 1
    IPNC AUTO_IRIS = 1
    2A: Create...DONE
    AUDIOPLAY: Recevied CMD = 0x0300
    AUDIOPLAY: Create...
    FD: Create...DONE
    qid = -1
    Creat queue id:65538
    queue id:65538
    qid = -1
    Creat queue id:98307
    queue id:98307
    Initializing...
    ...done initializing
    Play this stream using the URL:
    rtsp://192.168.1.189:8555/PSIA/Streaming/channels/0?videoCodecType=MJPEG

    (We use port 8302 for optional RTSP-over-HTTP tunneling.)
    Initializing...
    Initializing...
    Initializing...
    ...done initializing
    AUDIOPLAY: Create...DONE
    MOTION: Recevied CMD = 0x0300
    MOTION: Create...
    MOTION: Create...DONE
    SWOSD: Recevied CMD = 0x0300
    Initializing...

    Default Icon TI Logo

    Default Icon TI Logo
    2A: Start...
    2A: Start...DONE
    CAPTURE: Start...
    CAPTURE: Starting IPIPE.
    SWOSD: Create...DONE
    CAPTURE: Starting ISIF.
    CAPTURE: Starting imager.
    Play this stream using the URL:
    rtsp://192.168.1.189:8557/PSIA/Streaming/channels/2?videoCodecType=H.264

    (We use port 8304 for optional RTSP-over-HTTP tunneling.)
    ...done initializing
    Play this stream using the URL:
    rtsp://192.168.1.189:8556/PSIA/Streaming/channels/2?videoCodecType=H.264

    (We use port 8303 for optional RTSP-over-HTTP tunneling.)
    ...done initializing
    ...done initializing
    Play this stream using the URL:
    rtsp://192.168.1.189:8554/PSIA/Streaming/channels/1?videoCodecType=MPEG4

    (We use port 8301 for optional RTSP-over-HTTP tunneling.)
    Play this stream using the URL:
    rtsp://192.168.1.189:8553/PSIA/Streaming/channels/1?videoCodecType=MPEG4

    (We use port 8300 for optional RTSP-over-HTTP tunneling.)
    CAPTURE: Starting H3A.
    CAPTURE: Start DONE.
    CAPTURE: Start...DONE

    Module | Avg Time/Frame | Frame-rate | Total time | Total Frames |
    CAPTURE | 36.61 | 27.32 | 32985 | 901 |
    IPIPE | 31.48 | 31.77 | 28364 | 901 |
    ENCODE0 | 36.51 | 27.39 | 32786 | 898 |
    STREAM | 0.24 | 4215.96 | 213 | 898 |

  • 你好,

    请问你是如何读取运行时候的寄存器值的?

    RSZ的SRC_FMT0.SRC是否配置为1?如果是,根据你现在的寄存器你应该使用的是one shot mode,也就是ISIF会输出数据到DDR,然后DDR上数据在进入ISP处理,这样DDR的吞吐一写,一读,大了很多。

    你参考一下raw采集的配置,配置为continous mode。默认YUV 输入IPNC代码是使用的one shot mode。

  • Chris Meng,

    您好!

    我根据您的建议修改config->captureRawInMode  = AVSERVER_CAPTURE_RAW_IN_MODE_ISIF_IN;

    但是运行程序以后出现以下错误:

    CAPTURE: Starting H3A.
    CAPTURE: Start DONE.
    [ 20.492113] CMEMK Error: get_phys: Unable to find phys addr for 0x6dfb2e1e
    CAPTURE: Start.[ 20.499178] CMEMK Error: get_phys: get_user_pages() failed: -14
    ..DONE
    [ 20.506537] CMEMK Error: GETPHYS: Failed to convert virtual 0x6dfb2e1e to physical.
    CMEM Error: getP[ 20.515143] CMEMK Error: get_phys: Unable to find phys addr for 0x60819d86
    hys: Failed to g[ 20.523363] CMEMK Error: get_phys: get_user_pages() failed: -14
    et physical addr[ 20.530704] CMEMK Error: GETPHYS: Failed to convert virtual 0x60819d86 to physical.
    ess of 0x6dfb2e1e
    CMEM Error: getPhys: Failed to get physical address of 0x60819d86
    [ 20.571890] CMEMK Error: get_phys: Unable to find phys addr for 0x8b29d6c6
    [ 20.578795] CMEMK Error: get_phys: get_user_pages() failed: -14
    [ 20.584855] CMEMK Error: GETPHYS: Failed to convert virtual 0x8b29d6c6 to physical.
    CMEM Error: getPhys: Failed to get physical address of 0x8b29d6c6
    ERROR (alg_vidEnc.c|ALG_vidEncSetDynamicParams|406): XDM_SETPARAMS failed, status=-1

  • 你好,

    默认IPNC软件没有对YUV数据数据连续模式的支持,你这样的修改是配置为RAW输入了,是不对的。

    你需要添加代码来实现你需要的功能。

  • Chris Meng,

    您好!

    我昨天自己看了一下,发现内存没有溢出。

    我想请专家帮忙分析一下,现在的情况是这样的:

    对于1080p30的编码(仅仅是编码),实际只有27fps,使用IPNC5自带的RTSP,以及使用VLC进行解码显示(视频显示正常),会很快地死机(VLC没反应、串口没反应);甚至我将帧率降到15fps(capture降帧)时也是会死机,唯一的区别是可以运行几分钟;在把sersor换成1080p25时也是会死机,但实际帧率可以有25fps。

    前段时间使用自己写的RTSP(组播、UDP)和播放器时,却不会死机,只是出来的视频延迟高、有马赛克、卡顿。

  • 你好,

    会不会是系统稳定性的问题?

    请问你们的DDR布线是否有严格按照数据手册来做? DDR的时序参数是否有按照你们使用的DDR芯片调整过?

  • Chris Meng,

    您好!

    我记得368有个diagnostic_ipnc_dm368.bin,这个能不能用来测试DDR的稳定性呢?

  • 你好,

    抱歉,这个工具不能测试ddr的稳定性。

    TI对于DDR设计的要求是,DDR layout 100%按照数据手册的要求来做。

    你也可以把DDR频率降低测试一下看看。

  • Chris Meng,

    您好!

    请问,IPNC5有没有测试DDR稳定性的工具?

  • 抱歉,没有。