Command line video player
Go to file
wm4 413c6f5b30 af_scaletempo: fix crash on channel reconfiguration
This crash happened when audio channels were reconfigured from 6
channels to 2, and playback speed was set to 2.

The crash is caused by passing a negative size to memcpy. It appears
reinitialization doesn't clear the buffer. As the result, the buffer
can be larger as the maximum buffer size, i.e. the invariant
bytes_queued <= bytes_queue is violated.

Fix this by resetting the buffer length on reconfiguring (set the
bytes_queued vairable to 0). Also reset some other state for clarity
and robustness, although these changes aren't strictly needed for
avoiding the actual crash.

This may also get rid of some noise played right after reinitialization,
as the re-used buffer was in the wrong audio format.
2012-08-26 22:17:27 +02:00
DOCS DOCS: add big picture overview over the code 2012-08-26 02:17:11 +02:00
TOOLS vf_dlopen: add a generic filter to load external filters 2012-08-23 13:13:53 +02:00
debian
etc libmpcodecs: remove redundant audio and video decoders 2012-08-20 15:36:04 +02:00
ffmpeg_files
input input: add ability to disable all default bindings for an input section 2012-08-24 14:30:25 +02:00
libaf af_scaletempo: fix crash on channel reconfiguration 2012-08-26 22:17:27 +02:00
libao2 Adjust ffmpeg/libav #includes to work with recent upstream changes 2012-08-21 18:22:00 +02:00
libmpcodecs vf_dlopen: add a generic filter to load external filters 2012-08-23 13:13:53 +02:00
libmpdemux video: honor the video's colormatrix and color range flags 2012-08-21 18:17:41 +02:00
libvo Adjust ffmpeg/libav #includes to work with recent upstream changes 2012-08-21 18:22:00 +02:00
osdep macosx_finder_args: fix file open order 2012-08-16 22:35:27 +02:00
rpm
stream Adjust ffmpeg/libav #includes to work with recent upstream changes 2012-08-21 18:22:00 +02:00
sub osd_libass: fix displaying empty text, fix API usage 2012-08-21 18:58:15 +02:00
timeline
.gitignore manpage: merge new manpage 2012-08-02 22:05:27 +02:00
AUTHORS
Copyright
LICENSE
Makefile vf_dlopen: add a generic filter to load external filters 2012-08-23 13:13:53 +02:00
README
asxparser.c
asxparser.h
av_log.c
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 Remove support for libnemesi RTSP streaming 2012-08-20 15:36:03 +02:00
codec-cfg.c libmpcodecs: add support for 422P9 2012-08-03 01:43:03 +02:00
codec-cfg.h
command.c Remove dvdnav support (DVD menus) 2012-08-16 17:17:49 +02:00
command.h
configure configure: disable optimization if --enable-debug is used 2012-08-25 20:04:32 +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 libmpcodecs: add support for 422P9 2012-08-03 01:43:03 +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 img_format, m_option: make image format name list globally available 2012-08-23 13:12:43 +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
mangle.h
metadata.h
mixer.c
mixer.h
mp_core.h Remove dvdnav support (DVD menus) 2012-08-16 17:17:49 +02:00
mp_fifo.c
mp_fifo.h VO: remove old VO glue 2012-08-07 01:29:56 +02:00
mp_msg.c
mp_msg.h
mp_osd.h mplayer: make OSD stack a member of MPContext 2012-08-04 19:59:56 +02:00
mpbswap.h
mpcommon.c
mpcommon.h options: get rid of ambiguous option parsing 2012-08-05 23:51:49 +02:00
mplayer.c input: add ability to disable all default bindings for an input section 2012-08-24 14:30:25 +02:00
mplayer.h
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
playlist_parser.h
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
subopt-helper.h
talloc.c
talloc.h
version.sh

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.