X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Frtpenc.h;h=c6ac8da43d3c1181ba17cc7a60eed06a7f2f5e40;hb=b9d2d6843a49f9df1d1ae1afe817d9b48c445919;hp=369b413e9d105c0638a5356e8c073b1161377843;hpb=7941159df6aad2d219e2a7184489be7a735dd944;p=ffmpeg diff --git a/libavformat/rtpenc.h b/libavformat/rtpenc.h index 369b413e9d1..c6ac8da43d3 100644 --- a/libavformat/rtpenc.h +++ b/libavformat/rtpenc.h @@ -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);