feiyashan

feiyashan

0个粉丝

11

问答

0

专栏

0

资料

feiyashan  发布于  2018-02-05 15:00:12
采纳率 0%
11个问答
7090

hi3531a支持h264的B帧解码吗

 
本帖最后由 feiyashan 于 2018-2-5 15:01 编辑

用海思3531a解码一个h264视频文件,发现卡顿,看/proc/vdec信息,
/proc/umap # cat vdec

[VDEC] Version: [Hi3531A_MPP_V1.0.4.0 B030 Release], Build Time[Jan 13 2017, 17:17:08]

-----MODULE PARAM--------------------------------------------------------------
  obey_minCR    MiniBufMode     VBSource
           0              0            0

-----CHN ATTR & PARAMS-------------------------------------------------------
  ID  TYPE   Prior    MaxW    MaxH   Width  Height   StrmInputMode  Compress   STATE
   0  H264       5    1920    1080    1280     720   FRAME/NOBLOCK         N   START
  ID  VfmwID  RefNum MvpEnable   DispNum     BufSize  MaxSlice  MaxSPS  MaxPPS  MaxVPS  DisplayMode
   0       0       2        No         2     6220800        16       2       2       0     PlayBack
  ID  ErrThr   StrmThr   DecMode   OutMode  SetUserPic    Rotate  PicPoolId  PmvPoolId  PriVbCnt
   0      30         0        IP       Dec           N         0         -1         -1        -1

-----CHN STATE-----------------------------------------------------------------
  ID  PrtclErr  StrmUnSP StrmError RefNumErr  PicSizeErr  fmterror  PicBufSizeErr     StrmNotRls    Notify
   0         0         0      3895        11           0         0              0              0      5942
  ID  fps  TimerCnt   BufFLen   DataLen   UsrFLen    UsrLen   ptsBufF   ptsBufU StreamEnd
   0    3      4024   7178607      4227      1344      2720        38         1         0

----- Detail Stream STATE -----------------------------------------------------------
  ID MpiSndNum           MpiSndLen   VdecNum   VdecLen  FmGetNum            FmGetLen  FmRlsNum            FmRlsLen  FmLstGet FmRlsFail
   0      1979            19330489      1979     29685      1980            19355947      1979            19280701     75246         0

----- Detail FrameStore STATE -----------------------------------------------------------
  ID  FmNewPic GetFromFm   Discard    UsrSnd    KerSnd    KerRls   MeetEnd   FrmInVdec           CurPicPts   RedDiff  MaxRedDiff   DecDiff  MaxDecDiff
   0        33        33         0         0        33        32      1978           1                   0       141       99676      3937       10838
  ID  FreeNode  VfmwNode   VgsNode VgsWorkingNode  BusyNode  UserNode    RefNum  IsAvalible   VbCnt  MaxVbCnt   GetPicVbFail   GetMvpVbFail
   0        38         1         0              0         0         1         0           1       3         5              0              0

----- Detail UserData STATE -----------------------------------------------------------
  ID    MpiGet      MpiGetLen    MpiRls      MpiRlsLen   Discard     DiscardLen GetFromFm   GetFromFmLen   UsrFLen    UsrLen
   0         0              0         0              0         0              0         4           2720      1344      2720


StrmError 数一直在增加。后来抓包分析,看到有B帧数据。

海思文档《Hi3531A H.264编解码处理器用户指南.pdf》中明确指出:
VEDU 解码具有以下特点:
 支持 ITU-T H.264 High Profile/Main Profile/Baseline [email]Profile@Leve4.2[/email] 解码
− 支持 1/2、1/4 像素精度运动补偿
− 支持支持帧间预测 16x16、16x8、8x16、8x8 四种子块类型
− 支持所有 Intra4x4、Intra8x8、Intra16x16 预测模式
− 支持 Trans4x4、Trans8x8
− 支持 CABAC、CAVLC 熵解码
− 支持 De-blocking 滤波
− 支持 IPCM 解码
− 不支持 ASO/FMO
− 不支持 B slice 解码
− 不支持场解码
− 不支持 MBAFF
− 不支持加权预测


有个问题,支持 ITU-T H.264 High Profile/Main Profile解码,Main Profile类型中有I帧、P帧、B帧,那这意思是支持解码B帧,但后面又说不支持 B slice 解码。
但在论坛中看见几位大神说是支持B帧解码的,现在整晕了。
请问一下,hi3531a到底支持不支持解码B帧,另外如果不支持的话,那海思出的哪款芯片可以支持对B帧的解码?
我来回答
回答7个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-05 15:14:12
认可0
楼主的MvpEnable 是0, 是不能解B frame的

31A支持解B frame

HI_MPI_VDEC_CreateChn(VDEC_CHN VdChn, const VDEC_CHN_ATTR_S*pstAttr)

pstAttr->stVdecVideoAttr.u32RefFrameNum 最少为 2
pstAttr->stVdecVideoAttr.bTemporalMvpEnable = HI_TRUE

另外, 如果是module VB,  还要开Pmv信息的VB 块

feiyashan

0个粉丝

11

问答

0

专栏

0

资料

feiyashan 2018-02-05 17:01:21
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84215&ptid=38855]zhuangweiye 发表于 2018-2-5 15:14[/url]
楼主的MvpEnable 是0, 是不能解B frame的

31A支持解B frame
[/quote]

谢谢大神回复,但文档中都提到不能解码B slice,这个作何解释啊?

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-05 17:19:43
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84235&ptid=38855]feiyashan 发表于 2018-2-5 17:01[/url]
谢谢大神回复,但文档中都提到不能解码B slice,这个作何解释啊?[/quote]

