From patchwork Thu Sep 21 13:57:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Lhomme X-Patchwork-Id: 5221 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp1976510jaa; Thu, 21 Sep 2017 06:57:16 -0700 (PDT) X-Received: by 10.223.176.220 with SMTP id j28mr2187592wra.167.1506002236591; Thu, 21 Sep 2017 06:57:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506002236; cv=none; d=google.com; s=arc-20160816; b=uuV4Uo1Jm5nxS5nC1X1n4gAYK2MEpt49jveiNdbOwed87vD+rcAbmebglF3xc9Rh+X FamuYY67l8jizWTOAeKYlfiL0P3tGCwRJd1DPIgV3olYdI7FPFKnJ+GYYcOlg1Tf/xLn Tr0RYE27maU+Ckmax/RCRvs46C3/WoF37N/cZCFlbeMSkI1mwE8fIlUHAn4rVqmnUHvk d2ifzqyow7RradeK/zjljXGsLbEawFujNom4wnAp52adlvWAu9ZtflxJRgKBjq8vZwb7 L+QA4CIPgcv2iN15UCVeTesZLVCWmd0VjzK1hhlLiraBFAPzDwKPq5AP48wOy1yM8W5L ZAGQ== 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:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=Xvsb6hHcG5sXpi+gmUxSSwCYan4Uza6jEJcQiVv81JY=; b=vn9ew57B3u3j+r+QOTtQ3gkH2h/EH2nJlXNZPDSuuFtUO4E9qmH43Cz1LDmK5hlZoS 2rF4ojKRhX25L0PntIJMUsafFS8H1WRluLcIt5+HCOiqccliuKoFm96L4wfnD3VHwFL/ SYYM0zzPD3U5Vl53VUIzG6FNHBpznfKrc+fE4ih9riMjAVRNu/02FK22Z4636UqpKmLm hoE7baUlenIRlvHWsAErBVrFttcok/qssHQMeGh5wxkc0VvsI3FgL2BWcNwvstQcb3wb zWtL0fckxFfsarzIU4pt5DauwTFp77Z4dGBj/vaVRPqyA554tULW3NBW0bVK1UqT6WPY O6og== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=mO9w/ive; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e9si1352187wmd.35.2017.09.21.06.57.16; Thu, 21 Sep 2017 06:57:16 -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=mO9w/ive; 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 EA31C6883E4; Thu, 21 Sep 2017 16:57:03 +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 AA199680420 for ; Thu, 21 Sep 2017 16:56:57 +0300 (EEST) Received: by mail-wm0-f68.google.com with SMTP id i131so5310561wma.1 for ; Thu, 21 Sep 2017 06:57:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=7H3qRSZDFyurblnFyq7Hx9rV93xTXDV8mhcT/WS+/UE=; b=mO9w/ivenwsjbqN0DI6wmIxKUmwQbOQuh+5vKNv2NvwqAKuYHA1XlTxIk7ErZeHBq7 s339DFL1weYhMv+dhSMYaEGIE7Uz8rp9B8+BrGHsLH9klV0W5mFmYUGYB7CRdHY+i98a yr96kFXptlckocqpJR04OToXHfe9+ldwVJ6E7h+8wE65ls3OI3jgTSDqgQH1fAogxV8l 7ZaZX7mLROgFgOHb8zSKQ9NP6guAMfVBKyYHO4vyq4tCmvHuSpc3TP5iTa99+IEnSOXh tdEvG19bqZQl5puaH+Wt4clKRCzGlJGM/uWdYI336aq+oqP69dzegQy0oGcdLYDfJrb2 /NQQ== 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; bh=7H3qRSZDFyurblnFyq7Hx9rV93xTXDV8mhcT/WS+/UE=; b=l6DYwxuZCwywTqncahlfNHbtikjwICVqYqgeMN+Zn3Ex3WlssPZcBji4JwyigsI7EN 0bvIpQs1vIOx7ymF1lU25oeIbw+tU1wawmALQGOSLxwHfnK6tpSO+EoYsD4JVTtlFNWL sH1kN00TQ1wkg6eDPfMTkpLKLDlnFU42MBeqnkff4JmM1TODPVaFQLWpwMxvKzUXyrJ5 tptMbCLqIUy29DtqKcBozvKHFhjbwSLB9W+5IlSgVdGoYRGYNWLwLm9MpeRz/9okFcG7 w0UREqw8nbwgDb8CoeS1P5gabiZ2x4kaqBkEQ7jjawwzOUyIq+DlBHVoK52v9Me7jzY/ /d3g== X-Gm-Message-State: AHPjjUiLo6VVb/XoVAwfPhLZ1pgbgMd0MTLQqajn7UZ8R9zL8KEcwWL9 7e6QdpIGqmZxAxjdhSEluRkEA8c= X-Google-Smtp-Source: AOwi7QBmCKitxA2RakA/wIQAwXSxLsPT077jL+lHPG8OIxRhl/Pu4uOa5Uc0PpRe93cJaR0FM5Jx8g== X-Received: by 10.28.9.130 with SMTP id 124mr998580wmj.65.1506002226916; Thu, 21 Sep 2017 06:57:06 -0700 (PDT) Received: from localhost.localdomain (2a01cb0c000ea9000095b705df317edf.ipv6.abo.wanadoo.fr. [2a01:cb0c:e:a900:95:b705:df31:7edf]) by smtp.gmail.com with ESMTPSA id h190sm1758577wmd.39.2017.09.21.06.57.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 21 Sep 2017 06:57:06 -0700 (PDT) From: Steve Lhomme To: ffmpeg-devel@ffmpeg.org Date: Thu, 21 Sep 2017 15:57:00 +0200 Message-Id: <20170921135700.9168-1-robux4@gmail.com> X-Mailer: git-send-email 2.12.1 Subject: [FFmpeg-devel] [PATCH] h264_sei: handle stereoscopy frame sequential flags 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: "Mohammed \(Shaan\) Huzaifa Danish" MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: "Mohammed (Shaan) Huzaifa Danish" --- libavcodec/h264_sei.c | 6 ++++-- libavcodec/h264_sei.h | 1 + libavcodec/h264_slice.c | 2 ++ libavutil/stereo3d.h | 4 ++++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/libavcodec/h264_sei.c b/libavcodec/h264_sei.c index 332ae50860..d28a9b61f6 100644 --- a/libavcodec/h264_sei.c +++ b/libavcodec/h264_sei.c @@ -326,9 +326,11 @@ static int decode_frame_packing_arrangement(H264SEIFramePacking *h, h->content_interpretation_type = get_bits(gb, 6); // the following skips: spatial_flipping_flag, frame0_flipped_flag, - // field_views_flag, current_frame_is_frame0_flag, + // field_views_flag + skip_bits(gb, 3); + h->current_frame_is_frame0_flag = get_bits1(gb); // frame0_self_contained_flag, frame1_self_contained_flag - skip_bits(gb, 6); + skip_bits(gb, 2); if (!h->quincunx_sampling_flag && h->frame_packing_arrangement_type != 5) skip_bits(gb, 16); // frame[01]_grid_position_[xy] diff --git a/libavcodec/h264_sei.h b/libavcodec/h264_sei.h index a53f1899fa..817b4eaae9 100644 --- a/libavcodec/h264_sei.h +++ b/libavcodec/h264_sei.h @@ -125,6 +125,7 @@ typedef struct H264SEIFramePacking { int frame_packing_arrangement_repetition_period; int content_interpretation_type; int quincunx_sampling_flag; + int current_frame_is_frame0_flag; } H264SEIFramePacking; typedef struct H264SEIDisplayOrientation { diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 2577edd8a6..2de9abe650 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -1246,6 +1246,8 @@ static int h264_export_frame_props(H264Context *h) if (fp->content_interpretation_type == 2) stereo->flags = AV_STEREO3D_FLAG_INVERT; + if (fp->current_frame_is_frame0_flag) + stereo->flags |= AV_STEREO3D_FLAG_FRAME0; } } diff --git a/libavutil/stereo3d.h b/libavutil/stereo3d.h index 54f4c4c5c7..190918c3c6 100644 --- a/libavutil/stereo3d.h +++ b/libavutil/stereo3d.h @@ -146,6 +146,10 @@ enum AVStereo3DType { * Inverted views, Right/Bottom represents the left view. */ #define AV_STEREO3D_FLAG_INVERT (1 << 0) +/** + * This frame is frame0 (left view), otherwise it's the right view. + */ +#define AV_STEREO3D_FLAG_FRAME0 (1 << 1) /** * Stereo 3D type: this structure describes how two videos are packed