Tange Cloud for Device
 Rev.333
载入中...
搜索中...
未找到
TgCloudApi_mufb.h
浏览该文件的文档.
1/** @file
2 * @brief 多用户帧缓冲区导出接口
3 *
4 * SDK的云存储模块在内部维护了一个循环缓冲区,用于保存要上传的音视频数据。 \n
5 * 当缓冲区満时,最老的数据帧会被丢弃。
6 *
7 * 应用层可以复用这个缓冲机制,用于SD录像、网络传输等。
8 */
9#ifndef __TgCloudApi_mufb_h__
10#define __TgCloudApi_mufb_h__
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16//#include <sys/uio.h>
17#include "platforms.h"
18
19/** 帧头 */
20typedef
21struct MUFHEADER {
22 unsigned short type; ///< media type
23 unsigned short flags; ///< 1 - sync point, key frame
24 unsigned int ts; ///< timestamp, used by user
25 unsigned int len; ///< length of data(exclude header)
26} MUFHEADER;
27
28struct mufbuffer;
29
30/** mufb client */
31typedef
32struct MUFBCLT {
33 struct mufbuffer *fb;
34 int clt_id;
35} MUFBCLT;
36
37/** 初始化一个缓冲区用户
38 * @return 0: ok; -1: 云存储还没有初始化
39 */
41
42/** 删除缓冲区用户
43 * \param clt TcfbClientInit()初始化过的MUFBCLT指针
44 * @return: 0 - ok; -1 - 参数无效
45 */
47
48/* 调用顺序
49 TfcbFetchPreKeyFrame() -> TfcbReleaseFrame() -> { TfcbFetchFrame() -> TfcbReleaseFrame() }*
50*/
51
52/** \brief 取最近的关键帧(用于预录)
53 * 使用完后调用 TcfbReleaseFrame() 释放
54 * \return NULL 或录像开始的关键帧
55 */
57
58
59/** \brief 获取下一帧
60 * 使用完后调用mufb_release_frame()释放
61 * \param clt MUFBCLT 指针
62 * \param b_overwritten when returns, indicates whether some frames are discarded
63 */
64MUFHEADER *TcfbFetchFrame(MUFBCLT *clt, int *b_overwritten);
65
66/** \brief 获取帧数据指针
67 * \param clt
68 * \param pfh pointer to frame header
69 * \param vec space to receive the pointer(s) of the frame
70 * \return number of iovec filled in vec
71 */
72int TcfbGetFrameDataPtr(const MUFBCLT *clt, const MUFHEADER *pfh, struct iovec vec[2]);
73
74/** \brief 释放 Fetch 操作获取的数据帧, 并且内部指针前进到下一帧(下一次 TcfbFetchFrame() 返回新的帧)
75 * \param clt
76 * \param pfh fetch操作返回的帧指针
77 * \return always 0
78 */
79int TcfbReleaseFrame(MUFBCLT *clt, struct MUFHEADER *pfh);
80
81
82#ifdef __cplusplus
83}
84#endif
85#endif
86
unsigned int ts
timestamp, used by user
MUFHEADER * TcfbFetchPreKeyFrame(MUFBCLT *clt)
取最近的关键帧(用于预录) 使用完后调用 TcfbReleaseFrame() 释放
MUFHEADER * TcfbFetchFrame(MUFBCLT *clt, int *b_overwritten)
获取下一帧 使用完后调用mufb_release_frame()释放
unsigned int len
length of data(exclude header)
int TcfbClientInit(MUFBCLT *clt)
初始化一个缓冲区用户
int TcfbReleaseFrame(MUFBCLT *clt, struct MUFHEADER *pfh)
释放 Fetch 操作获取的数据帧, 并且内部指针前进到下一帧(下一次 TcfbFetchFrame() 返回新的帧)
int TcfbClientDestroy(MUFBCLT *clt)
删除缓冲区用户
unsigned short type
media type
int TcfbGetFrameDataPtr(const MUFBCLT *clt, const MUFHEADER *pfh, struct iovec vec[2])
获取帧数据指针
unsigned short flags
1 - sync point, key frame
mufb client