vlc | branch: master | Francois Cartegnie <[email protected]> | Sun Dec 25 
17:58:36 2016 +0100| [8fb43520e3056225381cabf500e228c01a1f1318] | committer: 
Francois Cartegnie

packetizer: vc1: handle color spaces

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8fb43520e3056225381cabf500e228c01a1f1318
---

 modules/packetizer/vc1.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/modules/packetizer/vc1.c b/modules/packetizer/vc1.c
index 51849dc..fab961b 100644
--- a/modules/packetizer/vc1.c
+++ b/modules/packetizer/vc1.c
@@ -575,6 +575,36 @@ static block_t *ParseIDU( decoder_t *p_dec, bool 
*pb_ts_used, block_t *p_frag )
                 if( !p_sys->b_sequence_header )
                     msg_Dbg( p_dec, "frame rate %d/%d", 
p_es->video.i_frame_rate, p_es->video.i_frame_rate_base );
             }
+            if( bs_read1( &s ) ) /* Color Format */
+            {
+                switch( bs_read( &s, 8 ) ) /* Color Primaries */
+                {
+                    case 1:  p_es->video.primaries = COLOR_PRIMARIES_BT709; 
break;
+                    case 4:  p_es->video.primaries = COLOR_PRIMARIES_BT470_M; 
break;
+                    case 5:  p_es->video.primaries = COLOR_PRIMARIES_BT470_BG; 
break;
+                    case 6:  p_es->video.primaries = 
COLOR_PRIMARIES_SMTPE_RP145; break;
+                    default: p_es->video.primaries = COLOR_PRIMARIES_UNDEF; 
break;
+                }
+
+                switch( bs_read( &s, 8 ) ) /* Transfert Chars */
+                {
+                    case 1:  p_es->video.transfer = TRANSFER_FUNC_BT709; break;
+                    case 4:  p_es->video.transfer = TRANSFER_FUNC_BT470_M; 
break;
+                    case 5:  p_es->video.transfer = TRANSFER_FUNC_BT470_BG; 
break;
+                    case 6:  p_es->video.transfer = TRANSFER_FUNC_SMPTE_170; 
break;
+                    case 7:  p_es->video.transfer = TRANSFER_FUNC_SMPTE_240; 
break;
+                    case 8:  p_es->video.transfer = TRANSFER_FUNC_LINEAR; 
break;
+                    default: p_es->video.transfer = TRANSFER_FUNC_UNDEF; break;
+                }
+
+                switch( bs_read( &s, 8 ) ) /* Matrix Coef */
+                {
+                    case 1:  p_es->video.space = COLOR_SPACE_BT709; break;
+                    case 6:  p_es->video.space = COLOR_SPACE_BT601; break;
+                    case 7:  p_es->video.space = COLOR_SPACE_SMPTE_240; break;
+                    default: p_es->video.space = COLOR_SPACE_UNDEF; break;
+                }
+            }
         }
         else
         {

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to