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.

tvp5158四路视频解析

Other Parts Discussed in Thread: TVP5158

我在做一个tvp5158的项目,要求将四路视频接入并显示,但是我对其中四路视频的解析不是很明白,有这方面的例程吗?如果有请发一份wwzhutou123@126.com.万分感谢

  • 先ITU656采集到内存,然后DMA按行进行分析和转移.

    先看看手册中的行采集模式

  • 那采集进来后如何确定每行的首地址呢?如果这个确定错了的话,那接下来的解析也就无意义了

  • 手册描述很清楚~

  • 你可以参考tvp5158的datasheet中如下章节:

    3.8.3.4 Metadata Insertion for Line-Interleaved Mode

    简单的说,tvp5158在每一行的SAV之后插入了四字节的metadata,其中包含了该行的顶场底场与行号的信息,据此进行四路视频的解析。

  • 现在的情况是我进来的数据只查到第一路的前四个字节有metadata,而且好像还不全,其余几路均没有发现metadata,这是什么原因??

  • 你是怎么定位metadata的?

    你可以取几帧,把整个superframe存下来,然后查看它的二进制数据,在里面根据数据特征去找。

    我觉得,不会存在你说的那种情况,可能是你寻找metadata的方法不对。

  • dm8168 dvr里面的demo例子就有tvp8158+hdmi输出的实例,还可以做多路转码。

  • 我的memory中的视频数据如下

    地址:0x84000000        数据:0x60608080 0x80807070

    地址:0x840002E0 数据:0xCE801480 0xDF80E180

    地址:0x840005A0 数据:0xE07EE080 0xDF7EE080

    地址:0x840008A0 数据:0x60608080 0x80805E5E

    我的视频是CIF格式,每行数据长度为2E0,由上面四个地址的首八个数据可以看出,只要00处跟8A0处的起始数据时正确的,而且首字节为0x80,即全部都是第一路的数据。

    我怀疑是vpfe的问题,这是我vpfe的设置:

     width   = 364;

       height  = 1052; //263*4

       acHeight = 960;//240*4

       offsetH = (width * 2 +31) & 0xffffffe0;

       VPFE_CCDC_SYN_MODE  = 0x00032F84;   // interlaced, with VD pority as negative

       VPFE_CCDC_HD_VD_WID = 0;

       VPFE_CCDC_PIX_LINES = ((width-1) << 17) | (height >> 1);

       VPFE_CCDC_HORZ_INFO = width << 1;   // Horizontal lines

       VPFE_CCDC_HSIZE_OFF = ch_info->offsetH;   // Horizontal line offset

       VPFE_CCDC_VERT_START = 0;           // Vertical start line

    VPFE_CCDC_VDINT = 0;

       VPFE_CCDC_VERT_LINES = acHeight >> 1; // Vertical lines

       VPFE_CCDC_CULLING   = 0xFFFF00FF;   // Disable cullng

       /*

        *  Interleave the two fields

        */

       VPFE_CCDC_SDOFST    = 0x00000249;

       VPFE_CCDC_SDR_ADDR  = video_buffer;

       VPFE_CCDC_CLAMP     = 0;

       VPFE_CCDC_DCSUB     = 0;

       VPFE_CCDC_COLPTN    = 0xEE44EE44;

       VPFE_CCDC_BLKCMP    = 0;

       VPFE_CCDC_FPC_ADDR  = 0x86800000;

       VPFE_CCDC_FPC       = 0;

       VPFE_CCDC_VDINT     = 0;

       VPFE_CCDC_ALAW      = 0;

       VPFE_CCDC_REC656IF  = 0x00000003;

       /*

        *  Input format is Cb:Y:Cr:Y, w/ Y in odd-pixel position

        */

       VPFE_CCDC_CCDCFG    = 0x00000800;

       VPFE_CCDC_FMTCFG    = 0;

       VPFE_CCDC_FMT_HORZ  = width;

       VPFE_CCDC_FMT_VERT  = acHeight;

       VPFE_CCDC_FMT_ADDR0 = 0;

       VPFE_CCDC_FMT_ADDR1 = 0;

       VPFE_CCDC_FMT_ADDR2 = 0;

       VPFE_CCDC_FMT_ADDR3 = 0;

       VPFE_CCDC_FMT_ADDR4 = 0;

       VPFE_CCDC_FMT_ADDR5 = 0;

       VPFE_CCDC_FMT_ADDR6 = 0;

       VPFE_CCDC_FMT_ADDR7 = 0;

       VPFE_CCDC_PRGEVEN_0 = 0;

       VPFE_CCDC_PRGEVEN_1 = 0;

       VPFE_CCDC_PRGODD_0  = 0;

       VPFE_CCDC_PRGODD_1  = 0;

       VPFE_CCDC_VP_OUT    = ((acHeight-1) << 17) | (ch_info->width << 4);

       VPFE_CCDC_PCR       = 0x00000001;   // Enable CCDC

    这样设置有问题吗??

  • 4路CIF每行长度应该是848字节