* file.c : audio output which writes the samples to a file
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: file.c,v 1.28 2004/02/03 23:31:46 gbazin Exp $
+ * $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Gildas Bazin <gbazin@netcourrier.com>
#define FRAME_SIZE 2048
#define A52_FRAME_NB 1536
-typedef struct WAVEHEADER
-{
- uint32_t MainChunkID; // it will be 'RIFF'
- uint32_t Length;
- uint32_t ChunkTypeID; // it will be 'WAVE'
- uint32_t SubChunkID; // it will be 'fmt '
- uint32_t SubChunkLength;
- uint16_t Format;
- uint16_t Modus;
- uint32_t SampleFreq;
- uint32_t BytesPerSec;
- uint16_t BytesPerSample;
- uint16_t BitsPerSample;
- uint32_t DataChunkID; // it will be 'data'
- uint32_t DataLength;
-} WAVEHEADER;
-
/*****************************************************************************
* aout_sys_t: audio output method descriptor
*****************************************************************************
"will be saved but you can restrict the number of channels here.")
#define WAV_TEXT N_("Add wave header")
-#define WAV_LONGTEXT N_("Instead of writing a raw file, you can add a wav " \
+#define WAV_LONGTEXT N_("Instead of writing a raw file, you can add a WAV " \
"header to the file")
static char *format_list[] = { "u8", "s8", "u16", "s16", "u16_le", "s16_le",
wh->DataChunkID = VLC_FOURCC('d', 'a', 't', 'a');
wh->DataLength = 0; /* temp, to be filled in as we go */
+ /* Header -> little endian format */
+ SetWLE( &wh->Format, wh->Format );
+ SetWLE( &wh->BitsPerSample, wh->BitsPerSample );
+ SetDWLE( &wh->SubChunkLength, wh->SubChunkLength );
+ SetWLE( &wh->Modus, wh->Modus );
+ SetDWLE( &wh->SampleFreq, wh->SampleFreq );
+ SetWLE( &wh->BytesPerSample, wh->BytesPerSample );
+ SetDWLE( &wh->BytesPerSec, wh->BytesPerSec );
+
if( fwrite( wh, sizeof(WAVEHEADER), 1,
p_aout->output.p_sys->p_file ) != 1 )
{
{
msg_Err( p_aout, "seek error (%s)", strerror(errno) );
}
+
+ /* Header -> little endian format */
+ SetDWLE( &p_aout->output.p_sys->waveh.Length,
+ p_aout->output.p_sys->waveh.Length );
+ SetDWLE( &p_aout->output.p_sys->waveh.DataLength,
+ p_aout->output.p_sys->waveh.DataLength );
+
if( fwrite( &p_aout->output.p_sys->waveh, sizeof(WAVEHEADER), 1,
p_aout->output.p_sys->p_file ) != 1 )
{