leo0925

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925  发布于  2018-02-08 13:38:50
采纳率 0%
30个问答
3833

3519 ffmpeg解码后 通过hdmi输出显示

 
群里前辈, 请问,ffmpeg解码后,怎么把yuv 通过3519板子上的hdmi 输出呢?
我来回答
回答14个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-08 16:11:32
认可0
没有意义的做法,建议不要浪费时间, 虽然是可以做到的

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-02-08 16:53:28
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84367&ptid=38889]zhuangweiye 发表于 2018-2-8 16:11[/url]
没有意义的做法,建议不要浪费时间, 虽然是可以做到的[/quote]

老大 要评估 是使用软解 还是硬解...

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-08 17:09:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84370&ptid=38889]leo0925 发表于 2018-2-8 16:53[/url]
老大 要评估 是使用软解 还是硬解...[/quote]

不用评估,海思不是傻子, 做出来的芯片还留有这么多性能给用户跑软解

当然如果是1路CIF/D1这样的需求算我没说

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-02-08 17:11:33
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84370&ptid=38889]leo0925 发表于 2018-2-8 16:53[/url]
老大 要评估 是使用软解 还是硬解...[/quote]

@zhuangweiye,

帮忙指点下,我目前是参考了 SAMPLE_COMM_IVE_StartVo 来初始化VO, 然后通过HI_MPI_VO_SendFrame() 函数 往VO 发送数据 但是失败了

qn1515577064

0个粉丝

15

问答

0

专栏

0

资料

qn1515577064 2018-02-08 17:15:05
认可0
3536 不是更好。。。

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-02-08 17:40:28
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84373&ptid=38889]qn1515577064 发表于 2018-2-8 17:15[/url]
3536 不是更好。。。[/quote]

还是要先做个效果出来,我的vo 逻辑是:
DisplayBuf 是ffmepg 解析后存储yuv buffer;

VIDEO_FRAME_INFO_S frame;
                frame.stVFrame.u32Width = ctx->width;
                frame.stVFrame.u32Height = ctx->height;
                frame.stVFrame.u32Field = VIDEO_FIELD_FRAME;
                frame.stVFrame.enPixelFormat = PIXEL_FORMAT_YUV_PLANAR_420;
                frame.stVFrame.enCompressMode = COMPRESS_MODE_NONE;
                frame.stVFrame.u32Stride[0] = ctx->width;
                frame.stVFrame.u32Stride[1] = ctx->width;
                frame.stVFrame.u32Stride[2] = ctx->width;
                frame.stVFrame.pVirAddr[0] = DisplayBuf;
                frame.stVFrame.pVirAddr[1] = DisplayBuf+ctx->width*ctx->height;
                frame.stVFrame.pVirAddr[2] = DisplayBuf+ctx->width*ctx->height*4/5;
                HI_MPI_VO_SendFrame(0,0,&frame,2000);


报错:
<3>[   vou] [Func]:VouCheckFrame [Line]:3323 [Info]:<3>[   vou] Invalid VB, pool 0, addr 0x0!
<3>[   vou] [Func]:VouUsrSendFrameTimeOut [Line]:3458 [Info]:<3>[   vou] Channel(0,0) received bad video buf!

hysx

0个粉丝

0

问答

0

专栏

0

资料

hysx 2018-02-08 20:50:07
认可0
3559是在A17上用ffmpeg解码的,不能超过720p30 2Mbps

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-09 07:52:01
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84374&ptid=38889]leo0925 发表于 2018-2-8 17:40[/url]
还是要先做个效果出来,我的vo 逻辑是:
DisplayBuf 是ffmepg 解析后存储yuv buffer;

[/quote]


