查看: 26786|回复: 119

[hi3518] 3518E Sample优化源码+2016.9.26更新rtsp图传、自动降噪接口、完美支持Hi3518EV200

    [复制链接]
发表于 2016-4-12 15:21:47 | 显示全部楼层 |阅读模式
本帖最后由 ljx6233535 于 2016-9-26 11:17 编辑

本人使用3518E平台开发IP Camera,感觉使用SDK自带sample太不方便了,因为经常要改视频格式,帧率,还有单路、多路切换,对接新Sensor等等,要在sample里面改好多地方,一次性还不一定能改全。
所以萌生了自己改写一个Sample的想法。
我们的IP camera使用3518E内部ISP,图像数据流向一般是VO->VPSS->VENC,所以本sample是按照这个流程来设计的。
使用方法:
1、参照自己的Sensor的接口方式,修改hp_vi.c 中 static HI_VOID viAttrInit(const IPC_VEDIO_S* pstIpcVedio,VI_ATTR_S **pstViAttr)函数中的配置参数(接口,时序,掩码等等),注意,不用修改图像格式和帧率,这个是上层自动传下来的。
2、参照hp_ipc.c中main函数,修改自己想要的大小和帧率,码流数量。
int main()
{
        FARMAT_S stFmt_a[3] =
        {
                {PIC_HD720,30},
                {PIC_VGA,30},
                {PIC_QVGA,30}
        };
        IPC_Init(3,stFmt_a);//3表示几路,stFmt_a定义每一路的大小和帧率,注意,主码流必须在最前面。
        getchar();
        getchar();
        IPC_exit();
        return 0;
}
3、把hp_ipc文件夹放到mpp/sample/下,make就可以了(注意:把sample/Makefile.param中SENSOR_LIBS修改成你Sensor的库)。
4、把hp_ipc挂载到板子上跑起来~~

目前只支持多路编码保存成文件,后续有时间把实时直播加上。


============2016.9.26更新====================
1、增加rtsp图传功能,传1080p30fps不卡,vlc播放延迟300ms内;
2、完美支持Hi3518EV200;
3、增加对接sensor自动降噪接口,可以参考src/sensor里面的文件增加自己sensor的降噪函数。
3、优化代码结构;

需要3516d/a +wdr功能的代码可以参考帖子http://www.ebaina.com/bbs/forum. ... &extra=page%3D1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
楼主热帖
发表于 2016-9-26 14:06:04 | 显示全部楼层
ljx6233535 发表于 2016-9-26 11:02
就这一个就可以了,都编译一起的

那就是说明对的啦,编译到一块,compile 出来 hp_ipc,   
     我在考虑如何修改我的函数的配置参数(接口,时序,掩码等等)?有什么可以参照的文档吗?
 楼主| 发表于 2016-10-8 10:29:42 | 显示全部楼层
2272943826 发表于 2016-10-5 11:12
1  MAX_RTSP_CLIENT =1   现在只是只能一个 client接受live stream,如果5个client同时接受 live stream ...

1.把MAX_RTSP_CLIENT=5 ,再查查使用MAX_RTSP_CLIENT地方的代码可能需要改改,每个RTSP_CLIENT管理一个live stream
2 我没有使用过认证。
发表于 2016-8-29 14:14:06 | 显示全部楼层
3518E也支持h265吗?我在hp_venc.c这个文件里看到有PT_H265的信息
 楼主| 发表于 2016-8-30 10:32:23 | 显示全部楼层
ctron 发表于 2016-8-29 14:14
3518E也支持h265吗?我在hp_venc.c这个文件里看到有PT_H265的信息

3518E应该不支持h265的。
发表于 2016-8-31 09:06:04 | 显示全部楼层
现在支持265的只有两块芯片:hi3516a+hi3519

点评

哦 差点忘了3516D了, 海思据目前了解,支持265的有:Hi3516A, Hi3516D, Hi3516C_V300和Hi3519  发表于 2016-11-23 13:34
还有3516C V300  发表于 2016-11-23 13:31
发表于 2016-9-6 09:51:55 | 显示全部楼层
学习中,谢谢分享!
发表于 2016-9-23 09:23:30 | 显示全部楼层
本帖最后由 2272943826 于 2016-12-2 10:54 编辑

我 make 之后只有 hp_ipc
我用的是 Hi3516a+IMX178

具体做法:
1 copy rtsp_server to mpp/sample
2  把hp_ipc文件夹放到mpp/sample/下,make就可以了(注意:把sample/Makefile.param中SENSOR_LIBS修改成你Sensor的库)。
3 make 的时候 只有一个 executable (见图片)


tt@tt:~/Hi3516A_SDK_V1.0.5.0/mpp/sample/hp-ipc_rtsp$ ls
hp_common.h  hp_sys.c   hp_venc.h  hp_vpss.c  rtsp_server.c
hp_ipc.c     hp_sys.h   hp_vi.c    hp_vpss.h  rtsp_server.h
hp_ipc.h     hp_venc.c  hp_vi.h    Makefile
tt@tt:~/Hi3516A_SDK_V1.0.5.0/mpp/sample/hp-ipc_rtsp$ make
ls: cannot access '/hiwork/osdrvhi3516a.C01': No such file or directory
arm-hisiv300-linux-gcc -Wall -g -I/home/tt/Hi3516A_SDK_V1.0.5.0/mpp/sample/hp-ipc_rtsp/../common -I/home/tt/Hi3516A_SDK_V1.0.5.0/mpp/include -I/home/tt/Hi3516A_SDK_V1.0.5.0/mpp/component/acodec -I/home/tt/Hi3516A_SDK_V1.0.5.0/mpp/extdrv/tw2865 -I/home/tt/Hi3516A_SDK_V1.0.5.0/mpp/extdrv/tlv320aic31 -I/home/tt/Hi3516A_SDK_V1.0.5.0/mpp/extdrv/ak7756en -Dhi3516a -DHICHIP=0x3516A100 -DSENSOR_TYPE=SONY_IMX178_LVDS_1080P_30FPS -DHI_RELEASE -DHI_XXXX -lpthread -lm -ldl -DISP_V2 -DHI_MIPI_ENABLE -DHI_ACODEC_TYPE_INNER -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -ffunction-sections -mno-unaligned-access -fno-aggressive-loop-optimizations -ldl   -c -o rtsp_server.o rtsp_server.c
                  
    ^
