Command line video player
Go to file
Uoti Urpala 9bb03b7db4 subs: libass: use a single persistent renderer for subtitles
To draw libass subtitles, the code used ASS_Renderer objects created
in vf_vo (VO rendering) or vf_ass. They were destroyed and recreated
together with the video filter  chain. Change the code to use a single
persistent renderer instance stored in the main osd_state struct.
Because libass seems to misbehave if fonts are changed while a
renderer exists (even if ass_set_fonts() is called on the renderer
afterwards), the renderer is recreated after adding embedded fonts.

The known benefits are simpler code and avoiding delays when switching
between timeline parts from different files (libass fontconfig
initialization, needed when creating a new renderer, can take a long
time in some cases; switching between files rebuilds the video filter
chain, and this required recreating the renderers). On the other hand,
I'm not sure whether this could cause inefficient bitmap caching in
libass; explicitly resetting the renderer in some cases could be
beneficial. The new code does not keep the distinction of separate
renderers for vsfilter munged aspect vs normal; this means that
changing subtitle tracks can lose cache for the previous track.

The new code always sets some libass parameters on each rendering
call, which were previously only set if they had potentially changed.
This should be harmless as libass itself has checks to see if the
values differ from previous ones.

Conflicts:
	command.c
	libmpcodecs/vf_ass.c
	libmpcodecs/vf_vo.c
	mplayer.c
	sub/ass_mp.c
