]> git.sesse.net Git - vlc/blobdiff - modules/codec/schroedinger.c
codec/dirac: Rewrite libdirac(-research) encoding support
[vlc] / modules / codec / schroedinger.c
index 960e53a6fc938cc58c0c1c47a4a3892dd32c7819..4bb392a6e6474e2ff7cb3a5e6fefaa2c4d3f1938 100644 (file)
 static int        OpenDecoder  ( vlc_object_t * );
 static void       CloseDecoder ( vlc_object_t * );
 
-vlc_module_begin();
-    set_category( CAT_INPUT );
-    set_subcategory( SUBCAT_INPUT_VCODEC );
-    set_description( N_("Schroedinger video decoder") );
-    set_capability( "decoder", 200 );
-    set_callbacks( OpenDecoder, CloseDecoder );
-    add_shortcut( "schroedinger" );
-vlc_module_end();
+vlc_module_begin ()
+    set_category( CAT_INPUT )
+    set_subcategory( SUBCAT_INPUT_VCODEC )
+    set_description( N_("Schroedinger video decoder") )
+    set_capability( "decoder", 200 )
+    set_callbacks( OpenDecoder, CloseDecoder )
+    add_shortcut( "schroedinger" )
+vlc_module_end ()
 
 /*****************************************************************************
  * Local prototypes
@@ -206,16 +206,14 @@ static void StorePicturePTS( decoder_t *p_dec, block_t *p_block, int i_pupos )
 {
     decoder_sys_t *p_sys = p_dec->p_sys;
     uint32_t u_pnum;
-    mtime_t i_pts;
 
     u_pnum = GetDWBE( p_block->p_buffer + i_pupos + 13 );
-    i_pts = p_block->i_pts > 0 ? p_block->i_pts : p_block->i_dts;
 
     for( int i=0; i<PTS_TLB_SIZE; i++ ) {
         if( p_sys->pts_tlb[i].i_empty ) {
 
             p_sys->pts_tlb[i].u_pnum = u_pnum;
-            p_sys->pts_tlb[i].i_pts = i_pts;
+            p_sys->pts_tlb[i].i_pts = p_block->i_pts;
             p_sys->pts_tlb[i].i_empty = 0;
 
             return;
@@ -223,7 +221,7 @@ static void StorePicturePTS( decoder_t *p_dec, block_t *p_block, int i_pupos )
     }
 
     msg_Err( p_dec, "Could not store PTS %"PRId64" for picture %u",
-             i_pts, u_pnum );
+             p_block->i_pts, u_pnum );
 }
 
 /*****************************************************************************
@@ -258,7 +256,7 @@ static void SchroFrameFree( SchroFrame *frame, void *priv)
     if( !p_free )
         return;
 
-    p_free->p_dec->pf_vout_buffer_del( p_free->p_dec, p_free->p_pic );
+    decoder_DeletePicture( p_free->p_dec, p_free->p_pic );
     free(p_free);
     (void)frame;
 }
@@ -276,7 +274,7 @@ static SchroFrame *CreateSchroFrameFromPic( decoder_t *p_dec )
     if( !p_schroframe )
         return NULL;
 
-    p_pic = p_dec->pf_vout_buffer_new( p_dec );
+    p_pic = decoder_NewPicture( p_dec );
 
     if( !p_pic )
         return NULL;
@@ -488,6 +486,11 @@ static picture_t *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
 #endif
                 SetVideoFormat( p_dec );
                 ResetPTStlb( p_dec );
+
+                p_schroframe = CreateSchroFrameFromPic( p_dec );
+                if( p_schroframe ) {
+                    schro_decoder_add_output_picture( p_sys->p_schro, p_schroframe);
+                }
             }
 
             if( b_bail )