mirror of
https://github.com/mpv-player/mpv
synced 2024-12-27 01:22:30 +00:00
vd_lavc: disable cropping by decoder
Cropping by decoder has limitations with regards to aligment and hwdec. It doesn't work to offset top left corner with hwdec and even with software decoding it don't crop fully when resulting data would not be aligned. VO cropping is way more robust.
This commit is contained in:
parent
4d853c5545
commit
826ce82cad
@ -1834,6 +1834,14 @@ Video
|
||||
this can break on streams not encoded by x264, or if a stream encoded by a
|
||||
newer x264 version contains no version info.
|
||||
|
||||
``--vd-apply-cropping``
|
||||
Certain video codecs support cropping, meaning that only a sub-rectangle of
|
||||
the decoded frame is intended for display. This option controls how cropping
|
||||
is handled by libavcodec. Cropping during decoding has certain limitations
|
||||
with regards to alignment and hardware decoding. If this option is enabled,
|
||||
decoder will apply the crop. Disabled by default, VO will apply the crop in
|
||||
a more robust way.
|
||||
|
||||
``--swapchain-depth=<N>``
|
||||
Allow up to N in-flight frames. This essentially controls the frame
|
||||
latency. Increasing the swapchain depth can improve pipelining and prevent
|
||||
|
@ -80,6 +80,7 @@ struct vd_lavc_params {
|
||||
int threads;
|
||||
bool bitexact;
|
||||
bool old_x264;
|
||||
bool apply_cropping;
|
||||
bool check_hw_profile;
|
||||
int software_fallback;
|
||||
char **avopts;
|
||||
@ -120,6 +121,7 @@ const struct m_sub_options vd_lavc_conf = {
|
||||
{"vd-lavc-o", OPT_KEYVALUELIST(avopts)},
|
||||
{"vd-lavc-dr", OPT_CHOICE(dr,
|
||||
{"auto", -1}, {"no", 0}, {"yes", 1})},
|
||||
{"vd-apply-cropping", OPT_BOOL(apply_cropping)},
|
||||
{"hwdec", OPT_STRINGLIST(hwdec_api),
|
||||
.help = hwdec_opt_help,
|
||||
.flags = M_OPT_OPTIONAL_PARAM | UPDATE_HWDEC},
|
||||
@ -772,6 +774,7 @@ static void init_avctx(struct mp_filter *vd)
|
||||
avctx->skip_loop_filter = lavc_param->skip_loop_filter;
|
||||
avctx->skip_idct = lavc_param->skip_idct;
|
||||
avctx->skip_frame = lavc_param->skip_frame;
|
||||
avctx->apply_cropping = lavc_param->apply_cropping;
|
||||
|
||||
if (lavc_codec->id == AV_CODEC_ID_H264 && lavc_param->old_x264)
|
||||
av_opt_set(avctx, "x264_build", "150", AV_OPT_SEARCH_CHILDREN);
|
||||
|
Loading…
Reference in New Issue
Block a user