]> git.sesse.net Git - vlc/commitdiff
* raw demuxers: few fixes, add es only after first packet. (size known)
authorLaurent Aimar <fenrir@videolan.org>
Sun, 23 May 2004 14:43:14 +0000 (14:43 +0000)
committerLaurent Aimar <fenrir@videolan.org>
Sun, 23 May 2004 14:43:14 +0000 (14:43 +0000)
modules/demux/mpeg/h264.c
modules/demux/mpeg/m4v.c

index 6313bef013150f28703165c6269d9b9cd83a5f1f..8cfaa068fba93fb644d0956a53a8ed4d8bcca93c 100644 (file)
@@ -175,25 +175,23 @@ static int Demux( demux_t *p_demux)
         {
             block_t *p_next = p_block_out->p_next;
 
-            es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_sys->i_dts );
-
-            p_block_out->i_dts = p_sys->i_dts;
-            p_block_out->i_pts = p_sys->i_dts;
-
             p_block_out->p_next = NULL;
 
             if( p_sys->p_es == NULL )
             {
+                p_sys->p_packetizer->fmt_out.b_packetized = VLC_TRUE;
                 p_sys->p_es = es_out_Add( p_demux->out, &p_sys->p_packetizer->fmt_out);
             }
 
+            es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_sys->i_dts );
+            p_block_out->i_dts = p_sys->i_dts;
+            p_block_out->i_pts = p_sys->i_dts;
+
             es_out_Send( p_demux->out, p_sys->p_es, p_block_out );
 
             p_block_out = p_next;
 
-            /* FIXME FIXME FIXME FIXME */
             p_sys->i_dts += (int64_t)((double)1000000.0 / p_sys->f_fps);
-            /* FIXME FIXME FIXME FIXME */
         }
     }
     return 1;
index e0e4c9d4927f9806458d358b54f90d6e9f542b9d..31926fe4311faf6b3b0da7abf000f2f7a8b2e042 100644 (file)
@@ -172,12 +172,25 @@ static int Demux( demux_t *p_demux)
         {
             block_t *p_next = p_block_out->p_next;
 
+            if( p_sys->p_es == NULL )
+            {
+                p_sys->p_packetizer->fmt_out.b_packetized = VLC_TRUE;
+                p_sys->p_es = es_out_Add( p_demux->out, &p_sys->p_packetizer->fmt_out);
+            }
+
             es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_sys->i_dts );
 
+            p_block_out->p_next = NULL;
+            if( p_block_out->i_pts == p_block_out->i_dts )
+            {
+                p_block_out->i_pts = p_sys->i_dts;
+            }
+            else
+            {
+                p_block_out->i_pts = 0;
+            }
             p_block_out->i_dts = p_sys->i_dts;
-            p_block_out->i_pts = 0;
 
-            p_block_out->p_next = NULL;
             es_out_Send( p_demux->out, p_sys->p_es, p_block_out );
 
             p_block_out = p_next;