mpv/demux
wm4 6cec60a454 core: add --deinterlace option, restore it with resume functionality
The --deinterlace option does on playback start what the "deinterlace"
property normally does at runtime. You could do this before by using the
--vf option or by messing with the vo_vdpau default options, but this
new option is supposed to be a "foolproof" way.

The main motivation for adding this is so that the deinterlace property
can be restored when using the video resume functionality
(quit_watch_later command).

Implementation-wise, this is a bit messy. The video chain is rebuilt in
mpcodecs_reconfig_vo(), where we don't have access to MPContext, so the
usual mechanism for enabling deinterlacing can't be used. Further,
mpcodecs_reconfig_vo() is called by the video decoder, which doesn't
have access to MPContext either. Moving this call to mplayer.c isn't
currently possible either (see below). So we just do this before frames
are filtered, which potentially means setting the deinterlacing every
frame. Fortunately, setting deinterlacing is stable and idempotent, so
this is hopefully not a problem. We also add a counter that is
incremented on each reconfig to reduce the amount of additional work per
frame to nearly zero.

The reason we can't move mpcodecs_reconfig_vo() to mplayer.c is because
of hardware decoding: we need to check whether the video chain works
before we decide that we can use hardware decoding. Changing it so that
this can be decided in advance without building a filter chain sounds
like a good idea and should be done, but we aren't there yet.
2013-09-13 21:32:28 +02:00
..
codec_tags.c demux_mkv: support V_PRORES 2013-09-08 23:05:18 +02:00
codec_tags.h core: redo how codecs are mapped, remove codecs.conf 2013-02-10 17:25:56 +01:00
demux.c demux: keep title chapter tag in uppercase 2013-09-08 23:07:02 +02:00
demux.h demux: retrieve per-chapter metadata 2013-09-08 07:43:23 +02:00
demux_cue.c core: move contents to mpvcore (2/2) 2013-08-06 22:52:31 +02:00
demux_edl.c demux: remove useless author/comment fields 2013-07-12 22:16:27 +02:00
demux_lavf.c demux: retrieve per-chapter metadata 2013-09-08 07:43:23 +02:00
demux_libass.c core: move contents to mpvcore (2/2) 2013-08-06 22:52:31 +02:00
demux_mf.c demux: remove unused audio_delay parameter from demux_seek() 2013-08-22 19:14:26 +02:00
demux_mkv.c demux: keep title chapter tag in uppercase 2013-09-08 23:07:02 +02:00
demux_mng.c demux: remove unused audio_delay parameter from demux_seek() 2013-08-22 19:14:26 +02:00
demux_packet.h demux: workaround for -demuxer mpegts -correct-pts 2013-05-21 22:07:13 +02:00
demux_playlist.c demux_playlist: port ini reference playlist parser 2013-08-28 23:08:10 +02:00
demux_raw.c demux: remove unused audio_delay parameter from demux_seek() 2013-08-22 19:14:26 +02:00
demux_subreader.c demux: remove unused audio_delay parameter from demux_seek() 2013-08-22 19:14:26 +02:00
ebml.c core: move contents to mpvcore (2/2) 2013-08-06 22:52:31 +02:00
ebml.h core: move contents to mpvcore (2/2) 2013-08-06 22:52:31 +02:00
matroska.h demux_mkv: support V_PRORES 2013-09-08 23:05:18 +02:00
mf.c core: move contents to mpvcore (2/2) 2013-08-06 22:52:31 +02:00
mf.h demux_mf: allow displaying single image files, various cleanups 2012-11-16 21:21:16 +01:00
ms_hdr.h ms_hdr: remove unused definitions 2013-07-10 02:00:47 +02:00
stheader.h core: add --deinterlace option, restore it with resume functionality 2013-09-13 21:32:28 +02:00