doubao_chat/apps/demo/demo_DevKitBoard/video_rt_usr.c

64 lines
1.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "server/rt_stream_pkg.h"
#include "stream_core.h"
#include "sock_api/sock_api.h"
#include "app_config.h"
/**************************************************************************************************************
1、修改自定义路径,app_config.h打开CONFIG_NET_UDP_ENABLE,改写NET_USR_PATH的自定义路径
2、参照user_video_rec.c两个打开和关闭函数
3、当打开video_rt_usr_init()函数返回非NULL,打开完成之后,有数据会调用到video_rt_usr_send()函数,
type的类型是JPEG_TYPE_VIDEO则为视频帧,PCM_TYPE_AUDIO则为音频。
**************************************************************************************************************/
static u32(*video_rt_cb)(void *, u8 *, u32);
static void *cb_priv;
void set_video_rt_cb(u32(*cb)(void *, u8 *, u32), void *priv)
{
video_rt_cb = cb;
cb_priv = priv;
}
static void *video_rt_usr_init(const char *path, const char *mode)
{
//连接服务器操作
puts("video_rt_usr_init\n");
return calloc(1, sizeof(struct rt_stream_info));
}
static int video_rt_usr_send(void *hdr, void *data, u32 len, u8 type)
{
struct rt_stream_info *r_info = (struct rt_stream_info *)hdr;
if (video_rt_cb) {
#ifdef RAW_STREAM_ENABLE
video_rt_cb(data, len, type);
#else
video_rt_cb(cb_priv, data, len);
#endif
} else {
if (type == H264_TYPE_VIDEO || type == JPEG_TYPE_VIDEO) {
putchar('V');
} else {
putchar('A');
}
}
return len;
}
static int video_rt_usr_uninit(void *hdr)
{
puts("video_rt_usr_uninit\n\n\n\n\n\n");
struct rt_stream_info *r_info = (struct rt_stream_info *)hdr;
free(r_info);
return 0;
}
REGISTER_NET_VIDEO_STREAM_SUDDEV(usr_video_stream_sub) = {
.name = "usr",
.open = video_rt_usr_init,
.write = video_rt_usr_send,
.close = video_rt_usr_uninit,
};