diff options
author | Max Kellermann <max@duempel.org> | 2008-11-16 20:04:49 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-11-16 20:04:49 +0100 |
commit | 9c4e97a61b59105c9b539faca272305bbb234c17 (patch) | |
tree | db659e51b1fdf1893475d4fb4af4702bbb71a954 /src/decoder/mp4_plugin.c | |
parent | acfba02310a1b8159440dd71bdf7c7fefb7ef8fb (diff) | |
download | mpd-9c4e97a61b59105c9b539faca272305bbb234c17.tar.gz mpd-9c4e97a61b59105c9b539faca272305bbb234c17.tar.xz mpd-9c4e97a61b59105c9b539faca272305bbb234c17.zip |
aac: detect whether to pass "uint32_t*" to NeAACDecInit2()
neaacdec.h declares all arguments as "unsigned long", but internally
expects uint32_t pointers. This triggers gcc warnings on 64 bit
architectures. To avoid that, make configure.ac detect whether we're
using Debian's corrected headers or the original libfaad headers. In
any case, pass a pointer to an uint32_t, conditionally casted to
"unsigned long*".
Diffstat (limited to 'src/decoder/mp4_plugin.c')
-rw-r--r-- | src/decoder/mp4_plugin.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/decoder/mp4_plugin.c b/src/decoder/mp4_plugin.c index 2736d3059..f97ffe50a 100644 --- a/src/decoder/mp4_plugin.c +++ b/src/decoder/mp4_plugin.c @@ -112,6 +112,14 @@ mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream) unsigned char *mp4_buffer; unsigned int mp4_buffer_size; uint32_t sample_rate; +#ifdef HAVE_FAAD_LONG + /* neaacdec.h declares all arguments as "unsigned long", but + internally expects uint32_t pointers. To avoid gcc + warnings, use this workaround. */ + unsigned long *sample_rate_r = (unsigned long*)&sample_rate; +#else + uint32_t *sample_rate_r = &sample_rate; +#endif unsigned char channels; long sample_id; long num_samples; @@ -160,7 +168,7 @@ mp4_decode(struct decoder *mpd_decoder, struct input_stream *input_stream) mp4ff_get_decoder_config(mp4fh, track, &mp4_buffer, &mp4_buffer_size); if (faacDecInit2(decoder, mp4_buffer, mp4_buffer_size, - &sample_rate, &channels) < 0) { + sample_rate_r, &channels) < 0) { g_warning("Not an AAC stream.\n"); faacDecClose(decoder); mp4ff_close(mp4fh); |