From patchwork Fri Jun 21 16:51:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 13666 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 4ADF84499D8 for ; Fri, 21 Jun 2019 20:00:42 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1EEEB68A905; Fri, 21 Jun 2019 20:00:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B947D68A103 for ; Fri, 21 Jun 2019 20:00:35 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id p11so7259663wre.7 for ; Fri, 21 Jun 2019 10:00:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5v7ENadquLG+PwWwEYk8AlfxA0miZltwA6T/a0TOlKQ=; b=FuXLqqdecfstFIdw6zMwF2bILKOlvqYSDVEGm7fR5+uFLnFvVCQ2tb1+C6TqRXKLmH Snhnx0QINpeqcvc47QJoIF8Jei4gtQV4+MQokePWvdW8G8NTpH/hXQQ/Cpt7Ra9dRVQZ P9TZJXP3kx7Qxb06n+v76I71uK2Ii199+RFEM/MtrrTPwZYE4aQbyT3Y1Ymxosg0Y/tF 91+phrGIs5rpDJXv+q+yrB+YRcF/rWZO1BJC4EpvHPZpElzbzSJV5IAFhykvIfidu3Mm dYAZ4AixGUzL3dIbWm0ovNAWUojrxjAxULbj7B8xHWEXGE/lKbLfW85N3X3pnIVgSthz 8+Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=5v7ENadquLG+PwWwEYk8AlfxA0miZltwA6T/a0TOlKQ=; b=CZQRQVG28X74+E+iWosaILOGzvgerApcbdiEOQ0h9eYgXGaaiiLKz2/jusPnHQIaMQ 0dZg+W0ZQVnDV9b6lZbuH+kASHgFomkAkISyVJ6K/NVncsSveO930uAGJZth+nN4u2FF UL0qFenVACPitquFNYwIrRuTtu+33xPr4hamL/DqbCQ6nMvR+xozVTuLTeQatRdI7ePU QEeyB7rHdkiI/1NAI+ioHpqV5rVqsUgmn65Gwes8FpyBRkguBlKCbIonHD6CocTMI5mu +gDPsXdRH+/mN1sbWE+1GB+DFsYr3/35Z2Jg8X5iB75BAfu7/1YBLZqE1Qyo9QLXki3L xs+A== X-Gm-Message-State: APjAAAV8qEXPT+82+ofO7lOgCK5yE0Bvg6Z3uG8cg3BmqJsAazefLuN6 2fXDIS0kIZvKyWykpKHXXdrOu5+9 X-Google-Smtp-Source: APXvYqzIx4PK/kshXKke6JeJqglvjkcuRTJA2XChr/eCGhACLo1plQSN/aYmMPSPJ3f5/cr/XBoIgQ== X-Received: by 2002:a05:6000:106:: with SMTP id o6mr20729124wrx.4.1561135991787; Fri, 21 Jun 2019 09:53:11 -0700 (PDT) Received: from localhost.localdomain (ipbcc063db.dynamic.kabel-deutschland.de. [188.192.99.219]) by smtp.gmail.com with ESMTPSA id x8sm2835738wmc.5.2019.06.21.09.53.10 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 21 Jun 2019 09:53:11 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 21 Jun 2019 18:51:54 +0200 Message-Id: <20190621165154.60441-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] libavformat/mux: Fix audio_preload X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Commit 31f9032b added the audio_preload feature; its goal is to interleave audio earlier than the rest. Unfortunately, it has never ever worked, because the check for whether a packet should be interleaved before or after another packet was completely wrong: When audio_preload vanishes, interleave_compare_dts returns 1 if the new packet should be interleaved earlier than the packet it is compared with and that is what the rest of the code expects. But the codepath used when audio_preload is set does the opposite. Signed-off-by: Andreas Rheinhardt --- libavformat/mux.c | 7 +++---- libavformat/version.h | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/libavformat/mux.c b/libavformat/mux.c index 83fe1de78f..e954c0326b 100644 --- a/libavformat/mux.c +++ b/libavformat/mux.c @@ -1005,11 +1005,10 @@ static int interleave_compare_dts(AVFormatContext *s, AVPacket *next, int64_t ts = av_rescale_q(pkt ->dts, st ->time_base, AV_TIME_BASE_Q) - s->audio_preload*(st ->codecpar->codec_type == AVMEDIA_TYPE_AUDIO); int64_t ts2= av_rescale_q(next->dts, st2->time_base, AV_TIME_BASE_Q) - s->audio_preload*(st2->codecpar->codec_type == AVMEDIA_TYPE_AUDIO); if (ts == ts2) { - ts= ( pkt ->dts* st->time_base.num*AV_TIME_BASE - s->audio_preload*(int64_t)(st ->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)* st->time_base.den)*st2->time_base.den - -( next->dts*st2->time_base.num*AV_TIME_BASE - s->audio_preload*(int64_t)(st2->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)*st2->time_base.den)* st->time_base.den; - ts2=0; + ts = (pkt ->dts* st->time_base.num*AV_TIME_BASE - s->audio_preload*(int64_t)(st ->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)* st->time_base.den)*st2->time_base.den; + ts2 = (next->dts*st2->time_base.num*AV_TIME_BASE - s->audio_preload*(int64_t)(st2->codecpar->codec_type == AVMEDIA_TYPE_AUDIO)*st2->time_base.den)* st->time_base.den; } - comp= (ts>ts2) - (ts ts) - (ts2 < ts); } if (comp == 0) diff --git a/libavformat/version.h b/libavformat/version.h index 52dd95f5c6..39b00f62ab 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -33,7 +33,7 @@ // Also please add any ticket numbers that you believe might be affected here #define LIBAVFORMAT_VERSION_MAJOR 58 #define LIBAVFORMAT_VERSION_MINOR 28 -#define LIBAVFORMAT_VERSION_MICRO 100 +#define LIBAVFORMAT_VERSION_MICRO 101 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ LIBAVFORMAT_VERSION_MINOR, \