From patchwork Tue Oct 1 09:35:35 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 15435 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 A0DB0448E2D for ; Tue, 1 Oct 2019 12:41:41 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7F6C46880C2; Tue, 1 Oct 2019 12:41:41 +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 EAC44687F7F for ; Tue, 1 Oct 2019 12:41:34 +0300 (EEST) Received: by mail-wr1-f67.google.com with SMTP id h7so14634374wrw.8 for ; Tue, 01 Oct 2019 02:41:34 -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=B/UBkSjuMgBQtRN2XnCA+T/vJ7Skf6oQ5DRlYxNC8Tc=; b=jTE00HSRaCjdiSnR2nxZezM6r80YhBz1IkIxzqRlUwOGjpPlB6Tz4xgSh8W/1sYD3G F5uR1KthlJFVSRDp98YUY7gXkLN10HozxS2wfSfl362ZETPHR8uyPNdQc2ucWV5dvL0H M2h8W5n7aAxq4+Z65IERp8srHOXrs9Kg2pXwEe+82q8Y/VnJui56oIU1dah5JJwKj6Si Us3PV8mEemmKNdMyjW8Lroo8/tkD/Akleqnp0wXzPRWUEruD0rrGctzFWbJPMg2BhXSr TPAfMk8sMWCETuAS8vv/mQK5cl0jkYCHlo9bAiKDsCKfLwo16O+pGzQ+FS9mGLlcnnMc FozA== 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=B/UBkSjuMgBQtRN2XnCA+T/vJ7Skf6oQ5DRlYxNC8Tc=; b=lME/S45xjM2Vqss1HhBI8bHjSidr+pxTs1sJCIuoAmguyhfd8BTZYYj/k/lbwfdjUJ iH4qXMxiqQ9HDxvyX9d/W5khDZ/SRo6AbTpAxHpiImdxESS8HCajl1n3U5DyybRBd/R6 K8nst4kN6LHsj20QnKQkO2T7O/Mz3eccjj0Tml8W7bXaWFZ5qK4s52DoxMgnZFZPNmNu 532La1ZErrTuRNclirEsPcbtDpv3ufiC95xCRq+DYSZh2w7dArp69HzNC19S0gPHMXTg s+5Ti39c8jjij0SvaZH1bAAFjt26tOo4z6/P9ZanpqyftlMQE1HWoNtI9QRPLrrvqBLU Du3Q== X-Gm-Message-State: APjAAAWGLOBPersKIdmwSWAie7CBPGeJOYfrJw9nSgQHQxxXn6g4UHXG cPtFgo/NbwO8gQr4P1yPXEfDyB0x X-Google-Smtp-Source: APXvYqyvd0cWvMSLbPITzxgqzv9euTMoqkGfd7ylZs/+4yZvOIVJqB3uurSlmjENHpEhh+TFz/UCOw== X-Received: by 2002:a05:6000:110f:: with SMTP id z15mr16088430wrw.328.1569922543374; Tue, 01 Oct 2019 02:35:43 -0700 (PDT) Received: from localhost.localdomain ([109.227.36.151]) by smtp.gmail.com with ESMTPSA id c8sm11478745wrr.49.2019.10.01.02.35.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 01 Oct 2019 02:35:42 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Oct 2019 11:35:35 +0200 Message-Id: <20191001093535.25144-1-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH] avformat/mpeg: better fix for MLP versus PCM-DVD misdetection 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" Signed-off-by: Paul B Mahol --- libavformat/mpeg.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libavformat/mpeg.c b/libavformat/mpeg.c index 3205f209e6..6f132aae05 100644 --- a/libavformat/mpeg.c +++ b/libavformat/mpeg.c @@ -490,6 +490,7 @@ static int mpegps_read_packet(AVFormatContext *s, AVStream *st; int len, startcode, i, es_type, ret; int lpcm_header_len = -1; //Init to suppress warning + int pcm_dvd = 0; int request_probe= 0; enum AVCodecID codec_id = AV_CODEC_ID_NONE; enum AVMediaType type; @@ -513,6 +514,12 @@ redo: /* MLP/TrueHD audio has a 4-byte header */ avio_r8(s->pb); len--; + } else if (startcode >= 0xa0 && startcode <= 0xaf) { + ret = ffio_ensure_seekback(s->pb, 3); + if (ret < 0) + return ret; + pcm_dvd = (avio_rb24(s->pb) & 0xFF) == 0x80; + avio_skip(s->pb, -3); } } } @@ -591,7 +598,7 @@ redo: codec_id = AV_CODEC_ID_DTS; } else if (startcode >= 0xa0 && startcode <= 0xaf) { type = AVMEDIA_TYPE_AUDIO; - if (lpcm_header_len >= 6 && startcode == 0xa1) { + if (!pcm_dvd) { codec_id = AV_CODEC_ID_MLP; } else { codec_id = AV_CODEC_ID_PCM_DVD;