From a4e58adabc3caa04ede14557dd45de87ad2c2d08 Mon Sep 17 00:00:00 2001 From: Eloi BAIL <eloi.bail@savoirfairelinux.com> Date: Wed, 16 Sep 2015 10:55:44 -0400 Subject: [PATCH] contrib/ffmpeg: add rtpdec traces This patchset adds information about jitter buffer used in rtpdec. The first patch prints as warning when jitter buffer is full. The second patch prints as verbose jitter buffer size set by default in libav headers or by application. The third patch prints as waring when max delay on jitter buffer is reached Those traces are helpful to know the origin of decoding issues. Indeed a jitter buffer full or a max delay reached will lead to packet reordering failure and then to video decoding failure. Issue: #80483 Change-Id: I7f123f04fe67c279391f153db5ea6f472759f8b2 --- ...d-a-trace-when-jitter-buffer-is-full.patch | 35 +++++++++++++++++++ ...002-rtpdec-inform-jitter-buffer-size.patch | 33 +++++++++++++++++ ...-rtsp-warning-when-max_delay-reached.patch | 32 +++++++++++++++++ contrib/src/ffmpeg/rules.mak | 3 ++ 4 files changed, 103 insertions(+) create mode 100644 contrib/src/ffmpeg/0001-rtpdec-add-a-trace-when-jitter-buffer-is-full.patch create mode 100644 contrib/src/ffmpeg/0002-rtpdec-inform-jitter-buffer-size.patch create mode 100644 contrib/src/ffmpeg/0003-rtsp-warning-when-max_delay-reached.patch diff --git a/contrib/src/ffmpeg/0001-rtpdec-add-a-trace-when-jitter-buffer-is-full.patch b/contrib/src/ffmpeg/0001-rtpdec-add-a-trace-when-jitter-buffer-is-full.patch new file mode 100644 index 0000000000..5f85261e67 --- /dev/null +++ b/contrib/src/ffmpeg/0001-rtpdec-add-a-trace-when-jitter-buffer-is-full.patch @@ -0,0 +1,35 @@ +From ff7f6ea9db2a77d74f7e68a716f53ba1f3f85017 Mon Sep 17 00:00:00 2001 +From: Eloi BAIL <eloi.bail@savoirfairelinux.com> +Date: Tue, 15 Sep 2015 11:38:21 -0400 +Subject: [PATCH] rtpdec: add a trace when jitter buffer is full +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This commit adds a warning trace when jitter buffer +is full. It helps to understand leading decoding issues. + +Signed-off-by: Eloi BAIL <eloi.bail@savoirfairelinux.com> +Signed-off-by: Martin Storsjö <martin@martin.st> +--- + libavformat/rtpdec.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c +index 0efcdb9..5706f16 100644 +--- a/libavformat/rtpdec.c ++++ b/libavformat/rtpdec.c +@@ -804,8 +804,11 @@ static int rtp_parse_one_packet(RTPDemuxContext *s, AVPacket *pkt, + *bufptr = NULL; + /* Return the first enqueued packet if the queue is full, + * even if we're missing something */ +- if (s->queue_len >= s->queue_size) ++ if (s->queue_len >= s->queue_size) { ++ av_log(s->st ? s->st->codec : NULL, AV_LOG_WARNING, ++ "jitter buffer full\n"); + return rtp_parse_queued_packet(s, pkt); ++ } + return -1; + } + } +2.1.4 diff --git a/contrib/src/ffmpeg/0002-rtpdec-inform-jitter-buffer-size.patch b/contrib/src/ffmpeg/0002-rtpdec-inform-jitter-buffer-size.patch new file mode 100644 index 0000000000..e2d089b14f --- /dev/null +++ b/contrib/src/ffmpeg/0002-rtpdec-inform-jitter-buffer-size.patch @@ -0,0 +1,33 @@ +From d555bd69e792e42d94bd909b30d9bfef01db4e25 Mon Sep 17 00:00:00 2001 +From: Eloi BAIL <eloi.bail@savoirfairelinux.com> +Date: Tue, 15 Sep 2015 11:38:22 -0400 +Subject: [PATCH] rtpdec: inform jitter buffer size +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This commit print as AV_LOG_VERBOSE the jitter buffer +size. It might be the default value or the value set by application. + +Signed-off-by: Eloi BAIL <eloi.bail@savoirfairelinux.com> +Signed-off-by: Martin Storsjö <martin@martin.st> +--- + libavformat/rtpdec.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c +index 5706f16..34c77f8 100644 +--- a/libavformat/rtpdec.c ++++ b/libavformat/rtpdec.c +@@ -513,6 +513,10 @@ RTPDemuxContext *ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, + s->ic = s1; + s->st = st; + s->queue_size = queue_size; ++ ++ av_log(s->st ? s->st->codec : NULL, AV_LOG_VERBOSE, ++ "setting jitter buffer size to %d\n", s->queue_size); ++ + rtp_init_statistics(&s->statistics, 0); + if (st) { + switch (st->codec->codec_id) { +2.1.4 diff --git a/contrib/src/ffmpeg/0003-rtsp-warning-when-max_delay-reached.patch b/contrib/src/ffmpeg/0003-rtsp-warning-when-max_delay-reached.patch new file mode 100644 index 0000000000..7d32a8f249 --- /dev/null +++ b/contrib/src/ffmpeg/0003-rtsp-warning-when-max_delay-reached.patch @@ -0,0 +1,32 @@ +From 1ec611a10228945d2ec8a9cf6c5531dee6b7ee56 Mon Sep 17 00:00:00 2001 +From: Eloi BAIL <eloi.bail@savoirfairelinux.com> +Date: Tue, 15 Sep 2015 11:38:23 -0400 +Subject: [PATCH] rtsp: warning when max_delay reached +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +packets are queued due to packet reordering until the queue reach its +maximal size or max delay is reached. +This commit adds a warning trace when max delay is reached. + +Signed-off-by: Eloi BAIL <eloi.bail@savoirfairelinux.com> +Signed-off-by: Martin Storsjö <martin@martin.st> +--- + libavformat/rtsp.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c +index 90a6b75..d2c99ea 100644 +--- a/libavformat/rtsp.c ++++ b/libavformat/rtsp.c +@@ -2112,6 +2112,8 @@ redo: + } + if (len == AVERROR(EAGAIN) && first_queue_st && + rt->transport == RTSP_TRANSPORT_RTP) { ++ av_log(s, AV_LOG_WARNING, ++ "max delay reached. need to consume packet\n"); + rtsp_st = first_queue_st; + ret = ff_rtp_parse_packet(rtsp_st->transport_priv, pkt, NULL, 0); + goto end; +2.1.4 diff --git a/contrib/src/ffmpeg/rules.mak b/contrib/src/ffmpeg/rules.mak index a37698175a..fc8edde375 100644 --- a/contrib/src/ffmpeg/rules.mak +++ b/contrib/src/ffmpeg/rules.mak @@ -122,6 +122,9 @@ ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.xz .sum-ffmpeg mkdir -p $@-$(FFMPEG_HASH) (cd $@-$(FFMPEG_HASH) && tar xv --strip-components=1 -f ../$<) $(UPDATE_AUTOCONFIG) + $(APPLY) $(SRC)/ffmpeg/0001-rtpdec-add-a-trace-when-jitter-buffer-is-full.patch + $(APPLY) $(SRC)/ffmpeg/0002-rtpdec-inform-jitter-buffer-size.patch + $(APPLY) $(SRC)/ffmpeg/0003-rtsp-warning-when-max_delay-reached.patch $(MOVE) .ffmpeg: ffmpeg -- GitLab