csjl

csjl

0个粉丝

6

问答

0

专栏

0

资料

csjl  发布于  2015-04-02 20:10:09
采纳率 0%
6个问答
6224

3531中的帧率设置问题

 
本帖最后由 csjl 于 2015-4-2 20:11 编辑


3531中编码通道参数如下,但是/proc/umap/venc中显示FrameRate=59,如何理解?
想要设置帧率为30,如何设置?


VIDEO_NORM_E enNorm = VIDEO_ENCODING_MODE_PAL;


stH264Attr.u32MaxPicWidth = stPicSize.u32Width;
stH264Attr.u32MaxPicHeight = stPicSize.u32Height;
stH264Attr.u32PicWidth = stPicSize.u32Width;/*the picture width*/
stH264Attr.u32PicHeight = stPicSize.u32Height;/*the picture height*/
stH264Attr.u32BufSize  = stPicSize.u32Width * stPicSize.u32Height * 2;/*stream buffer size*/
stH264Attr.u32Profile  = 0;/*0: baseline; 1:MP; 2:HP   ? */
stH264Attr.bByFrame = HI_TRUE;/*get stream mode is slice mode or frame mode?*/
stH264Attr.bField = HI_FALSE;  /* surpport frame code only for hi3516, bfield = HI_FALSE */
stH264Attr.bMainStream = HI_TRUE; /* surpport main stream only for hi3516, bMainStream = HI_TRUE */
stH264Attr.u32Priority = 0; /*channels precedence level. invalidate for hi3516*/
stH264Attr.bVIField = HI_FALSE;/*the sign of the VI picture is field or frame. Invalidate for hi3516*/
memcpy(&stVencChnAttr.stVeAttr.stAttrH264e, &stH264Attr, sizeof(VENC_ATTR_H264_S));



stVencChnAttr.stRcAttr.enRcMode = VENC_RC_MODE_H264VBR;
stH264Vbr.u32Gop = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;
stH264Vbr.u32StatTime = 1;
stH264Vbr.u32ViFrmRate = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;
stH264Vbr.fr32TargetFrmRate = (VIDEO_ENCODING_MODE_PAL== enNorm)?25:30;
stH264Vbr.u32MinQp = 10;
stH264Vbr.u32MaxQp = 40;
stH264Vbr.u32MaxBitRate = 1024*6;
memcpy(&stVencChnAttr.stRcAttr.stAttrH264Vbr, &stH264Vbr, sizeof(VENC_ATTR_H264_VBR_S));


s32Ret = HI_MPI_VENC_CreateChn(VencChn, &stVencChnAttr);
if (HI_SUCCESS != s32Ret)
{
    SAMPLE_PRT("HI_MPI_VENC_CreateChn [%d] faild with %#x!\n",\
                VencChn, s32Ret);
    return s32Ret;
}




[VENC] Version: [Hi3531_MPP_V2.0.A.0 Debug], Build Time[Jun  4 2013, 17:14:33]

-----VENC CHN ATTR-------------------------------------------------------------
     NO.   Width  Height  Type Field VIField StreamType  ByFrame   BlockFlag    Sequence  Registered   LeftBytes     LeftFrm   CurPacks
       0    1920    1080    96     0       0          1        1           1       52518           1           0           0         1

-----VENC STREAM STATE------------------------------------------------------------
     NO.     FreeCnt     BusyCnt     UserCnt     UserGet     UserRls    GetTimes    Interval   FrameRate
       0           2           0           0       57771       57771       52518       10000          59
^C
我来回答
回答1个
时间排序
认可量排序

csjl

0个粉丝

6

问答

0

专栏

0

资料

csjl 2015-04-03 18:40:04
认可0
问题找到了,ViFrmRate 应该设置为输入编码器的实际帧率。

文档中的原话
ViFrmRate 应该设置为输入编码器的实际帧率,RC 需要根据 ViFrmRate 统计实际
的帧率以及进行码率控制。假设 VI 的输出帧率是 30,如果 GROUP 不进行帧率控
制,ViFrmRate 应该设置为 30,如果 GROUP 进行帧率控制,GROUP 帧率控制中
的源帧率和 ViFrmRate 都应该设置为 30。如果 GROUP 和 RC 都进行帧率控制,
那么最终的帧率将以两者的较小值为准。比如 GROUP 设置为源帧率 30 帧,目标
帧率 6 帧,而 RC 设置为源帧率 30,目标帧率为 10 帧,那么最终的目标帧率为 6
帧。设置目标帧率 TargetFrmRate 时,目标帧率类型定义为分数类型 HI_FR32 类
型。HI_FR32 实际为 HI_U32 型,高 16 位用于表示分母,低 16 位表示分子。如
果用户设置目标帧率为整数,设置分母高 16 位为 0 即可表示整数。例如设置
ViFrmRate 等于 25,TargetFrmRate 等于 12,则表示将从 25 帧输入图像中取出 12
帧进行编码,其余 13 帧将丢掉。如果设置 ViFrmRate 等于 25,TargetFrmRate 等
于 15/2,则表示要求编码器 2 秒钟编码 15 帧。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区