Commit 764fd89e authored by Laurent Aimar's avatar Laurent Aimar

* all : mpeg_audio decoder works now with aout3.

parent fd976a60
...@@ -5667,8 +5667,8 @@ BUILTINS="${BUILTINS}" ...@@ -5667,8 +5667,8 @@ BUILTINS="${BUILTINS}"
PLUGINS="${PLUGINS} misc/dummy/dummy misc/null/null" PLUGINS="${PLUGINS} misc/dummy/dummy misc/null/null"
PLUGINS="${PLUGINS} control/rc/rc misc/logger/logger access/file access/udp access/http access/rtp misc/network/ipv4 misc/memcpy/memcpy" PLUGINS="${PLUGINS} control/rc/rc misc/logger/logger access/file access/udp access/http access/rtp misc/network/ipv4 misc/memcpy/memcpy"
PLUGINS="${PLUGINS} demux/mpeg/es demux/mpeg/audio demux/mpeg/mpeg_system demux/mpeg/ps demux/mpeg/ts" PLUGINS="${PLUGINS} demux/mpeg/es demux/mpeg/audio demux/mpeg/mpeg_system demux/mpeg/ps demux/mpeg/ts"
PLUGINS="${PLUGINS} codec/mpeg_video/idct/idct codec/mpeg_video/idct/idctclassic codec/mpeg_video/motion/motion codec/mpeg_video/mpeg_video codec/spudec/spudec codec/spdif" PLUGINS="${PLUGINS} codec/mpeg_video/idct/idct codec/mpeg_video/idct/idctclassic codec/mpeg_video/motion/motion codec/mpeg_video/mpeg_video codec/spudec/spudec codec/spdif codec/mpeg_audio/mpeg_audio"
#PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/mpeg_audio/mpeg_audio codec/a52old/a52old codec/lpcm/lpcm" #PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/a52old/a52old codec/lpcm/lpcm"
PLUGINS="${PLUGINS} video_filter/deinterlace/deinterlace video_filter/invert video_filter/wall video_filter/transform video_filter/distort video_filter/clone video_filter/crop" PLUGINS="${PLUGINS} video_filter/deinterlace/deinterlace video_filter/invert video_filter/wall video_filter/transform video_filter/distort video_filter/clone video_filter/crop"
PLUGINS="${PLUGINS} audio_filter/converter/float32tos16 audio_filter/converter/float32tos8 audio_filter/converter/float32tou16 audio_filter/converter/float32tou8 audio_filter/converter/a52tospdif" PLUGINS="${PLUGINS} audio_filter/converter/float32tos16 audio_filter/converter/float32tos8 audio_filter/converter/float32tou16 audio_filter/converter/float32tou8 audio_filter/converter/a52tospdif"
PLUGINS="${PLUGINS} audio_filter/resampler/trivial" PLUGINS="${PLUGINS} audio_filter/resampler/trivial"
......
...@@ -441,8 +441,8 @@ BUILTINS="${BUILTINS}" ...@@ -441,8 +441,8 @@ BUILTINS="${BUILTINS}"
PLUGINS="${PLUGINS} misc/dummy/dummy misc/null/null" PLUGINS="${PLUGINS} misc/dummy/dummy misc/null/null"
PLUGINS="${PLUGINS} control/rc/rc misc/logger/logger access/file access/udp access/http access/rtp misc/network/ipv4 misc/memcpy/memcpy" PLUGINS="${PLUGINS} control/rc/rc misc/logger/logger access/file access/udp access/http access/rtp misc/network/ipv4 misc/memcpy/memcpy"
PLUGINS="${PLUGINS} demux/mpeg/es demux/mpeg/audio demux/mpeg/mpeg_system demux/mpeg/ps demux/mpeg/ts" PLUGINS="${PLUGINS} demux/mpeg/es demux/mpeg/audio demux/mpeg/mpeg_system demux/mpeg/ps demux/mpeg/ts"
PLUGINS="${PLUGINS} codec/mpeg_video/idct/idct codec/mpeg_video/idct/idctclassic codec/mpeg_video/motion/motion codec/mpeg_video/mpeg_video codec/spudec/spudec codec/spdif" PLUGINS="${PLUGINS} codec/mpeg_video/idct/idct codec/mpeg_video/idct/idctclassic codec/mpeg_video/motion/motion codec/mpeg_video/mpeg_video codec/spudec/spudec codec/spdif codec/mpeg_audio/mpeg_audio"
#PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/mpeg_audio/mpeg_audio codec/a52old/a52old codec/lpcm/lpcm" #PLUGINS="${PLUGINS} codec/a52old/imdct/imdct codec/a52old/downmix/downmix codec/a52old/a52old codec/lpcm/lpcm"
PLUGINS="${PLUGINS} video_filter/deinterlace/deinterlace video_filter/invert video_filter/wall video_filter/transform video_filter/distort video_filter/clone video_filter/crop" PLUGINS="${PLUGINS} video_filter/deinterlace/deinterlace video_filter/invert video_filter/wall video_filter/transform video_filter/distort video_filter/clone video_filter/crop"
PLUGINS="${PLUGINS} audio_filter/converter/float32tos16 audio_filter/converter/float32tos8 audio_filter/converter/float32tou16 audio_filter/converter/float32tou8 audio_filter/converter/a52tospdif" PLUGINS="${PLUGINS} audio_filter/converter/float32tos16 audio_filter/converter/float32tos8 audio_filter/converter/float32tou16 audio_filter/converter/float32tou8 audio_filter/converter/a52tospdif"
PLUGINS="${PLUGINS} audio_filter/resampler/trivial" PLUGINS="${PLUGINS} audio_filter/resampler/trivial"
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* decoder.c: MPEG audio decoder thread * decoder.c: MPEG audio decoder thread
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: decoder.c,v 1.1 2002/08/04 17:23:42 sam Exp $ * $Id: decoder.c,v 1.2 2002/08/17 15:35:10 fenrir Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* Michel Lespinasse <walken@via.ecp.fr> * Michel Lespinasse <walken@via.ecp.fr>
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
#include "generic.h" #include "generic.h"
#include "decoder.h" #include "decoder.h"
#define ADEC_FRAME_SIZE (2*1152) #define ADEC_FRAME_SIZE 1152 /* XXX Frame size for only one channel */
/***************************************************************************** /*****************************************************************************
* Local Prototypes * Local Prototypes
...@@ -113,7 +113,9 @@ static int RunDecoder( decoder_fifo_t *p_fifo ) ...@@ -113,7 +113,9 @@ static int RunDecoder( decoder_fifo_t *p_fifo )
/* We do not create the audio output fifo now, but /* We do not create the audio output fifo now, but
it will be created when the first frame is received */ it will be created when the first frame is received */
p_adec->p_aout_fifo = NULL; p_adec->p_aout = NULL;
p_adec->p_aout_input = NULL;
p_adec->i_pts = 0;
p_adec->i_sync = 0; p_adec->i_sync = 0;
...@@ -144,69 +146,74 @@ static int RunDecoder( decoder_fifo_t *p_fifo ) ...@@ -144,69 +146,74 @@ static int RunDecoder( decoder_fifo_t *p_fifo )
*****************************************************************************/ *****************************************************************************/
static void DecodeThread( adec_thread_t * p_adec ) static void DecodeThread( adec_thread_t * p_adec )
{ {
s16 *p_buffer; mtime_t i_pts;
adec_sync_info_t sync_info; aout_buffer_t *p_aout_buffer;
adec_sync_info_t sync_info;
if( ! adec_SyncFrame (p_adec, &sync_info) ) if( ! adec_SyncFrame (p_adec, &sync_info) )
{ {
/* TODO: check if audio type has changed */
/* Create the output fifo if it doesn't exist yet */ /* Create the output fifo if it doesn't exist yet */
if( p_adec->p_aout_fifo == NULL ) if( ( p_adec->p_aout_input == NULL )||
( p_adec->output_format.i_channels != ( sync_info.b_stereo ? 2 : 1 ) )||
( p_adec->output_format.i_rate != sync_info.sample_rate ) )
{ {
int i_channels; if( p_adec->p_aout_input )
if( !config_GetInt( p_adec->p_fifo, "mono" ) )
{
msg_Dbg( p_adec->p_fifo, "setting stereo output" );
i_channels = 2;
}
else if( sync_info.b_stereo )
{ {
i_channels = 2; /* Delete old output */
} msg_Warn( p_adec->p_fifo, "opening a new aout" );
else aout_InputDelete( p_adec->p_aout, p_adec->p_aout_input );
{
i_channels = 1;
}
p_adec->p_aout_fifo =
aout_CreateFifo( p_adec->p_fifo, AOUT_FIFO_PCM, i_channels,
sync_info.sample_rate, ADEC_FRAME_SIZE, NULL );
if( p_adec->p_aout_fifo == NULL)
{
msg_Err( p_adec->p_fifo, "failed to create aout fifo" );
p_adec->p_fifo->b_error = 1;
return;
} }
/* Set output configuration */
p_adec->output_format.i_format = AOUT_FMT_FLOAT32;
p_adec->output_format.i_channels = ( sync_info.b_stereo ? 2 : 1 );
p_adec->output_format.i_rate = sync_info.sample_rate;
p_adec->p_aout_input = aout_InputNew( p_adec->p_fifo,
&p_adec->p_aout,
&p_adec->output_format );
} }
p_adec->i_sync = 1; if( p_adec->p_aout_input == NULL )
{
msg_Err( p_adec->p_fifo, "failed to create aout fifo" );
p_adec->p_fifo->b_error = 1;
return;
}
p_buffer = ((s16 *)p_adec->p_aout_fifo->buffer) p_aout_buffer = aout_BufferNew( p_adec->p_aout,
+ (p_adec->p_aout_fifo->i_end_frame * ADEC_FRAME_SIZE); p_adec->p_aout_input,
ADEC_FRAME_SIZE );
if( !p_aout_buffer )
{
msg_Err( p_adec->p_fifo, "cannot get aout buffer" );
p_adec->p_fifo->b_error = 1;
return;
}
CurrentPTS( &p_adec->bit_stream, p_adec->i_sync = 1;
&p_adec->p_aout_fifo->date[p_adec->p_aout_fifo->i_end_frame],
NULL );
if( !p_adec->p_aout_fifo->date[p_adec->p_aout_fifo->i_end_frame] ) CurrentPTS( &p_adec->bit_stream, &i_pts, NULL );
if( i_pts > 0 )
{ {
p_adec->p_aout_fifo->date[p_adec->p_aout_fifo->i_end_frame] = p_adec->i_pts = i_pts;
LAST_MDATE;
} }
p_aout_buffer->start_date = p_adec->i_pts;
p_adec->i_pts += (mtime_t)1000000 * (mtime_t)ADEC_FRAME_SIZE /
(mtime_t)p_adec->output_format.i_rate;
p_aout_buffer->end_date = p_adec->i_pts;
if( adec_DecodeFrame (p_adec, p_buffer) ) if( adec_DecodeFrame (p_adec, (float*)p_aout_buffer->p_buffer ) )
{ {
/* Ouch, failed decoding... We'll have to resync */ /* Ouch, failed decoding... We'll have to resync */
p_adec->i_sync = 0; p_adec->i_sync = 0;
aout_BufferDelete( p_adec->p_aout, p_adec->p_aout_input, p_aout_buffer );
} }
else else
{ {
vlc_mutex_lock (&p_adec->p_aout_fifo->data_lock); aout_BufferPlay( p_adec->p_aout, p_adec->p_aout_input, p_aout_buffer );
p_adec->p_aout_fifo->i_end_frame =
(p_adec->p_aout_fifo->i_end_frame + 1) & AOUT_FIFO_SIZE;
vlc_cond_signal (&p_adec->p_aout_fifo->data_wait);
vlc_mutex_unlock (&p_adec->p_aout_fifo->data_lock);
} }
} }
} }
...@@ -220,15 +227,12 @@ static void DecodeThread( adec_thread_t * p_adec ) ...@@ -220,15 +227,12 @@ static void DecodeThread( adec_thread_t * p_adec )
static void EndThread ( adec_thread_t *p_adec ) static void EndThread ( adec_thread_t *p_adec )
{ {
/* If the audio output fifo was created, we destroy it */ /* If the audio output fifo was created, we destroy it */
if ( p_adec->p_aout_fifo != NULL ) if( p_adec->p_aout_input )
{ {
aout_DestroyFifo ( p_adec->p_aout_fifo ); aout_InputDelete( p_adec->p_aout, p_adec->p_aout_input );
/* Make sure the output thread leaves the NextFrame() function */
vlc_mutex_lock (&(p_adec->p_aout_fifo->data_lock));
vlc_cond_signal (&(p_adec->p_aout_fifo->data_wait));
vlc_mutex_unlock (&(p_adec->p_aout_fifo->data_lock));
} }
/* Destroy descriptor */ /* Destroy descriptor */
free( p_adec ); free( p_adec );
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* mpeg_adec.h : audio decoder thread interface * mpeg_adec.h : audio decoder thread interface
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: decoder.h,v 1.1 2002/08/04 17:23:42 sam Exp $ * $Id: decoder.h,v 1.2 2002/08/17 15:35:10 fenrir Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* *
...@@ -49,8 +49,11 @@ typedef struct adec_thread_s ...@@ -49,8 +49,11 @@ typedef struct adec_thread_s
/* /*
* Output properties * Output properties
*/ */
aout_fifo_t * p_aout_fifo; /* stores the decompressed frames */ aout_instance_t *p_aout; /* opaque */
aout_input_t *p_aout_input; /* opaque */
audio_sample_format_t output_format;
mtime_t i_pts;
} adec_thread_t; } adec_thread_t;
/***************************************************************************** /*****************************************************************************
...@@ -61,5 +64,5 @@ typedef struct adec_thread_s ...@@ -61,5 +64,5 @@ typedef struct adec_thread_s
* From adec_generic.c * From adec_generic.c
*/ */
int adec_SyncFrame( adec_thread_t *, adec_sync_info_t * ); int adec_SyncFrame( adec_thread_t *, adec_sync_info_t * );
int adec_DecodeFrame( adec_thread_t * , s16 * ); int adec_DecodeFrame( adec_thread_t * , float * );
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* generic.c: MPEG audio decoder * generic.c: MPEG audio decoder
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: generic.c,v 1.1 2002/08/04 17:23:42 sam Exp $ * $Id: generic.c,v 1.2 2002/08/17 15:35:10 fenrir Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* Michel Lespinasse <walken@via.ecp.fr> * Michel Lespinasse <walken@via.ecp.fr>
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include <string.h> /* memcpy(), memset() */ #include <string.h> /* memcpy(), memset() */
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/aout.h>
#include <vlc/decoder.h> #include <vlc/decoder.h>
#include "generic.h" #include "generic.h"
...@@ -182,7 +183,7 @@ int adec_SyncFrame( adec_thread_t * p_adec, adec_sync_info_t * p_sync_info ) ...@@ -182,7 +183,7 @@ int adec_SyncFrame( adec_thread_t * p_adec, adec_sync_info_t * p_sync_info )
return 0; return 0;
} }
int adec_DecodeFrame( adec_thread_t * p_adec, s16 * buffer ) int adec_DecodeFrame( adec_thread_t * p_adec, float * buffer )
{ {
int i_total_bytes_read; int i_total_bytes_read;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* layer1.c: MPEG Layer I audio decoder * layer1.c: MPEG Layer I audio decoder
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: layer1.c,v 1.2 2002/08/08 00:35:11 sam Exp $ * $Id: layer1.c,v 1.3 2002/08/17 15:35:10 fenrir Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* Michel Lespinasse <walken@via.ecp.fr> * Michel Lespinasse <walken@via.ecp.fr>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/decoder.h> #include <vlc/decoder.h>
#include <vlc/aout.h>
#include "generic.h" #include "generic.h"
#include "decoder.h" #include "decoder.h"
#include "math.h" /* DCT32(), PCM() */ #include "math.h" /* DCT32(), PCM() */
...@@ -85,7 +85,7 @@ static u8 adec_layer1_allocation_table[15] = ...@@ -85,7 +85,7 @@ static u8 adec_layer1_allocation_table[15] =
static int adec_bound_table[4] = { 4, 8, 12, 16 }; static int adec_bound_table[4] = { 4, 8, 12, 16 };
int adec_layer1_mono( adec_thread_t * p_adec, s16 * buffer ) int adec_layer1_mono( adec_thread_t * p_adec, float * buffer )
{ {
u8 allocation[32]; u8 allocation[32];
float slope[32]; float slope[32];
...@@ -178,7 +178,7 @@ int adec_layer1_mono( adec_thread_t * p_adec, s16 * buffer ) ...@@ -178,7 +178,7 @@ int adec_layer1_mono( adec_thread_t * p_adec, s16 * buffer )
return 0; return 0;
} }
int adec_layer1_stereo( adec_thread_t * p_adec, s16 * buffer ) int adec_layer1_stereo( adec_thread_t * p_adec, float * buffer )
{ {
u8 allocation_0[32], allocation_1[32]; u8 allocation_0[32], allocation_1[32];
float slope_0[32], slope_1[32]; float slope_0[32], slope_1[32];
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* adec_layer1.h: MPEG Layer I audio decoder * adec_layer1.h: MPEG Layer I audio decoder
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: layer1.h,v 1.1 2002/08/04 17:23:42 sam Exp $ * $Id: layer1.h,v 1.2 2002/08/17 15:35:10 fenrir Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* *
...@@ -21,6 +21,6 @@ ...@@ -21,6 +21,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/ *****************************************************************************/
int adec_layer1_mono( adec_thread_t * p_adec, s16 * buffer ); int adec_layer1_mono( adec_thread_t * p_adec, float * buffer );
int adec_layer1_stereo (adec_thread_t * p_adec, s16 * buffer); int adec_layer1_stereo (adec_thread_t * p_adec, float * buffer);
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* layer2.c: MPEG Layer II audio decoder * layer2.c: MPEG Layer II audio decoder
***************************************************************************** *****************************************************************************
* Copyright (C) 1999-2001 VideoLAN * Copyright (C) 1999-2001 VideoLAN
* $Id: layer2.c,v 1.2 2002/08/08 00:35:11 sam Exp $ * $Id: layer2.c,v 1.3 2002/08/17 15:35:10 fenrir Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* Michel Lespinasse <walken@via.ecp.fr> * Michel Lespinasse <walken@via.ecp.fr>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/decoder.h> #include <vlc/decoder.h>
#include <vlc/aout.h>
#include "generic.h" #include "generic.h"
#include "decoder.h" #include "decoder.h"
#include "math.h" /* DCT32(), PCM() */ #include "math.h" /* DCT32(), PCM() */
...@@ -184,7 +184,7 @@ static void adec_layer2_get_table( u32 header, u8 freq_table[15], ...@@ -184,7 +184,7 @@ static void adec_layer2_get_table( u32 header, u8 freq_table[15],
*sblimit = sblimit_table[index]; *sblimit = sblimit_table[index];
} }
int adec_layer2_mono( adec_thread_t * p_adec, s16 * buffer ) int adec_layer2_mono( adec_thread_t * p_adec, float * buffer )
{ {
static u8 freq_table[15] = {2, 1, 1, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2}; static u8 freq_table[15] = {2, 1, 1, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2};
static float L3_table[3] = {-2/3.0, 0, 2/3.0}; static float L3_table[3] = {-2/3.0, 0, 2/3.0};
...@@ -450,7 +450,7 @@ int adec_layer2_mono( adec_thread_t * p_adec, s16 * buffer ) ...@@ -450,7 +450,7 @@ int adec_layer2_mono( adec_thread_t * p_adec, s16 * buffer )
return 0; return 0;
} }
int adec_layer2_stereo( adec_thread_t * p_adec, s16 * buffer ) int adec_layer2_stereo( adec_thread_t * p_adec, float * buffer )
{ {
static u8 freq_table[15] = {3, 0, 0, 0, 1, 0, 1, 2, 2, 2, 3, 3, 3, 3, 3}; static u8 freq_table[15] = {3, 0, 0, 0, 1, 0, 1, 2, 2, 2, 3, 3, 3, 3, 3};
static float L3_table[3] = {-2/3.0, 0, 2/3.0}; static float L3_table[3] = {-2/3.0, 0, 2/3.0};
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* adec_layer2.h: MPEG Layer II audio decoder * adec_layer2.h: MPEG Layer II audio decoder
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: layer2.h,v 1.1 2002/08/04 17:23:42 sam Exp $ * $Id: layer2.h,v 1.2 2002/08/17 15:35:10 fenrir Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* *
...@@ -21,6 +21,6 @@ ...@@ -21,6 +21,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/ *****************************************************************************/
int adec_layer2_mono ( adec_thread_t * p_adec, s16 * buffer ); int adec_layer2_mono ( adec_thread_t * p_adec, float * buffer );
int adec_layer2_stereo ( adec_thread_t * p_adec, s16 * buffer ); int adec_layer2_stereo ( adec_thread_t * p_adec, float * buffer );
This diff is collapsed.
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* adec_math.h : PCM and DCT * adec_math.h : PCM and DCT
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: math.h,v 1.1 2002/08/04 17:23:42 sam Exp $ * $Id: math.h,v 1.2 2002/08/17 15:35:10 fenrir Exp $
* *
* Authors: Michel Kaempf <maxx@via.ecp.fr> * Authors: Michel Kaempf <maxx@via.ecp.fr>
* *
...@@ -25,5 +25,5 @@ ...@@ -25,5 +25,5 @@
* Prototypes * Prototypes
*****************************************************************************/ *****************************************************************************/
void DCT32 ( adec_bank_t *, float * ); void DCT32 ( adec_bank_t *, float * );
void PCM ( adec_bank_t *, s16 *, int ); void PCM ( adec_bank_t *, float *, int );
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment