]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtpenc.h
tls: Pass AVOptions dictionaries through to the chained protocol
[ffmpeg] / libavformat / rtpenc.h
index 369b413e9d105c0638a5356e8c073b1161377843..c6ac8da43d3c1181ba17cc7a60eed06a7f2f5e40 100644 (file)
@@ -30,18 +30,17 @@ struct RTPMuxContext {
     AVStream *st;
     int payload_type;
     uint32_t ssrc;
-    uint16_t seq;
+    const char *cname;
+    int seq;
     uint32_t timestamp;
     uint32_t base_timestamp;
     uint32_t cur_timestamp;
     int max_payload_size;
     int num_frames;
 
-    /* rtcp sender statistics receive */
+    /* rtcp sender statistics */
     int64_t last_rtcp_ntp_time;
     int64_t first_rtcp_ntp_time;
-
-    /* rtcp sender statistics */
     unsigned int packet_count;
     unsigned int octet_count;
     unsigned int last_octet_count;
@@ -57,8 +56,11 @@ struct RTPMuxContext {
      * (1, 2 or 4)
      */
     int nal_length_size;
+    int buffered_nals;
 
     int flags;
+
+    unsigned int frame_count;
 };
 
 typedef struct RTPMuxContext RTPMuxContext;
@@ -67,17 +69,20 @@ typedef struct RTPMuxContext RTPMuxContext;
 #define FF_RTP_FLAG_RFC2190   2
 #define FF_RTP_FLAG_SKIP_RTCP 4
 #define FF_RTP_FLAG_H264_MODE0 8
+#define FF_RTP_FLAG_SEND_BYE  16
 
 #define FF_RTP_FLAG_OPTS(ctx, fieldname) \
     { "rtpflags", "RTP muxer flags", offsetof(ctx, fieldname), AV_OPT_TYPE_FLAGS, {.i64 = 0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "rtpflags" }, \
     { "latm", "Use MP4A-LATM packetization instead of MPEG4-GENERIC for AAC", 0, AV_OPT_TYPE_CONST, {.i64 = FF_RTP_FLAG_MP4A_LATM}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "rtpflags" }, \
     { "rfc2190", "Use RFC 2190 packetization instead of RFC 4629 for H.263", 0, AV_OPT_TYPE_CONST, {.i64 = FF_RTP_FLAG_RFC2190}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "rtpflags" }, \
     { "skip_rtcp", "Don't send RTCP sender reports", 0, AV_OPT_TYPE_CONST, {.i64 = FF_RTP_FLAG_SKIP_RTCP}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "rtpflags" }, \
-    { "h264_mode0", "Use mode 0 for H264 in RTP", 0, AV_OPT_TYPE_CONST, {.i64 = FF_RTP_FLAG_H264_MODE0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "rtpflags" } \
+    { "h264_mode0", "Use mode 0 for H264 in RTP", 0, AV_OPT_TYPE_CONST, {.i64 = FF_RTP_FLAG_H264_MODE0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "rtpflags" }, \
+    { "send_bye", "Send RTCP BYE packets when finishing", 0, AV_OPT_TYPE_CONST, {.i64 = FF_RTP_FLAG_SEND_BYE}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "rtpflags" } \
 
 void ff_rtp_send_data(AVFormatContext *s1, const uint8_t *buf1, int len, int m);
 
-void ff_rtp_send_h264(AVFormatContext *s1, const uint8_t *buf1, int size);
+void ff_rtp_send_h264_hevc(AVFormatContext *s1, const uint8_t *buf1, int size);
+void ff_rtp_send_h261(AVFormatContext *s1, const uint8_t *buf1, int size);
 void ff_rtp_send_h263(AVFormatContext *s1, const uint8_t *buf1, int size);
 void ff_rtp_send_h263_rfc2190(AVFormatContext *s1, const uint8_t *buf1, int size,
                               const uint8_t *mb_info, int mb_info_size);