From d23e9e287c468e3c32021e3007203606e7c368e7 Mon Sep 17 00:00:00 2001 From: Francois Cartegnie Date: Wed, 26 Jul 2017 22:55:51 +0200 Subject: [PATCH] packetizer: mpegvideo: parse/set multiview untested --- modules/packetizer/mpegvideo.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/modules/packetizer/mpegvideo.c b/modules/packetizer/mpegvideo.c index e4c9cbc8d0..a116839193 100644 --- a/modules/packetizer/mpegvideo.c +++ b/modules/packetizer/mpegvideo.c @@ -817,8 +817,27 @@ static block_t *ParseMPEGBlock( decoder_t *p_dec, block_t *p_frag ) } } - else if( p_frag->p_buffer[3] == 0xb2 && p_frag->i_buffer > 4 ) + else if( p_frag->p_buffer[3] == 0xb2 && p_frag->i_buffer > 8 ) { + /* Frame Packing extension identifier as H262 2012 Amd4 Annex L */ + if( !memcmp( &p_frag->p_buffer[4], "JP3D", 4 ) && + p_frag->i_buffer > 11 && p_frag->p_buffer[8] == 0x03 && + p_dec->fmt_in.video.multiview_mode == MULTIVIEW_2D ) + { + video_multiview_mode_t mode; + switch( p_frag->p_buffer[9] & 0x7F ) + { + case 0x03: + mode = MULTIVIEW_STEREO_SBS; break; + case 0x04: + mode = MULTIVIEW_STEREO_TB; break; + case 0x08: + default: + mode = MULTIVIEW_2D; break; + } + p_dec->fmt_out.video.multiview_mode = mode; + } + else cc_ProbeAndExtract( &p_sys->cc, p_sys->i_top_field_first, &p_frag->p_buffer[4], p_frag->i_buffer - 4 ); } -- 2.11.4.GIT