这个不太清楚,

按定义来说frame级别高于slice,即一个frame可以有多个slice组成,但是一般应用来说都是一个frame就是一个slice,是不是这里面的区别

feiyashan

0个粉丝

11

问答

0

专栏

0

资料

feiyashan 2018-02-09 15:55:32
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84238&ptid=38855]zhuangweiye 发表于 2018-2-5 17:19[/url]
这个不太清楚,

按定义来说frame级别高于slice,即一个frame可以有多个slice组成,但是一般应用来说都 ...[/quote]

解码B帧配置了3个地方:
1.
HI_VOID        SAMPLE_COMM_VDEC_ChnAttr(HI_S32 s32ChnNum,
    VDEC_CHN_ATTR_S *pstVdecChnAttr, PAYLOAD_TYPE_E enType, SIZE_S *pstSize)
{
    HI_S32 i;

    for(i=0; i     {
        pstVdecChnAttr.enType       = enType;
        pstVdecChnAttr.u32BufSize   = 3 * pstSize->u32Width * pstSize->u32Height;
        pstVdecChnAttr.u32Priority  = 5;
        pstVdecChnAttr.u32PicWidth  = pstSize->u32Width;
        pstVdecChnAttr.u32PicHeight = pstSize->u32Height;
        if (PT_H264 == enType || PT_MP4VIDEO == enType)
        {
            pstVdecChnAttr.stVdecVideoAttr.enMode=VIDEO_MODE_FRAME;
            pstVdecChnAttr.stVdecVideoAttr.u32RefFrameNum = 4;
            pstVdecChnAttr.stVdecVideoAttr.bTemporalMvpEnable = 1;

        }
        else if (PT_JPEG == enType || PT_MJPEG == enType)
        {
            pstVdecChnAttr.stVdecJpegAttr.enMode = VIDEO_MODE_FRAME;
            pstVdecChnAttr.stVdecJpegAttr.enJpegFormat = JPG_COLOR_FMT_YCBCR420;
        }
        else if(PT_H265 == enType)
        {
            pstVdecChnAttr.stVdecVideoAttr.enMode=VIDEO_MODE_STREAM;
            pstVdecChnAttr.stVdecVideoAttr.u32RefFrameNum = 4;
            pstVdecChnAttr.stVdecVideoAttr.bTemporalMvpEnable = 1;
        }   
    }
}

2.
HI_VOID        SAMPLE_COMM_VDEC_ModCommPoolConf(VB_CONF_S *pstModVbConf,
    PAYLOAD_TYPE_E enType, SIZE_S *pstSize, HI_S32 s32ChnNum)
{
    HI_S32 PicSize, PmvSize;
       
    memset(pstModVbConf, 0, sizeof(VB_CONF_S));
    pstModVbConf->u32MaxPoolCnt = 2;
       
    VB_PIC_BLK_SIZE(pstSize->u32Width, pstSize->u32Height, enType, PicSize);       
    pstModVbConf->astCommPool[0].u32BlkSize = PicSize;
    pstModVbConf->astCommPool[0].u32BlkCnt  = 7*s32ChnNum;

    /* NOTICE:                           
    1. if the VDEC channel is H264 channel and support to decode B frame, then you should allocate PmvBuffer
    2. if the VDEC channel is MPEG4 channel, then you should allocate PmvBuffer.
    */
    if(1)//if(PT_H265 == enType)//add by shanyf
    {
        VB_PMV_BLK_SIZE(pstSize->u32Width, pstSize->u32Height, enType, PmvSize);
        pstModVbConf->astCommPool[1].u32BlkSize = PmvSize;
        pstModVbConf->astCommPool[1].u32BlkCnt  = 4*s32ChnNum;
    }

}

3.
        VDEC_CHN_PARAM_S pstPara;
        HI_MPI_VDEC_GetChnParam(i, &pstPara);
        pstPara.s32DecMode = 0;
        pstPara.s32DecOrderOutput =  0;
        HI_MPI_VDEC_SetChnParam(i, &pstPara);

最后程序报错,
HI_MPI_VDEC_CreateChn chn 0 failed at SAMPLE_COMM_VDEC_Start: LINE: 978 with 0xa0058003!
[SAMPLE_VDEC_H264]-371: start VDEC fail for 0xa0058003!
HI_MPI_VDEC_StopRecvStream chn 0 failed at SAMPLE_COMM_VDEC_Stop: LINE: 1031 with 0xa0058005!


0xA0058003 :
HI_ERR_VDEC_ILLEGAL_PARAM 参数超出合法范围

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-09 17:07:03
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84394&ptid=38855]feiyashan 发表于 2018-2-9 15:55[/url]
解码B帧配置了3个地方:
1.
HI_VOID        SAMPLE_COMM_VDEC_ChnAttr(HI_S32 s32ChnNum,
[/quote]

非常抱歉, 我看的代吗是3536的, 刚试了一下3531A是有问题

解码部分3536是VDH, 3531A是VEDU, 看来只有VDH支持真正的B frame解码, VEDU对B frame只能丢而不解

非常抱歉, 误导了楼主

feiyashan

0个粉丝

11

问答

0

专栏

0

资料

feiyashan 2018-02-10 08:18:57
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84396&ptid=38855]zhuangweiye 发表于 2018-2-9 17:07[/url]
非常抱歉, 我看的代吗是3536的, 刚试了一下3531A是有问题

解码部分3536是VDH, 3531A是VEDU, 看来只 ...[/quote]

没事,还是谢谢大神!

宋健

0个粉丝

0

问答

0

专栏

0

资料

宋健 2020-12-18 14:56:47
认可0

1

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区