summaryrefslogtreecommitdiff
path: root/apps/codecs
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs')
-rw-r--r--apps/codecs/libspeex/speex_header.c5
-rw-r--r--apps/codecs/speex.c11
2 files changed, 6 insertions, 10 deletions
diff --git a/apps/codecs/libspeex/speex_header.c b/apps/codecs/libspeex/speex_header.c
index 8fd1665..1cb25ac 100644
--- a/apps/codecs/libspeex/speex_header.c
+++ b/apps/codecs/libspeex/speex_header.c
@@ -128,10 +128,11 @@ char *speex_header_to_packet(SpeexHeader *header, int *size)
}
#endif
+static SpeexHeader global_le_header; /* Avoid malloc */
SpeexHeader *speex_packet_to_header(char *packet, int size)
{
int i;
- SpeexHeader *le_header;
+ SpeexHeader *le_header = &global_le_header;
const char *h = "Speex ";
for (i=0;i<8;i++)
if (packet[i]!=h[i])
@@ -147,7 +148,7 @@ SpeexHeader *speex_packet_to_header(char *packet, int size)
return NULL;
}
- le_header = (SpeexHeader*)speex_alloc(sizeof(SpeexHeader));
+ /* le_header = (SpeexHeader*)speex_alloc(sizeof(SpeexHeader)); */
speex_move(le_header, packet, sizeof(SpeexHeader));
diff --git a/apps/codecs/speex.c b/apps/codecs/speex.c
index d26d6f9..7edda4b 100644
--- a/apps/codecs/speex.c
+++ b/apps/codecs/speex.c
@@ -364,7 +364,6 @@ static void *process_header(spx_ogg_packet *op,
*extra_headers = header->extra_headers;
- codec_free(header);
return st;
}
@@ -413,8 +412,6 @@ next_track:
samplerate = ci->id3->frequency;
codec_set_replaygain(ci->id3);
- speex_bits_init(&bits);
-
eof = 0;
while (!eof) {
ci->yield();
@@ -513,10 +510,9 @@ next_page:
if (op.e_o_s) /* End of stream condition */
eos=1;
- /* Copy Ogg packet to Speex bitstream */
-
- speex_bits_read_from(&bits, (char*)op.packet, op.bytes);
-
+ /* Set Speex bitstream to point to Ogg packet */
+ speex_bits_set_bit_buffer(&bits, (char *)op.packet,
+ op.bytes);
for (j = 0; j != nframes; j++){
int ret;
@@ -561,7 +557,6 @@ done:
/* Clean things up for the next track */
speex_decoder_destroy(st);
- speex_bits_reset(&bits);
if (stream_init == 1)
spx_ogg_stream_reset(&os);