Files

79 lines
2.3 KiB
C
Executable File

/*
* Copyright (c) XCAM. All rights reserved.
*/
#ifndef _XCAM_TRACK_SOURCE_H_
#define _XCAM_TRACK_SOURCE_H_
#include "xcam_type.h"
typedef enum {
XCAM_TRACK_SOURCE_TYPE_PRIV = 0,
XCAM_TRACK_SOURCE_TYPE_VIDEO,
XCAM_TRACK_SOURCE_TYPE_AUDIO,
XCAM_TRACK_SOURCE_TYPE_BUTT
} xcam_track_source_type;
typedef enum {
XCAM_TRACK_VIDEO_CODEC_H264 = 96,
XCAM_TRACK_VIDEO_CODEC_H265 = 98,
XCAM_TRACK_VIDEO_CODEC_MJPEG = 102,
XCAM_TRACK_VIDEO_CODEC_BUTT
} xcam_track_video_codec;
typedef enum {
XCAM_TRACK_AUDIO_CODEC_G711U = 0, /* G.711 U */
XCAM_TRACK_AUDIO_CODEC_G711A = 8, /* G.711 A */
XCAM_TRACK_AUDIO_CODEC_LPCM = 23, /* LPCM see cam_common.h file from sdk */
XCAM_TRACK_AUDIO_CODEC_G726 = 97, /* G.726 */
XCAM_TRACK_AUDIO_CODEC_AMR = 101, /* AMR encoder format */
XCAM_TRACK_AUDIO_CODEC_ADPCM = 104, /* ADPCM */
XCAM_TRACK_AUDIO_CODEC_AAC = 105,
XCAM_TRACK_AUDIO_CODEC_WAV = 108, /* WAV encoder */
XCAM_TRACK_AUDIO_CODEC_MP3 = 109,
XCAM_TRACK_AUDIO_CODEC_BUTT
} xcam_track_audio_codec;
typedef struct {
xcam_track_video_codec codec_type;
xcam_u32 width;
xcam_u32 height;
xcam_u32 bit_rate;
xcam_float frame_rate;
xcam_u32 gop;
xcam_float speed;
} xcam_track_video_source_info;
typedef struct {
xcam_track_audio_codec codec_type;
xcam_u32 chn_cnt;
xcam_u32 sample_rate;
xcam_u32 avg_bytes_per_sec;
xcam_u32 samples_per_frame;
xcam_u16 sample_bit_width;
} xcam_track_audio_source_info;
typedef struct {
xcam_u32 private_data;
xcam_float frame_rate;
xcam_u32 bytes_per_sec;
xcam_bool is_strict_sync;
} xcam_track_private_source_info;
typedef struct cam_track_source* xcam_track_source_handle;
typedef xcam_s32 (*func_xcam_track_source_request_key_frame)(xcam_handle venc_handle, xcam_void* param);
typedef struct cam_track_source {
intptr_t private_handle; // venc or aenc handle
func_xcam_track_source_request_key_frame func_request_key_frame;
xcam_track_source_type track_type;
union {
xcam_track_video_source_info video_info; /** video track info */
xcam_track_audio_source_info audio_info; /** audio track info */
xcam_track_private_source_info priv_info; /** private track info */
} track_source_attr;
} xcam_track_source;
#endif // _XCAM_TRACK_SOURCE_H_