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);