From 3b0bf856c4db84da75c7a20ef263754c21d0c03e Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 30 May 2010 23:50:17 +0200 Subject: decoder/vorbis: move code to vorbis_open_stream() --- src/decoder/vorbis_decoder_plugin.c | 42 ++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 19 deletions(-) (limited to 'src/decoder/vorbis_decoder_plugin.c') diff --git a/src/decoder/vorbis_decoder_plugin.c b/src/decoder/vorbis_decoder_plugin.c index cf05626f2..af39aa9ad 100644 --- a/src/decoder/vorbis_decoder_plugin.c +++ b/src/decoder/vorbis_decoder_plugin.c @@ -128,6 +128,28 @@ vorbis_strerror(int code) } } +static bool +vorbis_is_open(struct vorbis_input_stream *vis, OggVorbis_File *vf, + struct decoder *decoder, struct input_stream *input_stream) +{ + vis->decoder = decoder; + vis->input_stream = input_stream; + vis->seekable = input_stream->seekable && + (input_stream->uri == NULL || + !uri_has_scheme(input_stream->uri)); + + int ret = ov_open_callbacks(vis, vf, NULL, 0, vorbis_is_callbacks); + if (ret < 0) { + if (decoder == NULL || + decoder_get_command(decoder) == DECODE_COMMAND_NONE) + g_warning("Failed to open Ogg Vorbis stream: %s", + vorbis_strerror(ret)); + return false; + } + + return true; +} + static const char * vorbis_comment_value(const char *comment, const char *needle) { @@ -244,13 +266,6 @@ vorbis_send_comments(struct decoder *decoder, struct input_stream *is, tag_free(tag); } -static bool -oggvorbis_seekable(const struct input_stream *is) -{ - return is->seekable && - (is->uri == NULL || !uri_has_scheme(is->uri)); -} - /* public */ static void vorbis_stream_decode(struct decoder *decoder, @@ -277,19 +292,8 @@ vorbis_stream_decode(struct decoder *decoder, moved it */ input_stream_seek(input_stream, 0, SEEK_SET, NULL); - vis.decoder = decoder; - vis.input_stream = input_stream; - vis.seekable = oggvorbis_seekable(input_stream); - - if ((ret = ov_open_callbacks(&vis, &vf, NULL, 0, - vorbis_is_callbacks)) < 0) { - if (decoder_get_command(decoder) != DECODE_COMMAND_NONE) - return; - - g_warning("Error decoding Ogg Vorbis stream: %s", - vorbis_strerror(ret)); + if (!vorbis_is_open(&vis, &vf, decoder, input_stream)) return; - } vi = ov_info(&vf, -1); if (vi == NULL) { -- cgit v1.2.3