[FFmpeg-devel] [PATCH] avformat/rtpenc: add option to disable STAP for H.264
Zhao Zhili
quinkblack at foxmail.com
Wed Nov 4 19:17:44 EET 2020
Use non-interleaved mode but disable STAP is a valid use case, for
example, the receiver doesn't support STAP.
---
libavformat/rtpenc.h | 2 ++
libavformat/rtpenc_h264_hevc.c | 2 +-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavformat/rtpenc.h b/libavformat/rtpenc.h
index 62dc9ab10a..931287cbb3 100644
--- a/libavformat/rtpenc.h
+++ b/libavformat/rtpenc.h
@@ -70,6 +70,7 @@ typedef struct RTPMuxContext RTPMuxContext;
#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_H264_NO_STAP 32
#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" }, \
@@ -77,6 +78,7 @@ typedef struct RTPMuxContext RTPMuxContext;
{ "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 H.264 in RTP", 0, AV_OPT_TYPE_CONST, {.i64 = FF_RTP_FLAG_H264_MODE0}, INT_MIN, INT_MAX, AV_OPT_FLAG_ENCODING_PARAM, "rtpflags" }, \
+ { "h264_no_stap", "Disable single-time aggregation packet (STAP) for H.264 in RTP", 0, AV_OPT_TYPE_CONST, {.i64 = FF_RTP_FLAG_H264_NO_STAP}, 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);
diff --git a/libavformat/rtpenc_h264_hevc.c b/libavformat/rtpenc_h264_hevc.c
index 0c88fc2a23..faa550abb2 100644
--- a/libavformat/rtpenc_h264_hevc.c
+++ b/libavformat/rtpenc_h264_hevc.c
@@ -65,7 +65,7 @@ static void nal_send(AVFormatContext *s1, const uint8_t *buf, int size, int last
if (codec == AV_CODEC_ID_H264) {
header_size = 1;
- skip_aggregate = s->flags & FF_RTP_FLAG_H264_MODE0;
+ skip_aggregate = s->flags & (FF_RTP_FLAG_H264_MODE0 | FF_RTP_FLAG_H264_NO_STAP);
} else {
header_size = 2;
}
--
2.17.1
More information about the ffmpeg-devel
mailing list