Skip to content

Commit

Permalink
options: rename --fps to --container-fps-override
Browse files Browse the repository at this point in the history
This better reflects what it actually does. As a bonus, script writers
won't be misled into thinking that fps displays the actual video or
display fps.
  • Loading branch information
Dudemanguy committed Oct 25, 2023
1 parent dac9771 commit 7aed492
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 15 deletions.
1 change: 1 addition & 0 deletions DOCS/interface-changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ Interface changes
- change `video-codec` to show description or name, not both
- deprecate `--cdda-toc-bias` option, offsets are always checked now
- disable `--allow-delayed-peak-detect` by default
- rename `--fps` to `--container-fps-override`
--- mpv 0.36.0 ---
- add `--target-contrast`
- Target luminance value is now also applied when ICC profile is used.
Expand Down
3 changes: 2 additions & 1 deletion DOCS/man/mpv.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1094,7 +1094,8 @@ this with ``--untimed``, but it will likely break, unless the stream has no
audio, and the input feeds data to the player at a constant rate.

Another common problem is with MJPEG streams. These do not signal the correct
framerate. Using ``--untimed`` or ``--no-correct-pts --fps=60`` might help.
framerate. Using ``--untimed`` or ``--no-correct-pts --container-fps-override=60``
might help.

For livestreams, data can build up due to pausing the stream, due to slightly
lower playback rate, or "buffering" pauses. If the demuxer cache is enabled,
Expand Down
12 changes: 6 additions & 6 deletions DOCS/man/options.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1625,13 +1625,13 @@ Video

``--correct-pts``, ``--no-correct-pts``
``--no-correct-pts`` switches mpv to a mode where video timing is
determined using a fixed framerate value (either using the ``--fps``
option, or using file information). Sometimes, files with very broken
timestamps can be played somewhat well in this mode. Note that video
filters, subtitle rendering, seeking (including hr-seeks and backstepping),
and audio synchronization can be completely broken in this mode.
determined using a fixed framerate value (either using the
``--container-fps-override`` option, or using file information). Sometimes,
files with very broken timestamps can be played somewhat well in this mode.
Note that video filters, subtitle rendering, seeking (including hr-seeks and
backstepping), and audio synchronization can be completely broken in this mode.

``--fps=<float>``
``--container-fps-override=<float>``
Override video framerate. Useful if the original value is wrong or missing.

.. note::
Expand Down
2 changes: 1 addition & 1 deletion DOCS/man/vf.rst
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,7 @@ Available mpv-only filters are:
completely broken (e.g. 0 or NaN). Even if the value is correct,
if another filter changes the real FPS (by dropping or inserting
frames), the value of this variable will not be useful. Note that
the ``--fps`` command line option overrides this value.
the ``--container-fps-override`` command line option overrides this value.

Useful for some filters which insist on having a FPS.

Expand Down
2 changes: 1 addition & 1 deletion demux/demux_lavf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1174,7 +1174,7 @@ static int demux_open_lavf(demuxer_t *demuxer, enum demux_check check)
"This format is marked by FFmpeg as having no timestamps!\n"
"FFmpeg will likely make up its own broken timestamps. For\n"
"video streams you can correct this with:\n"
" --no-correct-pts --fps=VALUE\n"
" --no-correct-pts --container-fps-override=VALUE\n"
"with VALUE being the real framerate of the stream. You can\n"
"expect seeking and buffering estimation to be generally\n"
"broken as well.\n");
Expand Down
13 changes: 7 additions & 6 deletions filters/f_decoder_wrapper.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ static const struct m_sub_options adec_queue_conf = {
struct dec_wrapper_opts {
double movie_aspect;
int aspect_method;
double force_fps;
double fps_override;
bool correct_pts;
int video_rotate;
char *audio_decoders;
Expand All @@ -113,7 +113,7 @@ static int decoder_list_help(struct mp_log *log, const m_option_t *opt,
const struct m_sub_options dec_wrapper_conf = {
.opts = (const struct m_option[]){
{"correct-pts", OPT_BOOL(correct_pts)},
{"fps", OPT_DOUBLE(force_fps), M_RANGE(0, DBL_MAX)},
{"container-fps-override", OPT_DOUBLE(fps_override), M_RANGE(0, DBL_MAX)},
{"ad", OPT_STRING(audio_decoders),
.help = decoder_list_help},
{"vd", OPT_STRING(video_decoders),
Expand All @@ -132,7 +132,8 @@ const struct m_sub_options dec_wrapper_conf = {
{"video-reversal-buffer", OPT_BYTE_SIZE(video_reverse_size),
M_RANGE(0, M_MAX_MEM_BYTES)},
{"audio-reversal-buffer", OPT_BYTE_SIZE(audio_reverse_size),
M_RANGE(0, M_MAX_MEM_BYTES)} ,
M_RANGE(0, M_MAX_MEM_BYTES)},
{"fps", OPT_REPLACED("container-fps-override")},
{0}
},
.size = sizeof(struct dec_wrapper_opts),
Expand Down Expand Up @@ -1208,9 +1209,9 @@ struct mp_decoder_wrapper *mp_decoder_wrapper_create(struct mp_filter *parent,

MP_VERBOSE(p, "Container reported FPS: %f\n", p->fps);

if (p->opts->force_fps) {
p->fps = p->opts->force_fps;
MP_INFO(p, "FPS forced to %5.3f.\n", p->fps);
if (p->opts->fps_override) {
p->fps = p->opts->fps_override;
MP_INFO(p, "Container FPS forced to %5.3f.\n", p->fps);
MP_INFO(p, "Use --no-correct-pts to force FPS based timing.\n");
}

Expand Down

0 comments on commit 7aed492

Please sign in to comment.