]> git.sesse.net Git - vlc/commitdiff
* modules/codec/theora.c, modules/stream_out/transcode.c: fixed encoder module unloading.
authorGildas Bazin <gbazin@videolan.org>
Thu, 9 Oct 2003 11:48:41 +0000 (11:48 +0000)
committerGildas Bazin <gbazin@videolan.org>
Thu, 9 Oct 2003 11:48:41 +0000 (11:48 +0000)
* modules/mux/ogg.c: fixed packing of OggDS structure.

modules/codec/theora.c
modules/mux/ogg.c
modules/stream_out/transcode.c

index 53111423049d562b31e2249d8987bfac69935c06..beb4cf42af7099136ffe0ce4cff931e1d69e108d 100644 (file)
@@ -2,7 +2,7 @@
  * theora.c: theora decoder module making use of libtheora.
  *****************************************************************************
  * Copyright (C) 1999-2001 VideoLAN
- * $Id: theora.c,v 1.10 2003/10/08 23:00:40 gbazin Exp $
+ * $Id: theora.c,v 1.11 2003/10/09 11:48:41 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -710,7 +710,7 @@ static void CloseEncoder( vlc_object_t *p_this )
     encoder_sys_t *p_sys = p_enc->p_sys;
 
     theora_info_clear( &p_sys->ti );
-    //theora_comment_clear( &p_sys->tc );
+    theora_comment_clear( &p_sys->tc );
 
     free( p_sys );
 }
index e5aac177def01e76e67941c1636b9defcf811626..9845ca9f24fbbb8a9dc6967bd27f2b28e894aac8 100644 (file)
@@ -2,7 +2,7 @@
  * ogg.c: ogg muxer module for vlc
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: ogg.c,v 1.14 2003/09/29 22:37:36 gbazin Exp $
+ * $Id: ogg.c,v 1.15 2003/10/09 11:48:41 gbazin Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *          Gildas Bazin <gbazin@netcourrier.com>
@@ -110,13 +110,17 @@ typedef struct
 
     int32_t i_buffer_size;
     int16_t i_bits_per_sample;
-    int16_t i_padding_0;            // hum hum
+
+    int16_t i_padding_0; /* Because the original is using MSVC packing style */
+
     union
     {
         oggds_header_video_t video;
         oggds_header_audio_t audio;
     } header;
 
+    int32_t i_padding_1; /* Because the original is using MSVC packing style */
+
 } oggds_header_t;
 
 /* Helper writer functions */
@@ -330,6 +334,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
 
     p_stream->i_sout_headers = 0;
 
+    memset( &p_stream->oggds_header, 0, sizeof(p_stream->oggds_header) );
     p_stream->oggds_header.i_packet_type = PACKET_TYPE_HEADER;
     switch( p_input->p_fmt->i_cat )
     {
@@ -338,7 +343,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
         {
         case VLC_FOURCC( 'm', 'p','4', 'v' ):
         case VLC_FOURCC( 'D', 'I','V', '3' ):
-            memcpy( p_stream->oggds_header.stream_type, "video    ", 8 );
+            memcpy( p_stream->oggds_header.stream_type, "video", 5 );
             if( p_stream->i_fourcc == VLC_FOURCC( 'm', 'p','4', 'v' ) )
             {
                 memcpy( p_stream->oggds_header.sub_type, "XVID", 4 );
@@ -352,7 +357,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
             SetQWLE( &p_stream->oggds_header.i_time_unit,
                      I64C(10000000)/(int64_t)25 );  // FIXME (25fps)
             SetQWLE( &p_stream->oggds_header.i_samples_per_unit, 1 );
-            SetDWLE( &p_stream->oggds_header.i_default_len, 0 );      /* ??? */
+            SetDWLE( &p_stream->oggds_header.i_default_len, 1 ); /* ??? */
             SetDWLE( &p_stream->oggds_header.i_buffer_size, 1024*1024 );
             SetWLE( &p_stream->oggds_header.i_bits_per_sample, 0 );
             SetDWLE( &p_stream->oggds_header.header.video.i_width,
@@ -377,7 +382,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
         {
         case VLC_FOURCC( 'm', 'p','g', 'a' ):
         case VLC_FOURCC( 'a', '5','2', ' ' ):
-            memcpy( p_stream->oggds_header.stream_type, "audio    ", 8 );
+            memcpy( p_stream->oggds_header.stream_type, "audio", 5 );
             if( p_stream->i_fourcc == VLC_FOURCC( 'm', 'p','g', 'a' ) )
             {
                 memcpy( p_stream->oggds_header.sub_type, "55  ", 4 );
@@ -389,7 +394,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
             SetDWLE( &p_stream->oggds_header.i_size,
                      sizeof( oggds_header_t ) - 1);
             SetQWLE( &p_stream->oggds_header.i_time_unit, 0 /* not used */ );
-            SetDWLE( &p_stream->oggds_header.i_default_len, 0 /* not used */ );
+            SetDWLE( &p_stream->oggds_header.i_default_len, 1 );
             SetDWLE( &p_stream->oggds_header.i_buffer_size, 30*1024 );
             SetQWLE( &p_stream->oggds_header.i_samples_per_unit,
                      p_input->p_fmt->i_sample_rate );
@@ -416,7 +421,7 @@ static int AddStream( sout_mux_t *p_mux, sout_input_t *p_input )
         switch( p_stream->i_fourcc )
         {
         case VLC_FOURCC( 's', 'u','b', 't' ):
-            memcpy( p_stream->oggds_header.stream_type, "text     ", 8 );
+            memcpy( p_stream->oggds_header.stream_type, "text", 4 );
             msg_Dbg( p_mux, "subtitles stream" );
             break;
 
index 54c188f169d9af3e640a4cc9b741d798d96f0d48..c2099b9083b229d66a40c2b972b176aabd87928d 100644 (file)
@@ -2,7 +2,7 @@
  * transcode.c
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: transcode.c,v 1.37 2003/10/09 09:39:16 gbazin Exp $
+ * $Id: transcode.c,v 1.38 2003/10/09 11:48:41 gbazin Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
@@ -1361,7 +1361,7 @@ static void transcode_video_ffmpeg_close ( sout_stream_t *p_stream, sout_stream_
     if( id->p_encoder )
     {
         /* External encoding */
-        module_Unneed( p_stream, id->p_encoder->p_module );
+        module_Unneed( id->p_encoder, id->p_encoder->p_module );
         vlc_object_destroy( id->p_encoder->p_module );
     }
     else if( id->b_enc_inited )