/*****************************************************************************
* ogg.c: ogg muxer module for vlc
*****************************************************************************
- * Copyright (C) 2001, 2002 VideoLAN (Centrale Réseaux) and its contributors
+ * Copyright (C) 2001, 2002, 2006 the VideoLAN team
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/*****************************************************************************
* Preamble
*****************************************************************************/
-#include <stdlib.h>
-#include <string.h>
#ifdef HAVE_TIME_H
# include <time.h>
#endif
#include <vlc/vlc.h>
-#include <vlc/input.h>
-#include <vlc/sout.h>
-
-#include "codecs.h"
+#include <vlc_sout.h>
+#include <vlc_block.h>
+#include <vlc_codecs.h>
#include <ogg/ogg.h>
static void Close ( vlc_object_t * );
vlc_module_begin();
- set_description( _("Ogg/ogm muxer") );
+ set_description( _("Ogg/OGM muxer") );
set_capability( "sout mux", 10 );
set_category( CAT_SOUT );
set_subcategory( SUBCAT_SOUT_MUX );
/*****************************************************************************
* Misc declarations
*****************************************************************************/
-#define FREE( p ) if( p ) { free( p ); (p) = NULL; }
/* Structures used for OggDS headers used in ogm files */
}
/*****************************************************************************
- * Definitions of structures and functions used by this plugins
+ * Definitions of structures and functions used by this plugins
*****************************************************************************/
typedef struct
{
{
i_dts = p_sys->pp_del_streams[i]->i_dts;
ogg_stream_clear( &p_sys->pp_del_streams[i]->os );
- FREE( p_sys->pp_del_streams[i]->p_oggds_header );
- FREE( p_sys->pp_del_streams[i] );
+ FREENULL( p_sys->pp_del_streams[i]->p_oggds_header );
+ FREENULL( p_sys->pp_del_streams[i] );
}
- FREE( p_sys->pp_del_streams );
+ FREENULL( p_sys->pp_del_streams );
p_sys->i_streams -= p_sys->i_del_streams;
/* Write footer */
break;
default:
- FREE( p_input->p_sys );
+ FREENULL( p_input->p_sys );
return VLC_EGENERIC;
}
break;
fourcc_to_wf_tag( p_stream->i_fourcc, &i_tag );
if( i_tag == WAVE_FORMAT_UNKNOWN )
{
- FREE( p_input->p_sys );
+ FREENULL( p_input->p_sys );
return VLC_EGENERIC;
}
break;
default:
- FREE( p_input->p_sys );
+ FREENULL( p_input->p_sys );
return VLC_EGENERIC;
}
break;
default:
- FREE( p_input->p_sys );
+ FREENULL( p_input->p_sys );
return VLC_EGENERIC;
}
}
else
{
- /* Wasn't already added so get rid of it */
- FREE( p_stream->p_oggds_header );
- FREE( p_stream );
+ /* wasn't already added so get rid of it */
+ FREENULL( p_stream->p_oggds_header );
+ FREENULL( p_stream );
p_sys->i_add_streams--;
}
}
else if( p_stream->i_fourcc == VLC_FOURCC( 'f', 'l', 'a', 'c' ) )
{
/* flac stream marker (yeah, only that in the 1st packet) */
- op.packet = "fLaC";
+ op.packet = (unsigned char *)"fLaC";
op.bytes = 4;
op.b_o_s = 1;
op.e_o_s = 0;
/* comment */
com[0] = PACKET_TYPE_COMMENT;
- i_com = snprintf( &com[1], 128, PACKAGE_VERSION" stream output" )
+ i_com = snprintf( (char *)(com+1), 127,
+ PACKAGE_VERSION" stream output" )
+ 1;
op.packet = com;
op.bytes = i_com;
/* Remove deleted logical streams */
for( i = 0; i < p_sys->i_del_streams; i++ )
{
- FREE( p_sys->pp_del_streams[i]->p_oggds_header );
- FREE( p_sys->pp_del_streams[i] );
+ FREENULL( p_sys->pp_del_streams[i]->p_oggds_header );
+ FREENULL( p_sys->pp_del_streams[i] );
}
- FREE( p_sys->pp_del_streams );
+ FREENULL( p_sys->pp_del_streams );
p_sys->i_streams = 0;
}
if( p_stream->i_cat == SPU_ES ||
p_stream->i_fourcc == VLC_FOURCC( 's', 'p', 'x', ' ' ) )
{
- /* Subtitles or Speex packets are quite small so they
+ /* Subtitles or Speex packets are quite small so they
* need to be flushed to be sent on time */
p_og = OggStreamFlush( p_mux, &p_stream->os, p_data->i_dts );
}