[SCM] libav/master: Drop patches now included upstream.

js at users.alioth.debian.org js at users.alioth.debian.org
Tue Dec 2 17:46:54 UTC 2014


The following commit has been merged in the master branch:
commit 1bfbc9d0627d9e950aebd774a550f87609f1fccf
Author: Jonas Smedegaard <dr at jones.dk>
Date:   Tue Dec 2 16:17:12 2014 +0100

    Drop patches now included upstream.

diff --git a/debian/patches/series b/debian/patches/series
index ea3c2b4..3199e41 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,16 +1 @@
 03-disable-configuration-warnings.patch
-
-# patches added post v11 release. can be dropped on next upstream release
-# patche files generated with:
-# git format-patch v11..upstream/release/11 -o debian/patches/upstream
-
-upstream/0001-apetag-Fix-APE-tag-size-check.patch
-upstream/0002-Update-default-FATE-URL-for-release-11.patch
-upstream/0003-h264-Always-invoke-the-get_format-callback.patch
-upstream/0004-mpeg12-Always-invoke-the-get_format-callback.patch
-upstream/0005-hevc-Initialize-mergecand_list-to-0.patch
-upstream/0006-h264-reset-ret-to-avoid-propagating-minor-failures.patch
-upstream/0007-hevc_mvs-initialize-the-temporal-MV-in-case-of-missi.patch
-upstream/0008-hevc_mvs-make-sure-to-always-initialize-the-temporal.patch
-upstream/0009-imc-fix-order-of-operations-in-coefficients-read.patch
-upstream/0010-resample-Avoid-off-by-1-errors-in-PTS-calcs.patch
diff --git a/debian/patches/upstream/0001-apetag-Fix-APE-tag-size-check.patch b/debian/patches/upstream/0001-apetag-Fix-APE-tag-size-check.patch
deleted file mode 100644
index 8e39ffc..0000000
--- a/debian/patches/upstream/0001-apetag-Fix-APE-tag-size-check.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From b45ab61b24a8f2aeafdd4451491b1b30b7875ee5 Mon Sep 17 00:00:00 2001
-From: Katerina Barone-Adesi <katerinab at gmail.com>
-Date: Tue, 16 Sep 2014 01:40:24 +0200
-Subject: [PATCH 01/10] apetag: Fix APE tag size check
-
-The size variable is (correctly) unsigned, but is passed to several functions
-which take signed parameters, such as avio_read, sometimes after having
-numbers added to it. So ensure that size remains within the bounds that
-these functions can handle.
-
-(cherry picked from commit c5560e72d0bb69f8a1ac9536570398f84388f396)
-Signed-off-by: Diego Biurrun <diego at biurrun.de>
----
- libavformat/apetag.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/libavformat/apetag.c b/libavformat/apetag.c
-index 22884ef..bd8d0ed 100644
---- a/libavformat/apetag.c
-+++ b/libavformat/apetag.c
-@@ -57,8 +57,10 @@ static int ape_tag_read_field(AVFormatContext *s)
-         av_log(s, AV_LOG_WARNING, "Invalid APE tag key '%s'.\n", key);
-         return -1;
-     }
--    if (size >= UINT_MAX)
--        return -1;
-+    if (size > INT32_MAX - FF_INPUT_BUFFER_PADDING_SIZE) {
-+        av_log(s, AV_LOG_ERROR, "APE tag size too large.\n");
-+        return AVERROR_INVALIDDATA;
-+    }
-     if (flags & APE_TAG_FLAG_IS_BINARY) {
-         uint8_t filename[1024];
-         enum AVCodecID id;
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0002-Update-default-FATE-URL-for-release-11.patch b/debian/patches/upstream/0002-Update-default-FATE-URL-for-release-11.patch
deleted file mode 100644
index d1ff5bb..0000000
--- a/debian/patches/upstream/0002-Update-default-FATE-URL-for-release-11.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 9eb442cca23bb8d33b3e6d37b8c0e3afff04c37a Mon Sep 17 00:00:00 2001
-From: Diego Biurrun <diego at biurrun.de>
-Date: Wed, 17 Sep 2014 07:08:57 -0700
-Subject: [PATCH 02/10] Update default FATE URL for release/11
-
----
- tests/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/Makefile b/tests/Makefile
-index 5fad291..eab1eca 100644
---- a/tests/Makefile
-+++ b/tests/Makefile
-@@ -128,7 +128,7 @@ $(FATE_AVCONV) $(FATE_SAMPLES_AVCONV): avconv$(EXESUF)
- ifdef SAMPLES
- FATE += $(FATE_SAMPLES)
- fate-rsync:
--	rsync -vaLW rsync://fate-suite.libav.org/fate-suite/ $(SAMPLES)
-+	rsync -vaLW rsync://fate-suite.libav.org/fate-suite-11/ $(SAMPLES)
- else
- fate-rsync:
- 	@echo "use 'make fate-rsync SAMPLES=/path/to/samples' to sync the fate suite"
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0003-h264-Always-invoke-the-get_format-callback.patch b/debian/patches/upstream/0003-h264-Always-invoke-the-get_format-callback.patch
deleted file mode 100644
index 0a6594a..0000000
--- a/debian/patches/upstream/0003-h264-Always-invoke-the-get_format-callback.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 09c848855a7bf11a9ab4a69971cced260b17817d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi at remlab.net>
-Date: Thu, 25 Sep 2014 11:59:57 +0300
-Subject: [PATCH 03/10] h264: Always invoke the get_format() callback
-
-Signed-off-by: Luca Barbato <lu_zero at gentoo.org>
----
- libavcodec/h264_slice.c | 51 ++++++++++++++++++++++++++++++-------------------
- 1 file changed, 31 insertions(+), 20 deletions(-)
-
-diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
-index 83d3426..1ee7a3d 100644
---- a/libavcodec/h264_slice.c
-+++ b/libavcodec/h264_slice.c
-@@ -975,45 +975,54 @@ static int clone_slice(H264Context *dst, H264Context *src)
- 
- static enum AVPixelFormat get_pixel_format(H264Context *h)
- {
-+    enum AVPixelFormat pix_fmts[2];
-+    const enum AVPixelFormat *choices = pix_fmts;
-+
-+    pix_fmts[1] = AV_PIX_FMT_NONE;
-+
-     switch (h->sps.bit_depth_luma) {
-     case 9:
-         if (CHROMA444(h)) {
-             if (h->avctx->colorspace == AVCOL_SPC_RGB) {
--                return AV_PIX_FMT_GBRP9;
-+                pix_fmts[0] = AV_PIX_FMT_GBRP9;
-             } else
--                return AV_PIX_FMT_YUV444P9;
-+                pix_fmts[0] = AV_PIX_FMT_YUV444P9;
-         } else if (CHROMA422(h))
--            return AV_PIX_FMT_YUV422P9;
-+            pix_fmts[0] = AV_PIX_FMT_YUV422P9;
-         else
--            return AV_PIX_FMT_YUV420P9;
-+            pix_fmts[0] = AV_PIX_FMT_YUV420P9;
-         break;
-     case 10:
-         if (CHROMA444(h)) {
-             if (h->avctx->colorspace == AVCOL_SPC_RGB) {
--                return AV_PIX_FMT_GBRP10;
-+                pix_fmts[0] = AV_PIX_FMT_GBRP10;
-             } else
--                return AV_PIX_FMT_YUV444P10;
-+                pix_fmts[0] = AV_PIX_FMT_YUV444P10;
-         } else if (CHROMA422(h))
--            return AV_PIX_FMT_YUV422P10;
-+            pix_fmts[0] = AV_PIX_FMT_YUV422P10;
-         else
--            return AV_PIX_FMT_YUV420P10;
-+            pix_fmts[0] = AV_PIX_FMT_YUV420P10;
-         break;
-     case 8:
-         if (CHROMA444(h)) {
--            if (h->avctx->colorspace == AVCOL_SPC_RGB) {
--                return AV_PIX_FMT_GBRP;
--            } else
--                return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ444P
--                                                                 : AV_PIX_FMT_YUV444P;
-+            if (h->avctx->colorspace == AVCOL_SPC_RGB)
-+                pix_fmts[0] = AV_PIX_FMT_GBRP;
-+            else if (h->avctx->color_range == AVCOL_RANGE_JPEG)
-+                pix_fmts[0] = AV_PIX_FMT_YUVJ444P;
-+            else
-+                pix_fmts[0] = AV_PIX_FMT_YUV444P;
-         } else if (CHROMA422(h)) {
--            return h->avctx->color_range == AVCOL_RANGE_JPEG ? AV_PIX_FMT_YUVJ422P
--                                                             : AV_PIX_FMT_YUV422P;
-+            if (h->avctx->color_range == AVCOL_RANGE_JPEG)
-+                pix_fmts[0] = AV_PIX_FMT_YUVJ422P;
-+            else
-+                pix_fmts[0] = AV_PIX_FMT_YUV422P;
-         } else {
--            return ff_get_format(h->avctx, h->avctx->codec->pix_fmts ?
--                                 h->avctx->codec->pix_fmts :
--                                 h->avctx->color_range == AVCOL_RANGE_JPEG ?
--                                 h264_hwaccel_pixfmt_list_jpeg_420 :
--                                 h264_hwaccel_pixfmt_list_420);
-+            if (h->avctx->codec->pix_fmts)
-+                choices = h->avctx->codec->pix_fmts;
-+            else if (h->avctx->color_range == AVCOL_RANGE_JPEG)
-+                choices = h264_hwaccel_pixfmt_list_jpeg_420;
-+            else
-+                choices = h264_hwaccel_pixfmt_list_420;
-         }
-         break;
-     default:
-@@ -1021,6 +1030,8 @@ static enum AVPixelFormat get_pixel_format(H264Context *h)
-                "Unsupported bit depth %d\n", h->sps.bit_depth_luma);
-         return AVERROR_INVALIDDATA;
-     }
-+
-+    return ff_get_format(h->avctx, choices);
- }
- 
- /* export coded and cropped frame dimensions to AVCodecContext */
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0004-mpeg12-Always-invoke-the-get_format-callback.patch b/debian/patches/upstream/0004-mpeg12-Always-invoke-the-get_format-callback.patch
deleted file mode 100644
index 8eb0785..0000000
--- a/debian/patches/upstream/0004-mpeg12-Always-invoke-the-get_format-callback.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From ce0972ecddef3eee3c03e393108e5728821e3e37 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi at remlab.net>
-Date: Thu, 25 Sep 2014 11:59:58 +0300
-Subject: [PATCH 04/10] mpeg12: Always invoke the get_format() callback
-
-Signed-off-by: Luca Barbato <lu_zero at gentoo.org>
----
- libavcodec/mpeg12dec.c | 19 ++++++++++++++++---
- 1 file changed, 16 insertions(+), 3 deletions(-)
-
-diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
-index e3bd167..93e3900 100644
---- a/libavcodec/mpeg12dec.c
-+++ b/libavcodec/mpeg12dec.c
-@@ -1181,10 +1181,21 @@ static const enum AVPixelFormat mpeg12_hwaccel_pixfmt_list_420[] = {
-     AV_PIX_FMT_NONE
- };
- 
-+static const enum AVPixelFormat mpeg12_pixfmt_list_422[] = {
-+    AV_PIX_FMT_YUV422P,
-+    AV_PIX_FMT_NONE
-+};
-+
-+static const enum AVPixelFormat mpeg12_pixfmt_list_444[] = {
-+    AV_PIX_FMT_YUV444P,
-+    AV_PIX_FMT_NONE
-+};
-+
- static enum AVPixelFormat mpeg_get_pixelformat(AVCodecContext *avctx)
- {
-     Mpeg1Context *s1  = avctx->priv_data;
-     MpegEncContext *s = &s1->mpeg_enc_ctx;
-+    const enum AVPixelFormat *pix_fmts;
- 
- #if FF_API_XVMC
- FF_DISABLE_DEPRECATION_WARNINGS
-@@ -1194,11 +1205,13 @@ FF_ENABLE_DEPRECATION_WARNINGS
- #endif /* FF_API_XVMC */
- 
-     if (s->chroma_format < 2)
--        return ff_get_format(avctx, mpeg12_hwaccel_pixfmt_list_420);
-+        pix_fmts = mpeg12_hwaccel_pixfmt_list_420;
-     else if (s->chroma_format == 2)
--        return AV_PIX_FMT_YUV422P;
-+        pix_fmts = mpeg12_pixfmt_list_422;
-     else
--        return AV_PIX_FMT_YUV444P;
-+        pix_fmts = mpeg12_pixfmt_list_444;
-+
-+    return ff_get_format(avctx, pix_fmts);
- }
- 
- /* Call this function when we know all parameters.
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0005-hevc-Initialize-mergecand_list-to-0.patch b/debian/patches/upstream/0005-hevc-Initialize-mergecand_list-to-0.patch
deleted file mode 100644
index a80c5b3..0000000
--- a/debian/patches/upstream/0005-hevc-Initialize-mergecand_list-to-0.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 570cefb02b4f149c4263677e1a3eea216ee0ec8c Mon Sep 17 00:00:00 2001
-From: Luca Barbato <lu_zero at gentoo.org>
-Date: Wed, 17 Sep 2014 19:51:40 +0200
-Subject: [PATCH 05/10] hevc: Initialize mergecand_list to 0
-
-Unbreak cf6090dc6252f2b276aa4133e3d73a89f4c6046c.
-
-CC: libav-stable at libav.org
-Sample-Id: hevc-conformance-LTRPSPS_A_Qualcomm_1
----
- libavcodec/hevc_mvs.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/libavcodec/hevc_mvs.c b/libavcodec/hevc_mvs.c
-index cc5a16c..a611b76 100644
---- a/libavcodec/hevc_mvs.c
-+++ b/libavcodec/hevc_mvs.c
-@@ -556,6 +556,8 @@ void ff_hevc_luma_mv_merge_mode(HEVCContext *s, int x0, int y0, int nPbW,
-     int nPbH2 = nPbH;
-     HEVCLocalContext *lc = &s->HEVClc;
- 
-+    memset(mergecand_list, 0, MRG_MAX_NUM_CANDS * sizeof(*mergecand_list));
-+
-     if (s->pps->log2_parallel_merge_level > 2 && nCS == 8) {
-         singleMCLFlag = 1;
-         x0            = lc->cu.x;
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0006-h264-reset-ret-to-avoid-propagating-minor-failures.patch b/debian/patches/upstream/0006-h264-reset-ret-to-avoid-propagating-minor-failures.patch
deleted file mode 100644
index 0b02894..0000000
--- a/debian/patches/upstream/0006-h264-reset-ret-to-avoid-propagating-minor-failures.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From ff24824a721576195c3b4a711e3ee2af900de795 Mon Sep 17 00:00:00 2001
-From: Michael Niedermayer <michaelni at gmx.at>
-Date: Sun, 28 Sep 2014 00:46:50 +0100
-Subject: [PATCH 06/10] h264: reset ret to avoid propagating minor failures
-
-Unbreak 772d150a6e82542c06b0c251e73dd299d98d1027.
-
-CC: libav-stable at libav.org
-Bug-Id: 750 / 905753
-Signed-off-by: Vittorio Giovara <vittorio.giovara at gmail.com>
----
- libavcodec/h264.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libavcodec/h264.c b/libavcodec/h264.c
-index 1fd5e50..562b102 100644
---- a/libavcodec/h264.c
-+++ b/libavcodec/h264.c
-@@ -1679,6 +1679,7 @@ again:
-             goto end;
-     }
- 
-+    ret = 0;
- end:
-     /* clean up */
-     if (h->cur_pic_ptr && !h->droppable) {
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0007-hevc_mvs-initialize-the-temporal-MV-in-case-of-missi.patch b/debian/patches/upstream/0007-hevc_mvs-initialize-the-temporal-MV-in-case-of-missi.patch
deleted file mode 100644
index d61934c..0000000
--- a/debian/patches/upstream/0007-hevc_mvs-initialize-the-temporal-MV-in-case-of-missi.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From de31f857077a52714f3a2f2e92ac037d42d37769 Mon Sep 17 00:00:00 2001
-From: Anton Khirnov <anton at khirnov.net>
-Date: Mon, 29 Sep 2014 16:16:50 +0000
-Subject: [PATCH 07/10] hevc_mvs: initialize the temporal MV in case of missing
- ref
-
-The caller expects the MV to always be initialized.
----
- libavcodec/hevc_mvs.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/libavcodec/hevc_mvs.c b/libavcodec/hevc_mvs.c
-index a611b76..8b172a2 100644
---- a/libavcodec/hevc_mvs.c
-+++ b/libavcodec/hevc_mvs.c
-@@ -257,8 +257,10 @@ static int temporal_luma_motion_vector(HEVCContext *s, int x0, int y0,
- 
-     HEVCFrame *ref = s->ref->collocated_ref;
- 
--    if (!ref)
-+    if (!ref) {
-+        memset(mvLXCol, 0, sizeof(*mvLXCol));
-         return 0;
-+    }
- 
-     tab_mvf = ref->tab_mvf;
-     colPic  = ref->poc;
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0008-hevc_mvs-make-sure-to-always-initialize-the-temporal.patch b/debian/patches/upstream/0008-hevc_mvs-make-sure-to-always-initialize-the-temporal.patch
deleted file mode 100644
index 6342a7c..0000000
--- a/debian/patches/upstream/0008-hevc_mvs-make-sure-to-always-initialize-the-temporal.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0b41eeac45fb7f7ad6d3f4fc846b00d108824b0b Mon Sep 17 00:00:00 2001
-From: Anton Khirnov <anton at khirnov.net>
-Date: Mon, 29 Sep 2014 16:25:14 +0000
-Subject: [PATCH 08/10] hevc_mvs: make sure to always initialize the temporal
- MV fully
-
-The spec requires this.
-
-Fixes uninitialized reads on some samples.
-
-Remove now unnecessary initialization of the whole merge candidate list.
----
- libavcodec/hevc_mvs.c | 14 ++++----------
- 1 file changed, 4 insertions(+), 10 deletions(-)
-
-diff --git a/libavcodec/hevc_mvs.c b/libavcodec/hevc_mvs.c
-index 8b172a2..721eb3a 100644
---- a/libavcodec/hevc_mvs.c
-+++ b/libavcodec/hevc_mvs.c
-@@ -481,14 +481,10 @@ static void derive_spatial_merge_candidates(HEVCContext *s, int x0, int y0,
-             mergecandlist[nb_merge_cand].is_intra     = 0;
-             mergecandlist[nb_merge_cand].pred_flag[0] = available_l0;
-             mergecandlist[nb_merge_cand].pred_flag[1] = available_l1;
--            if (available_l0) {
--                mergecandlist[nb_merge_cand].mv[0]      = mv_l0_col;
--                mergecandlist[nb_merge_cand].ref_idx[0] = 0;
--            }
--            if (available_l1) {
--                mergecandlist[nb_merge_cand].mv[1]      = mv_l1_col;
--                mergecandlist[nb_merge_cand].ref_idx[1] = 0;
--            }
-+            AV_ZERO16(mergecandlist[nb_merge_cand].ref_idx);
-+            mergecandlist[nb_merge_cand].mv[0]      = mv_l0_col;
-+            mergecandlist[nb_merge_cand].mv[1]      = mv_l1_col;
-+
-             if (merge_idx == nb_merge_cand)
-                 return;
-             nb_merge_cand++;
-@@ -558,8 +554,6 @@ void ff_hevc_luma_mv_merge_mode(HEVCContext *s, int x0, int y0, int nPbW,
-     int nPbH2 = nPbH;
-     HEVCLocalContext *lc = &s->HEVClc;
- 
--    memset(mergecand_list, 0, MRG_MAX_NUM_CANDS * sizeof(*mergecand_list));
--
-     if (s->pps->log2_parallel_merge_level > 2 && nCS == 8) {
-         singleMCLFlag = 1;
-         x0            = lc->cu.x;
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0009-imc-fix-order-of-operations-in-coefficients-read.patch b/debian/patches/upstream/0009-imc-fix-order-of-operations-in-coefficients-read.patch
deleted file mode 100644
index 8c4859d..0000000
--- a/debian/patches/upstream/0009-imc-fix-order-of-operations-in-coefficients-read.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From e443165c323406d01da7e7930f042d265d01fb35 Mon Sep 17 00:00:00 2001
-From: Vittorio Giovara <vittorio.giovara at gmail.com>
-Date: Mon, 13 Oct 2014 15:42:28 +0100
-Subject: [PATCH 09/10] imc: fix order of operations in coefficients read
-
-Reported-by: Ruoyu <liangry at ucweb.com>
----
- libavcodec/imc.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/libavcodec/imc.c b/libavcodec/imc.c
-index 41ca8c8..500f564 100644
---- a/libavcodec/imc.c
-+++ b/libavcodec/imc.c
-@@ -873,14 +873,14 @@ static int imc_decode_block(AVCodecContext *avctx, IMCContext *q, int ch)
- 
-     flag = get_bits1(&q->gb);
-     if (stream_format_code & 0x1)
--        imc_decode_level_coefficients_raw(q, chctx->levlCoeffBuf,
--                                          chctx->flcoeffs1, chctx->flcoeffs2);
--    else if (stream_format_code & 0x1)
-         imc_read_level_coeffs_raw(q, stream_format_code, chctx->levlCoeffBuf);
-     else
-         imc_read_level_coeffs(q, stream_format_code, chctx->levlCoeffBuf);
- 
--    if (stream_format_code & 0x4)
-+    if (stream_format_code & 0x1)
-+        imc_decode_level_coefficients_raw(q, chctx->levlCoeffBuf,
-+                                          chctx->flcoeffs1, chctx->flcoeffs2);
-+    else if (stream_format_code & 0x4)
-         imc_decode_level_coefficients(q, chctx->levlCoeffBuf,
-                                       chctx->flcoeffs1, chctx->flcoeffs2);
-     else
--- 
-2.1.0
-
diff --git a/debian/patches/upstream/0010-resample-Avoid-off-by-1-errors-in-PTS-calcs.patch b/debian/patches/upstream/0010-resample-Avoid-off-by-1-errors-in-PTS-calcs.patch
deleted file mode 100644
index 335f719..0000000
--- a/debian/patches/upstream/0010-resample-Avoid-off-by-1-errors-in-PTS-calcs.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From ca8c62d187fdca13979379fb2ab172ed662aa2f8 Mon Sep 17 00:00:00 2001
-From: "Timothy B. Terriberry" <tterribe at xiph.org>
-Date: Mon, 13 Oct 2014 17:46:00 -0700
-Subject: [PATCH 10/10] resample: Avoid off-by-1 errors in PTS calcs.
-
-The rounding used in the PTS calculations in filter_frame() does
-not actually match the number of samples output by the resampler.
-This leads to off-by-1 errors in the timestamps indicating gaps and
-underruns, even when the input timestamps are all contiguous.
-
-Bug-Id: 753
-
-Signed-off-by: Anton Khirnov <anton at khirnov.net>
-(cherry picked from commit 6cbbf0592f4f3940aac7f687850d1b726a2ea836)
-Signed-off-by: Anton Khirnov <anton at khirnov.net>
----
- libavfilter/af_resample.c | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git a/libavfilter/af_resample.c b/libavfilter/af_resample.c
-index bc8fd8a..a59e6f8 100644
---- a/libavfilter/af_resample.c
-+++ b/libavfilter/af_resample.c
-@@ -42,6 +42,7 @@ typedef struct ResampleContext {
-     AVDictionary *options;
- 
-     int64_t next_pts;
-+    int64_t next_in_pts;
- 
-     /* set by filter_frame() to signal an output frame to request_frame() */
-     int got_output;
-@@ -154,6 +155,7 @@ static int config_output(AVFilterLink *outlink)
- 
-     outlink->time_base = (AVRational){ 1, outlink->sample_rate };
-     s->next_pts        = AV_NOPTS_VALUE;
-+    s->next_in_pts     = AV_NOPTS_VALUE;
- 
-     av_get_channel_layout_string(buf1, sizeof(buf1),
-                                  -1, inlink ->channel_layout);
-@@ -255,7 +257,12 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-             }
- 
-             out->sample_rate = outlink->sample_rate;
--            if (in->pts != AV_NOPTS_VALUE) {
-+            /* Only convert in->pts if there is a discontinuous jump.
-+               This ensures that out->pts tracks the number of samples actually
-+               output by the resampler in the absence of such a jump.
-+               Otherwise, the rounding in av_rescale_q() and av_rescale()
-+               causes off-by-1 errors. */
-+            if (in->pts != AV_NOPTS_VALUE && in->pts != s->next_in_pts) {
-                 out->pts = av_rescale_q(in->pts, inlink->time_base,
-                                             outlink->time_base) -
-                                av_rescale(delay, outlink->sample_rate,
-@@ -264,6 +271,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in)
-                 out->pts = s->next_pts;
- 
-             s->next_pts = out->pts + out->nb_samples;
-+            s->next_in_pts = in->pts + in->nb_samples;
- 
-             ret = ff_filter_frame(outlink, out);
-             s->got_output = 1;
--- 
-2.1.0
-

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list