23
1 Yossi Cohen 3D Video for Android

3D Video Programming for Android

Embed Size (px)

DESCRIPTION

Review of 3D Video compression and delivery methods in H.264 and HDMI 1.4a. Code sample of H.264 3D encoding for Nvidia, TI

Citation preview

Page 1: 3D Video Programming for Android

1

Yossi Cohen

3D Video forAndroid

Page 2: 3D Video Programming for Android

2

Content Intro to 3D Video3D Video in H.2643D Video in HDMI 1.4aAndroid 3D Video encoding

TI OMAP4 ConfigurationQualcomm Configuration

Page 3: 3D Video Programming for Android

3

Intro to 3D Video

Page 4: 3D Video Programming for Android

4

What is 3D Video 3d content is made by showing a separate image (video) to

each eye.

3D Glasses based technologies: ANAGLYPH POLARIZATION ECLIPSE METHOD

3D Glass-free technologies: GUIDED LIGHT LENTICULAR SCREEN PARALLAX BARRIER

This presentation does not discuss the presentation technologies, ,instead we focus on how to compress and deliver the video to the screen.

Page 5: 3D Video Programming for Android

5

3D Video Delivery

Page 6: 3D Video Programming for Android

6

Legacy 3D Video DeliveryDifferent devices delivered 3D Video as one video

stream with the two R/L screens merged into one rectangle:1. DirectTV uses Side-by-Side layout

2. PlayStation uses Top-Bottom layout

3. Blue-Ray Player FULL-HD Side-by-Side

User should manually set the TV to 3Dand Configure the right packing mode

Page 7: 3D Video Programming for Android

7

Side-by-Side 3D Example BlueRay video with Full HD SBSResolution is 3840X1280

Page 8: 3D Video Programming for Android

8

3D Video in HDMI 1.3 Delivery of 3D Video in packing of

1 and 2 was possible in HDMI:

Side-by-Side 3D in HDMI

Top-Bottom 3D in HDMI

Problems

User should manually configure TV to the correct mode

3D is not viewed as Full-HD. Each eye receives “Half-HD” Quality.

Duo to Bandwidth constraints no support for 3D-Full-HD

Page 9: 3D Video Programming for Android

9

3D in HDMI 1.4a and HDMI 2+ In Advance HDMI standards, HDMI include Header fields

which signals the frame packing mode

Example: 3D SBS transmission in HDMI 1.4

Page 10: 3D Video Programming for Android

10

H.264 3D Video

Page 11: 3D Video Programming for Android

11

H.264 3D ProfilesEncoding of one stream video slices halved into

R/L screens can be done in ANY H.264 Profile.Alternative encoding are:

MVCStereo-High

Page 12: 3D Video Programming for Android

12

H.264 AVC 3D encoding modeThere are two options for 3D H.264 AVC encoding:Regular encoding of a single video stream with

two L/R frames packed into one FrameCodec is unaware that the video is 3DNo signaling information is sent

Informing the Encoder the video is 3DEncoder will insert Frame-Packing informationTV / Sink should switch automatically to 3D correct frame

packing according to signaled information

Page 13: 3D Video Programming for Android

13

H.264 3D SignalingH264 Signals 3D Video and the type of Frame

Packing (Side-by-Side, Top-Bottom, Interlaced…) by Frame Packing Arrangement structure

FPA is an optional message inside the SEI NALFrame Packing Agreement structure was added to

the standard in 2010.A device receiving H.264 stream with SEI-FPA

could automatically change its mode to the correct 3D Mode (if it understands those headers and has 3D capabilities).

Page 14: 3D Video Programming for Android

14

Example of 3D Configuration There are two types of FPA extensions 2004 & 2010

2004 states the frame arrangement SBS, Top-Bottom etc

2010 is more detailed as described below

Page 15: 3D Video Programming for Android

15

MVC – Multi View CodingMVC is a standard for compression of multiple

video streams into one encoded streamsAll streams are encoded as differences (deltas)

from the first stream (like SVC)MVC with 2 video streams is 3D stereo

Page 16: 3D Video Programming for Android

16

H.264 Stereo ModeH.264 Stereo Mode is like MVC with only two

cameras.

Page 17: 3D Video Programming for Android

17

Wireless Dongle

Wireless 3D Video transmission

HDMIConverter

Automatic 3D Video

H.264 with SEI FPA over Wireless

3D Video over HDMI 1.4a

H.264 Decoder

H.264Encoder

Page 18: 3D Video Programming for Android

18

3D VIDEO COMPRESSION ON ANDROID

Page 19: 3D Video Programming for Android

19

TI 3D Configuration For all platforms (Nvidia, TI, QCOM), in the Encoder OMX

input pin configuration add the appropriate code according to the processor

Page 20: 3D Video Programming for Android

20

TI 3D Configuration

OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010 FramePacking2010;

FILL_OMX_VERSION(FramePacking2010 ,OMX_TI_VIDEO_PARAM_AVCENC_FRAMEPACKINGINFO2010);

FramePacking2010.nPortIndex = OMX_PORT_INDEX_INPUT;

FramePacking2010.eFramePackingType = OMX_TI_Video_FRAMEPACK_SIDE_BY_SIDE;

FramePacking2010.nFrame0PositionX = 0;

FramePacking2010.nFrame0PositionY = 0;

FramePacking2010.nFrame1PositionX = 0;

FramePacking2010.nFrame1PositionY = 0

OMX_CALL( SetParameter, (OMX_INDEXTYPE) OMX_TI_IndexParamStereoFramePacking2010Settings, &FramePacking2010 );

OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE FrameData;

FILL_OMX_VERSION(FrameData ,OMX_TI_VIDEO_PARAM_FRAMEDATACONTENTTYPE);

FrameData.nPortIndex = OMX_PORT_INDEX_INPUT;

eContentType = OMX_TI_Video_AVC_2010_StereoFramePackingType;

OMX_CALL( SetParameter,(OMX_INDEXTYPE)OMX_TI_IndexParamVideoFrameDataContentSettings, &FrameData );

Page 21: 3D Video Programming for Android

21

Qualcomm Configuration

Unfortunately couldn’t find a method for this on Qualcomm processors. If you know please email me or comment and I’ll update this presentation

Page 22: 3D Video Programming for Android

22

Thank you!

Video Expert

Lectures on Video / Android / VoIP

Android Native Developer

More About me:

Yossi [email protected]://www.mobilevideotech.com

+972-545-313092