流程:

    while( 1 )
    {
                //1. 取VB
                do
                {
                        hBlock = HI_MPI_VB_GetBlock(VB_INVALID_POOLID, u32BlkSize,NULL);
                }
                while (VB_INVALID_HANDLE == hBlock);

                // 2. 得到VB物理地址和虚拟地址
               u32PhyAddr = HI_MPI_VB_Handle2PhysAddr(hBlock);
              pVirAddr = (HI_U8 *) HI_MPI_SYS_Mmap(u32PhyAddr, u32BlkSize);
              u32PoolId = HI_MPI_VB_Handle2PoolId(hBlock);
   
                // 3. 填写VIDEO_FRAME_INFO_S结构
               memset(&stFrmInfo.stVFrame, 0, sizeof(VIDEO_FRAME_S));
                ...
               
                // 4. 填图像数据
                memcpy(...);
                ...
        
                // 5. 发送去某个模块
               s32Ret = HI_MPI_XXX_SendFrame(..., &stFrmInfo, ...);

                // 6. 释放虚拟地址和 VB
               HI_MPI_SYS_Munmap(pVirAddr, u32BlkSize);
               HI_MPI_VB_ReleaseBlock(hBlock);
    }

   注意点:
   1.  VB_INVALID_POOLID 表示使用公共视频缓冲池(初始化要开,注意个数和大小要满足要求),当然也可以自己用HI_MPI_VB_CreatePool来创建专用的,那么VB_INVALID_POOLID改成前面函数的返回值
   2. 填写图像数据时要用虚拟地址, 并且注意格式
   3. 加上解码, 很可能无法实时
   

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-02-09 10:21:32
认可0
@zhuangweiye,

我们这个只是用作解码,不同时编码的。 硬件连接 是直接连接hdmi 输出给到显示屏的

另外 参考你的思路,代码执行后提示:
<3>[    vb] no buffer block!

cat /proc/umap/vo 提示:
[VOU] Version: [Hi3519V101_MPP_V1.0.2.0 B050 Release], Build Time[Dec  1 2016, 10:28:17]

-----DEV CONFIG----------------------------------------------------------------
   DevId   DevEn       Mux1       Mux2       Mux3       InfSync      BkClr  DevFrt
       0       Y     BT1120                          1080P@30         ff      30

-----MODULE PARAM--------------------------------------------------------------
detectCycle transparentTransmit lowPowerMode
           0                   N            Y

-----DEV VDAC STATUS-----------------------------------------------------------
   DevId    VDAC
       0       N

-----VIDEO LAYER STATUS--------------------------------------------------------
LayerId VideoEn ClustMode  PixFmt    ImgW    ImgH   DispW   DispH DispFrt DoubFrm Toleration Priority
       0       Y         N   SP420    1920    1080    1920    1080      30       N   10000000        0

-----VIDEO LAYER STATUS 2------------------------------------------------------
layerId VideoEn EnChNum  Matrix    Luma    Cont     Hue    Satu
       0       Y       1       0      50      50      50      50

-----VIDEO LAYER STATUS 3------------------------------------------------------
layerId   DevId  SetBeg  SetEnd PartitionMode bSDVgsBypass   u32BufLen
       0       0       N       N        Single            Y           3

-----CHN BASE INFO ------------------------------------------------------------
LayerId   ChnId ChnEn  Prio DeFlk  ChnX  ChnY  ChnW  ChnH DispX DispY bSnap Field
       0       0     Y     0     N     0     0  1920  1080    -1    -1     N  both

-----CHN PLAY INFO 1-----------------------------------------------------------
LayerId   ChnId Batch  Show Pause  Step Revrs Refsh Thrshd ChnFrt   ChnGap
       0       0     N     Y     N     N     N     N      3     30    33333

-----CHN PLAY INFO 2-----------------------------------------------------------
LayerId   ChnId          DisplayPts              PrePts             CurrPts            ScalePts              SetPts          RecvCurPts
       0       0                   0                   0                   0                   0                  -1                   0

-----BySingle CHN STATUS 1-----------------------------------------------------
LayerId   ChnId   Job     Task     LCnt     SCnt    ChRpt     DRpt CBusy DBusy ShouD Dsped b2Scl  ChnAddr DispAddr
       0       0     0        0        0       70      450        9     0     0     1     2     N 95ec2600 95ec2600

-----BySingle CHN STATUS 2-----------------------------------------------------
LayerId   ChnId bBorder BorderWidth   Color  ChnFreeNum  ChnBusyNum DispFreeNum DispBusyNum
       0       0       N           0       0           7           0          13           0

-----CHN OTHER INFO------------------------------------------------------------
LayerId   ChnId   bZoom   ZmTyp   ZoomX   ZoomY   ZoomW   ZoomH    SrcW    SrcH
       0       0       N       0       0       0       0       0       0       0


