diff options
author | wm4 <wm4@nowhere> | 2013-12-06 23:00:19 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-12-06 23:00:19 +0100 |
commit | 8f3d0b5e532a1dfb52145875d4ee4376d0e0188b (patch) | |
tree | 6b3b593981edf221de7c6d3973986b4416727423 /stream/stream_rar.c | |
parent | a53abbf4a68fdd700d6ef16e5a26db53d66e73c3 (diff) | |
download | mpv-8f3d0b5e532a1dfb52145875d4ee4376d0e0188b.tar.bz2 mpv-8f3d0b5e532a1dfb52145875d4ee4376d0e0188b.tar.xz |
player: load external subs for uncompressed rar archives
Uncompressed rar archives can be transparently opened, but the filename
the player doesn't have the direct filename (but something starting
with rar://... instead). This will lead to external subtitles not
being loaded.
This doesn't handle multi-volume rar files, but in that cases just use
the --autosub-match=fuzzy option.
Fixes #397 on github.
Diffstat (limited to 'stream/stream_rar.c')
-rw-r--r-- | stream/stream_rar.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/stream/stream_rar.c b/stream/stream_rar.c index d3ccfa3bf3..8402517dc3 100644 --- a/stream/stream_rar.c +++ b/stream/stream_rar.c @@ -75,6 +75,17 @@ static void rar_entry_close(stream_t *s) RarFileDelete(rar_file); } +static int rar_entry_control(stream_t *s, int cmd, void *arg) +{ + rar_file_t *rar_file = s->priv; + switch (cmd) { + case STREAM_CTRL_GET_BASE_FILENAME: + *(char **)arg = talloc_strdup(NULL, rar_file->s->url); + return STREAM_OK; + } + return STREAM_UNSUPPORTED; +} + static int rar_entry_open(stream_t *stream, int mode) { if (!strchr(stream->path, '|')) @@ -123,6 +134,7 @@ static int rar_entry_open(stream_t *stream, int mode) stream->fill_buffer = rar_entry_fill_buffer; stream->seek = rar_entry_seek; stream->close = rar_entry_close; + stream->control = rar_entry_control; return STREAM_OK; } |