1
0
mirror of https://github.com/mpv-player/mpv synced 2025-04-01 00:07:33 +00:00
mpv/demux
wm4 4cda1d113e core: completely change handling of attached picture pseudo video
Before this commit, we tried to play along with libavformat and tried
to pretend that attached pictures are video streams with a single
frame, and that the frame magically appeared at the seek position when
seeking. The playback core would then switch to a mode where the video
has ended, and the "remaining" audio is played.

This didn't work very well:
- we needed a hack in demux.c, because we tried to read more packets in
  order to find the "next" video frame (libavformat doesn't tell us if
  a stream has ended)
- switching the video stream didn't work, because we can't tell
  libavformat to send the packet again
- seeking and resuming after was hacky (for some reason libavformat sets
  the returned packet's PTS to that of the previously returned audio
  packet in generic code not related to attached pictures, and this
  happened to work)
- if the user did something stupid and e.g. inserted a deinterlacer by
  default, a picture was never displayed, only an inactive VO window)
- same when using a command that reconfigured the VO (like switching
  aspect or video filters)
- hr-seek didn't work

For this reason, handle attached pictures as separate case with a
separate video decoding function, which doesn't read packets. Also,
do not synchronize audio to video start in this case.
2013-07-11 19:23:56 +02:00
..
codec_tags.c demux: fix big endian PCM in mkv with demux_mkv 2013-05-11 20:19:08 +02:00
codec_tags.h core: redo how codecs are mapped, remove codecs.conf 2013-02-10 17:25:56 +01:00
demux_cue.c stream: remove padding parameter from stream_read_complete() 2013-06-23 22:33:59 +02:00
demux_edl.c stream: remove padding parameter from stream_read_complete() 2013-06-23 22:33:59 +02:00
demux_lavf.c core: completely change handling of attached picture pseudo video 2013-07-11 19:23:56 +02:00
demux_libass.c demux_libass: do charset conversion by -subcp 2013-06-25 00:11:56 +02:00
demux_mf.c video: eliminate frametime variable 2013-07-11 19:21:45 +02:00
demux_mkv.c video: eliminate frametime variable 2013-07-11 19:21:45 +02:00
demux_mng.c video: eliminate frametime variable 2013-07-11 19:21:45 +02:00
demux_packet.h demux: workaround for -demuxer mpegts -correct-pts 2013-05-21 22:07:13 +02:00
demux_rawaudio.c core: don't access demux_stream outside of demux.c, make it private 2013-07-11 19:17:51 +02:00
demux_rawvideo.c video: eliminate frametime variable 2013-07-11 19:21:45 +02:00
demux_subreader.c core: don't access demux_stream outside of demux.c, make it private 2013-07-11 19:17:51 +02:00
demux.c core: completely change handling of attached picture pseudo video 2013-07-11 19:23:56 +02:00
demux.h demux: improve DVD sub auto-selection hack 2013-07-11 19:22:24 +02:00
ebml.c stream: fix some aspects of EOF handling 2013-06-16 22:05:10 +02:00
ebml.h demux_mkv: use a bounded buffer for block data 2013-04-20 23:28:22 +02:00
extension.c Remove old demuxers 2013-07-07 23:54:11 +02:00
matroska.h demux_mkv: support dirac in mkv 2013-05-21 22:07:12 +02:00
mf.c demux_mf: fix crashes when '*' matches directories 2013-03-19 01:54:45 +01: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: completely change handling of attached picture pseudo video 2013-07-11 19:23:56 +02:00