mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-07-23 04:31:50 +00:00
rework media code
This commit is contained in:
@@ -178,6 +178,7 @@ struct switch_core_session {
|
||||
switch_size_t recur_buffer_len;
|
||||
|
||||
switch_media_handle_t *media_handle;
|
||||
uint32_t decoder_errors;
|
||||
};
|
||||
|
||||
struct switch_media_bug {
|
||||
|
||||
@@ -68,7 +68,6 @@ typedef enum {
|
||||
SCMF_RUNNING,
|
||||
SCMF_DISABLE_TRANSCODING,
|
||||
SCMF_AUTOFIX_TIMING,
|
||||
SCMF_AUTOFIX_PT,
|
||||
SCMF_CODEC_GREEDY,
|
||||
SCMF_CODEC_SCROOGE,
|
||||
SCMF_DISABLE_HOLD,
|
||||
@@ -81,6 +80,8 @@ typedef enum {
|
||||
SCMF_AUTOFLUSH,
|
||||
SCMF_REWRITE_TIMESTAMPS,
|
||||
SCMF_RTP_AUTOFLUSH_DURING_BRIDGE,
|
||||
SCMF_MULTI_ANSWER_AUDIO,
|
||||
SCMF_MULTI_ANSWER_VIDEO,
|
||||
SCMF_MAX
|
||||
} switch_core_media_flag_t;
|
||||
|
||||
@@ -156,6 +157,53 @@ typedef struct switch_core_media_params_s {
|
||||
|
||||
} switch_core_media_params_t;
|
||||
|
||||
typedef struct xpayload_map_s {
|
||||
uint32_t pt;
|
||||
uint32_t send_pt;
|
||||
uint32_t rate;
|
||||
uint32_t ptime;
|
||||
switch_media_type_t type;
|
||||
uint8_t negotiated;
|
||||
char *name;
|
||||
switch_sdp_type_t sdp_type;
|
||||
unsigned long hash;
|
||||
struct xpayload_map_s *next;
|
||||
} xpayload_map_t;
|
||||
|
||||
typedef struct payload_map_s {
|
||||
switch_media_type_t type;
|
||||
switch_sdp_type_t sdp_type;
|
||||
uint32_t ptime;
|
||||
uint32_t rate;
|
||||
uint8_t allocated;
|
||||
uint8_t negotiated;
|
||||
unsigned long hash;
|
||||
|
||||
char *rm_encoding;
|
||||
char *iananame;
|
||||
switch_payload_t pt;
|
||||
unsigned long rm_rate;
|
||||
unsigned long adv_rm_rate;
|
||||
uint32_t codec_ms;
|
||||
uint32_t bitrate;
|
||||
|
||||
char *rm_fmtp;
|
||||
|
||||
switch_payload_t agreed_pt;
|
||||
switch_payload_t recv_pt;
|
||||
|
||||
char *fmtp_out;
|
||||
|
||||
char *remote_sdp_ip;
|
||||
switch_port_t remote_sdp_port;
|
||||
|
||||
int channels;
|
||||
int adv_channels;
|
||||
|
||||
struct payload_map_s *next;
|
||||
|
||||
} payload_map_t;
|
||||
|
||||
static inline const char *switch_media_type2str(switch_media_type_t type)
|
||||
{
|
||||
switch(type) {
|
||||
@@ -216,7 +264,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi
|
||||
SWITCH_DECLARE(switch_status_t) switch_core_media_ext_address_lookup(switch_core_session_t *session, char **ip, switch_port_t *port, const char *sourceip);
|
||||
SWITCH_DECLARE(switch_status_t) switch_core_media_process_t38_passthru(switch_core_session_t *session,
|
||||
switch_core_session_t *other_session, switch_t38_options_t *t38_options);
|
||||
SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *session, const char *ip, switch_port_t port, const char *sr, int force);
|
||||
SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *session, switch_sdp_type_t sdp_type,
|
||||
const char *ip, switch_port_t port, const char *sr, int force);
|
||||
SWITCH_DECLARE(void)switch_core_media_set_local_sdp(switch_core_session_t *session, const char *sdp_str, switch_bool_t dup);
|
||||
SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session);
|
||||
SWITCH_DECLARE(void) switch_core_media_set_udptl_image_sdp(switch_core_session_t *session, switch_t38_options_t *t38_options, int insist);
|
||||
@@ -232,7 +281,6 @@ SWITCH_DECLARE(void) switch_core_media_kill_socket(switch_core_session_t *sessio
|
||||
SWITCH_DECLARE(switch_status_t) switch_core_media_queue_rfc2833(switch_core_session_t *session, switch_media_type_t type, const switch_dtmf_t *dtmf);
|
||||
SWITCH_DECLARE(switch_status_t) switch_core_media_queue_rfc2833_in(switch_core_session_t *session, switch_media_type_t type, const switch_dtmf_t *dtmf);
|
||||
SWITCH_DECLARE(uint8_t) switch_core_media_ready(switch_core_session_t *session, switch_media_type_t type);
|
||||
SWITCH_DECLARE(void) switch_core_media_set_recv_pt(switch_core_session_t *session, switch_media_type_t type, switch_payload_t pt);
|
||||
SWITCH_DECLARE(void) switch_core_media_set_telephony_event(switch_core_session_t *session, switch_media_type_t type, switch_payload_t te);
|
||||
SWITCH_DECLARE(void) switch_core_media_set_telephony_recv_event(switch_core_session_t *session, switch_media_type_t type, switch_payload_t te);
|
||||
SWITCH_DECLARE(switch_rtp_stats_t *) switch_core_media_stats(switch_core_session_t *session, switch_media_type_t type, switch_memory_pool_t *pool);
|
||||
@@ -257,6 +305,14 @@ SWITCH_DECLARE(void) switch_core_media_deinit(void);
|
||||
SWITCH_DECLARE(void) switch_core_media_set_stats(switch_core_session_t *session);
|
||||
SWITCH_DECLARE(void) switch_core_session_wake_video_thread(switch_core_session_t *session);
|
||||
SWITCH_DECLARE(void) switch_core_session_clear_crypto(switch_core_session_t *session);
|
||||
SWITCH_DECLARE(payload_map_t *) switch_core_media_add_payload_map(switch_core_session_t *session,
|
||||
switch_media_type_t type,
|
||||
const char *name,
|
||||
switch_sdp_type_t sdp_type,
|
||||
uint32_t pt,
|
||||
uint32_t rate,
|
||||
uint32_t ptime,
|
||||
uint8_t negotiated);
|
||||
|
||||
SWITCH_END_EXTERN_C
|
||||
#endif
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#define SWITCH_FRAME_H
|
||||
|
||||
#include <switch.h>
|
||||
#include <switch_core_media.h>
|
||||
|
||||
SWITCH_BEGIN_EXTERN_C
|
||||
/*! \brief An abstraction of a data frame */
|
||||
@@ -71,6 +72,7 @@ SWITCH_BEGIN_EXTERN_C
|
||||
/*! frame flags */
|
||||
switch_frame_flag_t flags;
|
||||
void *user_data;
|
||||
payload_map_t *pmap;
|
||||
};
|
||||
|
||||
SWITCH_END_EXTERN_C
|
||||
|
||||
@@ -485,7 +485,6 @@ SWITCH_DECLARE(void) switch_rtp_set_private(switch_rtp_t *rtp_session, void *pri
|
||||
*/
|
||||
SWITCH_DECLARE(void) switch_rtp_set_telephony_event(switch_rtp_t *rtp_session, switch_payload_t te);
|
||||
SWITCH_DECLARE(void) switch_rtp_set_telephony_recv_event(switch_rtp_t *rtp_session, switch_payload_t te);
|
||||
SWITCH_DECLARE(void) switch_rtp_set_recv_pt(switch_rtp_t *rtp_session, switch_payload_t pt);
|
||||
|
||||
/*!
|
||||
\brief Set the payload type for comfort noise
|
||||
@@ -500,7 +499,7 @@ SWITCH_DECLARE(void) switch_rtp_set_cng_pt(switch_rtp_t *rtp_session, switch_pay
|
||||
\return the pointer to the private data
|
||||
*/
|
||||
SWITCH_DECLARE(void *) switch_rtp_get_private(switch_rtp_t *rtp_session);
|
||||
|
||||
SWITCH_DECLARE(switch_status_t) switch_rtp_set_payload_map(switch_rtp_t *rtp_session, payload_map_t **pmap);
|
||||
SWITCH_DECLARE(void) switch_rtp_intentional_bugs(switch_rtp_t *rtp_session, switch_rtp_bug_flag_t bugs);
|
||||
|
||||
SWITCH_DECLARE(switch_rtp_stats_t *) switch_rtp_get_stats(switch_rtp_t *rtp_session, switch_memory_pool_t *pool);
|
||||
|
||||
Reference in New Issue
Block a user