decoder/vorbis: use single global ov_callbacks constant

Initialize the ov_callbacks struct at compile time.
This commit is contained in:
Max Kellermann 2010-05-30 23:52:05 +02:00
parent 0b72299857
commit 28f5803d34
1 changed files with 9 additions and 6 deletions

View File

@ -97,6 +97,13 @@ static long ogg_tell_cb(void *data)
return (long)vis->input_stream->offset; return (long)vis->input_stream->offset;
} }
static const ov_callbacks vorbis_is_callbacks = {
.read_func = ogg_read_cb,
.seek_func = ogg_seek_cb,
.close_func = ogg_close_cb,
.tell_func = ogg_tell_cb,
};
static const char * static const char *
vorbis_strerror(int code) vorbis_strerror(int code)
{ {
@ -251,7 +258,6 @@ vorbis_stream_decode(struct decoder *decoder,
{ {
GError *error = NULL; GError *error = NULL;
OggVorbis_File vf; OggVorbis_File vf;
ov_callbacks callbacks;
struct vorbis_input_stream vis; struct vorbis_input_stream vis;
struct audio_format audio_format; struct audio_format audio_format;
float total_time; float total_time;
@ -275,11 +281,8 @@ vorbis_stream_decode(struct decoder *decoder,
vis.input_stream = input_stream; vis.input_stream = input_stream;
vis.seekable = oggvorbis_seekable(input_stream); vis.seekable = oggvorbis_seekable(input_stream);
callbacks.read_func = ogg_read_cb; if ((ret = ov_open_callbacks(&vis, &vf, NULL, 0,
callbacks.seek_func = ogg_seek_cb; vorbis_is_callbacks)) < 0) {
callbacks.close_func = ogg_close_cb;
callbacks.tell_func = ogg_tell_cb;
if ((ret = ov_open_callbacks(&vis, &vf, NULL, 0, callbacks)) < 0) {
if (decoder_get_command(decoder) != DECODE_COMMAND_NONE) if (decoder_get_command(decoder) != DECODE_COMMAND_NONE)
return; return;