Re: [rtcweb] Camera rotation on mobile phones

Justin Uberti <juberti@google.com> Wed, 29 April 2015 19:31 UTC

Return-Path: <juberti@google.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5AF4C1ACE54 for <rtcweb@ietfa.amsl.com>; Wed, 29 Apr 2015 12:31:49 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.388
X-Spam-Level:
X-Spam-Status: No, score=-1.388 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=no
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iIiouuNxzhkX for <rtcweb@ietfa.amsl.com>; Wed, 29 Apr 2015 12:31:46 -0700 (PDT)
Received: from mail-ig0-x22c.google.com (mail-ig0-x22c.google.com [IPv6:2607:f8b0:4001:c05::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 400F71ACE70 for <rtcweb@ietf.org>; Wed, 29 Apr 2015 12:31:46 -0700 (PDT)
Received: by iget9 with SMTP id t9so114041037ige.1 for <rtcweb@ietf.org>; Wed, 29 Apr 2015 12:31:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=Tqe9qbz1Dv6OUIECfmyO896F4d5y+axeoYZlX1zYHNA=; b=KUB2T87NnCQel5vHmI/3HEpczc2GgTpKWTZAn4hCGZ80HTeHR+fv3OAEpNLwl0UBb+ LTsil/HQIW/9ezhFGUhAu4o2EE7pdDwKWgV+hXDxU/cD+zvehsf6dyQ/xw8NLzYr/lLn 1eyF4TkHitnEkM3gbFwBXvLudxTAdcO4K3S0bIXQftOXaWg4oWxPdgIp12Icdx1phpsp R1KPLnbmRSisAb/nsP8DZTAfqoz4/RuZYCvxXK1pYJw5UQ2GvTougVUaRE4mhuHsyvja F/RFDDrL0P6Pvk/z8QYIWH5SGAcW8TbX8lCafCRH62yB8x+SdSCNSzs1A2nvdMZ2O86W M1XA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=Tqe9qbz1Dv6OUIECfmyO896F4d5y+axeoYZlX1zYHNA=; b=CPNkXKD1FmNNblDBwioNuryPPDx2gDf8yu1+tigr3y3wxLa6vhVduHk4njmQ/007wu bGRfuPLz1sGC06of4TAlERUbzah/B5fab2v171tOSFR7rFmld1nZkVgXJgrzWf+bS3AT PGqoLEqqVbK5DfyXae7Y6nR7slbDZMNjzzp/s3i8TIHAhgeQ5677MjYLBhUzFx/GBWeg x9TkKEs1Ph0aTaI8Ob8GYwOeq19fKZshMtpTYZax0WRWOuQTSHaXiFg89/ziCkhomjVI 7sq8r+7EACkNJ1HLaK333GPzEq4IusmOTwv7PZooY8R4ir53zl8erBqyVgD25NqAlruV oY6g==
X-Gm-Message-State: ALoCoQnR2ZBrNkICWd9DmntbS3mOlI06Xn3OVgtmrivk1cUxbBf3C8wPoLXNMmPlTuSixMEp/qga
X-Received: by 10.107.128.149 with SMTP id k21mr901392ioi.7.1430335905641; Wed, 29 Apr 2015 12:31:45 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.64.32.233 with HTTP; Wed, 29 Apr 2015 12:31:25 -0700 (PDT)
In-Reply-To: <553E01D7.6070600@gmail.com>
References: <52475369.9040107@gmail.com> <553E01D7.6070600@gmail.com>
From: Justin Uberti <juberti@google.com>
Date: Wed, 29 Apr 2015 12:31:25 -0700
Message-ID: <CAOJ7v-1LB5MaDy2hzWvgWdWqe_8HYZzO44QCb2OZZT0CpEH0fg@mail.gmail.com>
To: Sergio Garcia Murillo <sergio.garcia.murillo@gmail.com>
Content-Type: multipart/alternative; boundary="001a113f922490ed6b0514e2075b"
Archived-At: <http://mailarchive.ietf.org/arch/msg/rtcweb/54wiwaHWN9dDnF5H_vcGhv0MBbM>
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] Camera rotation on mobile phones
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb/>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 29 Apr 2015 19:31:49 -0000

CVO is part of the rtcweb-video requirements.

On Mon, Apr 27, 2015 at 2:31 AM, Sergio Garcia Murillo <
sergio.garcia.murillo@gmail.com> wrote:

>  Hi all,
>
>
> I have just seen that Chrome 43 has added CVO as per my suggestion in the
> message below
>
>
>    -
>
>    Issue 4145 <https://code.google.com/p/webrtc/issues/detail?id=4145>
>    Added support for CVO (Coordination of video rotation) header extension in
>    webrtc. When both sides support CVO, device rotation will not cause a new
>    key-frame.
>
>           https://code.google.com/p/webrtc/issues/detail?id=4145
>
> I have always thought that it would be a nice addition to the WebRTC
> requirements,  especially in terms of mobile performance and user
> experience (at least in theory). Would it be possible if anyone from the
> Chrome team could share some feedback about it's usage in the real life?
>
> Best regards
> Sergio
>
>
> On 29/09/2013 0:08, Sergio Garcia Murillo wrote:
>
> Hi all,
>
> Currently, in order to keep image property displayed on the  receiver side
> if the sender rotates the phone (and the camera), it is needed that the
> sender rotates the image from WxH to HxW so it is sent in upward position
> over the wire. Also, if the receiver is a mobile phone and has it rotated,
> it will have to rotate it again to match the current phone orientation.
>
> How about using Coordination of Video Orientation as in 3GPP TS 26.114 (
> http://www.3gpp.org/ftp/Specs/html-info/26114.htm)?
>
> Coordination of Video Orientation consists in signalling of the current
> orientation of the image captured on the sender side to the receiver for
> appropriate rendering and displaying. When CVO is succesfully negotiated it
> shall be signalled by the MTSI client. The signalling of the CVO uses RTP
> Header Extensions as specified in IETF RFC 5285 [95]. The one-byte form of
> the header shall be used. CVO information for a 2 bit granularity of
> Rotation (corresponding to urn:3gpp:video-orientation) is carried as a byte
> formatted as follows:
>
> Bit#                   7                 6                 5
> 4               3                 2                 1                 0
> (LSB)
> Definition      0           0           0           0           C
> F           R1          R0
>
> With the following definitions:
>
> C = Camera: indicates the direction of the camera used for this video
> stream. It can be used by the MTSI client in receiver to e.g. display the
> received video differently depending on the source camera.
>
>     0: Front-facing camera, facing the user. If camera direction is
> unknown by the sending MTSI client in the terminal then this is the default
> value used.
>
> 1: Back-facing camera, facing away from the user.
>
> F = Flip: indicates a horizontal (left-right flip) mirror operation on the
> video as sent on the link.
>
>     0: No flip operation. If the sending MTSI client in terminal does not
> know if a horizontal mirror operation is necessary, then this is the
> default value used.
>
>     1: Horizontal flip operation
>
> R1, R0 = Rotation: indicates the rotation of the video as transmitted on
> the link. The receiver should rotate the video to compensate that rotation.
> E.g. a 90° Counter Clockwise rotation should be compensated by the receiver
> with a 90° Clockwise rotation prior to displaying.
>
> Table 7.2: Rotation signalling for 2 bit granularity
>
> R1
>
> R0
>
> Rotation of the video as sent on the link
>
> Rotation on the receiver before display
>
> 0
>
> 0
>
> 0° rotation
>
> None
>
> 0
>
> 1
>
> 90° Counter Clockwise (CCW) rotation or 270° Clockwise (CW) rotation
>
> 90° CW rotation
>
> 1
>
> 0
>
> 180° CCW rotation or 180° CW rotation
>
> 180° CW rotation
>
> 1
>
> 1
>
> 270° CCW rotation or 90° CW rotation
>
> 90° CCW rotation
>
>
>
> CVO information for a higher granularity of Rotation (corresponding to
> urn:3GPP:video-orientation:6) is carried as a byte  formatted as follows:
>
> Bit#                   7                 6                 5
> 4               3                 2                 1                 0
> (LSB)
> Definition      R5          R4          R3          R2          C
> F           R1          R0
>
> where C and F are as defined above and the bits R5,R4,R3,R2,R1,R0
> represent the Rotation, which indicates the rotation of the video as
> transmitted on the link. Table 7.3 describes the rotation to be applied by
> the receiver based on the rotation bits.
>
> Table 7.3: Rotation signalling for 6 bit granularity
>
> R1
>
> R0
>
> R5
>
> R4
>
> R3
>
> R2
>
> Rotation of the video as sent on the link
>
> Rotation on the receiver before display
>
> 0
>
> 0
>
> 0
>
> 0
>
> 0
>
> 0
>
> 0° rotation
>
> None
>
> 0
>
> 0
>
> 0
>
> 0
>
> 0
>
> 1
>
> (360/64)° Counter Clockwise (CCW) rotation
>
> (360/64)° CW rotation
>
> 0
>
> 0
>
> 0
>
> 0
>
> 1
>
> 0
>
> (2*360/64)° CCW rotation
>
> (2*360/64)° CW rotation
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> *.*
>
> 1
>
> 1
>
> 1
>
> 1
>
> 1
>
> 0
>
> (62*360/64)° CCW rotation
>
> (2*360/64)° CCW rotation
>
> 1
>
> 1
>
> 1
>
> 1
>
> 1
>
> 1
>
> (63*360/64)° CCW rotation
>
> (360/64)° CCW rotation
>
>
> Best regards
> Sergio
>
>
>
> _______________________________________________
> rtcweb mailing list
> rtcweb@ietf.org
> https://www.ietf.org/mailman/listinfo/rtcweb
>
>