rtsp_server.c: In function ‘RtspServerListen’:
rtsp_server.c:627:52: warning: pointer targets in passing argument 3 of ‘accept’ differ in signedness [-Wpointer-sign]
     while ((s32CSocket = accept(s32Socket, (struct sockaddr*)&addrAccept, &nAddrLen)) >= 0)
                                                    ^
In file included from /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/usr/include/netinet/in.h:25:0,
                 from /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/usr/include/netdb.h:28,
                 from rtsp_server.c:12:
         
hp_venc.c: At top level:
hp_venc.c:456:15: warning: ‘s32SaveJpeg’ defined but not used [-Wunused-function]
static HI_S32 s32SaveJpeg(FILE* fpJpegFile, VENC_STREAM_S *pstStream)
                  ^
hp_vi.c: In function ‘viAttrInit’:
hp_vi.c:731:3: warning: initialization from incompatible pointer type [enabled by default]
   .pstViDevAttrEx = &VI_DEV_ATTR_EX,
   ^

hp_vpss.c:24:5: warning: braces around scalar initializer [enabled by default]
     VPSS_GRP_PARAM_S stVpssParam = {{0}};
     ^
/home/tt/Hi3516A_SDK_V1.0.5.0/mpp/lib/lib_hiaf.a /home/tt/Hi3516A_SDK_V1.0.5.0/mpp/lib/lib_hidefog.a
tt@tt:~/Hi3516A_SDK_V1.0.5.0/mpp/sample/hp-ipc_rtsp$

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2016-9-23 15:16:31 | 显示全部楼层
你的imx178有wdr模式么?没有的话需要把IPC_init()函数中WDR_MODE_2To1_LINE改成WDR_MODE_NONE
还有,你的sensor接口是LVDS 4 lane模式么?10BIT or 12BIT
这些确认清楚,然后去Hp_VI.c里面修改接口参数
 楼主| 发表于 2016-9-23 15:17:18 | 显示全部楼层
2272943826 发表于 2016-9-23 09:23
我 make 之后只有 hp_ipc
我用的是 Hi3516a+IMX178


你的imx178有wdr模式么?没有的话需要把IPC_init()函数中WDR_MODE_2To1_LINE改成WDR_MODE_NONE
还有,你的sensor接口是LVDS 4 lane模式么?10BIT or 12BIT
这些确认清楚,然后去Hp_VI.c里面修改接口参数
发表于 2016-9-26 08:53:44 | 显示全部楼层
ljx6233535 发表于 2016-9-23 15:16
你的imx178有wdr模式么?没有的话需要把IPC_init()函数中WDR_MODE_2To1_LINE改成WDR_MODE_NONE
还有,你的 ...

我的是 Hi3516a+IMX178 development board,你说的sensor接口 在哪里检查?或者哪里查询?
 楼主| 发表于 2016-9-26 09:11:26 | 显示全部楼层
2272943826 发表于 2016-9-26 08:53
我的是 Hi3516a+IMX178 development board,你说的sensor接口 在哪里检查?或者哪里查询?

就是你的IMX178是用的并口,还是lvds 还是MIPI传输数据,还有RAW数据多少bit的,在hp_vi.c里面要配置的。不然你是get不到码流的。
发表于 2016-9-26 09:21:25 | 显示全部楼层
ljx6233535 发表于 2016-9-26 09:11
就是你的IMX178是用的并口,还是lvds 还是MIPI传输数据,还有RAW数据多少bit的,在hp_vi.c里面要配置的。 ...

我的是标准配备的,你说的参数我还不是很清楚概念,我去看看 Hi3516A/Hi3516D Professional HD IP Camera SoC Data Sheet manual
发表于 2016-9-26 09:45:07 | 显示全部楼层
ljx6233535 发表于 2016-9-26 09:11
就是你的IMX178是用的并口,还是lvds 还是MIPI传输数据,还有RAW数据多少bit的,在hp_vi.c里面要配置的。 ...

请问一下 compile 成功以后, 但是只有一个 hp-ipc exectuable file ,其他的 vi vout 暂时还没有其它的exectuable
 楼主| 发表于 2016-9-26 11:02:34 | 显示全部楼层
2272943826 发表于 2016-9-26 09:45
请问一下 compile 成功以后, 但是只有一个 hp-ipc exectuable file ,其他的 vi vout 暂时还没有其它的e ...

就这一个就可以了,都编译一起的
发表于 2016-9-26 14:12:12 | 显示全部楼层
  1. 顶起来,好东西!
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2008-2017 当前位置 易百纳技术社区论坛 返回 易百纳技术社区 ( 苏ICP备14036084 )   Powered by Discuz! X3.1
快速回复 返回顶部 返回列表