Message ID | 20210115173332.536722-1-bernd.kuhls@t-online.de |
---|---|
State | Accepted |
Headers | show |
Series | [1/1] package/ffmpeg: add fixes from Kodi project | expand |
Bernd, All, On 2021-01-15 18:33 +0100, Bernd Kuhls spake thusly: > Adding these patches brings our ffmpeg package to the same level as the > kodi-provided ffmpeg package allowing us to switch the kodi build to > use the system-provided ffmpeg instead of its internal build when kodi > is bumped to version 19.0-Matrix. Although I usually frown on carrying patches specific to a downstream, in this case one patch is an ctual backport, and the other has seen a pretty good reception so far upstream. > Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> Applied to master, thanks. Regards, Yann E. MORIN. > --- > ...264-skip-decode-if-pic-has-no-slices.patch | 36 ++++++++++++++++++ > ...-make-sure-mpegts-read-header-always.patch | 38 +++++++++++++++++++ > 2 files changed, 74 insertions(+) > create mode 100644 package/ffmpeg/0003-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch > create mode 100644 package/ffmpeg/0004-avformat-mpegts-make-sure-mpegts-read-header-always.patch > > diff --git a/package/ffmpeg/0003-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch b/package/ffmpeg/0003-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch > new file mode 100644 > index 0000000000..2892df9d81 > --- /dev/null > +++ b/package/ffmpeg/0003-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch > @@ -0,0 +1,36 @@ > +From 2c6b3f357331e203ad87214984661c40704aceb7 Mon Sep 17 00:00:00 2001 > +From: Rainer Hochecker <fernetmenta@online.de> > +Date: Sat, 26 Jan 2019 19:48:35 +0100 > +Subject: [PATCH] avcodec/vaapi_h264: skip decode if pic has no slices > + > +This fixes / workarounds https://bugs.freedesktop.org/show_bug.cgi?id=105368. > +It was hit frequently when watching h264 channels received via DVB-X. > +Corresponding kodi bug: https://github.com/xbmc/xbmc/issues/15704 > + > +Downloaded from Kodi ffmpeg repo: > +https://github.com/xbmc/FFmpeg/commit/2c6b3f357331e203ad87214984661c40704aceb7 > + > +Patch was sent upstream: > +http://ffmpeg.org/pipermail/ffmpeg-devel/2019-March/240863.html > + > +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> > +--- > + libavcodec/vaapi_h264.c | 5 +++++ > + 1 file changed, 5 insertions(+) > + > +diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c > +index dd2a6571604..e521a05c4ff 100644 > +--- a/libavcodec/vaapi_h264.c > ++++ b/libavcodec/vaapi_h264.c > +@@ -314,6 +314,11 @@ static int vaapi_h264_end_frame(AVCodecContext *avctx) > + H264SliceContext *sl = &h->slice_ctx[0]; > + int ret; > + > ++ if (pic->nb_slices == 0) { > ++ ret = AVERROR_INVALIDDATA; > ++ goto finish; > ++ } > ++ > + ret = ff_vaapi_decode_issue(avctx, pic); > + if (ret < 0) > + goto finish; > diff --git a/package/ffmpeg/0004-avformat-mpegts-make-sure-mpegts-read-header-always.patch b/package/ffmpeg/0004-avformat-mpegts-make-sure-mpegts-read-header-always.patch > new file mode 100644 > index 0000000000..75a39d16fa > --- /dev/null > +++ b/package/ffmpeg/0004-avformat-mpegts-make-sure-mpegts-read-header-always.patch > @@ -0,0 +1,38 @@ > +From 3136f41e6db8189994a8e4f72eacc92b669776d1 Mon Sep 17 00:00:00 2001 > +From: Marton Balint <cus@passwd.hu> > +Date: Sun, 15 Nov 2020 00:39:41 +0100 > +Subject: [PATCH] avformat/mpegts: make sure mpegts_read_header always stops at > + the first pmt > + > +mpegts_read_header stops parsing the file at the first PMT. However the check > +that ensured this was wrong because streams can also be added before the first > +PMT is received (e.g. EIT). > + > +So let's make sure we are in the header reading phase by checking if ts->pkt is > +unset instead of checking if the number of streams found so far is 0. > + > +Downloaded from Kodi ffmpeg repo: > +https://github.com/xbmc/FFmpeg/commit/3136f41e6db8189994a8e4f72eacc92b669776d1 > + > +Patch was committed upstream: > +http://git.videolan.org/?p=ffmpeg.git;a=patch;h=ca55240b8c1fd4cfdb61f88fd2cb378d475d910a > + > +Signed-off-by: Marton Balint <cus@passwd.hu> > +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> > +--- > + libavformat/mpegts.c | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c > +index c6fd3e1cef63..1da81a0fe62a 100644 > +--- a/libavformat/mpegts.c > ++++ b/libavformat/mpegts.c > +@@ -2352,7 +2352,7 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len > + goto out; > + > + // stop parsing after pmt, we found header > +- if (!ts->stream->nb_streams) > ++ if (!ts->pkt) > + ts->stop_parse = 2; > + > + set_pmt_found(ts, h->id); > -- > 2.29.2 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
diff --git a/package/ffmpeg/0003-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch b/package/ffmpeg/0003-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch new file mode 100644 index 0000000000..2892df9d81 --- /dev/null +++ b/package/ffmpeg/0003-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch @@ -0,0 +1,36 @@ +From 2c6b3f357331e203ad87214984661c40704aceb7 Mon Sep 17 00:00:00 2001 +From: Rainer Hochecker <fernetmenta@online.de> +Date: Sat, 26 Jan 2019 19:48:35 +0100 +Subject: [PATCH] avcodec/vaapi_h264: skip decode if pic has no slices + +This fixes / workarounds https://bugs.freedesktop.org/show_bug.cgi?id=105368. +It was hit frequently when watching h264 channels received via DVB-X. +Corresponding kodi bug: https://github.com/xbmc/xbmc/issues/15704 + +Downloaded from Kodi ffmpeg repo: +https://github.com/xbmc/FFmpeg/commit/2c6b3f357331e203ad87214984661c40704aceb7 + +Patch was sent upstream: +http://ffmpeg.org/pipermail/ffmpeg-devel/2019-March/240863.html + +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> +--- + libavcodec/vaapi_h264.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libavcodec/vaapi_h264.c b/libavcodec/vaapi_h264.c +index dd2a6571604..e521a05c4ff 100644 +--- a/libavcodec/vaapi_h264.c ++++ b/libavcodec/vaapi_h264.c +@@ -314,6 +314,11 @@ static int vaapi_h264_end_frame(AVCodecContext *avctx) + H264SliceContext *sl = &h->slice_ctx[0]; + int ret; + ++ if (pic->nb_slices == 0) { ++ ret = AVERROR_INVALIDDATA; ++ goto finish; ++ } ++ + ret = ff_vaapi_decode_issue(avctx, pic); + if (ret < 0) + goto finish; diff --git a/package/ffmpeg/0004-avformat-mpegts-make-sure-mpegts-read-header-always.patch b/package/ffmpeg/0004-avformat-mpegts-make-sure-mpegts-read-header-always.patch new file mode 100644 index 0000000000..75a39d16fa --- /dev/null +++ b/package/ffmpeg/0004-avformat-mpegts-make-sure-mpegts-read-header-always.patch @@ -0,0 +1,38 @@ +From 3136f41e6db8189994a8e4f72eacc92b669776d1 Mon Sep 17 00:00:00 2001 +From: Marton Balint <cus@passwd.hu> +Date: Sun, 15 Nov 2020 00:39:41 +0100 +Subject: [PATCH] avformat/mpegts: make sure mpegts_read_header always stops at + the first pmt + +mpegts_read_header stops parsing the file at the first PMT. However the check +that ensured this was wrong because streams can also be added before the first +PMT is received (e.g. EIT). + +So let's make sure we are in the header reading phase by checking if ts->pkt is +unset instead of checking if the number of streams found so far is 0. + +Downloaded from Kodi ffmpeg repo: +https://github.com/xbmc/FFmpeg/commit/3136f41e6db8189994a8e4f72eacc92b669776d1 + +Patch was committed upstream: +http://git.videolan.org/?p=ffmpeg.git;a=patch;h=ca55240b8c1fd4cfdb61f88fd2cb378d475d910a + +Signed-off-by: Marton Balint <cus@passwd.hu> +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> +--- + libavformat/mpegts.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c +index c6fd3e1cef63..1da81a0fe62a 100644 +--- a/libavformat/mpegts.c ++++ b/libavformat/mpegts.c +@@ -2352,7 +2352,7 @@ static void pmt_cb(MpegTSFilter *filter, const uint8_t *section, int section_len + goto out; + + // stop parsing after pmt, we found header +- if (!ts->stream->nb_streams) ++ if (!ts->pkt) + ts->stop_parse = 2; + + set_pmt_found(ts, h->id);
Adding these patches brings our ffmpeg package to the same level as the kodi-provided ffmpeg package allowing us to switch the kodi build to use the system-provided ffmpeg instead of its internal build when kodi is bumped to version 19.0-Matrix. Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> --- ...264-skip-decode-if-pic-has-no-slices.patch | 36 ++++++++++++++++++ ...-make-sure-mpegts-read-header-always.patch | 38 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 package/ffmpeg/0003-avcodec-vaapi_h264-skip-decode-if-pic-has-no-slices.patch create mode 100644 package/ffmpeg/0004-avformat-mpegts-make-sure-mpegts-read-header-always.patch