Files

67 lines
1.9 KiB
C
Executable File

/*
* Copyright (c) XCAM. All rights reserved.
*/
#ifndef _LIVESTREAM_MBUFFER_H_
#define _LIVESTREAM_MBUFFER_H_
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif /* End of #ifdef __cplusplus */
#include "xcam_mbuf.h"
#include "pthread.h"
typedef enum {
MBUFFER_DATA_VIDEO = 1,
MBUFFER_DATA_AUDIO,
MBUFFER_DATA_DATA,
MBUFFER_DATA_BUTT
} livestream_mbuffer_data_type;
typedef struct {
pthread_mutex_t mutex; /* lock for mbuffer write pos */
} livestream_mbuffer_info;
enum {
BUF_PAYLOAD_G711U = 0, /**< G.711 Mu */
BUF_PAYLOAD_G711A = 8, /**< G.711 A */
BUF_PAYLOAD_G726 = 97, /**< G.726 */
BUF_PAYLOAD_H264 = 96, /**< H264 */
BUF_PAYLOAD_H265 = 98, /**< H265 */
BUF_PAYLOAD_ADPCM = 104, /**< ADPCM */
BUF_PAYLOAD_AAC = 105, /**< AAC encoder */
BUF_PAYLOAD_MP3 = 109, /**< MP3 encoder */
BUF_PAYLOAD_BUTT /**< invalid */
};
xcam_s32 livestream_mbuffer_write_frame(xcam_void* handle, const xcam_mbuf_pack_info* pack_info);
xcam_s32 livestream_mbuffer_create(const xcam_void* argv, xcam_void** buf_handle,
xcam_u32 buf_size, xcam_s32 max_payload);
xcam_s32 livestream_mbuffer_destroy(xcam_void* argv, xcam_void* handle);
xcam_s32 livestream_mbuffer_register(xcam_void* handle, xcam_u8 media_type);
xcam_s32 livestream_mbuffer_unregister(xcam_void* handle, xcam_u8 media_type);
xcam_s32 livestream_mbuffer_read(xcam_void* handle, xcam_void** paddr, xcam_u32* plen,
xcam_u64* ppts, livestream_mbuffer_data_type* type, xcam_bool* ptr_bkey_flag);
xcam_s32 livestream_mbuffer_set(xcam_void* handle, xcam_u32 step);
xcam_s32 livestream_mbuffer_pts(xcam_void* handle, xcam_u8 payload_type, xcam_u64* ppts);
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* End of #ifdef __cplusplus */
#endif /* _LIVESTREAM_MBUFFER_H_ */