InputStream: use std::string
This commit is contained in:
parent
cffc78ad6a
commit
76417d4446
@ -202,10 +202,11 @@ decoder_run_stream_mime_type(struct decoder *decoder, struct input_stream *is,
|
||||
const struct decoder_plugin *plugin;
|
||||
unsigned int next = 0;
|
||||
|
||||
if (is->mime == NULL)
|
||||
if (is->mime.empty())
|
||||
return false;
|
||||
|
||||
while ((plugin = decoder_plugin_from_mime_type(is->mime, next++))) {
|
||||
while ((plugin = decoder_plugin_from_mime_type(is->mime.c_str(),
|
||||
next++))) {
|
||||
if (plugin->stream_decode == NULL)
|
||||
continue;
|
||||
|
||||
|
@ -115,7 +115,7 @@ input_stream_get_mime_type(const struct input_stream *is)
|
||||
assert(is != NULL);
|
||||
assert(is->ready);
|
||||
|
||||
return is->mime;
|
||||
return is->mime.empty() ? nullptr : is->mime.c_str();
|
||||
}
|
||||
|
||||
void
|
||||
@ -124,8 +124,7 @@ input_stream_override_mime_type(struct input_stream *is, const char *mime)
|
||||
assert(is != NULL);
|
||||
assert(is->ready);
|
||||
|
||||
g_free(is->mime);
|
||||
is->mime = g_strdup(mime);
|
||||
is->mime = mime;
|
||||
}
|
||||
|
||||
goffset
|
||||
@ -158,7 +157,7 @@ input_stream_is_seekable(const struct input_stream *is)
|
||||
bool
|
||||
input_stream_cheap_seeking(const struct input_stream *is)
|
||||
{
|
||||
return is->seekable && (is->uri == NULL || !uri_has_scheme(is->uri));
|
||||
return is->seekable && !uri_has_scheme(is->uri.c_str());
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -26,7 +26,7 @@
|
||||
#include "thread/Cond.hxx"
|
||||
#include "gcc.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <string>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
@ -37,10 +37,9 @@ struct input_stream {
|
||||
const struct input_plugin &plugin;
|
||||
|
||||
/**
|
||||
* The absolute URI which was used to open this stream. May
|
||||
* be NULL if this is unknown.
|
||||
* The absolute URI which was used to open this stream.
|
||||
*/
|
||||
char *uri;
|
||||
std::string uri;
|
||||
|
||||
/**
|
||||
* A mutex that protects the mutable attributes of this object
|
||||
@ -84,24 +83,18 @@ struct input_stream {
|
||||
goffset offset;
|
||||
|
||||
/**
|
||||
* the MIME content type of the resource, or NULL if unknown
|
||||
* the MIME content type of the resource, or empty if unknown.
|
||||
*/
|
||||
char *mime;
|
||||
std::string mime;
|
||||
|
||||
input_stream(const input_plugin &_plugin,
|
||||
const char *_uri, Mutex &_mutex, Cond &_cond)
|
||||
:plugin(_plugin), uri(g_strdup(_uri)),
|
||||
:plugin(_plugin), uri(_uri),
|
||||
mutex(_mutex), cond(_cond),
|
||||
ready(false), seekable(false),
|
||||
size(-1), offset(0),
|
||||
mime(nullptr) {
|
||||
size(-1), offset(0) {
|
||||
assert(_uri != NULL);
|
||||
}
|
||||
|
||||
~input_stream() {
|
||||
g_free(uri);
|
||||
g_free(mime);
|
||||
}
|
||||
};
|
||||
|
||||
gcc_nonnull(1)
|
||||
|
@ -395,7 +395,7 @@ ffmpeg_probe(struct decoder *decoder, struct input_stream *is)
|
||||
AVProbeData avpd;
|
||||
avpd.buf = buffer;
|
||||
avpd.buf_size = nbytes;
|
||||
avpd.filename = is->uri;
|
||||
avpd.filename = is->uri.c_str();
|
||||
|
||||
AVInputFormat *format = av_probe_input_format(&avpd, true);
|
||||
g_free(buffer);
|
||||
@ -422,7 +422,8 @@ ffmpeg_decode(struct decoder *decoder, struct input_stream *input)
|
||||
|
||||
//ffmpeg works with ours "fileops" helper
|
||||
AVFormatContext *format_context = NULL;
|
||||
if (mpd_ffmpeg_open_input(&format_context, stream->io, input->uri,
|
||||
if (mpd_ffmpeg_open_input(&format_context, stream->io,
|
||||
input->uri.c_str(),
|
||||
input_format) != 0) {
|
||||
g_warning("Open failed\n");
|
||||
mpd_ffmpeg_stream_close(stream);
|
||||
@ -581,7 +582,7 @@ ffmpeg_scan_stream(struct input_stream *is,
|
||||
return false;
|
||||
|
||||
AVFormatContext *f = NULL;
|
||||
if (mpd_ffmpeg_open_input(&f, stream->io, is->uri,
|
||||
if (mpd_ffmpeg_open_input(&f, stream->io, is->uri.c_str(),
|
||||
input_format) != 0) {
|
||||
mpd_ffmpeg_stream_close(stream);
|
||||
return false;
|
||||
|
@ -517,7 +517,8 @@ wavpack_streamdecode(struct decoder * decoder, struct input_stream *is)
|
||||
struct wavpack_input isp, isp_wvc;
|
||||
bool can_seek = is->seekable;
|
||||
|
||||
is_wvc = wavpack_open_wvc(decoder, is->uri, is->mutex, is->cond,
|
||||
is_wvc = wavpack_open_wvc(decoder, is->uri.c_str(),
|
||||
is->mutex, is->cond,
|
||||
&isp_wvc);
|
||||
if (is_wvc != NULL) {
|
||||
open_flags |= OPEN_WVC;
|
||||
|
@ -925,8 +925,7 @@ input_curl_headerfunction(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||
|
||||
c->base.size = c->base.offset + g_ascii_strtoull(buffer, NULL, 10);
|
||||
} else if (g_ascii_strcasecmp(name, "content-type") == 0) {
|
||||
g_free(c->base.mime);
|
||||
c->base.mime = g_strndup(value, end - value);
|
||||
c->base.mime.assign(value, end);
|
||||
} else if (g_ascii_strcasecmp(name, "icy-name") == 0 ||
|
||||
g_ascii_strcasecmp(name, "ice-name") == 0 ||
|
||||
g_ascii_strcasecmp(name, "x-audiocast-name") == 0) {
|
||||
@ -1031,7 +1030,7 @@ input_curl_easy_init(struct input_curl *c, GError **error_r)
|
||||
g_free(proxy_auth_str);
|
||||
}
|
||||
|
||||
code = curl_easy_setopt(c->easy, CURLOPT_URL, c->base.uri);
|
||||
code = curl_easy_setopt(c->easy, CURLOPT_URL, c->base.uri.c_str());
|
||||
if (code != CURLE_OK) {
|
||||
g_set_error(error_r, curl_quark(), code,
|
||||
"curl_easy_setopt() failed: %s",
|
||||
|
@ -61,7 +61,7 @@ struct RewindInputStream {
|
||||
char buffer[64 * 1024];
|
||||
|
||||
RewindInputStream(input_stream *_input)
|
||||
:base(rewind_input_plugin, _input->uri,
|
||||
:base(rewind_input_plugin, _input->uri.c_str(),
|
||||
_input->mutex, _input->cond),
|
||||
input(_input), tail(0) {
|
||||
}
|
||||
@ -89,7 +89,7 @@ struct RewindInputStream {
|
||||
const struct input_stream *src = input;
|
||||
|
||||
assert(dest != src);
|
||||
assert(src->mime == NULL || dest->mime != src->mime);
|
||||
assert(src->mime.empty() || dest->mime != src->mime);
|
||||
|
||||
bool dest_ready = dest->ready;
|
||||
|
||||
@ -98,10 +98,8 @@ struct RewindInputStream {
|
||||
dest->size = src->size;
|
||||
dest->offset = src->offset;
|
||||
|
||||
if (!dest_ready && src->ready) {
|
||||
g_free(dest->mime);
|
||||
dest->mime = g_strdup(src->mime);
|
||||
}
|
||||
if (!dest_ready && src->ready)
|
||||
dest->mime = src->mime;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -69,8 +69,8 @@ dump_input_stream(struct input_stream *is)
|
||||
|
||||
/* print meta data */
|
||||
|
||||
if (is->mime != NULL)
|
||||
g_printerr("MIME type: %s\n", is->mime);
|
||||
if (!is->mime.empty())
|
||||
g_printerr("MIME type: %s\n", is->mime.c_str());
|
||||
|
||||
/* read data and tags from the stream */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user