July

July

0个粉丝

2

问答

0

专栏

0

资料

July  发布于  2017-07-13 16:46:16
采纳率 0%
2个问答
2997

hi3520D如何获取解码后的视频数据

 
本帖最后由 July 于 2017-7-13 16:48 编辑

sdk中的sample_vdec.c跑了下,可以读取h264视频文件,通过VGA可以显示出图像。
我要做的是对输入的每一帧视频都进行一定的处理,比如变成灰度图像,再将结果进行显示。目前先在sample_vdec.c 这个程序基础上进行修改。这其中要得到vdec解码后的视频帧,问题就是如何得到解码后的数据(YUV?),或者经过vdec解码后的数据保存在了哪里?
程序中只看到hi_mpi_vdec_sendstream()应该是向解码通道传输数据,但是处理后的结果呢?

/******************* send stream *****************/
        if (s32BlockMode == HI_IO_BLOCK)
        {
            s32Ret=HI_MPI_VDEC_SendStream(pstSendParam->VdChn, &stStream, HI_IO_BLOCK);
        }
        else if (s32BlockMode == HI_IO_NOBLOCK)
        {
            s32Ret=HI_MPI_VDEC_SendStream(pstSendParam->VdChn, &stStream, HI_IO_NOBLOCK);
        }
        else
        {
            s32Ret=HI_MPI_VDEC_SendStream_TimeOut(pstSendParam->VdChn, &stStream, 8000);
        }

        if (HI_SUCCESS == s32Ret)
        {
            s32UsedBytes = s32UsedBytes +s32ReadLen + start;
            printf("usedbytes:%d,readlen:%d\n",s32UsedBytes,s32ReadLen);
        }
        else
        {
            if (s32BlockMode != HI_IO_BLOCK)
            {
                SAMPLE_PRT("failret:%x\n",s32Ret);
            }
            usleep(s32IntervalTime);
        }
        usleep(20000);


        // /******************************************
        // Self---function 1: get decoded pic from vdec
        // ******************************************/
        //
        // if(pstSendParam->VdChn == 0 && s32BlockMode == HI_IO_BLOCK)
        // {
        //   printf("To get image from vdec.\n");
        //   s32Ret = HI_MPI_VDEC_GetImage(pstSendParam->VdChn, s32BlockMode, pstFrameInfo);
        //   if (s32Ret != HI_SUCCESS)
        //   {
        //     SAMPLE_PRT("HI_MPI_VDEC_GetImage failed with %#x!\n", s32Ret);
        //   }
        //   else
        //   {
        //     printf("get image from vdec success.\n");
        //     s32Ret = HI_MPI_VDEC_ReleaseImage(pstSendParam->VdChn, pstFrameInfo);
        //     if (s32Ret != HI_SUCCESS)
        //     {
        //       SAMPLE_PRT("HI_MPI_VDEC_ReleaseImage failed with %#x!\n", s32Ret);
        //     }
        //   }
        // }

上面的代码注释中是我自己加的,目的是通过getimage得到vdec之后的图像数据,但是报错0xA0058003,参数超出合法范围。
我来回答
回答2个
时间排序
认可量排序

hi3519v101

0个粉丝

5

问答

0

专栏

0

资料

hi3519v101 2017-07-14 10:58:07
认可0
HI_MPI_VDEC_GetImage(pstSendParam->VdChn, pstFrameInfo, s32BlockMode);
你2,3参数写反了。

July

0个粉丝

2

问答

0

专栏

0

资料

July 2017-07-16 10:25:43
认可0
将GETIMAGE的参数修改过来后可以获得图像数据了。但因为我是在sampole_vdec.c中修改的,我想实现的是获取图像与显示同时进行。当然程序中是将显示与解码通道绑定了,但执行GETIMAGE时程序会卡死。如果将其中关于vpss和vo的程序注释掉,可以跑通。那我要怎么修改时GETimage和显示都正确运行呢。PS.getimage后我就将其释放了。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区