summaryrefslogtreecommitdiffstats
path: root/DOCS
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-02-03 15:32:21 +0100
committerwm4 <wm4@nowhere>2013-02-03 16:53:49 +0100
commit19ed132c8aea24fb3ba1e54bb606f2c13fa3581d (patch)
treea91f8efdcdb1c2a16a257c123c7e19f2260864e6 /DOCS
parentdf0312b694ea6374fbc4510367ae5f14f67fdbb9 (diff)
downloadmpv-19ed132c8aea24fb3ba1e54bb606f2c13fa3581d.tar.bz2
mpv-19ed132c8aea24fb3ba1e54bb606f2c13fa3581d.tar.xz
DOCS: remove files documenting removed/rewritten functionality
Most of these are a waste of time. Some (like slave.txt) have been rewritten in rst. The remaining files aren't that useful, but probably do no harm.
Diffstat (limited to 'DOCS')
-rw-r--r--DOCS/OUTDATED-tech/Doxyfile1142
-rw-r--r--DOCS/OUTDATED-tech/colorspaces.txt158
-rw-r--r--DOCS/OUTDATED-tech/dr-methods.txt129
-rw-r--r--DOCS/OUTDATED-tech/libmpcodecs.txt383
-rw-r--r--DOCS/OUTDATED-tech/manpage.txt283
-rw-r--r--DOCS/OUTDATED-tech/realcodecs/TODO22
-rw-r--r--DOCS/OUTDATED-tech/realcodecs/audio-codecs.txt155
-rw-r--r--DOCS/OUTDATED-tech/realcodecs/streaming.txt58
-rw-r--r--DOCS/OUTDATED-tech/realcodecs/video-codecs.txt185
-rw-r--r--DOCS/OUTDATED-tech/slave.txt592
-rw-r--r--DOCS/OUTDATED-tech/subcp.txt42
-rw-r--r--DOCS/OUTDATED-tech/win32-codec-howto.txt118
12 files changed, 0 insertions, 3267 deletions
diff --git a/DOCS/OUTDATED-tech/Doxyfile b/DOCS/OUTDATED-tech/Doxyfile
deleted file mode 100644
index 1a9a036bef..0000000000
--- a/DOCS/OUTDATED-tech/Doxyfile
+++ /dev/null
@@ -1,1142 +0,0 @@
-# Doxyfile 1.3.7
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = MPlayer
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = DOCS/tech/doxygen
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 2 levels of 10 sub-directories under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of source
-# files, where putting all generated files in the same directory would otherwise
-# cause performance problems for the file system.
-
-CREATE_SUBDIRS = YES
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch,
-# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en
-# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese,
-# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian.
-
-OUTPUT_LANGUAGE = English
-
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is used
-# as the annotated text. Otherwise, the brief description is used as-is. If left
-# blank, the following values are used ("$name" is automatically replaced with the
-# name of the entity): "The $name class" "The $name widget" "The $name file"
-# "is" "provides" "specifies" "contains" "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
-# members of a class in the documentation of that class as if those members were
-# ordinary class members. Constructors, destructors and assignment operators of
-# the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explicit @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
-# only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = YES
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = NO
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT =
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
-# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE = DOCS TOOLS
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories
-# that are symbolic links (a Unix filesystem feature) are excluded from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-
-EXCLUDE_PATTERNS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-
-INPUT_FILTER =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = YES
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = YES
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 2
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
-# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
-# probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader. This is useful
-# if you want to understand what is going on. On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse the
-# parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or
-# super classes. Setting the tag to NO turns the diagrams off. Note that this
-# option is superseded by the HAVE_DOT option below. This is only a fallback. It is
-# recommended to install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS = NO
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
-# generate a call dependency graph for every global function or class method.
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found on the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes that
-# lay further from the root node will be omitted. Note that setting this option to
-# 1 or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that a graph may be further truncated if the graph's image dimensions are
-# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT).
-# If 0 is used for the depth value (the default), the graph is not depth-constrained.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
diff --git a/DOCS/OUTDATED-tech/colorspaces.txt b/DOCS/OUTDATED-tech/colorspaces.txt
deleted file mode 100644
index eaf9d221e4..0000000000
--- a/DOCS/OUTDATED-tech/colorspaces.txt
+++ /dev/null
@@ -1,158 +0,0 @@
-In general
-==========
-
-There are planar and packed modes.
-- Planar mode means: You have 3 separate images, one for each component,
-each image 8 bits/pixel. To get the real colored pixel, you have to
-mix the components from all planes. The resolution of planes may differ!
-- Packed mode means: you have all components mixed/interleaved together,
-so you have small "packs" of components in a single, big image.
-
-There are RGB and YUV colorspaces.
-- RGB: Red, Green and Blue components. Used by analog VGA monitors.
-- YUV: Luminance (Y) and Chrominance (U,V) components. Used by some
- video systems, like PAL. Also most M(J)PEG/DCT based codecs use this.
-
-With YUV, they used to reduce the resolution of U,V planes:
-The most common YUV formats:
-FOURCC: bpp: IEEE: plane sizes: (w=width h=height of original image)
-444P 24 YUV 4:4:4 Y: w * h U,V: w * h
-YUY2,UYVY 16 YUV 4:2:2 Y: w * h U,V: (w/2) * h [MJPEG]
-YV12,I420 12 YUV 4:2:0 Y: w * h U,V: (w/2) * (h/2) [MPEG, H.263]
-411P 12 YUV 4:1:1 Y: w * h U,V: (w/4) * h [DV-NTSC, CYUV]
-YVU9,IF09 9 YUV 4:1:0 Y: w * h U,V: (w/4) * (h/4) [Sorenson, Indeo]
-
-The YUV a:b:c naming style means: for <a> samples of Y there are <b> samples
-of UV in odd lines and <c> samples of UV in even lines.
-
-conversion: (some cut'n'paste from www and maillist)
-
-RGB to YUV Conversion:
- Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
- Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128
- Cb = U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128
-YUV to RGB Conversion:
- B = 1.164(Y - 16) + 2.018(U - 128)
- G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
- R = 1.164(Y - 16) + 1.596(V - 128)
-
-In both these cases, you have to clamp the output values to keep them in
-the [0-255] range. Rumour has it that the valid range is actually a subset
-of [0-255] (I've seen an RGB range of [16-235] mentioned) but clamping the
-values into [0-255] seems to produce acceptable results to me.
-
-Julien (sorry, I can't recall his surname) suggests that there are
-problems with the above formula and proposes the following instead:
- Y = 0.299R + 0.587G + 0.114B
- Cb = U'= (B-Y)*0.565
- Cr = V'= (R-Y)*0.713
-with reciprocal versions:
- R = Y + 1.403V'
- G = Y - 0.344U' - 0.714V'
- B = Y + 1.770U'
-Note: This formula doesn't contain the +128 offsets of U,V values!
-
-Conclusion:
-Y = luminance, the weighted average of R G B components. (0=black 255=white)
-U = Cb = blue component (0=green 128=grey 255=blue)
-V = Cr = red component (0=green 128=grey 255=red)
-
-
-Huh. The planar YUV modes.
-==========================
-
-The most misunderstood thingie...
-
-In MPlayer, we usually have 3 pointers to the Y, U and V planes, so it
-doesn't matter what the order of the planes in the memory is:
- for mp_image_t and libvo's draw_slice():
- planes[0] = Y = luminance
- planes[1] = U = Cb = blue
- planes[2] = V = Cr = red
- Note: planes[1] is ALWAYS U, and planes[2] is V, the FOURCC
- (YV12 vs. I420) doesn't matter here! So, every codec using 3 pointers
- (not only the first one) normally supports YV12 and I420 (=IYUV), too!
-
-But there are some codecs (VfW, dshow) and vo drivers (xv) ignoring the 2nd
-and 3rd pointer that use only a single pointer to the planar YUV image. In
-this case we must know the right order and alignment of planes in the memory!
-
-from the webartz fourcc list:
-YV12: 12 bpp, full sized Y plane followed by 2x2 subsampled V and U planes
-I420: 12 bpp, full sized Y plane followed by 2x2 subsampled U and V planes
-IYUV: the same as I420
-YVU9: 9 bpp, full sized Y plane followed by 4x4 subsampled V and U planes
-
-Huh 2. RGB vs. BGR ?
-====================
-
-The 2nd most misunderstood thingie...
-
-You know, there are Intel and Motorola, and they use different byteorder.
-There are also others, like MIPS or Alpha, but all follow either Intel
-or Motorola byteorder.
-Unfortunately, the packed colorspaces depend on CPU byteorder. So, RGB
-on Intel and Motorola means different order of bytes.
-
-In MPlayer, we have constants IMGFMT_RGBxx and IMGFMT_BGRxx.
-Unfortunately, some codecs and vo drivers follow Intel, some follow Motorola
-byteorder, so they are incompatible. We had to find a stable base, so long
-time ago I've chosen OpenGL, as it's a wide-spreaded standard, and it well
-defines what RGB is and what BGR is. So, MPlayer's RGB is compatible with
-OpenGL's GL_RGB on all platforms, and the same goes for BGR - GL_BGR.
-Unfortunately, most of the x86 codecs call our BGR RGB, so it sometimes
-confuses developers.
-
-memory order: name
-lowest address .. highest address
-RGBA IMGFMT_RGBA
-ARGB IMGFMT_ARGB
-BGRA IMGFMT_BGRA
-ABGR IMGFMT_ABGR
-RGB IMGFMT_RGB24
-BGR IMGFMT_BGR24
-
-order in an int name
-most significant .. least significant bit
-8A8R8G8B IMGFMT_BGR32
-8A8B8G8R IMGFMT_RGB32
-5R6G5B IMGFMT_BGR16
-5B6G5R IMGFMT_RGB16
-1A5R5G5B IMGFMT_BGR15
-1A5B5G5R IMGFMT_RGB15
-
-The following are palettized formats, the palette is in the second plane.
-When they come out of the swscaler (this can be different when they
-come from a codec!), their palette is organized in such a way
-that you actually get:
-
-3R3G2B IMGFMT_BGR8
-2B3G3R IMGFMT_RGB8
-1R2G1B IMGFMT_BGR4_CHAR
-1B2G1R IMGFMT_RGB4_CHAR
-1R2G1B1R2G1B IMGFMT_BGR4
-1B2G1R1B2G1R IMGFMT_RGB4
-
-Depending upon the CPU being little- or big-endian, different 'in memory' and
-'in register' formats will be equal (LE -> BGRA == BGR32 / BE -> ARGB == BGR32)
-
-Practical coding guide:
-
-The 4, 8, 15, and 16 bit formats are defined so that the portable way to
-access them is to load the pixel into an integer and use bitmasks.
-
-The 24 bit formats are defined so that the portable way to access them is
-to address the 3 components as separate bytes, as in ((uint8_t *)pixel)[0],
-((uint8_t *)pixel)[1], ((uint8_t *)pixel)[2].
-
-When a 32-bit format is identified by the four characters A, R, G, and B in
-some order, the portable way to access it is by addressing the 4 components
-as separate bytes.
-
-When a 32-bit format is identified by the 3 characters R, G, and B in some
-order followed by the number 32, the portable way to access it is to load
-the pixel into an integer and use bitmasks.
-
-When the above portable access methods are not used, you will need to write
-2 versions of your code, and use #if HAVE_BIGENDIAN to choose the correct
-one.
diff --git a/DOCS/OUTDATED-tech/dr-methods.txt b/DOCS/OUTDATED-tech/dr-methods.txt
deleted file mode 100644
index c8eac2aae3..0000000000
--- a/DOCS/OUTDATED-tech/dr-methods.txt
+++ /dev/null
@@ -1,129 +0,0 @@
-DIRECT RENDERING METHODS -- by A'rpi
-======================== (based on a mail to -dev-eng)
-
-Ok. It seems none of you really knows what direct rendering means...
-I'll try to explain now! :)
-
-At first, there are 2 different way, both called direct rendering.
-The main point is the same, but they work different.
-
-method 1: decoding directly to externally provided buffers.
-so, the codec decodes macroblocks directly to the buffer provided by the
-caller. as this buffer will be read later (for MC of next frame) it's not
-a good idea to place such buffers in slow video ram. but.
-there are many video out drivers using buffers in system ram, and using some
-way of memcpy or DMA to blit it to video ram at display time.
-for example, Xv and X11 (normal and Shm too) are such thingie.
-XImage will be a buffer in system ram (!) and X*PutImage will copy it to
-video ram. Only nvidia and ati rage128 Xv drivers use DMA, others just
-memcpy it. Also some opengl drivers (including Matrox) uses DMA to copy from
-texsubimage to video ram.
-The current mplayer way mean: codec allocates some buffer, and decode image
-to that buffer. then this buffer is copied to X11's buffer. then Xserver
-copies this buffer to video ram. So one more memcpy than required...
-direct rendering can remove this extra memcpy, and use Xserver's memory
-buffers for decoding buffer. Note again: it helps only if the external
-buffer is in fast system ram.
-
-method 2: decoding to internal buffers, but blit after each macroblocks,
-including optional colorspace conversion.
-advantages: it can blit into video ram, as it keeps the copy in its internal
-buffers for next frame's MC. skipped macroblocks won't be copied again to
-video ram (except if video buffer address changes between frames -> hw
-double/triple buffering)
-Just avoiding blitting of skipped MBs mean about 100% speedup (2 times
-faster) for low bitrate (<700kbit) divxes. It even makes possible to watch
-VCD resolution divx on p200mmx with DGA.
-how does it work? the codec works as normally, decodes macroblocks into its
-internal buffer. but after each decoded macroblock, it immediatelly copies
-this macroblock to the video ram. it's in the L1 cache, so it will be fast.
-skipped macroblocks can be skipped easily -> less vram write -> more speedup.
-but, as it copies directly to video ram, it must do colorspace conversion if
-needed (for example divx -> rgb DGA), and cannot be used with scaling.
-another interesting question of such direct rendering is the planar formats.
-Eugene K. of Divx4 told me that he experienced worse performance blittig
-yv12 blocks (copied 3 blocks to 3 different (Y,U,V) buffers) than doing
-(really unneeded) yv12->yuy2 conversion on-the-fly.
-so, divx4 codec (with -vc divx4 api) converts from its internal yv12 buffer
-to the external yuy2.
-
-method 2a:
-libmpeg2 already uses simplified variation of this: when it finish decoding a
-slice (a horizontal line of MBs) it copies it to external (video ram) buffer
-(using callback to libvo), so at least it copies from L2 cache instead of
-slow ram. for non-predictive (B) frames it can re-use this cached memory
-for the next slice - so it uses less memory and has better cache utilization:
-it gave me 23% -> 20% VOB decoding speedup on p3. libavcodec supports
-per-slice callbacks too, but no slice-memory reusing for B frames yet.
-
-method 2b:
-some codecs (indeo vfw 3/4 using IF09, and libavcodec) can export the 'bitmap'
-of skipped macroblocks - so libvo driver can do selective blitting: copy only
-the changed macroblocks to slow vram.
-
-so, again: the main difference between method 1 and 2:
-method1 stores decoded data only once: in the external read/write buffer.
-method2 stores decoded data twice: in its internal read/write buffer (for
-later reading) and in the write-only slow video ram.
-
-both methods can make big speedup, depending on codec behaviour and libvo
-driver. for example, IPB mpegs could combine these, use method 2 for I/P
-frames and method 1 for B frams. mpeg2dec does already this.
-for I-only type video (like mjpeg) method 1 is better. for I/P type video
-with MC (like divx, h263 etc) method 2 is the best choice.
-for I/P type videos without MC (like FLI, CVID) could use method 1 with
-static buffer or method 2 with double/triple buffering.
-
-i hope it is clear now.
-and i hope even nick understand what are we talking about...
-
-ah, and at the end, the abilities of codecs:
-libmpeg2,libavcodec: can do method 1 and 2 (but slice level copy, not MB level)
-vfw, dshow: can do method 2, with static or variable address external buffer
-odivx, and most native codecs like fli, cvid, rle: can do method 1
-divx4: can do method 2 (with old odivx api it does method 1)
-xanim: they currently can't do DR, but they exports their
-internal buffers. but it's very easy to implement menthod 1 support,
-and a bit harder but possible without any rewrite to do method 2.
-
-so, dshow and divx4 already implements all requirements of method 2.
-libmpeg2 and libavcodec implements method 1 and 2a (lavc 2b too)
-
-anyway, in the ideal world, we need all codecs support both methods.
-anyway 2: in ideal world, there are no libvo drivers having buffer in system
-ram and memcpy to video ram...
-anyway 3: in our really ideal world, all libvo driver has its buffers in
-fast sytem ram and does blitting with DMA... :)
-
-============================================================================
-MPlayer NOW! -- The libmpcodecs way.
-
-libmpcodecs replaced old draw callbacks with mpi (mplayer image) struct.
-steps of decoding with libmpcodecs:
-1. codec requests an mpi from libmpcodecs core (vd.c)
-2. vd creates an mpi struct filled by codec's requirements (size, stride,
- colorspace, flags, type)
-3. vd asks libvo (control(VOCTRL_GET_IMAGE)), if it can provide such buffer:
- - if it can -> do direct rendering
- - it it can not -> allocate system ram area with memalign()/malloc()
- Note: codec may request EXPORT buffer, it means buffer allocation is
- done inside the codec, so we cannot do DR :(
-4. codec decodes one frame to the mpi struct (system ram or direct rendering)
-5. if it isn't DR, we call libvo's draw functions to blit image to video ram
-
-current possible buffer setups:
-- EXPORT - codec handles buffer allocation and it exports its buffer pointers
- used for opendivx, xanim and libavcodec
-- STATIC - codec requires a single static buffer with constant preserved content
- used by codecs which do partial updating of image, but doesn't require reading
- of previous frame. most rle-based codecs, like cvid, rle8, qtrle, qtsmc etc.
-- TEMP - codec requires a buffer, but it doesn't depend on previous frame at all
- used for I-only codecs (like mjpeg) and for codecs supporting method-2 direct
- rendering with variable buffer address (vfw, dshow, divx4).
-- IP - codec requires 2 (or more) read/write buffers. it's for codecs supporting
- method-1 direct rendering but using motion compensation (ie. reading from
- previous frame buffer). could be used for libavcodec (divx3/4,h263).
- IP buffer stays from 2 (or more) STATIC buffers.
-- IPB - similar to IP, but also have one (or more) TEMP buffers for B frames.
- it will be used for libmpeg2 and libavcodec (mpeg1/2/4).
- IPB buffer stays from 2 (or more) STATIC buffers and 1 (or more) TEMP buffer.
diff --git a/DOCS/OUTDATED-tech/libmpcodecs.txt b/DOCS/OUTDATED-tech/libmpcodecs.txt
deleted file mode 100644
index 9b627ced50..0000000000
--- a/DOCS/OUTDATED-tech/libmpcodecs.txt
+++ /dev/null
@@ -1,383 +0,0 @@
-NOTE: If you want to implement a new native codec, please add it to
-libavcodec. libmpcodecs is considered mostly deprecated, except for wrappers
-around external libraries and codecs requiring binary support.
-
-The libMPcodecs API details, hints - by A'rpi
-==================================
-
-See also: colorspaces.txt, codec-devel.txt, dr-methods.txt, codecs.conf.txt
-
-The VIDEO path:
-===============
-
- [MPlayer core]
- | (1)
- ______V______ (2) /~~~~~~~~~~\ (3,4) |~~~~~~|
- | | -----> | vd_XXX.c | -------> | vd.c |
- | dec_video | \__________/ <-(3a)-- |______|
- | | -----, ,.............(3a,4a).....:
- ~~~~~~~~~~~~~ (6) V V
- /~~~~~~~~\ /~~~~~~~~\ (8)
- | vf_X.c | --> | vf_Y.c | ----> vf_vo.c / ve_XXX.c
- \________/ \________/
- | ^
- (7) | |~~~~~~| : (7a)
- `-> | vf.c |...:
- |______|
-
-Short description of video path:
-1. MPlayer/MEncoder core requests the decoding of a compressed video frame:
- calls dec_video.c::decode_video().
-
-2. decode_video() calls the video codec previously selected in init_video().
- (vd_XXX.c file, where XXX == vfm name, see the 'driver' line of codecs.conf)
-
-3. The codec should initialize the output device before decoding the first
- frame. It may happen in init() or at the middle of the first decode(), see
- 3a. It means calling vd.c::mpcodecs_config_vo() with the image dimensions,
- and the _preferred_ (meaning: internal, native, best) colorspace.
- NOTE: This colorspace may not be equal to the colorspace that is actually
- used. It's just a _hint_ for the colorspace matching algorithm and mainly
- used as input format of the converter, but _only_ when colorspace
- conversion is required,
-
-3a. Selecting the best output colorspace:
- The vd.c::mpcodecs_config_vo() function will go through the outfmt list
- defined by the 'out' lines in codecs.conf and query both vd (codec) and
- vo (output device/filter/encoder) if the format is supported or not.
-
- For the vo, it calls the query_format() function of vf_XXX.c or ve_XXX.c.
- It should return a set of feature flags, the most important ones for this
- stage are: VFCAP_CSP_SUPPORTED (colorspace supported directly or by
- conversion) and VFCAP_CSP_SUPPORTED_BY_HW (colorspace supported
- WITHOUT any conversion).
-
- For the vd (codec), control() with VDCTRL_QUERY_FORMAT will be called.
- If it does not implement VDCTRL_QUERY_FORMAT, (i.e. answers CONTROL_UNKNOWN
- or CONTROL_NA), it is assumed to be CONTROL_TRUE (colorspace supported)!
-
- So, by default, if the list of supported colorspaces is constant and does
- not depend on the actual file/stream header, then it is enough to list the
- formats in codecs.conf ('out' field) and not implement VDCTRL_QUERY_FORMAT.
- This is the case for most codecs.
-
- If the supported colorspace list depends on the file being decoded, list
- the possible out formats (colorspaces) in codecs.conf and implement the
- VDCTRL_QUERY_FORMAT to test the availability of the given colorspace for
- the given video file/stream.
-
- The vd.c core will find the best matching colorspace, depending on the
- VFCAP_CSP_SUPPORTED_BY_HW flag (see vfcap.h). If no match can be found,
- it will try again with the 'scale' filter inserted between vd and vo.
- If this is unsuccessful, it will fail :(
-
-4. Requesting buffer for the decoded frame:
- The codec has to call mpcodecs_get_image() with proper imgtype & imgflag.
- It will find the optimal buffering setup (preferred stride, alignment etc)
- and return a pointer to the allocated and filled up mpi (mp_image_t*) struct.
- The 'imgtype' controls the buffering setup, i.e. STATIC (just one buffer that
- 'remembers' its content between frames), TEMP (write-only, full update),
- EXPORT (memory allocation is done by the codec, not recommended) and so on.
- The 'imgflags' set up the limits for the buffer, i.e. stride limitations,
- readability, remembering content etc. See mp_image.h for the short
- description. See dr-methods.txt for the explanation of buffer
- importing and mpi imgtypes.
-
- Always try to implement stride support! (stride == bytes per line)
- If no stride support, then stride==bytes_per_pixel*image_width.
- If you have stride support in your decoder, use the mpi->stride[] value
- for the byte_per_line for each plane.
- Also take care of other imgflags, like MP_IMGFLAG_PRESERVE and
- MP_IMGFLAG_READABLE, MP_IMGFLAG_COMMON_STRIDE and MP_IMGFLAG_COMMON_PLANE!
- The file mp_image.h contains flag descriptions in comments, read it!
- Ask for help on dev-eng, describing the behavior of your codec, if unsure.
-
-4.a. buffer allocation, vd.c::mpcodecs_get_image():
- If the requested buffer imgtype!=EXPORT, then vd.c will try to do
- direct rendering, i.e. ask the next filter/vo for the buffer allocation.
- It's done by calling get_image() of the vf_XXX.c file.
- If it was successful, the imgflag MP_IMGFLAG_DIRECT will be set, and one
- memcpy() will be saved when passing the data from vd to the next filter/vo.
- See dr-methods.txt for details and examples.
-
-5. Decode the frame, to the mpi structure requested in 4., then return the mpi
- to decvideo.c. Return NULL if the decoding failed or skipped the frame.
-
-6. decvideo.c::decode_video() will now pass the 'mpi' to the next filter (vf_X).
-
-7. The filter's (vf_X) put_image() then requests a new mpi buffer by calling
- vf.c::vf_get_image().
-
-7.a. vf.c::vf_get_image() will try to get direct rendering by asking the
- next filter to do the buffer allocation (calls vf_Y's get_image()).
- If it fails, it will fall back on normal system memory allocation.
-
-8. When we're past the whole filter chain (multiple filters can be connected,
- even the same filter multiple times) then the last, 'leaf' filters will be
- called. The only difference between leaf and non-leaf filters is that leaf
- filters have to implement the whole filter API.
- Currently leaf filters are: vf_vo.c (wrapper over libvo) and ve_XXX.c
- (video encoders used by MEncoder).
-
-
-Video Filters
-=============
-
-Video filters are plugin-like code modules implementing the interface
-defined in vf.h.
-
-Basically it means video output manipulation, i.e. these plugins can
-modify the image and the image properties (size, colorspace, etc) between
-the video decoders (vd.h) and the output layer (libvo or video encoders).
-
-The actual API is a mixture of the video decoder (vd.h) and libvo
-(video_out.h) APIs.
-
-main differences:
-- vf plugins may be "loaded" multiple times, with different parameters
- and context - it's new in MPlayer, old APIs weren't reentrant.
-- vf plugins don't have to implement all functions - all functions have a
- 'fallback' version, so the plugins only override these if wanted.
-- Each vf plugin has its own get_image context, and they can interchange
- images/buffers using these get_image/put_image calls.
-
-
-The VIDEO FILTER API:
-=====================
-filename: vf_FILTERNAME.c
-
-vf_info_t* info;
- pointer to the filter description structure:
-
- const char *info; // description of the filter
- const char *name; // short name of the filter, must be FILTERNAME
- const char *author; // name and email/URL of the author(s)
- const char *comment; // comment, URL to papers describing algorithm etc.
- int (*open)(struct vf_instance *vf,char* args);
- // pointer to the open() function:
-
-Sample:
-
-vf_info_t vf_info_foobar = {
- "Universal Foo and Bar filter",
- "foobar",
- "Ms. Foo Bar",
- "based on algorithm described at http://www.foo-bar.org",
- open
-};
-
-The open() function:
-
- open() is called when the filter is appended/inserted in the filter chain.
- It'll receive the handler (vf) and the optional filter parameters as
- char* string. Note that encoders (ve_*) and vo wrapper (vf_vo.c) have
- non-string arg, but it's specially handled by MPlayer/MEncoder.
-
- The open() function should fill the vf_instance_t structure with the
- implemented functions' pointers (see below).
- It can optionally allocate memory for its internal data (vf_priv_t) and
- store the pointer in vf->priv.
-
- The open() function should parse (or at least check syntax of) parameters,
- and fail (return 0) on error.
-
-Sample:
-
-static int open(vf_instance_t *vf, char* args)
-{
- vf->query_format = query_format;
- vf->config = config;
- vf->put_image = put_image;
- // allocate local storage:
- vf->priv = malloc(sizeof(struct vf_priv_s));
- vf->priv->w =
- vf->priv->h = -1;
- if(args) // parse args:
- if(sscanf(args, "%d:%d", &vf->priv->w, &vf->priv->h)!=2) return 0;
- return 1;
-}
-
-Functions in vf_instance:
-
-NOTE: All these are optional, their function pointer is either NULL or points
-to a default implementation. If you implement them, don't forget to set
-vf->FUNCNAME in your open() !
-
- int (*query_format)(struct vf_instance *vf, unsigned int fmt);
-
-The query_format() function is called one or more times before the config(),
-to find out the capabilities and/or support status of a given colorspace (fmt).
-For the return values, see vfcap.h!
-Normally, a filter should return at least VFCAP_CSP_SUPPORTED for all supported
-colorspaces it accepts as input, and 0 for the unsupported ones.
-If your filter does linear conversion, it should query the next filter,
-and merge in its capability flags. Note: You should always ensure that the
-next filter will accept at least one of your possible output colorspaces!
-
-Sample:
-
-static int query_format(struct vf_instance *vf, unsigned int fmt)
-{
- switch(fmt){
- case IMGFMT_YV12:
- case IMGFMT_I420:
- case IMGFMT_IYUV:
- case IMGFMT_422P:
- return vf_next_query_format(vf,IMGFMT_YUY2) & (~VFCAP_CSP_SUPPORTED_BY_HW);
- }
- return 0;
-}
-
-For the more complex case, when you have an N -> M colorspace mapping matrix,
-see vf_scale or vf_format for examples.
-
-
- int (*config)(struct vf_instance *vf,
- int width, int height, int d_width, int d_height,
- unsigned int flags, unsigned int outfmt);
-
-The config() is called to initialize/configure the filter before using it.
-Its parameters are already well-known from libvo:
- width, height: size of the coded image
- d_width, d_height: wanted display size (usually aspect corrected w/h)
- Filters should use width, height as input image dimension, but the
- resizing filters (crop, expand, scale, rotate, etc) should update
- d_width/d_height (display size) to preserve the correct aspect ratio!
- Filters should not rely on d_width, d_height as input parameters,
- the only exception is when a filter replaces some libvo functionality
- (like -vf scale with -zoom, or OSD rendering with -vf expand).
- flags: the "good" old libvo flag set:
- 0x01 - force fullscreen (-fs)
- 0x02 - allow mode switching (-vm)
- 0x04 - allow software scaling (-zoom)
- 0x08 - flipping (-flip)
- (Usually you don't have to worry about flags, just pass it to next config.)
- outfmt: the selected colorspace/pixelformat. You'll receive images in this
- format.
-
-Sample:
-
-static int config(struct vf_instance *vf,
- int width, int height, int d_width, int d_height,
- unsigned int flags, unsigned int outfmt)
-{
- // use d_width/d_height if not set by the user:
- if (vf->priv->w == -1)
- vf->priv->w = d_width;
- if (vf->priv->h == -1)
- vf->priv->h = d_height;
- // initialize your filter code
- ...
- // OK now config the rest of the filter chain, with our output parameters:
- return vf_next_config(vf,vf->priv->w,vf->priv->h,d_width,d_height,flags,outfmt);
-}
-
- void (*uninit)(struct vf_instance *vf);
-
-Okay, uninit() is the simplest, it's called at the end. You can free your
-private buffers etc here.
-
- int (*put_image)(struct vf_instance *vf, mp_image_t *mpi);
-
-Ah, put_image(). This is the main filter function, it should convert/filter/
-transform the image data from one format/size/color/whatever to another.
-Its input parameter is an mpi (mplayer image) structure, see mp_image.h.
-Your filter has to request a new image buffer for the output, using the
-vf_get_image() function. NOTE: Even if you don't want to modify the image,
-just pass it to the next filter, you have to either
-- not implement put_image() at all - then it will be skipped
-- request a new image with type==EXPORT and copy the pointers
-NEVER pass the mpi as-is, it's local to the filters and may cause trouble.
-
-If you completely copy/transform the image, then you probably want this:
-
- dmpi = vf_get_image(vf->next,mpi->imgfmt, MP_IMGTYPE_TEMP,
- MP_IMGFLAG_ACCEPT_STRIDE, vf->priv->w, vf->priv->h);
-
-It will allocate a new image and return an mp_image structure filled by
-buffer pointers and stride (bytes per line) values, in size of vf->priv->w
-times vf->priv->h. If your filter cannot handle stride, then leave out
-MP_IMGFLAG_ACCEPT_STRIDE. Note that you can do this, but it isn't recommended,
-the whole video path is designed to use strides to get optimal throughput.
-If your filter allocates output image buffers, then use MP_IMGTYPE_EXPORT
-and fill the returned dmpi's planes[], stride[] with your buffer parameters.
-Note, it is not recommended (no direct rendering), so if you can, use
-vf_get_image() for buffer allocation!
-For other image types and flags see mp_image.h, it has comments.
-If you are unsure, feel free to ask on the dev-eng mailing list. Please
-describe the behavior of your filter, and its limitations, so we can
-suggest the optimal buffer type + flags for your code.
-
-Now that you have the input (mpi) and output (dmpi) buffers, you can do
-the conversion. If you didn't notice yet, mp_image has some useful info
-fields. They may help you a lot creating if() or for() structures:
- flags: MP_IMGFLAG_PLANAR, MP_IMGFLAG_YUV, MP_IMGFLAG_SWAPPED
- helps you to handle various pixel formats in single code.
- bpp: bits per pixel
- WARNING! It's number of bits _allocated_ to store a pixel,
- it is not the number of bits actually used to keep colors!
- So it's 16 for both 15 and 16 bit color depth, and is 32 for
- 32bpp (actually 24 bit color depth) mode!
- It's 1 for 1bpp, 9 for YVU9, and is 12 for YV12 mode. Get it?
- For planar formats, you also have chroma_width, chroma_height and
- chroma_x_shift, chroma_y_shift too, they specify the chroma subsampling
- for YUV formats:
- chroma_width = luma_width >> chroma_x_shift;
- chroma_height = luma_height >> chroma_y_shift;
-
-If you're done, call the rest of the filter chain to process your output
-image:
- return vf_next_put_image(vf,dmpi);
-
-
-Ok, the rest is for advanced functionality only:
-
- int (*control)(struct vf_instance *vf, int request, void* data);
-
-You can control the filter at runtime from MPlayer/MEncoder/dec_video:
-#define VFCTRL_QUERY_MAX_PP_LEVEL 4 /* test for postprocessing support (max level) */
-#define VFCTRL_SET_PP_LEVEL 5 /* set postprocessing level */
-#define VFCTRL_SET_EQUALIZER 6 /* set color options (brightness,contrast etc) */
-#define VFCTRL_GET_EQUALIZER 8 /* get color options (brightness,contrast etc) */
-#define VFCTRL_DRAW_OSD 7
-
-
- void (*get_image)(struct vf_instance *vf, mp_image_t *mpi);
-
-This is for direct rendering support, works the same way as in libvo drivers.
-It makes in-place pixel modifications possible.
-If you implement it (vf->get_image!=NULL), then it will be called to do the
-buffer allocation. You SHOULD check the buffer restrictions (stride, type,
-readability etc) and if everything is OK, then allocate the requested buffer
-using the vf_get_image() function and copying the buffer pointers.
-
-NOTE: You HAVE TO save the dmpi pointer, as you'll need it in put_image()
-later on. It is not guaranteed that you'll get the same mpi for put_image() as
-in get_image() (think of out-of-order decoding, get_image is called in decoding
-order, while put_image is called for display) so the only safe place to save
-it is in the mpi struct itself: mpi->priv=(void*)dmpi;
-
-
- void (*draw_slice)(struct vf_instance *vf, unsigned char** src,
- int* stride, int w,int h, int x, int y);
-
-It's the good old draw_slice callback, already known from libvo.
-If your filter can operate on partial images, you can implement this one
-to improve performance (cache utilization).
-
-Ah, and there are two sets of capability/requirement flags (vfcap.h type)
-in vf_instance_t, used by the default query_format() implementation, and by
-the automatic colorspace/stride matching code (vf_next_config()).
-
- // caps:
- unsigned int default_caps; // used by default query_format()
- unsigned int default_reqs; // used by default config()
-
-BTW, you should avoid using global or static variables to store filter instance
-specific stuff, as filters might be used multiple times and in the future even
-multiple streams might be possible.
-
-
-The AUDIO path:
-===============
-TODO!!!
diff --git a/DOCS/OUTDATED-tech/manpage.txt b/DOCS/OUTDATED-tech/manpage.txt
deleted file mode 100644
index f3ad7fd355..0000000000
--- a/DOCS/OUTDATED-tech/manpage.txt
+++ /dev/null
@@ -1,283 +0,0 @@
-========================================
-A documentation about MPlayer's man page
-========================================
-
-
-About the documentation
------------------------
-
-Yes it's true: This is the documentation of the documentation (man page).
-This guide should be used as a reference for questions about the man page
-structure. It's not a strict guide but we recommend following it to get a
-uniform man page.
-
-
-
-What belongs in the man page?
------------------------------
-
- - option descriptions (all)
- - usage (options, configuration files, controls)
- - basic examples
-
-
-
-What doesn't belong in the man page?
-------------------------------------
-
- - instructions for installation, encoding and similar processes
- - detailed evaluations or hints
- - tutorials, guides
-
-
-
-How should patches look like?
------------------------------
-
-Follow the rules in patches.txt, they apply to the man page, too.
-Exceptions are:
-
- - Cosmetic patches are allowed but should be done separately from the real
- changes, be marked as cosmetic changes and shouldn't change the general
- style without reasons/permissions.
- - The same applies to spell checking.
-
-
-
-How do I create an HTML, text or other version of the man page?
----------------------------------------------------------------
-
-The man page was more or less designed for groff as it is the main tool for
-it. Therefore only groff produces acceptable results without changes.
-Additionally, the SS variable should be set to either very low or very high
-values to produce a better groff HTML output (Due to a bug of groff2html?).
-A setting of 4 should look readable. Here's an overview again:
-
- - groff:
- groff is the "official" tool to convert man pages. To get good results you
- need a recent version (1.18.2).
- groff -mman -Thtml mplayer.1 > mplayer.1.html
- groff -mman -Tlatin1 -rLL=78n mplayer.1 | col -bxp > mplayer.1.txt
- The groff man page lists other output formats to use with -T.
-
- Unfortunately groff is not able to handle UTF-8 input as of version 1.19.2.
- groff-utf8 is a wrapper that works around these deficiencies:
- http://www.haible.de/bruno/packages-groff-utf8.html
-
- - man2html:
- You can view it through a CGI script:
- http://localhost/cgi-bin/man2html?mplayer
- The output is unusable as the script doesn't seem to support the macro
- definitions. Maybe manually changing all leads to acceptable results.
-
- - rman:
- rman -f html mplayer.1 > man_page.rman.html
- The output is ugly as rman doesn't understand many of the macros used.
-
- - troffcvt:
- troff2html -man mplayer.1 > man_page.tcvt.html
- The (good) output is similar to groff but simplified...
-
-
-
-The structure
--------------
-
-The option descriptions are divided into sections. Inside a section options are
-alphabetically sorted. The sections are:
-
-(Header)
- not visible, copyright and author information
-(Macro definitions)
- not visible, some macro definitions
-NAME
- The man page is used for both mplayer and mencoder.
-SYNOPSIS
- a description of MPlayer's playtree
-DESCRIPTION
- a general description of MPlayer, MEncoder, GMPlayer and their features
-INTERACTIVE CONTROL
- description of MPlayer's input system and interactive controls
-USAGE
- some general notes about usage
-CONFIGURATION FILES
- description of the configuration file format
-GENERAL OPTIONS
- General options that are common to both MPlayer and MEncoder.
-PLAYER OPTIONS (MPLAYER ONLY)
- user interface option descriptions (MPlayer only)
-DEMUXER/STREAM OPTIONS
- demuxer and stream layer option descriptions
-OSD/SUBTITLE OPTIONS
- This section is special in that it contains all subtitle and OSD option
- descriptions even if they might belong to one of the other sections. It
- was created because of its size.
-AUDIO OUTPUT OPTIONS (MPLAYER ONLY)
- audio output layer (ao) option descriptions (MPlayer only)
-AUDIO OUTPUT DRIVERS (MPLAYER ONLY)
- audio output driver description (ao)
-VIDEO OUTPUT OPTIONS (MPLAYER ONLY)
- video output layer (vo) option descriptions (MPlayer only)
-VIDEO OUTPUT DRIVERS (MPLAYER ONLY)
- video output driver description (vo)
-DECODING/FILTERING OPTIONS
- decoding/filtering layer options (ad, vd, pl)
-VIDEO FILTERS
- video filter description (vf)
-GENERAL ENCODING OPTIONS (MENCODER ONLY)
- Encoding option descriptions (ve) (MEncoder only).
-CODEC SPECIFIC ENCODING OPTIONS (MENCODER ONLY)
- Codec specific option descriptions (lavc,divx4,xvid,lame) (MEncoder only).
-FILES
- a list and description of all installed/used files/directories
-EXAMPLES OF MPLAYER USAGE
- basic examples, again: no long descriptions/processes
-EXAMPLES OF MENCODER USAGE
- basic examples, again: no long descriptions/processes
-BUGS
-AUTHORS
-
-
-
-The man page/groff format
--------------------------
-
-Just read this and RTFS:
-
- man 7 roff
- http://www.tldp.org/HOWTO/mini/Man-Page.html
- man 7 man
- man 7 groff
-
-
-
-"Style" guidelines
-------------------
-
-This section was kept simple but there are certain guidelines/rules to get a
-uniform man page. The best way is to read (and understand) the source.
-
-
-General:
-
- - No line should contain more than 79 characters.
- - used commands: .TH, .SH, .TP, .IP, .PP, .[R]B, .I, .br, .RS, .RE, .na,
- .nh, .ad, .hy, macro definitions, comments and some more
- - Don't forget the quotation marks around expressions, etc...
- - Each new sentence should start on a line of its own.
- - There is a typographical difference between a hyphen, a minus and an
- en-dash or em-dash. For the man page this means that you should put a
- backslash before a '-' if it denotes a range (1\-10), an option (\-fs),
- stdin (\-), a dash (mplayer \- movie player) or a minus (\-1). Use just
- '-' if it is a hyphen (A-V).
- - Don't start a line with "'" or ".", nroff treats them specially.
- - To quickly check a manual page for markup errors, just run
- man DOCS/man/XX/mplayer.1 > /dev/null
-
-
-Option descriptions:
-
- - Options should be in alphabetical order.
- - Option and/or suboption parameters should be short, descriptive and put
- in angular brackets (e.g. \-vo <driver>).
- - If the option has a parameter in a certain range, specify it right after
- the option (e.g. \-subpos <0\-100>).
- - Optional things should be put in square brackets ([]).
- - Obsolete options are followed by (OBSOLETE), beta options by
- (BETA CODE), etc.
- - MPlayer-only options in a section which isn't marked this way
- are followed by (MPlayer only).
- - Add references to other options if they belong to each other, e.g.
- '(\-vo zr only)' or '(also see \-alang)' or are commonly used together.
- - If a nontrivial default parameter exists, mention it, e.g. (default: 24).
- - Put examples and notes at the end of the description (before suboptions).
- - The end of the suboptions _always_ has to be followed by a paragraph
- (BUG).
- - For flag options just document the non-default one of \-XXX and \-noXXX.
- If the option is not a flag, describe both, one below the other (this is
- an exception to the alphabetical order).
-
-
-Macro definitions (see beginning of man page):
-
- - .SS starting value of the suboption column
- - .IPs Add new suboption (we use .TP for normal options and .IP for
- the rest).
- - .RSs begin of suboptions, end with .RE
- - .RSss begin of suboptions in a suboption
- - .REss end of suboptions in a suboption
-
-
-Options, suboptions, examples structure:
-
- - Normal options (note the '<' and '>'):
-
- [...]
- .TP
- .B \-option <parameter>
- description
- [...]
-
- - Long suboptions:
-
- [...]
- description. Available options are:
- .
- .RSs
- .IPs "subopt1=<value>"
- description1
- .IPs "subopt2=<value>"
- description2
- [...]
- .IPs "last subopt=<value>"
- last description
- .RE
- .
- [...]
-
- - Short suboptions:
-
- [...]
- description. Available options are:
-
- .PD 0
- .RSs
- .IPs "subopt1=<value>"
- description1
- .IPs "subopt2=<value>"
- description2
- [...]
- .IPs "last subopt=<value>"
- last description
- .RE
- .PD 1
- .
- [...]
-
- - Suboptions in suboptions:
-
- [...]
- .IPs "subopt1=<value>"
- description1
- .RSss
- subsubopt1: description1
- .br
- subsubopt2: description2
- [...]
- .REss
- [...]
-
- - Examples:
-
- [...]
-
- .I EXAMPLE:
- .PD 0
- .RSs
- .IP "\-option used parameters"
- description
- [...]
- .RE
- .PD 1
- .
- [...]
diff --git a/DOCS/OUTDATED-tech/realcodecs/TODO b/DOCS/OUTDATED-tech/realcodecs/TODO
deleted file mode 100644
index 5ba035bfdd..0000000000
--- a/DOCS/OUTDATED-tech/realcodecs/TODO
+++ /dev/null
@@ -1,22 +0,0 @@
-TODO:
-
-- more docs are coming as I find the time to write them down
-- use RV20toYUV420Free()
-- audio support - nearly DONE (look below)
-- internet streaming support
-- searching - we need to take care of the audio interleaving -
- haven't taken steps to locate audio key frames (does such thing
- exist?)
-- some media files can't be played (mplayer crashes/fails) because
- it asks for decoded audio data, but the buffer in the audio
- demuxer packets are empty/missing. It seems that the necessary
- audio packets haven't been decoded completely (incomplete interleaving)
- the audio stream packets may get mixed with video stream packet - DONE ???
-- put variables for audio streaming inside real_priv_t
-- audio support for other formats than COOK - use a switch
- (like -forcereal) to activate it - no switch needed, win32 codecs
- doens't work (it was a nonworking attempt)
-- postprocessing support (see rp8 preferences->performance->cpu usage,
- also statistics->streams->video->POST FILTER: ON
- (i've found that custommessage calls differ wiht pp on/off, but adding
- these calls to mplayer didn't make a pixel difference between outputs)
diff --git a/DOCS/OUTDATED-tech/realcodecs/audio-codecs.txt b/DOCS/OUTDATED-tech/realcodecs/audio-codecs.txt
deleted file mode 100644
index fd28ab2a16..0000000000
--- a/DOCS/OUTDATED-tech/realcodecs/audio-codecs.txt
+++ /dev/null
@@ -1,155 +0,0 @@
-all audio codecs (cook,atrk,14_4,28_8,dnet,sipr) have the same interface,
-but i have only analyzed the cook codec
-
-
-audio properties (hex)
-
-00 short text/description of the format (bitrate, when to use)
-01 bitrate (bits/s) //avg. bytes/sec output
-02 ulong: ?
- ulong: samples per second
- ushort: bits/sample
- ushort: number of channels
-03 same as 02 //constant 2
-04 long description
-05 constant 1 (always?)
-06 ulong: block align (input frame size for RADecode)
-07 string: minimum player version
-08 n/a
-09 n/a
-0A n/a
-0B n/a
-0C n/a
-0D ?
-0E ? leaf size
-0F ?
-10 ?
-11 ?
-12 ?
-13 min. output buffer size? max. number of samples?
-14 ?
-
-
-
-
-functions:
-
-ulong result=RAOpenCodec2(ra_main_t *raMain);
-
-ulong result=RAInitDecoder(ra_main_t *raMain, ra_init_struct *raInit);
-struct ra_init_struct {
- ulong sample_rate;
- ushort bits_per_sample; // unused by RAInitDecoder
- ushort number_of_channels;
- ushort unknown1; // 0
- ushort unknown2; // also unused (100)
- ulong leaf_size; // leaf size (used for interleaving, but
- // exists in audio stream description header (ASDH))
- ulong block_align; // packet size
- ulong bits_per_sample; // unused (always 16)
- char *ext_data; // 16 bytes located at the end of the
- // ASDH
-};
-
-There are some information missing that you usually need for playback,
-like bits per sample (the fileds aren't read by RAInitDecoder()). These
-are hard coded in the "flavors", i.e. the sub formats. A flavor is an entry
-in the list of available format variations like bitrate, number of channels,
-decoding algorithm, and so on.We can get those information with the
-following command:
-
-
-
-void *GetRAFlavorProperty(ra_main_t *raMain, ulong flavor, ulong property,
- short *property_length_in_bytes);
-returns property data for a specific data
-
-This is not important, because it's just a read only function.
-These flavor properties don't seem to exist in
-
-
-ulong RADecode(ra_main_t *raMain, char *input_buffer,
- ulong input_buffer_size, char *output_buffer,
- ulong *decoded_bytes, ulong p6=-1);
-
-RAFreeDecoder(ra_main_t *);
-
-RACloseCodec(ra_main_t *);
-
-
-ulong RASetFlavor(ra_main_t *ra_main, ulong flavor);
-
-Set the flavor of the stream.
-
-a flavor is an entry in the list of available format variations like
-bitrate, number of channels, decoding algorithm, and so on
-
-
-audio data storage:
--------------------
-
-With Real Audio V5 (or earlier?), the audio streams can be interleaved,
-i.e. the stream is striped amongst several data packets. The packets
-(which have a fixed size packet_len) are split up into a fixed number
-of num_parts equally sized parts - I call them leaves in lack of
-better name. The leaves have the size leaf_size = packet_len / num_parts.
-
-To create a bunch of packets, you need 2*num_parts stream packets.
-The first part of the first stream packet is stored in leaf number 0,
-the first part of the second into leaf number num_parts, the one of the
-next one into leaf number 1 etc. The following part of a stream packet
-is stored 2*num_packets behind the current part of the same stream packet.
-
-In short words: when you have a matrix with the leaves as the values,
-it's a transposition in conjunction with a permutation.
-
-packet | leaf | stream packet, part no.
--------+---------------+------------------------
-0 | 0 | (0,0)
-0 | 1 | (2,0)
-. | . | .
-. | . | .
-0 | num_parts-1 | (2*num_parts-2,0)
-0 | num_parts | (1,0)
-0 | num_parts+1 | (3,0)
-. | . | .
-. | . | .
-0 | 2*num_parts-1 | (2*num_parts-1,0)
-1 | 0 | (0,1)
-. | . | .
-. | . | .
-
-
-sequence of calls:
-------------------
-
-RAOpenCodec2()
-
-RAInitDecoder()
-
-RASetFlavor()
-
-RAGetFlavorProperty(0xE)
-
-sequence of RADecode()s
-
-once a RAGetFlavorProperty(0xE) after some RADecode()s
-
-and occasionally the following sequence:
-RAGetFlavorProperty(0)
-RAGetFlavorProperty(7)
-which is rather pointless because they only return
-cleartext audio descriptions
-
-RAFreeDecoder()
-
-RACloseCodec()
-
-
-
-RAFlush(ra_main_t *raMain, char *output_buffer, ulong *retval)
-will be called when seeking
-output_buffer points to the output buffer from the last
-decode operation.
-retval is unknown, returning always 0x18 in a specific sample
--> further investigation needed
diff --git a/DOCS/OUTDATED-tech/realcodecs/streaming.txt b/DOCS/OUTDATED-tech/realcodecs/streaming.txt
deleted file mode 100644
index a4af485b9b..0000000000
--- a/DOCS/OUTDATED-tech/realcodecs/streaming.txt
+++ /dev/null
@@ -1,58 +0,0 @@
-In the RV30 format, another encapsulated data layer for the video stream
-has been introduced. In lack of a name I'll call them sub packets, the
-normal packets which exist in RV10 I'll call - well - packets. The stream
-of bytes which is put in one memory block is named block.
-
-The format extension has been * by wild guessing and comparing the
-received data between the original viewer and the demuxer.
-
-
-
-Every packet may contain one or more sub packets, and one block may
-be contained inside one or more adjacent (sub) packets.
-A sub packet (fragment) starts with a small header (two letters are one byte):
-
-
-aa(bb)[cccc{gggg}dddd{eeee}ff]
-
-aa: indicates the type of header
- the 2MSB indicate the header type (mask C0)
- C0: the [] part exists, but not () -> whole packet (not fragmented)
- 00, 80: the data block is encapsulated inside multiple packets.
- bb contains the sequence number, beginning with 1.
- 80 indicates the last sub packet containing data for the
- current block. no C0 or 40 sub packet follows until
- the block has been finished with a 80 sub packet.
- No packet with another stream than the current video stream
- is inside the sub packet chain, at least I haven't seen
- such case - the demuxer will shout in this case.
- 40: [] does not exist, the meaning of bb is unknown to me
- data follows to the end of the packet
- mask 3F: unknown
-bb: sub-seq - mask 0x7f: the sequence number of the _fragment_
- mask 0x80: unknown, seems to alternating between 00 and 80
-cccc: mask 3FFF: _total_ length of the packet
- mask C000: unknown, seems to be always 4000
- when it's all 0000, it indicates value >=0x4000, you should read {gggg}
- and use all 16 bits of it. dunno what happens when length>=65536...
-dddd: when it's 0, {} exists (only in this case)
- mask 3FFF: offset of fragment inside the whole packet. it's counted
- from the beginning of the packet, except when hdr&0x80,
- hten it's relative to the _end_ of the packet, so it's
- equal to fragment size!
- mask C000: like cccc, except the first case (always 4000)
- when it's all 0000, it indicates value >=0x4000, you should read {eeee}
- and use all 16 bits of it. dunno what happens when length>=65536...
-ff: sequence number of the assembled (defragmented) packets, beginning with 0
-
-NOTE: the demuxer should build a table of the subpacket offsets relative to the
-start of whole packet, it's required by the rv20/rv30 video decoders.
-
-
-packet header:
-
-ushort unknown
-ulong blocksize
-ushort streamid
-uchar reserved
-uchar flags 1=reliable, 2=keyframe
diff --git a/DOCS/OUTDATED-tech/realcodecs/video-codecs.txt b/DOCS/OUTDATED-tech/realcodecs/video-codecs.txt
deleted file mode 100644
index af2152061a..0000000000
--- a/DOCS/OUTDATED-tech/realcodecs/video-codecs.txt
+++ /dev/null
@@ -1,185 +0,0 @@
-The work has been based on the RV30 codec, but since RV20 has the same
-interface, it might work for it as well.
-
-
-
-
-error codes (the software uses redmond originated error codes)
-
-1. internal code (1-10)
-2. result
-
-0 00000000 success
-1 80004005 E_FAIL
-2 8007000E E_OUTOFMEMORY
-3,9 80004001 E_NOTIMPL
-4,5 80070005 E_ACCESSDENIED
-6 80004003 E_POINTER
-7,10 80070057 E_INVALIDREG
-8 80040FC1 (or 1FC?: CO_E_OBJISREG) - never occurred here
-
-
-
-
-
-I think the only relevant file is the decoder drv[23].so.6.0
-The rv[23]0 ones are just for streaming. We do this ourselves.
-
-
-The codec consists of several functions. The relevant ones are:
-
-RV20toYUV420Init()
-RV20toYUV420Transform()
-RV20toYUV420CustomMessage()
-RV20toYUV420Free()
-
-
-The others are irrelevant (seems to me). HiveMessage doesn't manipulate
-anything and is only called in the beginning.
-
-result=RV20toYUV420Init(struct init_data *, struct rvyuvMain **);
-
-struct init_data {
- short constant=0xb;
- short width, height;
- short 0, 0, 0;
- ulong format1;
- long 1;
- ulong format2;
-};
-
-format1 and format2 are stored in the .rm file's stream headers.
-(format1>>16)&3 seems to be a sub-codec id/selector, at least for rv30
-it's the only difference between low and high bitrate files.
-
-result=RV20toYUV420Transform(char *input_stream, char *output_data,
- struct transin *, struct transout *, struct rvyuvMain *);
-
-struct transin {
- ulong length_of_input_data;
- ulong null;
- ulong num_sub_packets_in_block_minus_one;
- ulong *sub_packets_list;
- ulong another_null;
- ulong timestamp_from_stream;
-};
-
-struct transout {
- ulong flag1; // ((var_94&2!=0)&&(result==0))?1:0
- ulong flag2; // 4 LBS from var_94
- ulong zero;
- ulong width, height;
-};
-
-The length of output_stream is 1.5*width*height (I420 planar yuv 4:2:0).
-input_stream is the exact data from the data block for one frame.
-
-sub_packets_list is a list of num_sub_packets pairs of long values, in form:
-1, 0,
-1, offset_2nd,
-1, offset_3rd,
-1, offset_4th,
-...
-
-where offset_* are the offsets or sub-packets relative to input_stream.
-
-
-result=RV20toYUV420CustomMessage(ulong *msg, struct rvyuvMain *);
-
-Messages used by RV30:
-
-A message is a triplet (cmd,val,ext) of ulong.
-
-NOTE:
-rv30 only requires the (0x24,2|3,{w,h,w,h}) message. others can be left out!
-rv20 only requires the (0x11,2,0) message in rp8, before each transform call.
-
-(3,2,0)
-returns always(?) an error, since a global variable inside the codec
-(which points to a function similar to custommessage), is always NULL
-
-(0x11,0|1|2,0)
-val=0|1: sets intern2 to val, when intern1 is non-zero
- return 3 when intern1 is zero and val is 1
- else returns 0
-val=2: return intern2
-what does intern[1,2] mean?
-
-(0x12,...)
-used by rv20, function unknown, can be ignored
-
-(0x1e,2|3,1)
-calls a subroutine and returns the result, purpose has to be detemined
-
-(0x24,subcodec,{...})
-copies 4 dwords to rvyuvMain+07c: { width, height, 0, 0 }
-subcodec must be 2 (low-bitrate) or 3 (high-bitrate) for rv30.
-the codec type (low vs high) can be determined from 1+((format1>>16)&3)
-for rv20, this call should be ignored! (makes codec crashing)
-
-(0x1c,a,b) - called inside transform
-to be analyzed
-
-(105,...)
-used by rv20, function unknown, can be ignored
-
-
-structure of rvyuvMain:
------------------------
-
-DWORDS (the entries are not always constant)
-there are two w/h pairs at 05C. the first is the size of the
-unscaled video stream, the second possibly image size
-
-000 1 6 3 1
-010 1 0 AEBFC0D1(magic) 0
-020 0 ptr->? 0 0
-030 0 0 ->rvyuvMain+0x050 ?
-040 width height 0x17 0x479
-050 ->rvyuvMain 0x17 0x17 width
-060 height width height 0
-070 0 1 0 0
-080 0 0xb w h
-090 w h 0 0
-0A0 1 0xb0(w?) 0x58 0x58
-0B0 ptr->? 0 0 1
-0C0 0x32 1 0 0
-0D0 0 0 0 0
-0E0 0 0 0 0
-0F0 0 0 0 0
-100 0 0 0 0
-110 p p p p p are pointers to several function, for
-120 p p p p example to the actual public functions
-130 p p p p (except init, the others are some kind of
-140 p p p p interfaces)
-150 p 0 0 0
-160 0 0x2000 1 0
-170 0 0 0 0
-180 1 1 0 0
-190 0 0 0 0
-1A0 0 0 0 0
-1B0 1 0 ptr->? ptr->?
-1C0 1 0 0 0
-1D0 0 0 0 0
-1E0 0 0 0 0
-...
-
-
-
-
-Order of calls:
----------------
-
-Init
-(0x11,0,0)
-(0x24,2,{...})
-
-[
-(3,2,0)->80004001
-(0x11,1,0)
-(0x1e,3,1)
-Transform (internally calls (0x1c,x,y))
-(11,2,0)
-]
-
-Free
diff --git a/DOCS/OUTDATED-tech/slave.txt b/DOCS/OUTDATED-tech/slave.txt
deleted file mode 100644
index db7fabc5ce..0000000000
--- a/DOCS/OUTDATED-tech/slave.txt
+++ /dev/null
@@ -1,592 +0,0 @@
-SLAVE MODE PROTOCOL
--------------------
-
-The -slave option switches on slave mode, in which MPlayer works as a backend
-for other programs. Instead of intercepting keyboard events, MPlayer will read
-commands separated by a newline (\n) from stdin.
-
-To try slave mode out by hand, run
-
- mplayer -slave -quiet <movie>
-
-and type slave commands into the console window.
-
-You can also use a fifo file (named pipe):
-
- mkfifo </tmp/fifofile>
- mplayer -slave -input file=</tmp/fifofile> <movie>
-
-Most slave mode commands are equivalent to command line options, though not
-necessarily under the same name. Detailed descriptions can be found in the
-man page.
-
-NOTE: the following paragraph is mostly obsolete; tricky pause handling
-was required in old MPlayer versions where all commands unpaused by default.
-Now running commands does not require leaving pause state any more, and
-the prefixes described here should not be required in normal use.
-All commands can be prefixed with one of "pausing ", "pausing_keep ", or
-"pausing_toggle ". "pausing " tells MPlayer to pause as soon as possible
-after processing the command. "pausing_keep " tells MPlayer to do so only if
-it was already in paused mode. "pausing_toggle " tells MPlayer to do so
-only if it was not already in paused mode. Please note that "as soon as
-possible" can be before the command is fully executed.
-As a temporary hack, there is also the _experimental_ "pausing_keep_force "
-prefix, with which MPlayer will not exit the pause loop at all.
-Like this you can avoid the "frame stepping" effect of "pausing_keep "
-but most commands will either not work at all or behave in unexpected ways.
-For "set_mouse_pos" and "key_down_event", "pausing_keep_force" is the default
-since other values do not make much sense for them.
-
-
-Various tips and tricks (please help expand it!):
-
-- To ensure the user can't control MPlayer "behind your back" use
- something like -input nodefault-bindings -noconfig all
-
-
-Available commands ('mplayer -input cmdlist' will print a list):
-
-af_add <filter_arguments_list> (comma separated list of audio filters with parameters)
- (experimental) Load the given list of audio filters.
-
-af_clr
- (experimental) Unload all loaded audio filters.
-
-af_cmdline <filter_name> <filter_arguments>
- (experimental) Send new command-line options to a filter with the given name.
-
-af_del <filter_name_list> (comma separated list of audio filter's names)
- (experimental) Unload the first occurrence of the filters, if loaded.
-
-af_switch <filter_arguments_list> (comma separated list of audio filters with parameters)
- (experimental) Remove all the audio filters and replace them with the given list.
-
-alt_src_step <value> (ASX playlist only)
- When more than one source is available it selects the next/previous one.
-
-audio_delay <value> [abs]
- Set/adjust the audio delay.
- If [abs] is not given or is zero, adjust the delay by <value> seconds.
- If [abs] is nonzero, set the delay to <value> seconds.
-
-[brightness|contrast|gamma|hue|saturation] <value> [abs]
- Set/adjust video parameters.
- If [abs] is not given or is zero, modifies parameter by <value>.
- If [abs] is non-zero, parameter is set to <value>.
- <value> is in the range [-100, 100].
-
-capturing [value]
- Toggle/set capturing the primary stream like -dumpstream.
- Requires the -capture parameter to be given.
-
-change_rectangle <val1> <val2>
- Change the position of the rectangle filter rectangle.
- <val1>
- Must be one of the following:
- 0 = width
- 1 = height
- 2 = x position
- 3 = y position
- <val2>
- If <val1> is 0 or 1:
- Integer amount to add/subtract from the width/height.
- Positive values add to width/height and negative values
- subtract from it.
- If <val1> is 2 or 3:
- Relative integer amount by which to move the upper left
- rectangle corner. Positive values move the rectangle
- right/down and negative values move the rectangle left/up.
-
-dvb_set_channel <channel_number> <card_number>
- Set DVB channel.
-
-dvdnav <button_name>
- Press the given dvdnav button.
- up
- down
- left
- right
- menu
- select
- prev
- mouse
-
-edl_mark
- Write the current position into the EDL file.
-
-frame_drop [value]
- Toggle/set frame dropping mode.
-
-get_audio_bitrate
- Print out the audio bitrate of the current file.
-
-get_audio_codec
- Print out the audio codec name of the current file.
-
-get_audio_samples
- Print out the audio frequency and number of channels of the current file.
-
-get_file_name
- Print out the name of the current file.
-
-get_meta_album
- Print out the 'Album' metadata of the current file.
-
-get_meta_artist
- Print out the 'Artist' metadata of the current file.
-
-get_meta_comment
- Print out the 'Comment' metadata of the current file.
-
-get_meta_genre
- Print out the 'Genre' metadata of the current file.
-
-get_meta_title
- Print out the 'Title' metadata of the current file.
-
-get_meta_track
- Print out the 'Track Number' metadata of the current file.
-
-get_meta_year
- Print out the 'Year' metadata of the current file.
-
-get_percent_pos
- Print out the current position in the file, as integer percentage [0-100).
-
-get_property <property>
- Print out the current value of a property.
-
-get_sub_visibility
- Print out subtitle visibility (1 == on, 0 == off).
-
-get_time_length
- Print out the length of the current file in seconds.
-
-get_time_pos
- Print out the current position in the file in seconds, as float.
-
-get_vo_fullscreen
- Print out fullscreen status (1 == fullscreened, 0 == windowed).
-
-get_video_bitrate
- Print out the video bitrate of the current file.
-
-get_video_codec
- Print out the video codec name of the current file.
-
-get_video_resolution
- Print out the video resolution of the current file.
-
-screenshot <each_frame> <full_window>
- Take a screenshot. Requires the screenshot filter to be loaded.
- each_frame:
- 0 Take a single screenshot. (Default.)
- 1 Start/stop taking screenshot of each frame.
- full_window:
- 0 Save the video image, in its original resolution. Typically without
- OSD or subtitles. (Default.)
- 1 Save the contents of the mplayer window. Typically with OSD and
- subtitles. If not available (no VO support), this may act as if 0 was
- passed.
-
-key_down_event <value>
- Inject <value> key code event into MPlayer.
-
-loadfile <file|url> <append>
- Load the given file/URL, stopping playback of the current file/URL.
- If <append> is nonzero playback continues and the file/URL is
- appended to the current playlist instead.
-
-loadlist <file> <append>
- Load the given playlist file, stopping playback of the current file.
- If <append> is nonzero playback continues and the playlist file is
- appended to the current playlist instead.
-
-loop <value> [abs]
- Adjust/set how many times the movie should be looped. -1 means no loop,
- and 0 forever.
-
-mute [value]
- Toggle sound output muting or set it to [value] when [value] >= 0
- (1 == on, 0 == off).
-
-osd [level]
- Toggle OSD mode or set it to [level] when [level] >= 0.
-
-osd_show_progression
- Show the progression bar, the elapsed time and the total duration of the
- movie on the OSD.
-
-osd_show_property_text <string> [duration] [level]
- Show an expanded property string on the OSD, see -playing-msg for a
- description of the available expansions. If [duration] is >= 0 the text
- is shown for [duration] ms. [level] sets the minimum OSD level needed
- for the message to be visible (default: 0 - always show).
-
-osd_show_text <string> [duration] [level]
- Show <string> on the OSD.
-
-panscan <-1.0 - 1.0> | <0.0 - 1.0> <abs>
- Increase or decrease the pan-and-scan range by <value>, 1.0 is the maximum.
- Negative values decrease the pan-and-scan range.
- If <abs> is != 0, then the pan-and scan range is interpreted as an
- absolute range.
-
-pause
- Pause/unpause the playback (use "set_property pause X" to set a particular
- value regardless of whether the player is already paused or not).
-
-frame_step
- Play one frame, then pause again.
-
-pt_step <value> [force]
- Go to the next/previous entry in the playtree. The sign of <value> tells
- the direction. If no entry is available in the given direction it will do
- nothing unless [force] is non-zero.
-
-pt_up_step <value> [force]
- Similar to pt_step but jumps to the next/previous entry in the parent list.
- Useful to break out of the inner loop in the playtree.
-
-quit [value]
- Quit MPlayer. The optional integer [value] is used as the return code
- for the mplayer process (default: 0).
-
-radio_set_channel <channel>
- Switch to <channel>. The 'channels' radio parameter needs to be set.
-
-radio_set_freq <frequency in MHz>
- Set the radio tuner frequency.
-
-radio_step_channel <-1|1>
- Step forwards (1) or backwards (-1) in channel list. Works only when the
- 'channels' radio parameter was set.
-
-radio_step_freq <value>
- Tune frequency by the <value> (positive - up, negative - down).
-
-run <value>
- Run <value> as shell command.
-
-seek <value> [type] [hr-seek]
- Seek to some place in the movie.
- type = 0 is a relative seek of +/- <value> seconds (default).
- type = 1 is a seek to <value> % in the movie.
- type = 2 is a seek to an absolute position of <value> seconds.
- The hr-seek parameter controls whether to use precise seeks (not limited
- to keyframe positions in video).
- hr-seek = 0 means use default set with option -hr-seek (default).
- hr-seek = 1 means force precise seek if possible.
- hr-seek = -1 means force non-precise seek.
-
-seek_chapter <value> [type]
- Seek to the start of a chapter.
- 0 is a relative seek of +/- <value> chapters (default).
- 1 is a seek to chapter <value>.
-
-switch_angle <value>
- Switch to the angle with the ID [value]. Cycle through the
- available angles if [value] is omitted or negative.
-
-set_mouse_pos <x> <y>
- Tells MPlayer the coordinates of the mouse in the window.
- This command doesn't move the mouse!
-
-set_property <property> <value>
- Set a property.
-
-set_property_osd <property> <value>
- Same as above, but show the new value on the OSD in the standard
- manner defined for that property (if any).
-
-speed_incr <value>
- Add <value> to the current playback speed.
-
-speed_mult <value>
- Multiply the current speed by <value>.
-
-speed_set <value>
- Set the speed to <value>.
-
-step_property <property> [value] [direction]
- Change a property by value, or increase by a default if value is
- not given or zero. The direction is reversed if direction is less
- than zero.
-
-step_property_osd <property> [value] [direction]
- Same as above, but show the new value on the OSD in the standard
- manner defined for that property (if any).
-
-stop
- Stop playback.
-
-sub_alignment [value]
- Toggle/set subtitle alignment.
- 0 top alignment
- 1 center alignment
- 2 bottom alignment
-
-sub_delay <value> [abs]
- Adjust the subtitle delay by +/- <value> seconds or set it to <value>
- seconds when [abs] is nonzero.
-
-sub_load <subtitle_file>
- Loads subtitles from <subtitle_file>.
-
-sub_log
- Logs the current or last displayed subtitle together with filename
- and time information to ~/.mplayer/subtitle_log. Intended purpose
- is to allow convenient marking of bogus subtitles which need to be
- fixed while watching the movie.
-
-sub_pos <value> [abs]
- Adjust/set subtitle position.
-
-sub_remove [value]
- If the [value] argument is present and non-negative, removes the subtitle
- file with index [value]. If the argument is omitted or negative, removes
- all subtitle files.
-
-sub_select [value]
- Display subtitle with index [value]. Turn subtitle display off if
- [value] is -1 or greater than the highest available subtitle index.
- Cycle through the available subtitles if [value] is omitted or less
- than -1 (forward or backward respectively).
- Supported subtitle sources are -sub options on the command
- line, VOBsubs, DVD subtitles, and Ogg and Matroska text streams.
- This command is mainly for cycling all subtitles, if you want to set
- a specific subtitle, use sub_file, sub_vob, or sub_demux.
-
-sub_source [source]
- Display first subtitle from [source]. Here [source] is an integer:
- SUB_SOURCE_SUBS (0) for file subs
- SUB_SOURCE_VOBSUB (1) for VOBsub files
- SUB_SOURCE_DEMUX (2) for subtitle embedded in the media file or DVD subs.
- If [source] is -1, will turn off subtitle display.
- If [value] is omitted or less than -1, will cycle between the first subtitle
- of each currently available source (forward or backward respectively).
-
-sub_file [value]
- Display subtitle specifid by [value] for file subs. The [value] is
- corresponding to ID_FILE_SUB_ID values reported by '-identify'.
- If [value] is -1, will turn off subtitle display.
- If [value] is omitted or less than -1, will cycle all file subs
- (forward or backward respectively).
-
-sub_vob [value]
- Display subtitle specifid by [value] for vobsubs. The [value] is
- corresponding to ID_VOBSUB_ID values reported by '-identify'.
- If [value] is -1, will turn off subtitle display.
- If [value] is omitted or less than -1, will cycle all vobsubs
- (forward or backward respectively).
-
-sub_demux [value]
- Display subtitle specifid by [value] for subtitles from DVD or embedded
- in media file. The [value] is corresponding to ID_SUBTITLE_ID values
- reported by '-identify'. If [value] is -1, will turn off subtitle display.
- If [value] is omitted or less than -1, will cycle all DVD subs or embedded subs
- (forward or backward respectively).
-
-sub_scale <value> [abs]
- Adjust the subtitle size by +/- <value> or set it to <value> when [abs]
- is nonzero.
-
-vobsub_lang
- This is a stub linked to sub_select for backwards compatibility.
-
-sub_step <value>
- Step forward in the subtitle list by <value> steps or backwards if <value>
- is negative.
-
-sub_visibility [value]
- Toggle/set subtitle visibility.
-
-forced_subs_only [value]
- Toggle/set forced subtitles only.
-
-switch_audio [value] (currently MPEG*, AVI, Matroska and streams handled by libavformat)
- Switch to the audio track with the ID [value]. Cycle through the
- available tracks if [value] is omitted or negative.
-
-switch_angle [value] (DVDs only)
- Switch to the DVD angle with the ID [value]. Cycle through the
- available angles if [value] is omitted or negative.
-
-switch_ratio [value]
- Change aspect ratio at runtime. [value] is the new aspect ratio expressed
- as a float (e.g. 1.77778 for 16/9).
- There might be problems with some video filters.
-
-switch_title [value] (DVDNAV only)
- Switch to the DVD title with the ID [value]. Cycle through the
- available titles if [value] is omitted or negative.
-
-switch_vsync [value]
- Toggle vsync (1 == on, 0 == off). If [value] is not provided,
- vsync status is inverted.
-
-teletext_add_digit <value>
- Enter/leave teletext page number editing mode and append given digit to
- previously entered one.
- 0..9 - Append apropriate digit. (Enables editing mode if called from normal
- mode, and switches to normal mode when third digit is entered.)
- - - Delete last digit from page number. (Backspace emulation, works only
- in page number editing mode.)
-
-teletext_go_link <1-6>
- Follow given link on current teletext page.
-
-tv_start_scan
- Start automatic TV channel scanning.
-
-tv_step_channel <channel>
- Select next/previous TV channel.
-
-tv_step_norm
- Change TV norm.
-
-tv_step_chanlist
- Change channel list.
-
-tv_set_channel <channel>
- Set the current TV channel.
-
-tv_last_channel
- Set the current TV channel to the last one.
-
-tv_set_freq <frequency in MHz>
- Set the TV tuner frequency.
-
-tv_step_freq <frequency offset in MHz>
- Set the TV tuner frequency relative to current value.
-
-tv_set_norm <norm>
- Set the TV tuner norm (PAL, SECAM, NTSC, ...).
-
-tv_set_brightness <-100 - 100> [abs]
- Set TV tuner brightness or adjust it if [abs] is set to 0.
-
-tv_set_contrast <-100 -100> [abs]
- Set TV tuner contrast or adjust it if [abs] is set to 0.
-
-tv_set_hue <-100 - 100> [abs]
- Set TV tuner hue or adjust it if [abs] is set to 0.
-
-tv_set_saturation <-100 - 100> [abs]
- Set TV tuner saturation or adjust it if [abs] is set to 0.
-
-use_master
- Switch volume control between master and PCM.
-
-vo_border [value]
- Toggle/set borderless display.
-
-vo_fullscreen [value]
- Toggle/set fullscreen mode.
-
-vo_ontop [value]
- Toggle/set stay-on-top.
-
-vo_rootwin [value]
- Toggle/set playback on the root window.
-
-volume <value> [abs]
- Increase/decrease volume or set it to <value> if [abs] is nonzero.
-
-show_chapters_osd
- Show the list of chapters in the currently played file on the OSD.
-
-show_tracks_osd
- Show the list audio and subtitle tracks in the currently played file on the OSD.
-
-Available properties:
-
-name type min max get set step comment
-=================================================================
-
-osdlevel int 0 3 X X X as -osdlevel
-speed float 0.01 100 X X X as -speed
-loop int -1 X X X as -loop
-hr_seek string X X X as -hr-seek
-pts_association_mode string X X X as -pts-association-mode
-pause flag 0 1 X 1 if paused
-filename string X file playing wo path
-path string X file playing
-demuxer string X demuxer used
-stream_pos pos 0 X X position in stream
-stream_start pos 0 X start pos in stream
-stream_end pos 0 X end pos in stream
-stream_length pos 0 X (end - start)
-stream_time_pos time 0 X present position in stream (in seconds)
-titles int X number of titles
-chapter int 0 X X X select chapter
-chapters int X number of chapters
-angle int 0 X X X select angle
-length time X length of file in seconds
-percent_pos int 0 100 X X X position in percent
-time_pos time 0 X X X position in seconds
-metadata str list X list of metadata key/value
-metadata/* string X metadata values
-volume float 0 100 X X X change volume
-balance float -1 1 X X X change audio balance
-mute flag 0 1 X X X
-audio_delay float -100 100 X X X
-audio_format int X
-audio_codec string X
-audio_bitrate int X
-samplerate int X
-channels int X
-switch_audio int -2 255 X X X select audio stream
-switch_angle int -2 255 X X X select DVD angle
-switch_title int -2 255 X X X select DVD title
-capturing flag 0 1 X X X dump primary stream if enabled
-fullscreen flag 0 1 X X X
-deinterlace flag 0 1 X X X
-ontop flag 0 1 X X X
-rootwin flag 0 1 X X X
-border flag 0 1 X X X
-framedropping int 0 2 X X X 1 = soft, 2 = hard
-gamma int -100 100 X X X
-brightness int -100 100 X X X
-contrast int -100 100 X X X
-saturation int -100 100 X X X
-hue int -100 100 X X X
-panscan float 0 1 X X X
-vsync flag 0 1 X X X
-colormatrix choice X X X as --colormatrix
-colormatrix_input_range choice X X X as --colormatrix-input-range
-colormatrix_output_range choice X X X as --colormatrix-output-range
-video_format int X
-video_codec string X
-video_bitrate int X
-width int X "display" width
-height int X "display" height
-fps float X
-aspect float X
-switch_video int -2 255 X X X select video stream
-switch_program int -1 65535 X X X (see TAB default keybind)
-sub int -1 X X X select subtitle stream
-sub_source int -1 2 X X X select subtitle source
-sub_file int -1 X X X select file subtitles
-sub_vob int -1 X X X select vobsubs
-sub_demux int -1 X X X select subs from demux
-sub_delay float X X X
-sub_pos int 0 100 X X X subtitle position
-sub_alignment int 0 2 X X X subtitle alignment
-sub_visibility flag 0 1 X X X show/hide subtitles
-sub_forced_only flag 0 1 X X X
-sub_scale float 0 100 X X X subtitles font size
-ass_vsfilter_aspect_compat flag 0 1 X X X SSA/ASS aspect ratio correction
-tv_brightness int -100 100 X X X
-tv_contrast int -100 100 X X X
-tv_saturation int -100 100 X X X
-tv_hue int -100 100 X X X
-teletext_page int 0 799 X X X
-teletext_subpage int 0 64 X X X
-teletext_mode flag 0 1 X X X 0 - off, 1 - on
-teletext_format int 0 3 X X X 0 - opaque,
- 1 - transparent,
- 2 - opaque inverted,
- 3 - transp. inv.
-teletext_half_page int 0 2 X X X 0 - off, 1 - top half,
- 2- bottom half
diff --git a/DOCS/OUTDATED-tech/subcp.txt b/DOCS/OUTDATED-tech/subcp.txt
deleted file mode 100644
index 50d9cc69f9..0000000000
--- a/DOCS/OUTDATED-tech/subcp.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-Ascii Subtitle / Font CODEPAGEs
-===============================
-
-The subtitle encoding issue seems a bit confusing, so I'll try to
-summarize it here.
-
-There are 2 approaches:
-
-1. (preferred) You can generate Unicode subtitles with:
- subfont --unicode <signle-byte encoding known by iconv> ...
-or
- subfont --unicode <path to custom encoding file> ...
- (this custom encoding file could list all iso-8859-* characters to create
-single font file for common encodings)
-
-and then run mplayer this way (-subcp and -utf8 expect Unicode font!):
- mplayer -subcp <any encoding known by iconv> ...
-or
- mplayer -utf8 ...
-
-2. (current) Generate subtitles for some specific encoding with:
- subfont <signle-byte encoding known by iconv> ...
-or
- subfont <path to custom signle-byte or EUC encoding file> ...
-
-and then run mplayer without any encoding options for signle-byte
-encodings, or with -unicode option for EUC (and the like) encodings
-(which is only partially implemented in mplayer).
-
-AFAIK, CJK encodings: EUC-*, BIG5 and GB2312 work more or less this way:
-- 0x8e (SINGLE-SHIFT TWO, SS2) begins a 2-byte character,
-- 0x8f (SINGLE-SHIFT THREE, SS3) begins a 3-byte character,
-- 0xa0-0xff begin 2-byte characters,
-- other characters are single-byte.
-
-
-I tested charmap2enc script only with /usr/share/i18n/charmaps/EUC-KR.gz
-(on RedHat). It wasn't intended to be perfect.
-
-
---
-Artur Zaprzala
diff --git a/DOCS/OUTDATED-tech/win32-codec-howto.txt b/DOCS/OUTDATED-tech/win32-codec-howto.txt
deleted file mode 100644
index 458a9191b3..0000000000
--- a/DOCS/OUTDATED-tech/win32-codec-howto.txt
+++ /dev/null
@@ -1,118 +0,0 @@
-============================
-Win32 codecs importing HOWTO
-============================
-
-This document describes how to extract the information necessary to hook
-up Win32 binary codecs in MPlayer from a Windows system. Different methods
-exist depending on which video API your codec uses and which Windows
-version you have.
-
-If you have gathered all the necessary information (fourcc, GUID, codec file,
-sample file) as described below, notify the mplayer-dev-eng mailing list.
-If you want to add a codec yourself, read DOCS/tech/codecs.conf.txt.
-
-
-
-VfW codecs
-~~~~~~~~~~
-
-VfW (Video for Windows) is the old video API for Windows. Its codecs have
-the '.dll' or (rarely) '.drv' extension. If MPlayer fails at playing your
-AVI with this kind of message:
-
-VIDEO: [HFYU] 352x288 24bpp 25.000 fps 4321.0 kbps (527.5 kbyte/s)
-Cannot find codec matching selected -vo and video format 0x55594648.
-
-It means your AVI is encoded with a codec which has the HFYU fourcc (HFYU =
-HuffYUV codec, DIV3 = DivX Low Motion, etc.). Now that you know this, you
-have to find out which DLL Windows loads in order to play this file.
-You can find the VfW codec by searching the internet for e.g. VIDC.HFYU.
-
-In our case, the 'system.ini' also contains this information in a line that reads:
-
-VIDC.HFYU=huffyuv.dll
-
-So you need the 'huffyuv.dll' file.
-
-
-
-ACM Codecs:
-~~~~~~~~~~~~
-MPlayer may fail at playing the audio in your file with this message:
-
-Cannot find codec for audio format 0x55.
-Audio: no sound
-
-MPlayer calls this the TwoCC format identifier. From the TwoCC list we find:
-
-0x0055 MPEG-1 Layer 3 (MP3)
-
-If you are lucky, you can then just search the internet for "codec acm"
-e.g. "mp3 acm". Or if the codec is already installed on Windows,
-it will show up in the system.ini as:
-
-msacm.l3acm=L3codeca.acm
-
-Note that the audio codecs are specified by the MSACM prefix:
-
-
-
-DirectShow codecs:
-~~~~~~~~~~~~~~~~~~
-
-DirectShow is the newer video API, which is even worse than its predecessor.
-Things are harder with DirectShow, since 'system.ini' does not contain the
-needed information, instead it is stored in the registry and we need the
-GUID of the codec.
-
-
-New Method:
------------
-
-Using Microsoft GraphEdit (fast)
-
-- Get GraphEdit from the Microsoft SDK, DirectX SDK or doom9.
-- Start 'graphedit.exe'.
-- From the menu select "Graph -> Insert Filters".
-- Expand item "DirectShow Filters".
-- Select the right codec name and expand item.
-- In the entry "DisplayName" look at the text in winged brackets after the
- backslash and write it down (five dash-delimited blocks, the GUID).
-- The codec binary is the file specified in the "Filename" entry.
-
-If there is no "Filename" and "DisplayName" contains something like
-'device:dmo', then it is a DMO-Codec.
-
-
-Old Method:
------------
-
-Take a deep breath and start searching the registry...
-
-- Start 'regedit'.
-- Press "Ctrl-F", disable the first two checkboxes, and enable the third.
- Type in the fourcc of the codec (e.g. "TM20").
-- You should see a field which contains the path and the filename (e.g.
- "C:\WINDOWS\SYSTEM\TM20DEC.AX").
-- Now that you have the file, we need the GUID. Try searching again, but
- now search for the codec's name, not the fourcc. Its name can be acquired
- when Media Player is playing the file, by checking
- "File -> Properties -> Advanced".
- If not, you are out of luck. Try guessing (e.g. search for TrueMotion).
-- If the GUID is found you should see a "FriendlyName" and a "CLSID" field.
- Write down the 16 byte CLSID, this is the GUID we need.
-
-If searching fails, try enabling all the checkboxes. You may have
-false hits, but you may get lucky...
-
-
-
-Tips:
-~~~~~~~
-If you get an error loading a new codec, it may need some more files to work.
-Start the filemon utility before loading MPlayer to find out which DLLs are
-trying to be loaded.
-
-Your codec may load some external DLL libraries. If the codec is already
-installed in Windows, run listdlls wmplayer.exe while Windows Media
-Player is playing your file to find out which.