]> git.sesse.net Git - vlc/blobdiff - src/misc/es_format.c
ML: Use a lock for ml_Create
[vlc] / src / misc / es_format.c
index 201b004c67c3030d385b392cda96a53dcfed3cab..9864a0fb1a96055f9d855718b9ce886f9bf1354e 100644 (file)
@@ -129,7 +129,9 @@ void video_format_FixRgb( video_format_t *p_fmt )
                  p_fmt->i_bmask );
 }
 
-void video_format_Setup( video_format_t *p_fmt, vlc_fourcc_t i_chroma, int i_width, int i_height, int i_aspect )
+void video_format_Setup( video_format_t *p_fmt, vlc_fourcc_t i_chroma,
+                         int i_width, int i_height,
+                         int i_sar_num, int i_sar_den )
 {
     p_fmt->i_chroma         = vlc_fourcc_GetCodec( VIDEO_ES, i_chroma );
     p_fmt->i_width          =
@@ -138,7 +140,8 @@ void video_format_Setup( video_format_t *p_fmt, vlc_fourcc_t i_chroma, int i_wid
     p_fmt->i_visible_height = i_height;
     p_fmt->i_x_offset       =
     p_fmt->i_y_offset       = 0;
-    p_fmt->i_aspect         = i_aspect;
+    vlc_ureduce( &p_fmt->i_sar_num, &p_fmt->i_sar_den,
+                 i_sar_num, i_sar_den, 0 );
 
     switch( p_fmt->i_chroma )
     {
@@ -167,6 +170,7 @@ void video_format_Setup( video_format_t *p_fmt, vlc_fourcc_t i_chroma, int i_wid
     case VLC_CODEC_J420:
         p_fmt->i_bits_per_pixel = 12;
         break;
+    case VLC_CODEC_YV9:
     case VLC_CODEC_I410:
         p_fmt->i_bits_per_pixel = 9;
         break;
@@ -215,6 +219,8 @@ bool video_format_IsSimilar( const video_format_t *p_fmt1, const video_format_t
         v1.i_visible_height != v2.i_visible_height ||
         v1.i_x_offset != v2.i_x_offset || v1.i_y_offset != v2.i_y_offset )
         return false;
+    if( v1.i_sar_num * v2.i_sar_den != v2.i_sar_num * v1.i_sar_den )
+        return false;
 
     if( v1.i_chroma == VLC_CODEC_RGB15 ||
         v1.i_chroma == VLC_CODEC_RGB16 ||
@@ -231,6 +237,18 @@ bool video_format_IsSimilar( const video_format_t *p_fmt1, const video_format_t
     }
     return true;
 }
+void video_format_Print( vlc_object_t *p_this,
+                         const char *psz_text, const video_format_t *fmt )
+{
+    msg_Dbg( p_this,
+             "%s sz %ix%i, of (%i,%i), vsz %ix%i, 4cc %4.4s, sar %i:%i, msk r0x%x g0x%x b0x%x",
+             psz_text,
+             fmt->i_width, fmt->i_height, fmt->i_x_offset, fmt->i_y_offset,
+             fmt->i_visible_width, fmt->i_visible_height,
+             (char*)&fmt->i_chroma,
+             fmt->i_sar_num, fmt->i_sar_den,
+             fmt->i_rmask, fmt->i_gmask, fmt->i_bmask );
+}
 
 void es_format_Init( es_format_t *fmt,
                      int i_cat, vlc_fourcc_t i_codec )
@@ -238,6 +256,8 @@ void es_format_Init( es_format_t *fmt,
     fmt->i_cat                  = i_cat;
     fmt->i_codec                = i_codec;
     fmt->i_original_fourcc      = 0;
+    fmt->i_profile              = -1;
+    fmt->i_level                = -1;
     fmt->i_id                   = -1;
     fmt->i_group                = 0;
     fmt->i_priority             = 0;
@@ -258,6 +278,12 @@ void es_format_Init( es_format_t *fmt,
     fmt->p_extra                = NULL;
 }
 
+void es_format_InitFromVideo( es_format_t *p_es, const video_format_t *p_fmt )
+{
+    es_format_Init( p_es, VIDEO_ES, p_fmt->i_chroma );
+    video_format_Copy( &p_es->video, p_fmt );
+}
+
 int es_format_Copy( es_format_t *dst, const es_format_t *src )
 {
     int i;