From patchwork Tue Feb 21 22:35:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vittorio Giovara X-Patchwork-Id: 2630 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.65.149 with SMTP id x21csp605115vsf; Tue, 21 Feb 2017 14:41:46 -0800 (PST) X-Received: by 10.223.153.208 with SMTP id y74mr10798409wrb.81.1487716906291; Tue, 21 Feb 2017 14:41:46 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l73si18002936wmd.112.2017.02.21.14.41.45; Tue, 21 Feb 2017 14:41:46 -0800 (PST) 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 sp=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 6AFA76882BC; Wed, 22 Feb 2017 00:41:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D378D6809EB for ; Wed, 22 Feb 2017 00:41:27 +0200 (EET) Received: by mail-qt0-f194.google.com with SMTP id h53so19456101qth.3 for ; Tue, 21 Feb 2017 14:41:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=MCaQXqd6BSNMGLB+btnosK4fY/6pAwwjmOV4chmQcVg=; b=fMzeRWxvRkeI+vq5AgbeIA0KLrMhp2YrbB3Cu1MUWuih+rW8nW64hSwCZy3o9Hifc2 Dp4tsoyce5kw4jd9RSSabuydrRL8MKXcEY+/sY63QOEjO1ytxxtcY3Nn1mfGVMz3yO09 xTy29CXQp6rWDjqVAF+r7RzwEGZhRUn6/DarmneOW0S3zmscHgvRsotOYwv8hevCES8v Z7fL4pDuYYyWwdcfTbJmggEgMmeJH97WAQRCAjhCpqQs5q95s+uLZzXXuDWOLyJYJYoc 7WE9Qe7o8XE6x8hDwu8DypKP0yfSIiOJl8m1DSPHqWgd9ffvLqoEMJfdB/y5GqGnn87j sGoA== 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:in-reply-to :references; bh=MCaQXqd6BSNMGLB+btnosK4fY/6pAwwjmOV4chmQcVg=; b=jLHRaISkUY9TY7kXW1YSmqjqDrZdgHoJpVgxWlNljWh8m1DvMjqRLEDbnyM7/karDs Dz9qqU+qxX+sabLMbF1O2TqhJTHBdXY5wUPa08E3Z8nn5nGcu280YJiDu1GB3Sv8lTjc kH0HmagOo9W2n7yU94JY9Km16tRKbw7wm5SETr+mlNH/j4B8XT58j/sDZocjJ/zS/9mk blzB80DGw/9ZsVfxtMHvTy4Z7aCWUD1Az0WltersfMNbNMMFU/AqoCBvsRF4D2zMeUkj 4XwbYc6XnQYgkRis9atvgP31MokYZfZaJGvCGof//Bw8vsAqs6SI1SkEjwGSs1dIg+x+ iW/w== X-Gm-Message-State: AMke39kozqcOITZs0DhplEuMo80MtabkjafcaC60fg5hdNG9e0Gf50KxW/ideqtvRx3sdA== X-Received: by 10.237.62.176 with SMTP id n45mr4637419qtf.39.1487716556571; Tue, 21 Feb 2017 14:35:56 -0800 (PST) Received: from vimacbookpro.vimeows.com (nyv-exweb.iac.com. [216.112.252.10]) by smtp.gmail.com with ESMTPSA id t34sm1959074qtc.3.2017.02.21.14.35.55 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 21 Feb 2017 14:35:55 -0800 (PST) From: Vittorio Giovara To: ffmpeg-devel@ffmpeg.org Date: Tue, 21 Feb 2017 17:35:52 -0500 Message-Id: <20170221223553.65520-2-vittorio.giovara@gmail.com> X-Mailer: git-send-email 2.10.0 In-Reply-To: <20170221223553.65520-1-vittorio.giovara@gmail.com> References: <20170221223553.65520-1-vittorio.giovara@gmail.com> Subject: [FFmpeg-devel] [PATCHv3 2/3] mov: Export bounds and padding from spherical metadata 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" Update the fate test as needed. --- libavformat/mov.c | 28 +++++++++++++++++++++++++++- tests/ref/fate/mov-spherical-mono | 6 +++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 7b0bbcc..d798336 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -4637,6 +4637,8 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom) MOVStreamContext *sc; int size, version; int32_t yaw, pitch, roll; + size_t l, t, r, b; + size_t padding = 0; uint32_t tag; enum AVSphericalProjection projection; @@ -4716,9 +4718,25 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom) switch (tag) { case MKTAG('c','b','m','p'): projection = AV_SPHERICAL_CUBEMAP; + padding = avio_rb32(pb); break; case MKTAG('e','q','u','i'): - projection = AV_SPHERICAL_EQUIRECTANGULAR; + t = avio_rb32(pb); + b = avio_rb32(pb); + l = avio_rb32(pb); + r = avio_rb32(pb); + + if (b >= UINT_MAX - t || r >= UINT_MAX - l) { + av_log(c->fc, AV_LOG_ERROR, + "Invalid bounding rectangle coordinates " + "%zu,%zu,%zu,%zu\n", l, t, r, b); + return AVERROR_INVALIDDATA; + } + + if (l || t || r || b) + projection = AV_SPHERICAL_EQUIRECTANGULAR_TILE; + else + projection = AV_SPHERICAL_EQUIRECTANGULAR; break; default: av_log(c->fc, AV_LOG_ERROR, "Unknown projection type\n"); @@ -4735,6 +4753,14 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom) sc->spherical->pitch = pitch; sc->spherical->roll = roll; + sc->spherical->padding = padding; + + if (projection == AV_SPHERICAL_EQUIRECTANGULAR_TILE) { + sc->spherical->bound_left = l; + sc->spherical->bound_top = t; + sc->spherical->bound_right = r; + sc->spherical->bound_bottom = b; + } return 0; } diff --git a/tests/ref/fate/mov-spherical-mono b/tests/ref/fate/mov-spherical-mono index 8048aff..a70d879 100644 --- a/tests/ref/fate/mov-spherical-mono +++ b/tests/ref/fate/mov-spherical-mono @@ -8,7 +8,11 @@ inverted=0 [SIDE_DATA] side_data_type=Spherical Mapping side_data_size=56 -projection=equirectangular +projection=tiled equirectangular +bound_left=148 +bound_top=73 +bound_right=147 +bound_bottom=72 yaw=45 pitch=30 roll=15