2012-09-18 21:04:46 +02:00
DOCS libaf: rename af_format.h to format.h 2012-08-29 00:50:26 +02:00
TOOLS vf_dlopen: add a generic filter to load external filters 2012-08-23 13:13:53 +02:00
debian
etc core: runtime Matroska edition switching 2012-09-18 21:04:45 +02:00
ffmpeg_files
input core: manage tracks in the frontend 2012-09-18 21:04:45 +02:00
libaf libaf: rename af_format.h to format.h 2012-08-29 00:50:26 +02:00
libao2 cleanup: remove pointless #defines 2012-09-18 21:04:46 +02:00
libmpcodecs subs: libass: use a single persistent renderer for subtitles 2012-09-18 21:04:46 +02:00
libmpdemux core: fix DVD subtitle selection 2012-09-18 21:04:45 +02:00
libvo subs: libass: use a single persistent renderer for subtitles 2012-09-18 21:04:46 +02:00
osdep timer: remove timer_name 2012-09-07 16:06:36 +02:00
rpm
stream core: fix DVD subtitle selection 2012-09-18 21:04:45 +02:00
sub subs: libass: use a single persistent renderer for subtitles 2012-09-18 21:04:46 +02:00
timeline core: move implementation for -audiofile to the frontend 2012-09-18 21:04:45 +02:00
.gitignore manpage: merge new manpage 2012-08-02 22:05:27 +02:00
AUTHORS
Copyright
LICENSE
Makefile sd_lavc: use subtitle framework for former av_sub.c code 2012-09-18 21:04:46 +02:00
README osd: remove freetype font rendering code 2012-07-28 23:36:08 +02:00
asxparser.c Remove dead code 2012-08-01 17:07:35 +02:00
asxparser.h mplayer: turn playtree into a list, and change per-file option handling 2012-07-31 21:33:26 +02:00
av_log.c stream_ffmpeg: fix broken line from 30afc64532 2012-04-18 01:27:55 +03:00
av_log.h
av_opts.c
av_opts.h
bstr.c Adjust ffmpeg/libav #includes to work with recent upstream changes 2012-08-21 18:22:00 +02:00
bstr.h bstr.h: fix compilation with C++ 2012-08-03 03:34:38 +02:00
cfg-mplayer.h cleanup: remove pointless #defines 2012-09-18 21:04:46 +02:00
codec-cfg.c options, codecs.conf, img_format: unify imgfmt name handling 2012-08-29 00:14:11 +02:00
codec-cfg.h video, audio: use lavc decoders without codecs.conf entries 2012-07-24 09:01:47 +03:00
command.c subs: libass: use a single persistent renderer for subtitles 2012-09-18 21:04:46 +02:00
command.h
configure cleanup: remove pointless #defines 2012-09-18 21:04:46 +02:00
cpudetect.c cpudetect: remove unused/forgotten crap 2012-08-01 23:49:06 +02:00
cpudetect.h cpudetect: remove unused/forgotten crap 2012-08-01 23:49:06 +02:00
defaultopts.c image_writer: add option parsing 2012-08-06 17:48:30 +02:00
defaultopts.h
fmt-conversion.c cleanup: remove XvMC remains, reformat img_format.c 2012-08-28 23:26:16 +02:00
fmt-conversion.h
image_writer.c image_writer: make JPG default and increase quality (for screenshots) 2012-08-16 00:01:19 +02:00
image_writer.h image_writer: rename "filetype" option to "format" 2012-08-06 19:05:32 +02:00
m_config.c m_config: support auto-allocated sub-structs 2012-08-06 17:45:17 +02:00
m_config.h m_config: support auto-allocated sub-structs 2012-08-06 17:45:17 +02:00
m_option.c libaf: rename af_format.h to format.h 2012-08-29 00:50:26 +02:00
m_option.h m_config: support auto-allocated sub-structs 2012-08-06 17:45:17 +02:00
m_property.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
m_property.h
m_struct.c options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
m_struct.h Remove dead code 2012-08-01 17:07:35 +02:00
mangle.h mangle: change preprocessor define for macosx 2012-08-01 08:46:20 +02:00
metadata.h
mixer.c mixer: silence message about inserting volume filter 2012-07-30 01:46:04 +02:00
mixer.h mixer: support native audio driver mute 2012-04-11 03:56:28 +03:00
mp_core.h core: runtime Matroska edition switching 2012-09-18 21:04:45 +02:00
mp_fifo.c input: allow unicode keys and reassign internal key codes 2012-03-25 22:30:37 +03:00
mp_fifo.h VO: remove old VO glue 2012-08-07 01:29:56 +02:00
mp_msg.c mp_msg: remove filename_recode 2012-07-31 01:35:53 +02:00
mp_msg.h mp_msg: remove filename_recode 2012-07-31 01:35:53 +02:00
mp_osd.h mplayer: make OSD stack a member of MPContext 2012-08-04 19:59:56 +02:00
mpbswap.h
mpcommon.c Change version string 2012-07-29 00:04:17 +02:00
mpcommon.h options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
mplayer.c subs: libass: use a single persistent renderer for subtitles 2012-09-18 21:04:46 +02:00
mplayer.h libvo: remove exit_player_bad() 2012-07-30 15:46:05 +02:00
options.h image_writer: add option parsing 2012-08-06 17:48:30 +02:00
parser-cfg.c parser-cfg: specify which config file contains the unknown option 2012-08-20 15:36:05 +02:00
parser-cfg.h
parser-mpcmd.c Remove dvdnav support (DVD menus) 2012-08-16 17:17:49 +02:00
parser-mpcmd.h options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
path.c Remove win32/qt/xanim/real binary codecs loading 2012-08-16 17:16:33 +02:00
path.h Remove win32/qt/xanim/real binary codecs loading 2012-08-16 17:16:33 +02:00
playlist.c playlist: do not add playlist base path to URLs 2012-08-07 03:14:53 +02:00
playlist.h playlist: rename params_count field to num_params for consistency 2012-08-04 19:59:55 +02:00
playlist_parser.c mplayer: turn playtree into a list, and change per-file option handling 2012-07-31 21:33:26 +02:00
playlist_parser.h mplayer: turn playtree into a list, and change per-file option handling 2012-07-31 21:33:26 +02:00
pnm_loader.c
pnm_loader.h
screenshot.c image_writer: add option parsing 2012-08-06 17:48:30 +02:00
screenshot.h
subopt-helper.c Remove dead code 2012-08-01 17:07:35 +02:00
subopt-helper.h Remove dead code 2012-08-01 17:07:35 +02:00
talloc.c
talloc.h
version.sh Change version string 2012-07-29 00:04:17 +02:00

README

Compiling with full features requires development files for several
external libraries. Below is a list of some important requirements. For
more information see the output of './configure --help' for a list of options,
or look at the list of enabled and disabled features printed after running
'./configure'. If you think you have support for some feature installed
but configure fails to detect it, the file config.log may contain information
about the reasons for the failure.

Libraries specific to particular video output methods
(you'll want at least one of VDPAU, GL or Xv):
 - libvdpau (for VDPAU output, best choice for NVIDIA cards)
 - libGL (OpenGL output)
 - libXv (XVideo output)
general:
 - libasound   (ALSA audio output)
 - various general X development libraries
 - libfreetype (for libass)
 - libfontconfig (for libass)
 - libass
 - FFmpeg libraries (libavutil libavcodec libavformat libswscale libpostproc)

Most of the above libraries are available in suitable versions on normal
Linux distributions. However FFmpeg is an exception (distro versions may be
too old to work at all or work well). For that reason you may want to use
the separately available build wrapper that first compiles FFmpeg libraries
and libass, and then compiles the player statically linked against those.