From 19ed132c8aea24fb3ba1e54bb606f2c13fa3581d Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 3 Feb 2013 15:32:21 +0100 Subject: [PATCH] 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. --- DOCS/OUTDATED-tech/Doxyfile | 1142 ----------------- DOCS/OUTDATED-tech/colorspaces.txt | 158 --- DOCS/OUTDATED-tech/dr-methods.txt | 129 -- DOCS/OUTDATED-tech/libmpcodecs.txt | 383 ------ DOCS/OUTDATED-tech/manpage.txt | 283 ---- DOCS/OUTDATED-tech/realcodecs/TODO | 22 - .../OUTDATED-tech/realcodecs/audio-codecs.txt | 155 --- DOCS/OUTDATED-tech/realcodecs/streaming.txt | 58 - .../OUTDATED-tech/realcodecs/video-codecs.txt | 185 --- DOCS/OUTDATED-tech/slave.txt | 592 --------- DOCS/OUTDATED-tech/subcp.txt | 42 - DOCS/OUTDATED-tech/win32-codec-howto.txt | 118 -- 12 files changed, 3267 deletions(-) delete mode 100644 DOCS/OUTDATED-tech/Doxyfile delete mode 100644 DOCS/OUTDATED-tech/colorspaces.txt delete mode 100644 DOCS/OUTDATED-tech/dr-methods.txt delete mode 100644 DOCS/OUTDATED-tech/libmpcodecs.txt delete mode 100644 DOCS/OUTDATED-tech/manpage.txt delete mode 100644 DOCS/OUTDATED-tech/realcodecs/TODO delete mode 100644 DOCS/OUTDATED-tech/realcodecs/audio-codecs.txt delete mode 100644 DOCS/OUTDATED-tech/realcodecs/streaming.txt delete mode 100644 DOCS/OUTDATED-tech/realcodecs/video-codecs.txt delete mode 100644 DOCS/OUTDATED-tech/slave.txt delete mode 100644 DOCS/OUTDATED-tech/subcp.txt delete mode 100644 DOCS/OUTDATED-tech/win32-codec-howto.txt 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 , where -# is the value of the INPUT_FILTER tag, and 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 samples of Y there are samples -of UV in odd lines and 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 ). - - 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 - description - [...] - - - Long suboptions: - - [...] - description. Available options are: - . - .RSs - .IPs "subopt1=" - description1 - .IPs "subopt2=" - description2 - [...] - .IPs "last subopt=" - last description - .RE - . - [...] - - - Short suboptions: - - [...] - description. Available options are: - - .PD 0 - .RSs - .IPs "subopt1=" - description1 - .IPs "subopt2=" - description2 - [...] - .IPs "last subopt=" - last description - .RE - .PD 1 - . - [...] - - - Suboptions in suboptions: - - [...] - .IPs "subopt1=" - 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 - -and type slave commands into the console window. - -You can also use a fifo file (named pipe): - - mkfifo - mplayer -slave -input file= - -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 (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 - (experimental) Send new command-line options to a filter with the given name. - -af_del (comma separated list of audio filter's names) - (experimental) Unload the first occurrence of the filters, if loaded. - -af_switch (comma separated list of audio filters with parameters) - (experimental) Remove all the audio filters and replace them with the given list. - -alt_src_step (ASX playlist only) - When more than one source is available it selects the next/previous one. - -audio_delay [abs] - Set/adjust the audio delay. - If [abs] is not given or is zero, adjust the delay by seconds. - If [abs] is nonzero, set the delay to seconds. - -[brightness|contrast|gamma|hue|saturation] [abs] - Set/adjust video parameters. - If [abs] is not given or is zero, modifies parameter by . - If [abs] is non-zero, parameter is set to . - 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 - Change the position of the rectangle filter rectangle. - - Must be one of the following: - 0 = width - 1 = height - 2 = x position - 3 = y position - - If 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 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 - Set DVB channel. - -dvdnav - 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 - 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 - 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 - Inject key code event into MPlayer. - -loadfile - Load the given file/URL, stopping playback of the current file/URL. - If is nonzero playback continues and the file/URL is - appended to the current playlist instead. - -loadlist - Load the given playlist file, stopping playback of the current file. - If is nonzero playback continues and the playlist file is - appended to the current playlist instead. - -loop [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 [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 [duration] [level] - Show on the OSD. - -panscan <-1.0 - 1.0> | <0.0 - 1.0> - Increase or decrease the pan-and-scan range by , 1.0 is the maximum. - Negative values decrease the pan-and-scan range. - If 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 [force] - Go to the next/previous entry in the playtree. The sign of tells - the direction. If no entry is available in the given direction it will do - nothing unless [force] is non-zero. - -pt_up_step [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 - Switch to . The 'channels' radio parameter needs to be set. - -radio_set_freq - 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 - Tune frequency by the (positive - up, negative - down). - -run - Run as shell command. - -seek [type] [hr-seek] - Seek to some place in the movie. - type = 0 is a relative seek of +/- seconds (default). - type = 1 is a seek to % in the movie. - type = 2 is a seek to an absolute position of 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 [type] - Seek to the start of a chapter. - 0 is a relative seek of +/- chapters (default). - 1 is a seek to chapter . - -switch_angle - Switch to the angle with the ID [value]. Cycle through the - available angles if [value] is omitted or negative. - -set_mouse_pos - Tells MPlayer the coordinates of the mouse in the window. - This command doesn't move the mouse! - -set_property - Set a property. - -set_property_osd - Same as above, but show the new value on the OSD in the standard - manner defined for that property (if any). - -speed_incr - Add to the current playback speed. - -speed_mult - Multiply the current speed by . - -speed_set - Set the speed to . - -step_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 [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 [abs] - Adjust the subtitle delay by +/- seconds or set it to - seconds when [abs] is nonzero. - -sub_load - Loads subtitles from . - -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 [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 [abs] - Adjust the subtitle size by +/- or set it to when [abs] - is nonzero. - -vobsub_lang - This is a stub linked to sub_select for backwards compatibility. - -sub_step - Step forward in the subtitle list by steps or backwards if - 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 - 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 - Select next/previous TV channel. - -tv_step_norm - Change TV norm. - -tv_step_chanlist - Change channel list. - -tv_set_channel - Set the current TV channel. - -tv_last_channel - Set the current TV channel to the last one. - -tv_set_freq - Set the TV tuner frequency. - -tv_step_freq - Set the TV tuner frequency relative to current value. - -tv_set_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 [abs] - Increase/decrease volume or set it to 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 ... -or - subfont --unicode ... - (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 ... -or - mplayer -utf8 ... - -2. (current) Generate subtitles for some specific encoding with: - subfont ... -or - subfont ... - -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.