windyhll

windyhll

0个粉丝

2

问答

0

专栏

0

资料

windyhll  发布于  2018-12-28 18:49:26
采纳率 0%
2个问答
2659

3531A开发板,HI_MPI_VPSS_GetChnFrame 获取数据偶尔出现异常,数据不完整

 
本帖最后由 windyhll 于 2018-12-28 18:51 编辑

目前的情况输入设备时机顶盒,输入到3531A开发板采用bt1120接口,输入分辨率720P,vi绑定vpss,输出720*576, 可以正常工作,数据也大都正确,但是但机顶盒切换频道时,偶尔会出现异常,尤其但切换到的节目在播放黑屏较多的电影时,HI_MPI_VPSS_GetChnFrame获取的数据大小会不正常,保存下来,打开图片只有实际的一帧画面的一部分,有时候会持续好几秒才能恢复正常数据,同时另外一路vpssChN在做h264压缩,那一路没看到异常,
有人遇到过这种问题吗,
我来回答
回答5个
时间排序
认可量排序

windyhll

0个粉丝

2

问答

0

专栏

0

资料

windyhll 2019-01-02 11:13:04
认可0
没有人遇到过这种情况吗,

相关处理如下
  s32Ret = HI_MPI_VPSS_GetChnFrame(u32VpssGrp,VpssChn, &stFrame,2000);
  /*
         * 物理地址映射到虚拟地址
         *
         * */
               mmapAddr_y = HI_MPI_SYS_Mmap(stFrame.stVFrame.u32PhyAddr[0],s32FrameW*s32FrameH);
        mmapAddr_uv = HI_MPI_SYS_Mmap(stFrame.stVFrame.u32PhyAddr[1],(s32FrameW*s32FrameH)/2);
                /*
                 * 从虚拟地址拷贝相关内存数据到自定义缓存中
                 *
                 * */
                memcpy(stFrameBuff_y,mmapAddr_y,s32FrameW*s32FrameH);
                memcpy(stFrameBuff_uv,mmapAddr_uv,(s32FrameW*s32FrameH)/2);
                //printf("CheckYUV memcpy\n");
               
                /*
                 * 验证通过之后再释放掉相关映射关系
                 * */
                HI_MPI_SYS_Munmap(mmapAddr_y,s32FrameW*s32FrameH);
                s32Ret = HI_MPI_SYS_Munmap(mmapAddr_uv,(s32FrameW*s32FrameH)/2);
                if(HI_SUCCESS != s32Ret)
                {
                         printf("HI_MPI_SYS_Munmap frame err:0x%x\n", s32Ret);
                }
                 mmapAddr_y = NULL;
                mmapAddr_uv = NULL;

以上每隔100ms抓取一帧数据,
如果Y数据大小少于720*576,打印出来。
一下是打印信息:uv值一直是对的,Y值经常会少一部分。
求大神指点啊

  100::strlen(stFrameBuff_y)=49060,stFrameBuff_uv=207360
sleep  100::strlen(stFrameBuff_y)=357719,stFrameBuff_uv=207360
sleep  100::strlen(stFrameBuff_y)=357719,stFrameBuff_uv=207360
sleep  100::strlen(stFrameBuff_y)=357719,stFrameBuff_uv=207360
sleep  100::strlen(stFrameBuff_y)=357719,stFrameBuff_uv=207360
sleep  100::strlen(stFrameBuff_y)=75013,stFrameBuff_uv=207360
sleep  100::strlen(stFrameBuff_y)=357719,stFrameBuff_uv=207360
sleep  100::strlen(stFrameBuff_y)=357719,stFrameBuff_uv=207360
sleep  100::strlen(stFrameBuff_y)=361605,stFrameBuff_uv=207360

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2019-01-02 11:43:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=119658&ptid=56169]windyhll 发表于 2019-1-2 11:13[/url]
没有人遇到过这种情况吗,

相关处理如下
[/quote]

没有看到使用 stride

windyhll

0个粉丝

2

问答

0

专栏

0

资料

windyhll 2019-01-02 11:51:18
认可0
        printf(" sleep  100::strlen(stFrameBuff_y)=%d,stFrameBuff_uv=%d\n",strlen(stFrameBuff_y),strlen(stFrameBuff_uv));
                                printf("y_stride=%d,uv_stride=%d,\n",stFrame.stVFrame.u32Stride[0],stFrame.stVFrame.u32Stride[1]);
                                usleep(100*1000);
                                continue;
                        }

sleep  100::strlen(stFrameBuff_y)=299395,stFrameBuff_uv=207360
y_stride=720,uv_stride=720,
sleep  100::strlen(stFrameBuff_y)=299395,stFrameBuff_uv=207360
y_stride=720,uv_stride=720,
sleep  100::strlen(stFrameBuff_y)=299395,stFrameBuff_uv=207360
y_stride=720,uv_stride=720,
sleep  100::strlen(stFrameBuff_y)=299395,stFrameBuff_uv=207360
y_stride=720,uv_stride=720,
sleep  100::strlen(stFrameBuff_y)=75005,stFrameBuff_uv=207360
y_stride=720,uv_stride=720,
sleep  100::strlen(stFrameBuff_y)=75005,stFrameBuff_uv=207360
y_stride=720,uv_stride=720,
sleep  100::strlen(stFrameBuff_y)=49060,stFrameBuff_uv=207360
y_stride=720,uv_stride=720,
sleep  100::strlen(stFrameBuff_y)=49060,stFrameBuff_uv=207360
y_stride=720,uv_stride=720,


您好,我循环抓数据,大部分时间还是对的,偶尔会出错 ,如果是一张偏黑色的图片,出错率很高。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2019-01-02 13:36:45
认可0
本帖最后由 zhuangweiye 于 2019-1-2 13:40 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=119671&ptid=56169]windyhll 发表于 2019-1-2 11:51[/url]
printf(" sleep  100::strlen(stFrameBuff_y)=%d,stFrameBuff_uv=%d\n",strlen(stFrameBuff_y),strlen(stF ...[/quote]

图像数据能用strlen()吗?

如果没有特别约定, 8bit的图像数据是 0-255, '\0'(ASCII码,实际上是48)这个可以是实际图像的值, 问题来了,楼主的strlen把这个解释成字符串结束符了, 尤其是图像数值较小时(暗的时候)

windyhll

0个粉丝

2

问答

0

专栏

0

资料

windyhll 2019-01-02 14:12:44
认可0
感谢解释,可能是这个问题,万分感谢!
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区