1
mirror of https://github.com/mpv-player/mpv synced 2025-01-13 00:06:25 +01:00
mpv/stream
wm4 d21b109bf7 core: fix DVD subtitle selection
Add all subtitle tracks as reported by libdvdread at playback start.
Display language for subtitle and audio tracks. This commit restores
these features to the state when demux_mpg was default for DVD playback,
and makes them work with demux_lavf and the recent changes to subtitle
selection in the frontend.

demux_mpg, which was the default demuxer for DVD playback, reordered
the subtitle streams according to the "logical" subtitle track number,
which conforms to the track layout reported by libdvdread, and is what
stream_dvd expects for the STREAM_CTRL_GET_LANG call. demux_lavf, on
the other hand, adds the streams in the order it encounters them in
the MPEG stream. It seems this order is essentially random, and can't
be mapped easily to what stream_dvd expects.

Solve this by making demux_lavf hand out the MPEG stream IDs (using the
demuxer_id field). The MPEG IDs are mapped by mplayer.c by special
casing DVD playback (map_id_from/to_demuxer() functions). This mapping
is essentially the same what demux_mpg did. Making demux_lavf reorder
the streams is out of the question, because its stream handling is
already messy enough.

(Note that demux_lavf doesn't export stream IDs for other formats,
because most time libavformat demuxers do not set AVStream.id, and we
don't know which demuxers do. But we know that MPEG is safe.)

Another major complication is that subtitle tracks are added lazily, as
soon as the demuxer encounters the first subtitle packet for a given
subtitle stream. Add the streams in advance. If a yet non-existent
stream is selected, demux_lavf must be made to auto-select that subtitle
stream as soon as it is added. Otherwise, the first subtitle packet
would be lost. This is done by DEMUXER_CTRL_PRESELECT_SUBTITLE.
demux_mpg didn't need this: the frontend code could just set ds->id to
the desired stream number. But demux_lavf's stream IDs don't map
directly to the stream number as used by libdvdread, which is why this
hack is needed.
2012-09-18 21:04:45 +02:00
..
ai_alsa1x.c cleanup: remove more warnings 2011-05-02 00:46:48 +03:00
ai_oss.c Delete things related to old translation system 2010-03-10 03:47:14 +02:00
asf_mmst_streaming.c cleanup: shut up more warnings 2011-05-06 18:33:16 +03:00
asf_mmst_streaming.h Add header for asf_mmst_streaming_start() instead of forward declaring it. 2010-02-21 23:26:16 +00:00
asf_streaming.c build: switch to libavutil bswap.h and intreadwrite.h 2012-02-01 22:46:27 +02:00
audio_in.c cleanup: don't check for NULL before free() 2010-11-08 18:05:12 +02:00
audio_in.h Add license header to all files missing it in the stream subdirectory. 2010-01-30 22:26:47 +00:00
cache2.c Adjust ffmpeg/libav #includes to work with recent upstream changes 2012-08-21 18:22:00 +02:00
cache2.h terminal output: show cache fill changes in "PAUSED" message 2011-02-15 18:35:34 +02:00
cdd.h stream_cddb: move structs to the file they're used in 2010-11-02 04:11:07 +02:00
cdinfo.c cleanup: don't check for NULL before free() 2010-11-08 18:05:12 +02:00
cookies.c windows support: unicode filenames 2012-03-09 20:48:54 +02:00
cookies.h Add license header to all files missing it in the stream subdirectory. 2010-01-30 22:26:47 +00:00
dvb_tune.c cleanup: shut up more warnings 2011-05-06 18:33:16 +03:00
dvb_tune.h Add header for exported DVB-related functions. 2010-02-21 21:00:08 +00:00
dvbin.h stream/dvbin.h: Use angular brackets for system #includes. 2010-11-02 04:11:07 +02:00
frequencies.c Add license header to all files missing it in the stream subdirectory. 2010-01-30 22:26:47 +00:00
frequencies.h Add license header to all files missing it in the stream subdirectory. 2010-01-30 22:26:47 +00:00
http.c libmpdemux: remove demux_real, demux_viv, demux_audio 2012-08-20 15:36:02 +02:00
http.h stream/: delete base64_encode(), use libavutil av_base64_encode() 2010-12-16 05:16:50 +02:00
network.c libmpdemux: remove demux_real, demux_viv, demux_audio 2012-08-20 15:36:02 +02:00
network.h stream: http: Allow setting custom http header 2011-04-13 03:17:05 +03:00
open.c Add support for playing video from streaming sites with libquvi 2012-07-28 22:05:34 +02:00
pvr.h Remove trailing whitespace from most files 2009-07-07 02:34:35 +03:00
stream_bluray.c core: fix DVD subtitle selection 2012-09-18 21:04:45 +02:00
stream_cdda.c stream: add new stream control command STREAM_CTRL_GET_NUM_TITLES 2012-08-03 01:43:03 +02:00
stream_cddb.c build: remove OS/2 support 2012-04-06 17:45:56 +03:00
stream_dvb.c cleanup: don't check for NULL before free() 2010-11-08 18:05:12 +02:00
stream_dvd_common.c build: switch to libavutil bswap.h and intreadwrite.h 2012-02-01 22:46:27 +02:00
stream_dvd_common.h Add license header to all files missing it in the stream subdirectory. 2010-01-30 22:26:47 +00:00
stream_dvd.c core: fix DVD subtitle selection 2012-09-18 21:04:45 +02:00
stream_dvd.h commands, dvd, dvdnav, bluray: cleanup sub/audio track language display 2012-08-03 01:59:15 +02:00
stream_ffmpeg.c stream_ffmpeg: fix broken line from 30afc64532 2012-04-18 01:27:55 +03:00
stream_file.c stream_file: print strerror() when failing to open a file 2012-08-16 17:16:32 +02:00
stream_ftp.c cleanup: don't check for NULL before free() 2010-11-08 18:05:12 +02:00
stream_mf.c Remove trailing whitespace from most files 2009-07-07 02:34:35 +03:00
stream_netstream.c cleanup: don't check for NULL before free() 2010-11-08 18:05:12 +02:00
stream_netstream.h stream: Use MSG_NOSIGNAL flag if available for send(). 2010-11-02 04:11:43 +02:00
stream_null.c Add license header to all files missing it in the stream subdirectory. 2010-01-30 22:26:47 +00:00
stream_pvr.c stream_pvr: fix buffer overflow 2012-08-03 03:34:38 +02:00
stream_radio.c stream: remove V4L TV input and V4L radio support 2012-08-02 23:51:54 +02:00
stream_radio.h Drop pointless _st suffix from 'struct stream'. 2010-05-27 20:38:25 +00:00
stream_smb.c Merge branch 'mplayer1_changes' 2011-05-02 00:46:03 +03:00
stream_tv.c mplayer, stream_tv: move variable initialization 2012-08-03 04:51:55 +02:00
stream_udp.c Remove trailing whitespace from most files 2009-07-07 02:34:35 +03:00
stream_vcd.c stream: add new stream control command STREAM_CTRL_GET_NUM_TITLES 2012-08-03 01:43:03 +02:00
stream_vstream.c stream_vstream: fix vstream_error format string 2012-04-01 17:35:01 +03:00
stream.c Remove support for libnemesi RTSP streaming 2012-08-20 15:36:03 +02:00
stream.h core: fix DVD subtitle selection 2012-09-18 21:04:45 +02:00
tcp.c stream/tcp.c: Prefer the use of inet_ntop over inet_ntoa 2010-11-02 04:11:07 +02:00
tcp.h Use standard license headers with standard formatting. 2008-05-14 17:20:42 +00:00
tv.c libaf: rename af_format.h to format.h 2012-08-29 00:50:26 +02:00
tv.h Remove teletext support 2012-08-03 00:12:46 +02:00
tvi_bsdbt848.c libaf: rename af_format.h to format.h 2012-08-29 00:50:26 +02:00
tvi_def.h stream/tv: move new_handle() function from header to tv.c 2010-11-02 04:16:55 +02:00
tvi_dummy.c stream/tv: move new_handle() function from header to tv.c 2010-11-02 04:16:55 +02:00
tvi_v4l2.c libaf: rename af_format.h to format.h 2012-08-29 00:50:26 +02:00
udp.c Remove trailing whitespace from most files 2009-07-07 02:34:35 +03:00
udp.h Use standard license headers with standard formatting. 2008-05-14 17:20:42 +00:00
url.c stream/url.c: escape characters >= 127 in URLs 2011-02-15 18:47:55 +02:00
url.h stream/http: Add support for login/password in http_proxy env variable 2010-12-16 05:19:17 +02:00
vcd_read_darwin.h cleanup: Make vcd_seek_to_track() static in more files 2011-06-29 09:26:00 +03:00
vcd_read_fbsd.h build: switch to libavutil bswap.h and intreadwrite.h 2012-02-01 22:46:27 +02:00
vcd_read_win32.h cleanup: Make vcd_seek_to_track() static in more files 2011-06-29 09:26:00 +03:00
vcd_read.h build: switch to libavutil bswap.h and intreadwrite.h 2012-02-01 22:46:27 +02:00