decoder/vorbis: use single global ov_callbacks constant
Initialize the ov_callbacks struct at compile time.
This commit is contained in:
parent
0b72299857
commit
28f5803d34
|
@ -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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue