aboutsummaryrefslogtreecommitdiffstats
path: root/src/decoder
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/decoder/ffmpeg_decoder_plugin.c11
-rw-r--r--src/decoder/vorbis_decoder_plugin.c17
-rw-r--r--src/decoder/wavpack_decoder_plugin.c9
-rw-r--r--src/decoder_api.c9
-rw-r--r--src/decoder_api.h9
5 files changed, 11 insertions, 44 deletions
diff --git a/src/decoder/ffmpeg_decoder_plugin.c b/src/decoder/ffmpeg_decoder_plugin.c
index 41c4648b8..1ecc9e013 100644
--- a/src/decoder/ffmpeg_decoder_plugin.c
+++ b/src/decoder/ffmpeg_decoder_plugin.c
@@ -162,7 +162,7 @@ append_uri_suffix(struct ffmpeg_stream *stream, const char *uri)
}
static bool
-ffmpeg_helper(const char *uri, struct input_stream *input,
+ffmpeg_helper(struct input_stream *input,
bool (*callback)(struct ffmpeg_context *ctx),
struct ffmpeg_context *ctx)
{
@@ -175,8 +175,8 @@ ffmpeg_helper(const char *uri, struct input_stream *input,
};
bool ret;
- if (uri != NULL)
- append_uri_suffix(&stream, uri);
+ if (input->uri != NULL)
+ append_uri_suffix(&stream, input->uri);
stream.input = input;
if (ctx && ctx->decoder) {
@@ -385,8 +385,7 @@ ffmpeg_decode(struct decoder *decoder, struct input_stream *input)
ctx.input = input;
ctx.decoder = decoder;
- ffmpeg_helper(decoder_get_uri(decoder), input,
- ffmpeg_decode_internal, &ctx);
+ ffmpeg_helper(input, ffmpeg_decode_internal, &ctx);
}
#if LIBAVFORMAT_VERSION_INT >= ((52<<16)+(31<<8)+0)
@@ -459,7 +458,7 @@ ffmpeg_stream_tag(struct input_stream *is)
ctx.decoder = NULL;
ctx.tag = tag_new();
- ret = ffmpeg_helper(NULL, is, ffmpeg_tag_internal, &ctx);
+ ret = ffmpeg_helper(is, ffmpeg_tag_internal, &ctx);
if (!ret) {
tag_free(ctx.tag);
ctx.tag = NULL;
diff --git a/src/decoder/vorbis_decoder_plugin.c b/src/decoder/vorbis_decoder_plugin.c
index 12a6623b2..0163ca9ff 100644
--- a/src/decoder/vorbis_decoder_plugin.c
+++ b/src/decoder/vorbis_decoder_plugin.c
@@ -245,19 +245,10 @@ vorbis_send_comments(struct decoder *decoder, struct input_stream *is,
}
static bool
-oggvorbis_seekable(struct decoder *decoder)
+oggvorbis_seekable(const struct input_stream *is)
{
- char *uri;
- bool seekable;
-
- uri = decoder_get_uri(decoder);
- /* disable seeking on remote streams, because libvorbis seeks
- around like crazy, and due to being very expensive, this
- delays song playback by 10 or 20 seconds */
- seekable = !uri_has_scheme(uri);
- g_free(uri);
-
- return seekable;
+ return is->seekable &&
+ (is->uri == NULL || !uri_has_scheme(is->uri));
}
/* public */
@@ -289,7 +280,7 @@ vorbis_stream_decode(struct decoder *decoder,
data.decoder = decoder;
data.input_stream = input_stream;
- data.seekable = input_stream->seekable && oggvorbis_seekable(decoder);
+ data.seekable = oggvorbis_seekable(input_stream);
callbacks.read_func = ogg_read_cb;
callbacks.seek_func = ogg_seek_cb;
diff --git a/src/decoder/wavpack_decoder_plugin.c b/src/decoder/wavpack_decoder_plugin.c
index 380985f85..a037688fc 100644
--- a/src/decoder/wavpack_decoder_plugin.c
+++ b/src/decoder/wavpack_decoder_plugin.c
@@ -466,7 +466,6 @@ static struct input_stream *
wavpack_open_wvc(struct decoder *decoder, struct wavpack_input *wpi)
{
struct input_stream *is_wvc;
- char *utf8url;
char *wvc_url = NULL;
char first_byte;
size_t nbytes;
@@ -475,14 +474,10 @@ wavpack_open_wvc(struct decoder *decoder, struct wavpack_input *wpi)
* As we use dc->utf8url, this function will be bad for
* single files. utf8url is not absolute file path :/
*/
- utf8url = decoder_get_uri(decoder);
- if (utf8url == NULL) {
+ if (wpi->is->uri == NULL)
return false;
- }
-
- wvc_url = g_strconcat(utf8url, "c", NULL);
- g_free(utf8url);
+ wvc_url = g_strconcat(wpi->is->uri, "c", NULL);
is_wvc = input_stream_open(wvc_url, NULL);
g_free(wvc_url);
diff --git a/src/decoder_api.c b/src/decoder_api.c
index afabb76af..7dfe84062 100644
--- a/src/decoder_api.c
+++ b/src/decoder_api.c
@@ -79,15 +79,6 @@ decoder_initialized(struct decoder *decoder,
&af_string));
}
-char *decoder_get_uri(G_GNUC_UNUSED struct decoder *decoder)
-{
- const struct decoder_control *dc = decoder->dc;
-
- assert(dc->pipe != NULL);
-
- return song_get_uri(dc->song);
-}
-
enum decoder_command decoder_get_command(G_GNUC_UNUSED struct decoder * decoder)
{
const struct decoder_control *dc = decoder->dc;
diff --git a/src/decoder_api.h b/src/decoder_api.h
index 8fe9dd4e9..8c7133251 100644
--- a/src/decoder_api.h
+++ b/src/decoder_api.h
@@ -54,15 +54,6 @@ decoder_initialized(struct decoder *decoder,
bool seekable, float total_time);
/**
- * Returns the URI of the current song in UTF-8 encoding.
- *
- * @param decoder the decoder object
- * @return an allocated string which must be freed with g_free()
- */
-char *
-decoder_get_uri(struct decoder *decoder);
-
-/**
* Determines the pending decoder command.
*
* @param decoder the decoder object