]> git.sesse.net Git - vlc/blobdiff - modules/codec/rawvideo.c
* parser/xmlparser.cpp: added DTD validation
[vlc] / modules / codec / rawvideo.c
index 390d22dd8be5151c4921f7aca780e0c7587bc578..857a44ff7d1941ca6d84be91b1aabcb466a6fbb8 100644 (file)
@@ -2,7 +2,7 @@
  * rawvideo.c: Pseudo video decoder/packetizer for raw video data
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: rawvideo.c,v 1.8 2003/11/16 21:07:30 gbazin Exp $
+ * $Id: rawvideo.c,v 1.11 2004/01/07 19:20:29 gbazin Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
-#include <stdlib.h>                                      /* malloc(), free() */
-#include <string.h>                                              /* strdup() */
-
 #include <vlc/vlc.h>
 #include <vlc/decoder.h>
-#include <vlc/input.h>
-
-#include "codecs.h"
 
 /*****************************************************************************
  * decoder_sys_t : raw video decoder descriptor
@@ -69,12 +63,12 @@ static block_t   *SendFrame  ( decoder_t *, block_t * );
  * Module descriptor
  *****************************************************************************/
 vlc_module_begin();
-    set_description( _("Pseudo Raw Video decoder") );
+    set_description( _("Pseudo raw video decoder") );
     set_capability( "decoder", 50 );
     set_callbacks( OpenDecoder, CloseDecoder );
 
     add_submodule();
-    set_description( _("Pseudo Raw Video packetizer") );
+    set_description( _("Pseudo raw video packetizer") );
     set_capability( "packetizer", 100 );
     set_callbacks( OpenPacketizer, CloseDecoder );
 vlc_module_end();
@@ -184,7 +178,7 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
 
     p_block = *pp_block;
 
-    if( !p_sys->i_pts && !p_block->i_pts )
+    if( !p_sys->i_pts && !p_block->i_pts && !p_block->i_dts )
     {
         /* We've just started the stream, wait for the first PTS. */
         block_Release( p_block );
@@ -192,9 +186,10 @@ static void *DecodeBlock( decoder_t *p_dec, block_t **pp_block )
     }
 
     /* Date management */
-    if( p_block->i_pts > 0 && p_block->i_pts != p_sys->i_pts )
+    if( p_block->i_pts > 0 || p_block->i_dts > 0 )
     {
-        p_sys->i_pts = p_block->i_pts;
+        if( p_block->i_pts > 0 ) p_sys->i_pts = p_block->i_pts;
+        else if( p_block->i_dts > 0 ) p_sys->i_pts = p_block->i_dts;
     }
 
     if( p_block->i_buffer < p_sys->i_raw_size )