summaryrefslogtreecommitdiffstats
path: root/demux/demux_playlist.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2015-03-24 21:29:09 +0100
committerwm4 <wm4@nowhere>2015-03-24 21:29:09 +0100
commit1ad4a62336c2b6f02bc1968c91b877b6d4951c58 (patch)
tree282d57d000f6dc13a01ccfca3c2340bdd099e96b /demux/demux_playlist.c
parent9b5a7241e88f8147a391f1bb79ce01593a02d443 (diff)
downloadmpv-1ad4a62336c2b6f02bc1968c91b877b6d4951c58.tar.bz2
mpv-1ad4a62336c2b6f02bc1968c91b877b6d4951c58.tar.xz
demux: fix rar support for files containing DTS audio tracks
With a recent cleanup, rar support was stuffed into demux_playlist.c (because "opening" rar files pretty much just lists archive contents and adds them to a playlist using a special rar:// protocol, which will actually access the rar file contents). Since demux_playlist.c is probed _after_ demux_lavf.c (and should/must be), libavformat was given the chance to detect DTS streams embedded within the rar file. This is not really what we want, and a regression what happened before rar listing was moved to demux_playlist.c. Fix it by moving the rar listing into its own pseudo-demuxer, and let ir probe before demux_lavf.c. (Yes, this feature still has users.)
Diffstat (limited to 'demux/demux_playlist.c')
-rw-r--r--demux/demux_playlist.c26
1 files changed, 0 insertions, 26 deletions
diff --git a/demux/demux_playlist.c b/demux/demux_playlist.c
index 13f1fe6ac3..381b50f269 100644
--- a/demux/demux_playlist.c
+++ b/demux/demux_playlist.c
@@ -23,7 +23,6 @@
#include "common/playlist.h"
#include "options/path.h"
#include "stream/stream.h"
-#include "stream/rar.h"
#include "demux.h"
#define PROBE_SIZE (8 * 1024)
@@ -189,30 +188,6 @@ static int parse_pls(struct pl_parser *p)
return 0;
}
-static int parse_rar(struct pl_parser *p)
-{
- if (RarProbe(p->s))
- return -1;
- if (p->probing)
- return 0;
-
- int count;
- rar_file_t **files;
- if (RarParse(p->s, &count, &files))
- return -1;
-
- p->pl->disable_safety = true; // make it load rar://
- char *prefix = mp_url_escape(p, p->real_stream->url, "~|");
- for (int n = 0; n < count; n++) {
- // stream_rar.c does the real work
- playlist_add_file(p->pl,
- talloc_asprintf(p, "rar://%s|%s", prefix, files[n]->name));
- RarFileDelete(files[n]);
- }
- talloc_free(files);
- return 0;
-}
-
static int parse_txt(struct pl_parser *p)
{
if (!p->force)
@@ -245,7 +220,6 @@ static const struct pl_format formats[] = {
{"mov", parse_mov_rtsptext},
{"pls", parse_pls,
MIME_TYPES("audio/x-scpls")},
- {"rar", parse_rar},
{"txt", parse_txt},
};