crssignup

crssignup

0个粉丝

4

问答

0

专栏

0

资料

crssignup  发布于  2017-11-27 13:01:20
采纳率 0%
4个问答
4180

HI3516A平台VENC编码分辨率无法动态修改

 
文档中提到除通道宽以外,其他都是静态属性。但是我去设置宽高,会报错,请问这是什么问题呢

文档中的说明:

以下是我的代码实现:
[code]    HI_S32 ret;
    VENC_CHN_ATTR_S venc_chn_attr;
    PAYLOAD_TYPE_E payload_type;
   
    ret = HI_MPI_VENC_GetChnAttr(venc_chn, &venc_chn_attr);
    if (HI_SUCCESS != 0) {
        hi_log_err("failed with %#x!", ret);
        goto ERR_EXIT;
    }

    payload_type = venc_chn_attr.stVeAttr.enType;
    if (PT_H264 == payload_type) {
        hi_log_info("it is h264");
        venc_chn_attr.stVeAttr.stAttrH264e.u32PicWidth = width;
        venc_chn_attr.stVeAttr.stAttrH264e.u32PicHeight = height;
    }

    ret = HI_MPI_VENC_SetChnAttr(venc_chn, &venc_chn_attr);
    if (HI_SUCCESS != ret) {
        hi_log_err("failed with %#x!", ret);
        goto ERR_EXIT;
    }[/code]
我来回答
回答21个
时间排序
认可量排序

crssignup

0个粉丝

4

问答

0

专栏

0

资料

crssignup 2017-11-27 13:01:59
认可0
报的错误:

[code]func:HI_MPI_VENC_SetChnAttr, set chn attr err 0xa0088009 in line:931[/code]

mm

2个粉丝

0

问答

0

专栏

0

资料

mm 2023-09-12 13:32:16
认可0

我也遇到相同问题,请问楼主怎么解决的

邓晓

21个粉丝

1

问答

0

专栏

19

资料

邓晓 2023-09-12 13:58:06
认可0

设置编码器的宽和高属性,好像先要stopChn,再配置,最后startChn

mm
mm   回复   邓晓  2023-09-12 16:01:21
0

大哥,能说详细一点吗

mm
mm   回复   邓晓  2023-09-12 16:12:08
0

设置后函数返回HI_ERR_VENC_NOT_SUPPORT 不支持的参数或者功能,这个怎么办呢

邓晓
邓晓   回复   mm  2023-09-12 16:53:50
0

cat /dev/mpplog看看报错的参数是什么

mm
mm   回复   邓晓  2023-09-12 17:14:28
0

只有这个,看不太懂,麻烦大佬看看
I_DRV_GetFrmVbBlk [Line]:4106 [Info]:Pipe 0 chn 0 get buffer fail,size 3110400 !
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ vi] [Func]:VI_DRV_GetFrmVbBlk [Line]:4106 [Info]:Pipe 0 chn 0 get buffer fail,size 3110400 !
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ vi] [Func]:VI_DRV_GetFrmVbBlk [Line]:4106 [Info]:Pipe 0 chn 0 get buffer fail,size 3110400

邓晓
邓晓   回复   mm  2023-09-12 19:59:45
0

这个报错原因是你没有起线程取venc通道0的码流,导致没有空闲buff使用,vb估计也被venc输入缓存占了,导致vi申请不到空闲vb
你先参考sample_venc源码,起线程取流,HI_MPI_VENC_GetStream,释放流HI_MPI_VENC_ReleaseStream
HI_ERR_VENC_NOT_SUPPORT 这个报错没有发现有效log,先解决上面问题再测试下

mm
mm   回复   邓晓  2023-09-13 10:19:00
0

大佬,我关了venc ,设置新的分辨率再重新打开venc,释放流失败,获取venc流的线程就超时了,这是为啥呢
[Thead_GetVencStream]-217: HI_MPI_VENC_ReleaseStream failed! a0088003
[Thead_GetVencStream]-133: get venc stream time out, exit thread
日志:
[ venc] [Func]:VencSendPic [Line]:1513 [Info]:Venc:0 vgs do not deal with low delay frame!

邓晓
邓晓   回复   mm  2023-09-13 11:17:12
1

把开修改venc前的proc信息和修改venc后的proc信息存文件贴上
cat /proc/umap/*

mm
mm   回复   邓晓  2023-09-13 15:31:30
0

在下面回答里面 麻烦大佬了

mm

2个粉丝

0

问答

0

专栏

0

资料

mm 2023-09-13 15:30:01
认可0

在这里

易百纳技术社区 文件: 后.txt
下载

mm

2个粉丝

0

问答

0

专栏

0

资料

mm 2023-09-13 15:30:29
认可0

在这里

易百纳技术社区 文件: 前.txt
下载
邓晓
邓晓   回复   mm  2023-09-13 15:52:45
0

大概知道原因了,VPSS和VENC之间启用了低延时功能,他们之间不能支持VGS插入操作了
现在VPSS输出的是1080P分辨率,之前VENC是1080P,没问题
VENC修改成720P,但是VPSS输出还是1080P,所以VENC会调用VGS继续缩放,发现是低延时帧,报错
解决办法,可以去掉低延时,或者修改VENC分辨率时,也同步修改VPPS CHN的分辨率,两边也一样.

———————————————-VPSS CHN LOWDELAY ATTR————————————————————————-
GrpID ChnID Enable LineCnt OneBufEnable OneBufAddr
0 0 Y 540 N 0x0

mm
mm   回复   邓晓  2023-09-13 16:05:04
0

好的好的 感谢大佬

mm
mm   回复   邓晓  2023-09-13 18:55:19
0

大佬能再帮我看看吗,我把vpss venc关了再设置重新打开,能改变分辨率,但是有这个问题
[Thead_GetVencStream]-161: NOTE: Current frame is NULL!

邓晓
邓晓   回复   mm  2023-09-14 09:45:59
0

这个是你应用代码取流程线程出了问题,看下proc和logmpp有没有报错
应用出了问题,不要停止,继续取流就是

mm
mm   回复   邓晓  2023-09-14 10:12:12
0

logmpp还是打印的这个,proc麻烦大佬看看在下面文件txt,重新设置后延迟变得大了是怎么回事呢
[ vi] [Func]:VI_DRV_GetFrmVbBlk [Line]:4106 [Info]:Pipe 0 chn 0 get buffer fail,size 3110400 !
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.
[ venc] [Func]:VENC_InqTask [Line]:3370 [Info]:Venc 0 stream buffer is full.

邓晓
邓晓   回复   mm  2023-09-14 10:44:43
0

这个错误是没有取流导致venc 输入和输出队列都满了,还是和之前那个报错一致
方便把你的取流线程代码和分辨率修改代码贴上来吗

mm
mm   回复   邓晓  2023-09-14 13:10:02
0

大佬 可以了 我重新设置venc getfd就没有问题了,十分感谢

mm

2个粉丝

0

问答

0

专栏

0

资料

mm 2023-09-14 10:13:32
认可0

重新设置在这里

易百纳技术社区 文件: 重新设置.txt
下载
加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区