Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

rtp-payload-internal.h 2.9KB

před 10 měsíci
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #ifndef _rtp_payload_internal_h_
  2. #define _rtp_payload_internal_h_
  3. #include "rtp-payload.h"
  4. #include "rtp-packet.h"
  5. #include "rtp-param.h"
  6. #include "rtp-util.h"
  7. struct rtp_payload_encode_t
  8. {
  9. /// create RTP packer
  10. /// @param[in] size maximum RTP packet payload size(don't include RTP header)
  11. /// @param[in] payload RTP header PT filed (see more about rtp-profile.h)
  12. /// @param[in] seq RTP header sequence number filed
  13. /// @param[in] ssrc RTP header SSRC filed
  14. /// @param[in] handler user-defined callback
  15. /// @param[in] cbparam user-defined parameter
  16. /// @return RTP packer
  17. void* (*create)(int size, uint8_t payload, uint16_t seq, uint32_t ssrc, struct rtp_payload_t *handler, void* cbparam);
  18. /// destroy RTP Packer
  19. void(*destroy)(void* packer);
  20. void(*get_info)(void* packer, uint16_t* seq, uint32_t* timestamp);
  21. /// PS/H.264 Elementary Stream to RTP Packet
  22. /// @param[in] packer
  23. /// @param[in] data stream data
  24. /// @param[in] bytes stream length in bytes
  25. /// @param[in] time stream UTC time
  26. /// @return 0-ok, ENOMEM-alloc failed, <0-failed
  27. int(*input)(void* packer, const void* data, int bytes, uint32_t time);
  28. };
  29. struct rtp_payload_decode_t
  30. {
  31. void* (*create)(struct rtp_payload_t *handler, void* param);
  32. void (*destroy)(void* packer);
  33. /// RTP packet to PS/H.264 Elementary Stream
  34. /// @param[in] decoder RTP packet unpackers
  35. /// @param[in] packet RTP packet
  36. /// @param[in] bytes RTP packet length in bytes
  37. /// @param[in] time stream UTC time
  38. /// @return 1-packet handled, 0-packet discard, <0-failed
  39. int (*input)(void* decoder, const void* packet, int bytes);
  40. };
  41. struct rtp_payload_encode_t *rtp_ts_encode(void);
  42. struct rtp_payload_encode_t *rtp_vp8_encode(void);
  43. struct rtp_payload_encode_t *rtp_vp9_encode(void);
  44. struct rtp_payload_encode_t *rtp_av1_encode(void);
  45. struct rtp_payload_encode_t *rtp_h264_encode(void);
  46. struct rtp_payload_encode_t *rtp_h265_encode(void);
  47. struct rtp_payload_encode_t *rtp_common_encode(void);
  48. struct rtp_payload_encode_t *rtp_mp4v_es_encode(void);
  49. struct rtp_payload_encode_t *rtp_mp4a_latm_encode(void);
  50. struct rtp_payload_encode_t *rtp_mpeg4_generic_encode(void);
  51. struct rtp_payload_encode_t *rtp_mpeg1or2es_encode(void);
  52. struct rtp_payload_decode_t *rtp_ts_decode(void);
  53. struct rtp_payload_decode_t *rtp_ps_decode(void);
  54. struct rtp_payload_decode_t *rtp_vp8_decode(void);
  55. struct rtp_payload_decode_t *rtp_vp9_decode(void);
  56. struct rtp_payload_decode_t *rtp_av1_decode(void);
  57. struct rtp_payload_decode_t *rtp_h264_decode(void);
  58. struct rtp_payload_decode_t *rtp_h265_decode(void);
  59. struct rtp_payload_decode_t *rtp_common_decode(void);
  60. struct rtp_payload_decode_t *rtp_mp4v_es_decode(void);
  61. struct rtp_payload_decode_t *rtp_mp4a_latm_decode(void);
  62. struct rtp_payload_decode_t *rtp_mpeg4_generic_decode(void);
  63. struct rtp_payload_decode_t *rtp_mpeg1or2es_decode(void);
  64. int rtp_packet_serialize_header(const struct rtp_packet_t *pkt, void* data, int bytes);
  65. #endif /* !_rtp_payload_internal_h_ */