feiyashan

feiyashan

0个粉丝

11

问答

0

专栏

0

资料

feiyashan  发布于  2017-01-06 10:09:15
采纳率 0%
11个问答
6209

总结vi vpss venc vdec vpss模块中需要配置的分辨率之间区别

 
本帖最后由 feiyashan 于 2017-1-6 10:11 编辑

VI、VPSS、VENC、VDEC、VO对这五个模块配置过程中都涉及到分辨率,现在总结如下:
1.VI模块:
涉及到的函数:HI_S32 HI_MPI_VI_SetChnAttr(VI_CHN ViChn, const VI_CHN_ATTR_S *pstAttr);
其中结构体pstAttr中包含分辨率信息如下
        (1)RECT_S          stCapRect;
        typedef struct hiRECT_S
        {
                HI_S32 s32X;
                HI_S32 s32Y;
                HI_U32 u32Width;
                HI_U32 u32Height;
        }RECT_S;
采集区域起始坐标用于配置需要采集的矩形图像相对于原始图像起始点的位置。起始点位置的横坐标以像素为单位,纵坐标以行为单位。
stCapRect 中 s32X 和 u32Width 必须 2 对齐; s32Y 和 u32Height 逐行采集时必须 2 对齐。       

        (2)SIZE_S   stDestSize;
        typedef struct hiSIZE_S
        {
                HI_U32 u32Width;
                HI_U32 u32Height;
        } SIZE_S;
目标图像大小 stDestSize:必须配置,且大小不应该超出外围 ADC 输出图像的大小范围,否则可能导致VI 硬件工作异常。stDestSize 宽可为主属性stCapRect 宽的 1 倍或 1/2,而高在只采集单场时必须为主属性 stCapRect 高的 1/2,采集两场时两者必须相同。最小目标图像大小:最小采集宽高为 32x32。
2.VPSS模块:
涉及到的函数:HI_S32 HI_MPI_VPSS_CreateGrp(VPSS_GRP VpssGrp, VPSS_GRP_ATTR_S *pstGrpAttr);
其中结构体pstGrpAttr中包含分辨率信息如下
    HI_U32  u32MaxW;                     
    HI_U32  u32MaxH;
3.VENC模块:
HI_S32 HI_MPI_VENC_CreateChn(VENC_CHN VeChn, const VENC_CHN_ATTR_S *pstAttr);
其中结构体pstAttr中包含分辨率信息如下(VENC_ATTR_H264_S stH264Attr)
HI_U32  u32MaxPicWidth;         
HI_U32  u32MaxPicHeight;
HI_U32  u32PicWidth;
HI_U32  u32PicHeight;
如果输入图像比编码通道尺寸大, VENC 将按照编码通道尺寸大小,调用 DSU 对
源图像进行缩小,然后对缩小之后的图像进行编码。
如果输入图像比编码通道尺寸小, VENC 丢弃源图像。 VENC 不支持放大输入图像编码。
如果输入图像与编码通道尺寸相当, VENC 直接接受源图像,进行编码。
4.VDEC模块
HI_S32 HI_MPI_VDEC_CreateChn(VDEC_CHN VdChn, const VDEC_CHN_ATTR_S *pstAttr);
其中结构体pstAttr中包含分辨率信息如下
HI_U32                 u32PicWidth;               
HI_U32                 u32PicHeight;
u32PicWidth 通道支持的解码图像最大宽(以像素为单位)
u32PicHeight 通道支持的解码图像最大高(以像素为单位)       
5.VO模块:
(1)HI_S32 HI_MPI_VO_SetVideoLayerAttr(VO_DEV VoDev, const VO_VIDEO_LAYER_ATTR_S *pstLayerAttr);
其中结构体pstLayerAttr中包含分辨率信息如下
    RECT_S stDispRect;                  
    SIZE_S stImageSize;   
stDispRect 视频显示区域矩形结构体。
stImageSize 图像分辨率结构体,即合成画面尺寸。       
(2)HI_S32 HI_MPI_VO_SetChnAttr(VO_DEV VoDev, VO_CHN VoChn, const VO_CHN_ATTR_S *pstChnAttr);
其中结构体pstChnAttr中包含分辨率信息如下
RECT_S  stRect;
通道矩形显示区域。以屏幕的左上角为原点。其取值必须是 2 对齐,且该矩形区域必须在屏幕范围之内。
                  
我来回答
回答1个
时间排序
认可量排序

feiyashan

0个粉丝

11

问答

0

专栏

0

资料

feiyashan 2017-01-06 10:17:48
认可0
本帖最后由 feiyashan 于 2017-1-6 10:20 编辑

VPSS、VENC、VDEC这三个模块的分辨率容易理解,分辨率都是最大处理能力。
我不理解的地方有三个地方:
1.VI中需要配置的RECT_S stCapRect和SIZE_S   stDestSize有啥区别,这两个值一般是相等的。
2.VO中配置videolayer时有两个参数:stDispRect 视频显示区域矩形结构体和stImageSize 图像分辨率结构体即合成画面尺寸,这两个有啥区别?
3,配置完vo videolayer后需配置vochn,其中vochn配置中的RECT_S  stRect和刚才videolayer RECT_S stDispRect有啥区别?看代码两者配置的值都一样,海思为什么多此一举还得在vochn配置它。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区