-----LAYER CSC PARAM-----------------------------------------------------------------
LAYERID  Matrix    Luma    Cont     Hue    Satu
       0       5      50      50      50      50

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-09 10:30:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84383&ptid=38889]leo0925 发表于 2018-2-9 10:21[/url]
@zhuangweiye,

我们这个只是用作解码,不同时编码的。 硬件连接 是直接连接hdmi 输出给到显示屏的
[/quote]

加点打印吧, 是不是死在下面的循环里面了
do
{
       hBlock = HI_MPI_VB_GetBlock(VB_INVALID_POOLID, u32BlkSize,NULL);
}
while (VB_INVALID_HANDLE == hBlock);

看上去,楼主并没有开VB池, 贴一下/proc/umap/vb

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-02-09 10:34:23
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84385&ptid=38889]zhuangweiye 发表于 2018-2-9 10:30[/url]
加点打印吧, 是不是死在下面的循环里面了
do
{
[/quote]

cat /proc/umap/vb

[VB] Version: [Hi3519V101_MPP_V1.0.2.0 B050 Release], Build Time[Dec  1 2016, 10:28:17]

-----VB PUB CONFIG--------------------------------------------------------------
MaxPoolCnt
       256
-----VB SUPPLEMENT ATTR---------------------------------------------------------
  Config    Size   VbCnt
       0       0      25
-----COMMON POOL CONFIG---------------------------------------------------------
PoolId         0         1         2         3         4         5         6         7         8         9        10        11        12        13        14        15
Size     4212480   4212480         0         0         0         0         0         0         0         0         0         0         0         0         0         0
Count         10        10         0         0         0         0         0         0         0         0         0         0         0         0         0         0

--------------------------------------------------------------------------------
PoolId    PhysAddr    VirtAddr  IsComm   Owner     BlkSz  BlkCnt    Free MinFree
     0  0x90244000  0xd3000000       1      -1   4212736      10  10(10)      10

--------------------------------------------------------------------------------
PoolId    PhysAddr    VirtAddr  IsComm   Owner     BlkSz  BlkCnt    Free MinFree
     1  0x92a71000  0xd6000000       1      -1   4212736      10  10(10)      10

--------------------------------------------------------------------------------
PoolId    PhysAddr    VirtAddr  IsComm   Owner     BlkSz  BlkCnt    Free MinFree
     2  0x952d4000  0x       0       0      -2   3133440       3   3( 3)       1

--------------------------------------------------------------------------------
PoolId    PhysAddr    VirtAddr  IsComm   Owner     BlkSz  BlkCnt    Free MinFree
     3  0x95bcb000  0xd2800000       0      -2   3110400       2   0( 0)       0
BLK   VIU   VOU   VGS  VENC  VDEC   VDA H264E JPEGE MPEGE H264D JPEGD MPEGD  VPSS   GRP   MPI  PCIV    AI  AENC    RC  VFMW  USER H265E FISHEYE
   0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
   1     0     2     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0
Sum      0     2     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-02-09 10:35:23
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84386&ptid=38889]leo0925 发表于 2018-2-9 10:34[/url]
cat /proc/umap/vb

[VB] Version: [Hi3519V101_MPP_V1.0.2.0 B050 Release], Build Time[Dec  1 201 ...[/quote]

没有阻塞在  do
                    {
                        VbBlk = HI_MPI_VB_GetBlock(hPool, ctx->width*ctx->height*3/2, HI_NULL);
                } while(VB_INVALID_HANDLE == VbBlk);

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-02-09 10:43:16
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84387&ptid=38889]leo0925 发表于 2018-2-9 10:35[/url]
没有阻塞在  do
                    {
                        VbBlk = HI_MPI_VB_GetBlock(hPool, ctx->width*ct ...[/quote]

就是说没有错误?

leo0925

0个粉丝

30

问答

0

专栏

0

资料

leo0925 2018-02-09 10:48:45
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=84388&ptid=38889]zhuangweiye 发表于 2018-2-9 10:43[/url]
就是说没有错误?[/quote]

是的呢
while(1) 循环里 都有递加打印. 没有阻塞 报错,但是也没输出
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区