nt9856x/code/lib/include/librtsp.h
2023-03-28 15:07:53 +08:00

141 lines
4.7 KiB
C
Executable File

/*
* Copyright (C) 2009 Faraday Technology Corporation.
* Author: Carl Lin. <nhlin@faraday-tech.com>
*
* Version Date Description
* ----------------------------------------------
* 0.1.0 2009-12-30 First release.
*
*/
#ifndef __LIBRTSP_H
#define __LIBRTSP_H
#define GM_SS_VIDEO_MIN 1
#define GM_SS_TYPE_H264 1
#define GM_SS_TYPE_MP4 2
#define GM_SS_TYPE_MJPEG 3
#define GM_SS_TYPE_H265 4
#define GM_SS_VIDEO_MAX 4
#define GM_SS_AUDIO_MIN 10
#define GM_SS_TYPE_MP2 10
#define GM_SS_TYPE_AMR 11
#define GM_SS_TYPE_PCM 12
#define GM_SS_TYPE_G711A 13
#define GM_SS_TYPE_G711U 14
#define GM_SS_TYPE_G726 15
#define GM_SS_TYPE_AAC 16
#define GM_SS_AUDIO_MAX 16
#define GM_STREAM_CMD_OPEN 0 // Setup the steam resource.
#define GM_STREAM_CMD_PLAY 1 // Play.
#define GM_STREAM_CMD_PAUSE 2 // Stop feeding media frames.
#define GM_STREAM_CMD_TEARDOWN 3 // Stop playing and release the stream resource.
#define GM_STREAM_CMD_OPTION 4
#define GM_STREAM_CMD_DESCRIBE 5
#define GM_STREAM_CMD_SETUP 6
#define GM_SS_QUERY_SR 0
#define GM_SS_QUERY_LIVE 1
#define GM_SS_QUERY_FILE 2
#define GM_SS_QUERY_ALL 3
#define SERVER_READY 0
#define SERVER_BUSY 1
#define SERVER_NOT_RUN 2
#define STREAM_NOT_STREAMING 0
#define STREAM_STREAMING 1
#define ERR_GENERAL (-1)
#define ERR_PARAM (-2)
#define ERR_MUTEX (-3)
#define ERR_MEM (-4)
#define ERR_RESOURCE (-5)
#define ERR_NOTINIT (-6)
#define ERR_NOTRUN (-7)
#define ERR_BUSY (-8)
#define ERR_NOAVAIL (-9)
#define ERR_FULL (-10)
#define ERR_RUNNING (-11)
#define ERR_IPC (-12)
#define ERR_THREAD (-13)
#define ERR_OTHER (-14)
typedef struct st_gm_ss_entity {
unsigned int timestamp; // Global across all entities, in 90 KHz.
int size; // Actual size.
char *data; // Point to actual data buffer.
} gm_ss_entity;
typedef struct st_gm_clnt {
struct st_gm_clnt *next;
struct sockaddr_in addr;
} gm_ss_clnt_t;
typedef struct st_gm_sr {
struct st_gm_sr *next;
int index;
char *name;
gm_ss_clnt_t *client;
} gm_ss_sr_t;
/* Startup & Shutdown */
int stream_server_init(char *ipif, int port, int dscp, int mtu, int cons, int streams,
int vqno, int vqlen, int aqno, int aqlen,
int (*frm_cb)(int type, int qno, gm_ss_entity *entity),
int (*cmd_cb)(char *name, int sno, int cmd, void *p));
int stream_server_file_init(char *path);
int stream_server_start(void);
int stream_server_stop(void);
int stream_server_reset(void);
int stream_server_reset_force(void);
int stream_server_status(void);
int stream_server_log_connection(int mode); // Connectionl og file : /var/rtsp_status
// mode 0 : disable connection log
// mode -1 : update connection log when client connect/disconnect
// mode > 0 : update connection log every N seconds
int stream_server_signal_handle(int enable);
/* Queue Manipulation */
int stream_queue_alloc(int type);
int stream_queue_release(int qno);
/* Stream Registration & Deregistration */
int stream_reg(char *name, int vqno, char *vsdpstr, int aqno, char *asdpstr, int live,
unsigned int v_mc_ip, int v_mc_port, unsigned int a_mc_ip, int a_mc_port,
char *username, char *password);
int stream_rename(int sno, char *name);
int stream_updatesdp(int sno, char *vsdpstr, char *asdpstr);
int stream_authorization(int sno, char *username, char *password);
int stream_max_connection(int sno, int max_connection);
int stream_range_npt(int sno, unsigned int msec);
int stream_clock_rate(int sno, unsigned int video_hz, unsigned int audio_hz);
int stream_bandwidth_info(int sno, unsigned int kbps);
int stream_disconnect(int sno);
int stream_disconnect_force(int sno, struct sockaddr_in addr);
int stream_dereg(int sno, int free_queue);
int stream_reset(int free_queue);
int stream_status(int sno);
/* Media Manipulation */
int stream_media_enqueue(int type, int qno, gm_ss_entity *entity);
int stream_media_flush(int type, int qno);
/* Query */
int stream_query_clients(int type, int sno, gm_ss_sr_t **client_tree);
int stream_query_clients_free_tree(gm_ss_sr_t *client_tree);
int stream_query_clients_num(int sno);
char *stream_query_localaddr(void);
char *stream_query_version(void);
/* SDP Utility */
void stream_sdp_parameter_encoder(char *type, unsigned char *data, // type: "H264", "MPEG4", "MJPEG"
int len, char *sdp, int sdp_len_max); // "AAC"
void librtsp_setup_rtcp(int enable);
int librtsp_get_rtcp_status(void);
#endif