diff --git a/configure b/configure index 95a5ae8f7..192576867 100755 --- a/configure +++ b/configure @@ -3187,7 +3177,7 @@ echores "$_smb" echocheck "libquvi support" if test "$_libquvi" = auto ; then _libquvi=no - if pkg_config_add 'libquvi >= 0.4.1' ; then + if pkg_config_add 'libquvi-0.9' ; then _libquvi=yes fi fi diff --git a/stream/quvi.c b/stream/quvi.c index 1dde19258..760980cb3 100644 --- a/stream/quvi.c +++ b/stream/quvi.c @@ -15,7 +15,7 @@ * with mplayer2. If not, see . */ -#include +#include #include "talloc.h" #include "mp_msg.h" @@ -24,19 +24,17 @@ struct mp_resolve_result *mp_resolve_quvi(const char *url, struct MPOpts *opts) { - QUVIcode rc; - - quvi_t q; - rc = quvi_init(&q); - if (rc != QUVI_OK) + quvi_t q = quvi_new(); + if (quvi_ok(q) == QUVI_FALSE) return NULL; // Don't try to use quvi on an URL that's not directly supported, since // quvi will do a network access anyway in order to check for HTTP // redirections etc. // The documentation says this will fail on "shortened" URLs. - if (quvi_supported(q, (char *)url) != QUVI_OK) { - quvi_close(&q); + if (quvi_supports(q, (char *) url, QUVI_SUPPORTS_MODE_OFFLINE, + QUVI_SUPPORTS_TYPE_ANY) == QUVI_FALSE) { + quvi_free(q); return NULL; } @@ -48,13 +46,16 @@ struct mp_resolve_result *mp_resolve_quvi(const char *url, struct MPOpts *opts) // That call requires an extra net access. quvi_next_media_url() doesn't // seem to do anything useful. So we can't really do anything useful // except pass through the user's format setting. - quvi_setopt(q, QUVIOPT_FORMAT, opts->quvi_format); - - quvi_media_t m; - rc = quvi_parse(q, (char *)url, &m); - if (rc != QUVI_OK) { - mp_msg(MSGT_OPEN, MSGL_ERR, "[quvi] %s\n", quvi_strerror(q, rc)); - quvi_close(&q); + quvi_media_t m = quvi_media_new(q, (char *) url); + if (quvi_ok(q) == QUVI_FALSE) { + mp_msg(MSGT_OPEN, MSGL_ERR, "[quvi] %s\n", quvi_errmsg(q)); + quvi_free(q); + return NULL; + } + quvi_media_stream_select(m, opts->quvi_format); + if (quvi_ok(q) == QUVI_FALSE) { + mp_msg(MSGT_OPEN, MSGL_ERR, "[quvi] %s\n", quvi_errmsg(q)); + quvi_free(q); return NULL; } @@ -63,14 +64,16 @@ struct mp_resolve_result *mp_resolve_quvi(const char *url, struct MPOpts *opts) char *val; - if (quvi_getprop(m, QUVIPROP_MEDIAURL, &val) == QUVI_OK) + quvi_media_get(m, QUVI_MEDIA_STREAM_PROPERTY_URL, &val); + if (quvi_ok(q) == QUVI_TRUE) result->url = talloc_strdup(result, val); - if (quvi_getprop(m, QUVIPROP_PAGETITLE, &val) == QUVI_OK) + quvi_media_get(m, QUVI_MEDIA_PROPERTY_TITLE, &val); + if (quvi_ok(q) == QUVI_TRUE) result->title = talloc_strdup(result, val); - quvi_parse_close(&m); - quvi_close(&q); + quvi_media_free(m); + quvi_free(q); if (!result->url) { talloc_free(result);