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.

关于H3A的疑问

由vpss系统架构可以看到,h3a的数据来源只有ccdc,也即on the fly 模式,但是如果ccdc的数据走h3a 怎么还能到vpbe呢?

  • 你好,

    你问的是DM6437的问题么?请提供具体芯片,不同的DM产品前端还是有差异的。

    H3A引擎会从CCDC采集来的数据里面统计数据并输出到DDR。这个数据和CCDC数据写到DDR或者是CCDC数据到previewer是不同数据的通路。

    请问你是否获得了的VPFE NDA相关的文档?

  • 你好,

    已经获得了相关文档。

    芯片是dm6437,我大概知道了h3a的原理,H3a是有缓冲区的。但是我遇到了一个问题,配置完成之后,数据输出缓冲区似乎值一直都没有变化。我想的是应该会统计每一帧的数据信息,然后输出,但为何只统计了一次呢,h3a配置如下:

    /* open a logical channel */
    aewHandle = GIO_create(DRIVERFILE, IOM_INOUT, &gioStatus, &type, &gioAttrs);
    if ((NULL == aewHandle) || (IOM_COMPLETED != gioStatus))
    {
    PREV_APP_PRINT("\nAEW device open failed\n");
    }
    else
    {

    resultTestAEW = GIO_control(aewHandle, PSP_H3A_IOCTL_SET_PARAM,
    &params);
    if (resultTestAEW < 0)
    {
    PREV_APP_PRINT("\nAEW IOCTL set params failed\n");
    }
    else
    {

    enbuffer.size = H3A_AEW_BUFFER_SIZE;
    enbuffer.ramIpAddr = (Ptr)(arrayh3AAEW);
    bufferSize = sizeof(PSP_H3ABuffer);
    if ( NULL != enbuffer.ramIpAddr )
    {
    resultTestAEW = GIO_submit(aewHandle, PSP_VPSS_QUEUE, &enbuffer,&bufferSize, NULL);
    if (resultTestAEW < 0)
    {
    PREV_APP_PRINT("\nAEW enqueue failed\n");
    }
    else
    {

    resultTestAEW = GIO_submit(aewHandle, PSP_VPSS_DEQUEUE,&debuffer, &bufferSize, NULL);
    if ( resultTestAEW < 0 )
    {
    PREV_APP_PRINT("\nAEW dequeue failed\n");
    }

    PREV_APP_PRINT("\nAEW successful\n");
    PAL_osCacheInvalidate((PAL_osCacheMemAddrSpace)NULL,(Uint32)debuffer.ramIpAddr, debuffer.size);

    }
    }
    }
    }

    谢谢

  • 你好,

    h3a是有两个缓冲区 enbuffer,和debuffer么?负责读取ccdc数据和输出statics,是这样吗?

  • 你好,

    不好意思,DM6437的驱动我不是很熟悉。

    但使用ping-pong buffer来切换获取H3At统计数据是可能的。如果你的数据通路是CCDC-》preview-》resizer,这样CCDC是不需要输出RAW数据到DDR的。CCDC输出的RAW和H3A输出的统计数据是两个不同的东西啊,不要把他们混淆在一起。

  • 你好,

    数据通路是ccdc-》preview-》vpbe,然后再加上h3a。我的意思是h3a在进行数据统计的时候是否需要先把ccdc数据放入缓存,再进行处理,之后将统计信息放入另外一块缓存区?谢谢

  • 你好,

    H3A统计数据获得是和H3A相关模块是否使能有关(当然CCDC的输入必须是RAW)。和CCDC是否把RAW存储到DDR无关。

  • 你好,

    我过多的纠结h3a的缓冲区工作原理了,官方提供的例程在h3a使能之后有

    GIO_submit(aewHandle, PSP_VPSS_QUEUE, &enbuffer,&bufferSize, NULL);

    GIO_submit(aewHandle, PSP_VPSS_DEQUEUE,&debuffer, &bufferSize, NULL);

    并有两个h3a缓冲区enbuffer和debuffer,让我不解,谢谢指点

  • 两个缓冲区存放数据的地址是相同的

     

    我很想知道h3a缓冲区管理的原理是什么,或者有其他资料不,谢谢