diff options
author | wm4 <wm4@nowhere> | 2012-11-03 15:57:40 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2012-11-07 23:29:55 +0100 |
commit | 58f821e096392e27994102f6de6f8f76c63e38e1 (patch) | |
tree | 3afdabf9addc8ba44923cca4a1f4d96413c61886 | |
parent | a20c9576be916f8e0bad66bd474c5241d05852e4 (diff) | |
download | mpv-58f821e096392e27994102f6de6f8f76c63e38e1.tar.bz2 mpv-58f821e096392e27994102f6de6f8f76c63e38e1.tar.xz |
vd_ffmpeg: disable codec direct rendering and slices by default
This caused failures when doing single threaded decoding in some cases.
It's unknown what exactly the reasons are for these failures, but
direct rendering is probably worthless anyway.
Disable slices by default as well, just to be sure not to invoke broken
code paths. Multithreading disables these too.
The old behavior can be restored by passing the -dr1 -slices command
line options. (-dr1 is left undocumented intentionally.)
Multithreaded decoding worked fine, because vd_ffmpeg.c automatically
disables direct rendering in this case.
-rw-r--r-- | cfg-mplayer.h | 2 | ||||
-rw-r--r-- | defaultopts.c | 1 | ||||
-rw-r--r-- | libmpcodecs/vd_ffmpeg.c | 2 | ||||
-rw-r--r-- | options.h | 1 |
4 files changed, 4 insertions, 2 deletions
diff --git a/cfg-mplayer.h b/cfg-mplayer.h index 48f44a6fde..c0f4c91a9c 100644 --- a/cfg-mplayer.h +++ b/cfg-mplayer.h @@ -489,6 +489,8 @@ const m_option_t common_opts[] = { // draw by slices or whole frame (useful with libmpeg2/libavcodec) OPT_MAKE_FLAGS("slices", vd_use_slices, 0), + // use (probably completely broken) decoder direct rendering + OPT_MAKE_FLAGS("dr1", vd_use_dr1, 0), {"field-dominance", &field_dominance, CONF_TYPE_INT, CONF_RANGE, -1, 1, NULL}, {"lavdopts", (void *) lavc_decode_opts_conf, CONF_TYPE_SUBCONFIG, 0, 0, 0, NULL}, diff --git a/defaultopts.c b/defaultopts.c index 072bf606d1..1d3abf932c 100644 --- a/defaultopts.c +++ b/defaultopts.c @@ -48,7 +48,6 @@ void set_default_mplayer_options(struct MPOpts *opts) .drc_level = 1., .movie_aspect = -1., .flip = -1, - .vd_use_slices = 1, .sub_auto = 1, #ifdef CONFIG_ASS .ass_enabled = 1, diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index 21ecdfaa82..e078de4419 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -174,7 +174,7 @@ static int init(sh_video_t *sh) && lavc_codec->id != CODEC_ID_INTERPLAY_VIDEO && lavc_codec->id != CODEC_ID_ROQ && lavc_codec->id != CODEC_ID_VP8 && lavc_codec->id != CODEC_ID_LAGARITH) - ctx->do_dr1 = 1; + ctx->do_dr1 = sh->opts->vd_use_dr1; ctx->ip_count = ctx->b_count = 0; ctx->pic = avcodec_alloc_frame(); @@ -100,6 +100,7 @@ typedef struct MPOpts { float screen_size_xy; int flip; int vd_use_slices; + int vd_use_dr1; char **sub_name; char **sub_paths; int sub_auto; |