From patchwork Wed Aug 9 00:00:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasi Inguva X-Patchwork-Id: 4662 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.46.211 with SMTP id u202csp223612vsu; Tue, 8 Aug 2017 17:01:32 -0700 (PDT) X-Received: by 10.28.54.214 with SMTP id y83mr3897234wmh.103.1502236892335; Tue, 08 Aug 2017 17:01:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1502236892; cv=none; d=google.com; s=arc-20160816; b=EgxkIxlVyOZIPuFAST32Bd0+Vy4NtGoWk+tcLxAjUHrk+7RHleagPeN3j+GVl3PgIt iJqdES4L98nSgzoy3nAzKF2scOzgVL2Yg2M/7LTbB6vYc++UeNRD+D4HBEL2VzxImDtx V/zdGTWzFrjQ/tRLCslcfDRIDbeQJzp4fAZ7haOha2HisFBIj7whUpUn3Q/Xvw8Mu2ra 4ts1LGV8uAO8TFiTE68XJqy1ZvPw0h/dTVnV1RgCAT5+7AQrxr3S/c6XRevLXhP9XReG u5Tlkq/xFTTY2FPc8U08lQ6qNgsSB1A0Y6nYqa5TrBFlOpBSkyLaP9GL58ENR68pjnu3 hLvg== 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:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=X1mY4zslld1dEGK/l5qitOHJ1Dlet5sGef0wIOHr9fs=; b=INjzSZk84Sf5EplwqMX1xNXcEUdSurUmi5Y3wuKRpt31nKcFYhyXUKWU5H4AXRQgKD bH3c/uXv//XsX4/ZdF9Yvjms7xCrLchYdLdWYtfHhFkKw8eMFCwin0nKNp4sKL5LEGe8 HmhdpuxhhehjlMZ4xkfmABHWEy3LfAkf8ss6cJ131QtXKifRrT6DK+geEzD+1dW+x88C mBS7MO3P+Pfp2KMhgyW1BtKRfzfoPAa59tejZGOkA1rRctYzSKiqJL4InOA30qkybyjp C/4Qho7/yb5AyEP+o7R9hfpatOT7aInBJNwvNYuZ8nvFKdaxOAOko595QtRI9tnpl5OD pyHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=gSwxM+sg; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 141si2069480wmi.90.2017.08.08.17.01.31; Tue, 08 Aug 2017 17:01:32 -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=@google.com header.s=20161025 header.b=gSwxM+sg; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CFB8A68830D; Wed, 9 Aug 2017 03:01:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f49.google.com (mail-pg0-f49.google.com [74.125.83.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8AB0568830D for ; Wed, 9 Aug 2017 03:01:18 +0300 (EEST) Received: by mail-pg0-f49.google.com with SMTP id l64so20844097pge.5 for ; Tue, 08 Aug 2017 17:01:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=k6Dr7Vr8E3OAcPMiqjlySqV4hUBSabgV/gJUTpa9Kus=; b=gSwxM+sgIVgMvo8jhAn8dbO2C8BXDYnkYjQE4V0DRuULeti/aSiXsQDg/zDvfnhLo2 pEy/VlSxPDTrkAqw9LNHLG03HElPwQlJ+vCSbPQ7PQiJFxQn+ium4eZ/3110CgMSLihF poCouEtVHr7x2kOXxJdBCgGxlfkIXVfm1xyN4mnT2AmON1odlqiq7W+cqHgp+2LfoQJc Pr//tPKd9dTXoNPudIfmEgxZa+U9zc7hNZGQEZazi+UMb922So+iB2B67ptjW1Y7Xzgl OQS2qCDuv/yFNPNLakUiVO8fK6ecE+DK32RRaI26UYuYrt5a9yD7QVGSBXIwhEdbdEBp GQ2Q== 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:in-reply-to :references; bh=k6Dr7Vr8E3OAcPMiqjlySqV4hUBSabgV/gJUTpa9Kus=; b=Lh4NqBQKJ6VbduBX+G7sA5TuCyMBZcLNj8x5Rp9yBfqtDCJeNv5DKPdteavu40qWUq cCP1qZWKq9IHYdBAt/s0bei2gzoLO9dyg3H1YK0b4JeREKxg8+dTkP70Ds4QJOmwlF7v UIluJwJAof1DZepDhSuwUljdNhREDVso8+oCzKPBS6EvXfQKaUt64lAOhYwwgCP32zYe Y2r72BZLzOGJn7s1uy41XnZAwu+f5wWxRZZL+kN4w2g7qdwBN44tOMn8xP/JAX28V0yZ bNTs39c+tZxtyJmF82MiSClELoNhjdR1fGwNjWqwhOYA+8LlK3sIbKRSg09xDUl7i5nV fR6Q== X-Gm-Message-State: AHYfb5hrylj5OlA7nLyryn5nRq+n7Ve0G8a40gVkQFolGD15k+az9O9G Lzu/F0WeBcykIL59qx1Q0g== X-Received: by 10.99.101.131 with SMTP id z125mr5703040pgb.297.1502236877956; Tue, 08 Aug 2017 17:01:17 -0700 (PDT) Received: from isasi.mtv.corp.google.com ([172.27.196.44]) by smtp.gmail.com with ESMTPSA id o1sm4332054pgq.10.2017.08.08.17.01.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 08 Aug 2017 17:01:17 -0700 (PDT) From: Sasi Inguva To: ffmpeg-devel@ffmpeg.org Date: Tue, 8 Aug 2017 17:00:19 -0700 Message-Id: <20170809000019.16408-1-isasi@google.com> X-Mailer: git-send-email 2.14.0.434.g98096fd7a8-goog In-Reply-To: References: Subject: [FFmpeg-devel] [PATCH] lavf/movenc.c: Set sgpd and sbgp atoms to represent decoder delay for AAC. 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: Sasi Inguva MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" According to https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFAppenG/QTFFAppenG.html and ISO-IEC-14496-12 Section 10.1.1.1 and 10.1.1.3 Signed-off-by: Sasi Inguva --- libavformat/movenc.c | 22 +++++++++++++++------- tests/ref/fate/adtstoasc_ticket3715 | 4 ++-- tests/ref/fate/copy-psp | 4 ++-- tests/ref/fate/movenc | 12 ++++++------ 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 0e5b45d150..5c53ab24e0 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -2208,14 +2208,16 @@ static int mov_preroll_write_stbl_atoms(AVIOContext *pb, MOVTrack *track) (AVRational){1, 1000}, (AVRational){1, 48000}); - if (track->entry) { - sgpd_entries = av_malloc_array(track->entry, sizeof(*sgpd_entries)); - if (!sgpd_entries) - return AVERROR(ENOMEM); - } + if (!track->entry) + return 0; - av_assert0(track->par->codec_id == AV_CODEC_ID_OPUS); + sgpd_entries = av_malloc_array(track->entry, sizeof(*sgpd_entries)); + if (!sgpd_entries) + return AVERROR(ENOMEM); + av_assert0(track->par->codec_id == AV_CODEC_ID_OPUS || track->par->codec_id == AV_CODEC_ID_AAC); + + if (track->par->codec_id == AV_CODEC_ID_OPUS) { for (i = 0; i < track->entry; i++) { int roll_samples_remaining = roll_samples; int distance = 0; @@ -2242,6 +2244,12 @@ static int mov_preroll_write_stbl_atoms(AVIOContext *pb, MOVTrack *track) sgpd_entries[entries].group_description_index = distance ? ++group : 0; } } + } else { + entries++; + sgpd_entries[entries].count = track->sample_count; + sgpd_entries[entries].roll_distance = 1; + sgpd_entries[entries].group_description_index = ++group; + } entries++; if (!group) { @@ -2304,7 +2312,7 @@ static int mov_write_stbl_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContext if (track->cenc.aes_ctr) { ff_mov_cenc_write_stbl_atoms(&track->cenc, pb); } - if (track->par->codec_id == AV_CODEC_ID_OPUS) { + if (track->par->codec_id == AV_CODEC_ID_OPUS || track->par->codec_id == AV_CODEC_ID_AAC) { mov_preroll_write_stbl_atoms(pb, track); } return update_size(pb, pos); diff --git a/tests/ref/fate/adtstoasc_ticket3715 b/tests/ref/fate/adtstoasc_ticket3715 index 949b565c2f..96795a2ca3 100644 --- a/tests/ref/fate/adtstoasc_ticket3715 +++ b/tests/ref/fate/adtstoasc_ticket3715 @@ -1,5 +1,5 @@ -ef8ce3cbd1d86113e7c991a816086068 *tests/data/fate/adtstoasc_ticket3715.mov -33270 tests/data/fate/adtstoasc_ticket3715.mov +0221e04333e6ac432fa42960502f0d5a *tests/data/fate/adtstoasc_ticket3715.mov +33324 tests/data/fate/adtstoasc_ticket3715.mov #extradata 0: 2, 0x00340022 #tb 0: 1/44100 #media_type 0: audio diff --git a/tests/ref/fate/copy-psp b/tests/ref/fate/copy-psp index 6603d3ff26..81eb172549 100644 --- a/tests/ref/fate/copy-psp +++ b/tests/ref/fate/copy-psp @@ -1,5 +1,5 @@ -6889223644fc560069c8591984175a62 *tests/data/fate/copy-psp.psp -2041379 tests/data/fate/copy-psp.psp +cada61453a2483ef8ba1fb82c8bbff25 *tests/data/fate/copy-psp.psp +2041433 tests/data/fate/copy-psp.psp #extradata 0: 51, 0xaf6d1012 #extradata 1: 2, 0x00b200a1 #tb 0: 1/90000 diff --git a/tests/ref/fate/movenc b/tests/ref/fate/movenc index 09e603aeb7..47bcf9d515 100644 --- a/tests/ref/fate/movenc +++ b/tests/ref/fate/movenc @@ -1,18 +1,18 @@ write_data len 36, time nopts, type header atom ftyp -write_data len 2335, time nopts, type header atom - +write_data len 2389, time nopts, type header atom - write_data len 788, time 1000000, type sync atom moof write_data len 110, time nopts, type trailer atom - -214242e9c7c93171d2f47f5b47776559 3269 non-empty-moov +17a37691eba8b858cf15e60aa9a7dbf7 3323 non-empty-moov write_data len 36, time nopts, type header atom ftyp -write_data len 2667, time nopts, type header atom - +write_data len 2721, time nopts, type header atom - write_data len 908, time 966667, type sync atom moof write_data len 110, time nopts, type trailer atom - -44467d568a3cc38d414fd8ed4b2a968f 3721 non-empty-moov-elst +0026ffe059c06c592021f972bf2c5e79 3775 non-empty-moov-elst write_data len 36, time nopts, type header atom ftyp -write_data len 2575, time nopts, type header atom - +write_data len 2629, time nopts, type header atom - write_data len 908, time 1000000, type sync atom moof write_data len 110, time nopts, type trailer atom - -de22b98a3885f9b4b83cdd48ff46aeb9 3629 non-empty-moov-no-elst +c184e168ac1e5bb3d9c70e580ab6179c 3683 non-empty-moov-no-elst write_data len 20, time nopts, type header atom ftyp write_data len 1171, time nopts, type header atom - write_data len 728, time 0, type sync atom moof