stream-deploy/ZLM/3rdpart/media-server/librtp/payload/rtp-payload-internal.h

78 lines
3.0 KiB
C++

#ifndef _rtp_payload_internal_h_
#define _rtp_payload_internal_h_
#include "rtp-payload.h"
#include "rtp-packet.h"
#include "rtp-param.h"
#include "rtp-util.h"
struct rtp_payload_encode_t
{
/// create RTP packer
/// @param[in] size maximum RTP packet payload size(don't include RTP header)
/// @param[in] payload RTP header PT filed (see more about rtp-profile.h)
/// @param[in] seq RTP header sequence number filed
/// @param[in] ssrc RTP header SSRC filed
/// @param[in] handler user-defined callback
/// @param[in] cbparam user-defined parameter
/// @return RTP packer
void* (*create)(int size, uint8_t payload, uint16_t seq, uint32_t ssrc, struct rtp_payload_t *handler, void* cbparam);
/// destroy RTP Packer
void(*destroy)(void* packer);
void(*get_info)(void* packer, uint16_t* seq, uint32_t* timestamp);
/// PS/H.264 Elementary Stream to RTP Packet
/// @param[in] packer
/// @param[in] data stream data
/// @param[in] bytes stream length in bytes
/// @param[in] time stream UTC time
/// @return 0-ok, ENOMEM-alloc failed, <0-failed
int(*input)(void* packer, const void* data, int bytes, uint32_t time);
};
struct rtp_payload_decode_t
{
void* (*create)(struct rtp_payload_t *handler, void* param);
void (*destroy)(void* packer);
/// RTP packet to PS/H.264 Elementary Stream
/// @param[in] decoder RTP packet unpackers
/// @param[in] packet RTP packet
/// @param[in] bytes RTP packet length in bytes
/// @param[in] time stream UTC time
/// @return 1-packet handled, 0-packet discard, <0-failed
int (*input)(void* decoder, const void* packet, int bytes);
};
struct rtp_payload_encode_t *rtp_ts_encode(void);
struct rtp_payload_encode_t *rtp_vp8_encode(void);
struct rtp_payload_encode_t *rtp_vp9_encode(void);
struct rtp_payload_encode_t *rtp_av1_encode(void);
struct rtp_payload_encode_t *rtp_h264_encode(void);
struct rtp_payload_encode_t *rtp_h265_encode(void);
struct rtp_payload_encode_t* rtp_h266_encode(void);
struct rtp_payload_encode_t *rtp_common_encode(void);
struct rtp_payload_encode_t *rtp_mp4v_es_encode(void);
struct rtp_payload_encode_t *rtp_mp4a_latm_encode(void);
struct rtp_payload_encode_t *rtp_mpeg4_generic_encode(void);
struct rtp_payload_encode_t *rtp_mpeg1or2es_encode(void);
struct rtp_payload_decode_t *rtp_ts_decode(void);
struct rtp_payload_decode_t *rtp_ps_decode(void);
struct rtp_payload_decode_t *rtp_vp8_decode(void);
struct rtp_payload_decode_t *rtp_vp9_decode(void);
struct rtp_payload_decode_t *rtp_av1_decode(void);
struct rtp_payload_decode_t *rtp_h264_decode(void);
struct rtp_payload_decode_t *rtp_h265_decode(void);
struct rtp_payload_decode_t* rtp_h266_decode(void);
struct rtp_payload_decode_t *rtp_common_decode(void);
struct rtp_payload_decode_t *rtp_mp4v_es_decode(void);
struct rtp_payload_decode_t *rtp_mp4a_latm_decode(void);
struct rtp_payload_decode_t *rtp_mpeg4_generic_decode(void);
struct rtp_payload_decode_t *rtp_mpeg1or2es_decode(void);
int rtp_packet_serialize_header(const struct rtp_packet_t *pkt, void* data, int bytes);
#endif /* !_rtp_payload_internal_h_ */