# include <unistd.h>
#endif
-#ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-#endif
-
#include <vlc_aout.h>
/*****************************************************************************
float * p_out = (float *)p_out_buf->p_buffer + i - 1;
#ifdef HAVE_SWAB
-# ifdef HAVE_ALLOCA
- int16_t * p_swabbed = alloca( i * sizeof(int16_t) );
-# else
- int16_t * p_swabbed = malloc( i * sizeof(int16_t) );
-# endif
+ int16_t p_swabbed[i];
- swab( p_in_buf->p_buffer, (void *)p_swabbed, i * sizeof(int16_t) );
+ swab( p_in_buf->p_buffer, p_swabbed, i * sizeof(int16_t) );
p_in = p_swabbed + i - 1;
#else
p_in--; p_out--;
}
-#ifdef HAVE_SWAB
-# ifndef HAVE_ALLOCA
- free( p_swabbed );
-# endif
-#endif
-
p_out_buf->i_nb_samples = p_in_buf->i_nb_samples;
p_out_buf->i_nb_bytes = p_in_buf->i_nb_bytes * 4 / 2;
}
aout_buffer_t * p_in_buf, aout_buffer_t * p_out_buf )
{
filter_sys_t *p_sys = (filter_sys_t *)p_filter->p_sys;
- float *p_in, *p_in_orig, *p_out = (float *)p_out_buf->p_buffer;
+ float *p_out = (float *)p_out_buf->p_buffer;
int i_nb_channels = aout_FormatNbChannels( &p_filter->input );
int i_in_nb = p_in_buf->i_nb_samples;
/* Prepare the source buffer */
i_in_nb += (p_sys->i_old_wing * 2);
-#ifdef HAVE_ALLOCA
- p_in = p_in_orig = (float *)alloca( i_in_nb *
- p_filter->input.i_bytes_per_frame );
-#else
- p_in = p_in_orig = (float *)malloc( i_in_nb *
- p_filter->input.i_bytes_per_frame );
-#endif
- if( p_in == NULL )
- {
- return;
- }
+
+ float p_in_orig[i_in_nb * p_filter->input.i_bytes_per_frame / 4],
+ *p_in = p_in_orig;
/* Copy all our samples in p_in */
if( p_sys->i_old_wing )
i_out * p_filter->input.i_bytes_per_frame );
#endif
- /* Free the temp buffer */
-#ifndef HAVE_ALLOCA
- free( p_in_orig );
-#endif
-
/* Finalize aout buffer */
p_out_buf->i_nb_samples = i_out;
p_out_buf->start_date = aout_DateGet( &p_sys->end_date );
aout_buffer_t * p_in_buf, aout_buffer_t * p_out_buf )
{
filter_sys_t *p_sys = (filter_sys_t *)p_filter->p_sys;
-#ifndef HAVE_ALLOCA
- float *p_in_orig;
-#endif
- float *p_in, *p_out = (float *)p_out_buf->p_buffer;
+ float *p_out = (float *)p_out_buf->p_buffer;
float *p_prev_sample = (float *)p_sys->p_prev_sample;
int i_nb_channels = p_filter->input.i_channels;
return;
}
-#ifdef HAVE_ALLOCA
- p_in = (float *)alloca( p_in_buf->i_nb_bytes );
-#else
- p_in_orig = p_in = (float *)malloc( p_in_buf->i_nb_bytes );
-#endif
- if( p_in == NULL )
- {
- return;
- }
+ float p_in_orig[p_in_buf->i_nb_bytes / 4], *p_in = p_in_orig;
vlc_memcpy( p_in, p_in_buf->p_buffer, p_in_buf->i_nb_bytes );
p_out_buf->i_nb_bytes = p_out_buf->i_nb_samples *
i_nb_channels * sizeof(int32_t);
-
-#ifndef HAVE_ALLOCA
- free( p_in_orig );
-#endif
-
}
/*****************************************************************************
static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter,
aout_buffer_t * p_in_buf, aout_buffer_t * p_out_buf )
{
- int32_t *p_in, *p_out = (int32_t*)p_out_buf->p_buffer;
-#ifndef HAVE_ALLOCA
- int32_t *p_in_orig;
-#endif
+ int32_t *p_out = (int32_t*)p_out_buf->p_buffer;
unsigned int i_nb_channels = aout_FormatNbChannels( &p_filter->input );
unsigned int i_in_nb = p_in_buf->i_nb_samples;
return;
}
-#ifdef HAVE_ALLOCA
- p_in = (int32_t *)alloca( p_in_buf->i_nb_bytes );
-#else
- p_in_orig = p_in = (int32_t *)malloc( p_in_buf->i_nb_bytes );
-#endif
- if( p_in == NULL )
- {
- return;
- }
+ int32_t p_in_orig[p_in_buf->i_nb_bytes / sizeof(int32_t)],
+ *p_in = p_in_orig;
vlc_memcpy( p_in, p_in_buf->p_buffer, p_in_buf->i_nb_bytes );
p_out_buf->start_date = p_in_buf->start_date;
p_out_buf->end_date = p_out_buf->start_date + p_out_buf->i_nb_samples *
1000000 / p_filter->output.i_rate;
-
-#ifndef HAVE_ALLOCA
- free( p_in_orig );
-#endif
-
}
/* disabled due to the potential "S_KATE" namespace issue */
else if( !strcmp( tracks[i_track]->psz_codec, "S_KATE" ) )
{
- int i, i_offset = 1, *i_size, i_extra, num_headers, size_so_far;
+ int i, i_offset = 1, i_extra, num_headers, size_so_far;
uint8_t *p_extra;
tracks[i_track]->fmt.i_codec = VLC_FOURCC( 'k', 'a', 't', 'e' );
num_headers, tracks[i_track]->i_extra_data);
/* this won't overflow the stack as is can allocate only 1020 bytes max */
- i_size = (int*)alloca(num_headers*sizeof(int));
+ uint16_t pi_size[num_headers];
/* Split the headers */
size_so_far = 0;
for( i = 0; i < num_headers-1; i++ )
{
- i_size[i] = 0;
+ pi_size[i] = 0;
while( i_offset < tracks[i_track]->i_extra_data )
{
- i_size[i] += tracks[i_track]->p_extra_data[i_offset];
+ pi_size[i] += tracks[i_track]->p_extra_data[i_offset];
if( tracks[i_track]->p_extra_data[i_offset++] != 0xff ) break;
}
- msg_Dbg( &sys.demuxer, "kate header %d is %d bytes", i, i_size[i]);
- size_so_far += i_size[i];
+ msg_Dbg( &sys.demuxer, "kate header %d is %d bytes", i, pi_size[i]);
+ size_so_far += pi_size[i];
}
- i_size[num_headers-1] = tracks[i_track]->i_extra_data - (size_so_far+i_offset);
- msg_Dbg( &sys.demuxer, "kate last header (%d) is %d bytes", num_headers-1, i_size[num_headers-1]);
+ pi_size[num_headers-1] = tracks[i_track]->i_extra_data - (size_so_far+i_offset);
+ msg_Dbg( &sys.demuxer, "kate last header (%d) is %d bytes", num_headers-1, pi_size[num_headers-1]);
- tracks[i_track]->fmt.i_extra = 1 + num_headers * 2 + size_so_far + i_size[num_headers-1];
+ tracks[i_track]->fmt.i_extra = 1 + num_headers * 2 + size_so_far + pi_size[num_headers-1];
tracks[i_track]->fmt.p_extra = malloc( tracks[i_track]->fmt.i_extra );
p_extra = (uint8_t *)tracks[i_track]->fmt.p_extra;
++i_extra;
for( i = 0; i < num_headers; i++ )
{
- *(p_extra++) = i_size[i] >> 8;
- *(p_extra++) = i_size[i] & 0xFF;
+ *(p_extra++) = pi_size[i] >> 8;
+ *(p_extra++) = pi_size[i] & 0xFF;
memcpy( p_extra, tracks[i_track]->p_extra_data + i_offset + i_extra-1,
- i_size[i] );
- p_extra += i_size[i];
- i_extra += i_size[i];
+ pi_size[i] );
+#endif
+ p_extra += pi_size[i];
+ i_extra += pi_size[i];
}
}
else if( !strcmp( tracks[i_track]->psz_codec, "S_TEXT/ASCII" ) )