From patchwork Fri Mar 30 16:46:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 8248 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp3086139jad; Fri, 30 Mar 2018 09:46:58 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/BN8vyMxicxPgKkBvV/Qtf5kmXdX6F6Vo2OT2N630d/DD5ifsbDtyEVWuQ0JKrpxw3VFT+ X-Received: by 10.223.226.15 with SMTP id j15mr9787897wri.235.1522428417945; Fri, 30 Mar 2018 09:46:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522428417; cv=none; d=google.com; s=arc-20160816; b=vmUnaVW+WbQlqvW2NjaHBOCvNDgcIwY+Bkn34ODYOUnfo8btjkYHGAcbmORCDLCipH 6dWe2/5fOmy6MHO88XrkOTvgix5LNa38yzJjgkMtPYCcSzJlCINJapShSLNjkBZCId/Z vnqr3hZhwTij+FU4ja5DDI8+JiY+x6f8adlTZGf26wXR9fs0DiIknaGkoMKPVlmtcDJJ GkNwqH7lg7Cx2OQeKvVg0xgUaObiZ7hUQ/b1kWIBmnBEPBXH3dMzFVyAC840PaHp6m83 6iTPrcWxfMLdAID5c32Eo71rBJb2l/nA8AhiDJX6zgMw4M8e0wvxqxujcIb9wY4DghV5 dfOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=EW2rWeIteXWcdFl/cs1C3Qraf/wYyhJH4V4Z+3vaCas=; b=FrZvfmbwl+MI00U6jSHDfMT8ChfD4DJOQC5j67jja2v2ekiT+XOkdi+U3mGqDETsUR WX7oYhKTnx64lm72YHem86Mg50LquNT/7zZ6SIPm0+sdMCPetUb02hnXnHm6STrR+ed1 6sulDx+w4emNZV13I5R7x7pFWGIRNVha4nLjLFRHLK1YoNoXgCJwXXp+PeF2tq1rzAAV EdF21fve+K1Cp/NEqQ3WFxTrxT7xyqF4M/VTZFGaFhyv5dYDohQcxqAVZ9N9iyON1Zuj JlBGMF3+W3NNYNviWE1o2JEhP63Q9IF17907YphmsKt79Z4HApjSVjXdKUHxsesK8qFT HHNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=SrKcDdPn; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u82si837613wmd.13.2018.03.30.09.46.56; Fri, 30 Mar 2018 09:46:57 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=SrKcDdPn; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 474F3689908; Fri, 30 Mar 2018 19:46:36 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C07766882E5 for ; Fri, 30 Mar 2018 19:46:30 +0300 (EEST) Received: by mail-wm0-f68.google.com with SMTP id b127so15598428wmf.5 for ; Fri, 30 Mar 2018 09:46:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=KRq1ar8O/eW13rJI+20EwQ7LJinJwvSbuv0q36NwoQc=; b=SrKcDdPnKfEWOv5nZqY1s/sQ1j9LeZRrxzawDIAilauxOzo4sXta4IvUH+LE90EJ68 Mw0QroRzfRfnD9+mSLCp+xDDF2XZhyIQrcSb/d7i1pjSMZfxnTuaKhTsvXUabS2i/6gY lRJQXrQ8HFbSTlL8jaCNYY5/DC9mdcGnemPIRHyP0TVtjS5PG19sHfWxuS9p+Kn7dHKf ercHh8F5IBv2FwEm3SCUtsQd+FNlFdFMnM3Xde1lpeXBd4I6CYh57B7zW+Z2nnTRP6Gw y4B1zMqZdkwNZva7D8IZtM+yLC7/EeY6f0Zwds16U4Dir5giJQuBa4hRc6UgkR0wspgu Zedw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=KRq1ar8O/eW13rJI+20EwQ7LJinJwvSbuv0q36NwoQc=; b=mmlF0nACtufvitBfSvmzT3IzvcsiJOLIDIFD+g/a7TXB6ykD3PaKeQpPl4D2tk3qvf 6c9dX2Iqow+K7xwbCGDe7cewKSQ9SdQauoTtRH6iaBBjGbQNEfMu3f7yN3RoFj3y12Do QMg0dUaW4Ix8kcrnO2MTCGccpHCr22Ui5tND+vpEAEut0Kx/VnAXoHeGgfQs0akwg9IF IPy+KPIPT/r1YQnlv8rDsPhbx+Ng/gxPptwn3pr45fh/KJ9WXIXjQrk16C+IFNXarjJe BJQnmrFxqtuhLMPi/WkXIEYowr1JKGJxn4qspFmxXNpZ9H3jws5B5dcpIQIVqQmB5f/n PadA== X-Gm-Message-State: ALQs6tDSQtZQJ3ruuNtRM9w0zyTRXnqmXuOZtcYSGoTOHhWEQVrUAIxA aL8PQ6P6vc2SoLKSnNrkNdNjYA== X-Received: by 10.28.218.1 with SMTP id r1mr2585747wmg.156.1522428409226; Fri, 30 Mar 2018 09:46:49 -0700 (PDT) Received: from localhost.localdomain ([94.250.174.60]) by smtp.gmail.com with ESMTPSA id q9sm7071347wrf.11.2018.03.30.09.46.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Mar 2018 09:46:48 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Mar 2018 18:46:06 +0200 Message-Id: <20180330164606.29914-1-onemda@gmail.com> X-Mailer: git-send-email 2.11.0 Subject: [FFmpeg-devel] [PATCH] avformat/mpeg: fix detection and demuxing of raw AC3 in mpegps 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Fixes #4889. Signed-off-by: Paul B Mahol --- libavformat/mpeg.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c index 69d4a9d8ac..f6e3439e68 100644 --- a/libavformat/mpeg.c +++ b/libavformat/mpeg.c @@ -128,6 +128,7 @@ typedef struct MpegDemuxContext { int sofdec; int dvd; int imkh_cctv; + int raw_ac3; #if CONFIG_VOBSUB_DEMUXER AVFormatContext *sub_ctx; FFDemuxSubtitlesQueue q[32]; @@ -443,7 +444,15 @@ redo: if (startcode == PRIVATE_STREAM_1) { startcode = avio_r8(s->pb); - len--; + if (avio_r8(s->pb) == 0x77 && startcode == 0x0b) { + startcode = 0x80; + m->raw_ac3 = 1; + avio_skip(s->pb, -2); + } else { + m->raw_ac3 = 0; + avio_skip(s->pb, -1); + len--; + } } if (len < 0) goto error_redo; @@ -486,14 +495,16 @@ redo: if (len < 4) goto skip; - /* audio: skip header */ - avio_r8(s->pb); - lpcm_header_len = avio_rb16(s->pb); - len -= 3; - if (startcode >= 0xb0 && startcode <= 0xbf) { - /* MLP/TrueHD audio has a 4-byte header */ + if (!m->raw_ac3) { + /* audio: skip header */ avio_r8(s->pb); - len--; + lpcm_header_len = avio_rb16(s->pb); + len -= 3; + if (startcode >= 0xb0 && startcode <= 0xbf) { + /* MLP/TrueHD audio has a 4-byte header */ + avio_r8(s->pb); + len--; + } } }