From patchwork Sat Sep 10 01:06:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rodger Combs X-Patchwork-Id: 502 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.134 with SMTP id o128csp582216vsd; Fri, 9 Sep 2016 18:07:00 -0700 (PDT) X-Received: by 10.28.206.197 with SMTP id e188mr758996wmg.65.1473469620511; Fri, 09 Sep 2016 18:07:00 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id jm7si5319427wjb.93.2016.09.09.18.06.56; Fri, 09 Sep 2016 18:07:00 -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; 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 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 9AE78689E2A; Sat, 10 Sep 2016 04:06:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi0-f66.google.com (mail-oi0-f66.google.com [209.85.218.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A96D1689DEE for ; Sat, 10 Sep 2016 04:06:36 +0300 (EEST) Received: by mail-oi0-f66.google.com with SMTP id a144so4662160oii.1 for ; Fri, 09 Sep 2016 18:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:subject:date:message-id; bh=XTJUDpKXkdmfEARQYPMY3WSdeDkmFEDiarC9HDgWqNQ=; b=CFCR/b8sPd4vb+U98VCcBo2cY6f8m+pYFugWXYKr1n5cChvu209uePjbw7oaqlUMHz IswAERfsAw0+rS421M1cnytaCO/pATEm/DlrwHUhiNEIHh38WIdYMNevfcFkNuY5IW5W OQlrrnvlOkTtLtqjNX+WwT5aULzCcmIM0k5P8F7Y2mmPl5tYsyHbjAuIhgFRTf1s3QRB b4kbTqX9QWXOFmrwcmTW1xtzBplDz/EUaeQr5P7quvoU9Qx+RjOjOj9NUVZqglCJO7Eu 83jFHUJl9Grx7eMKc+Pn3Zea66g8aJ/+YuYtgNo46p/p+rYjROVZZcfGsKqH4ZiO/hzi jtYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id; bh=XTJUDpKXkdmfEARQYPMY3WSdeDkmFEDiarC9HDgWqNQ=; b=UYkX3DAxSC3/Aq/PNGcN2mz4z6cw92zTKMlq55dBXP6w8j7+KrGgTlvsNSd0yATV2F MfjEaDkvtiu6I8NiBEZUOGuWem+TLraU/3nDH0BmuoPMKlk3W/PTMMPBLHppKtGXgOJr UABXC0K9BaX2fgzNPT67DOjatlv9x+yj9mSpFlNiy0RB/S+5KSizmJB8JBxzn1UeKC4a /QEi5BW7MddtfEq+iUuhXE2oT89bWIsXTFWtgs9566A+bLzYu1NShHRdaa6+JfenyzG8 axX5XHpG2/OK53p/BT0qe1coXXtCz6H01iwW9b9b4zfECrocaQhp3+eOuhh2lhYxoH+8 bRzw== X-Gm-Message-State: AE9vXwMsosp9yvt4xfMJQ9uP8EEj4v2sTKg+TA2C0UH4iaIzQLyTMg63zKZlxGTPmFjVyA== X-Received: by 10.157.4.200 with SMTP id 66mr8348766otm.171.1473469605736; Fri, 09 Sep 2016 18:06:45 -0700 (PDT) Received: from Rodgers-MacBook-Pro.local.net (c-73-209-137-129.hsd1.il.comcast.net. [73.209.137.129]) by smtp.gmail.com with ESMTPSA id 69sm3125533itf.6.2016.09.09.18.06.44 for (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 09 Sep 2016 18:06:44 -0700 (PDT) From: Rodger Combs To: ffmpeg-devel@ffmpeg.org Date: Fri, 9 Sep 2016 20:06:39 -0500 Message-Id: <20160910010640.68408-1-rodger.combs@gmail.com> X-Mailer: git-send-email 2.10.0 Subject: [FFmpeg-devel] [PATCH 1/2] lavf/mov: fix parsing QuickTime meta after the first track 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" I'm not entirely sure why found_hdlr_mdta existed to begin with, so cc-ing Tinglin Liu (who originally wrote the patch) and Derek Buitenhuis (who signed off on it) hoping for some background. If these checks actually do have a purpose, then the `type == MKTAG('m','d','t','a')` check should be moved to before the `c->fc->nb_streams < 1` check instead of inside it. --- libavformat/isom.h | 1 - libavformat/mov.c | 10 +++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/libavformat/isom.h b/libavformat/isom.h index 2246fed..6b6f678 100644 --- a/libavformat/isom.h +++ b/libavformat/isom.h @@ -198,7 +198,6 @@ typedef struct MOVContext { int64_t duration; ///< duration of the longest track int found_moov; ///< 'moov' atom has been found int found_mdat; ///< 'mdat' atom has been found - int found_hdlr_mdta; ///< 'hdlr' atom with type 'mdta' has been found int trak_index; ///< Index of the current 'trak' char **meta_keys; unsigned meta_keys_count; diff --git a/libavformat/mov.c b/libavformat/mov.c index 6e80b93..54530e3 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -381,7 +381,7 @@ retry: av_log(c->fc, AV_LOG_ERROR, "Error parsing cover art.\n"); } return ret; - } else if (!key && c->found_hdlr_mdta && c->meta_keys) { + } else if (!key && c->meta_keys) { uint32_t index = AV_RB32(&atom.type); if (index < c->meta_keys_count) { key = c->meta_keys[index]; @@ -694,12 +694,8 @@ static int mov_read_hdlr(MOVContext *c, AVIOContext *pb, MOVAtom atom) av_log(c->fc, AV_LOG_TRACE, "ctype= %.4s (0x%08x)\n", (char*)&ctype, ctype); av_log(c->fc, AV_LOG_TRACE, "stype= %.4s\n", (char*)&type); - if (c->trak_index < 0) { // meta not inside a trak - if (type == MKTAG('m','d','t','a')) { - c->found_hdlr_mdta = 1; - } + if (c->fc->nb_streams < 1) // meta before first trak return 0; - } st = c->fc->streams[c->fc->nb_streams-1]; @@ -4505,7 +4501,7 @@ static int mov_read_default(MOVContext *c, AVIOContext *pb, MOVAtom atom) // Supports parsing the QuickTime Metadata Keys. // https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/Metadata/Metadata.html - if (!parse && c->found_hdlr_mdta && + if (!parse && atom.type == MKTAG('m','e','t','a') && a.type == MKTAG('k','e','y','s')) { parse = mov_read_keys;