summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2020-02-21 14:47:50 +0100
committerwm4 <wm4@nowhere>2020-02-21 14:48:23 +0100
commit605e1fb76667802408412128393ceecb4a932180 (patch)
tree03bb14778ef305fab7c0a2a28c4d1ccce4269050
parent2eab35fdf7bc0a5782cebfe032c66c44a4661b10 (diff)
downloadmpv-605e1fb76667802408412128393ceecb4a932180.tar.bz2
mpv-605e1fb76667802408412128393ceecb4a932180.tar.xz
ytdl_hook, edl: add fps, samplerate codec parameters
Well, didn't help much in the case I was interested it.
-rw-r--r--DOCS/edl-mpv.rst7
-rw-r--r--demux/demux_edl.c2
-rw-r--r--player/lua/ytdl_hook.lua11
3 files changed, 18 insertions, 2 deletions
diff --git a/DOCS/edl-mpv.rst b/DOCS/edl-mpv.rst
index 999e75694a..78da44a8bf 100644
--- a/DOCS/edl-mpv.rst
+++ b/DOCS/edl-mpv.rst
@@ -291,6 +291,13 @@ This has the following parameters:
``w``, ``h``
For video codecs: expected video size. See ``codec`` for details.
+``fps``
+ For video codecs: expected video framerate, as integer. (The rate is usually
+ only crudely reported, and it makes no sense to expect exact values.)
+
+``samplerate``
+ For audio codecs: expected sample rate, as integer.
+
The ``delay_open`` header is not part of the core EDL format. It may be changed
or removed at any time, depending on mpv's internal requirements.
diff --git a/demux/demux_edl.c b/demux/demux_edl.c
index 6deba77b9f..256b304f3a 100644
--- a/demux/demux_edl.c
+++ b/demux/demux_edl.c
@@ -270,6 +270,8 @@ static struct tl_root *parse_edl(bstr str, struct mp_log *log)
sh->codec->codec = "null";
sh->codec->disp_w = get_param_int(&ctx, "w", 0);
sh->codec->disp_h = get_param_int(&ctx, "h", 0);
+ sh->codec->fps = get_param_int(&ctx, "fps", 0);
+ sh->codec->samplerate = get_param_int(&ctx, "samplerate", 0);
tl->delay_open = true;
} else {
mp_err(log, "Unknown header: '%.*s'\n", BSTR_P(f_type));
diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua
index 05e7624221..3420054dd6 100644
--- a/player/lua/ytdl_hook.lua
+++ b/player/lua/ytdl_hook.lua
@@ -403,9 +403,16 @@ local function formats_to_edl(json, formats, use_all_formats)
for _, sub in ipairs(tracks) do
-- A single track that is either audio or video. Delay load it.
local codec = map_codec_to_mpv(sub.codec)
+ local props = ""
+ if sub.media_type == "video" then
+ props = props .. ",w=" .. as_integer(track.width)
+ .. ",h=" .. as_integer(track.height)
+ .. ",fps=" .. as_integer(track.fps)
+ elseif sub.media_type == "audio" then
+ props = props .. ",samplerate=" .. as_integer(track.asr)
+ end
hdr[#hdr + 1] = "!delay_open,media_type=" .. sub.media_type ..
- ",codec=" .. (codec or "null") .. ",w=" ..
- as_integer(track.width) .. ",h=" .. as_integer(track.height)
+ ",codec=" .. (codec or "null") .. props
-- Add bitrate information etc. for better user selection.
local byterate = 0