mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Using 'Doxygen' to generate source code documentation
This commit is contained in:
parent
d610d95e50
commit
c7849b14a7
@ -517,3 +517,6 @@ Sven Goethel <sgoethel@jausoft.com>
|
|||||||
|
|
||||||
Jan Rieger <jan@ricomp.de>
|
Jan Rieger <jan@ricomp.de>
|
||||||
for suggestions and testing raw keyboard input
|
for suggestions and testing raw keyboard input
|
||||||
|
|
||||||
|
Walter Stroebel <walter.stroebel@lifeline.nl>
|
||||||
|
for introducing "Doxygen" to document the VDR source code
|
||||||
|
899
Doxyfile
Normal file
899
Doxyfile
Normal file
@ -0,0 +1,899 @@
|
|||||||
|
# Doxyfile 1.2.13.1
|
||||||
|
|
||||||
|
# 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 (" ")
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# General 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 = vdr
|
||||||
|
|
||||||
|
# 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 = <will be set by the Makefile>
|
||||||
|
|
||||||
|
# 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 = srcdoc
|
||||||
|
|
||||||
|
# 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, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French,
|
||||||
|
# German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish,
|
||||||
|
# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish.
|
||||||
|
|
||||||
|
OUTPUT_LANGUAGE = English
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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 class will be included in the various
|
||||||
|
# overviews. This option has no effect if EXTRACT_ALL is enabled.
|
||||||
|
|
||||||
|
HIDE_UNDOC_CLASSES = 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 = NO
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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 = NO
|
||||||
|
|
||||||
|
# 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 = NO
|
||||||
|
|
||||||
|
# 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. It is allowed to use relative paths in the argument list.
|
||||||
|
|
||||||
|
STRIP_FROM_PATH =
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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 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 adviced to set this option to NO.
|
||||||
|
|
||||||
|
CASE_SENSE_NAMES = YES
|
||||||
|
|
||||||
|
# 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 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 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
|
||||||
|
|
||||||
|
# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
|
||||||
|
# will put list of the files that are included by a file in the documentation
|
||||||
|
# of that file.
|
||||||
|
|
||||||
|
SHOW_INCLUDE_FILES = YES
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# explict @brief command for a brief description.
|
||||||
|
|
||||||
|
JAVADOC_AUTOBRIEF = YES
|
||||||
|
|
||||||
|
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
|
||||||
|
# member inherits the documentation from any documented member that it
|
||||||
|
# reimplements.
|
||||||
|
|
||||||
|
INHERIT_DOCS = 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 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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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 =
|
||||||
|
|
||||||
|
# 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 consist 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 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.
|
||||||
|
|
||||||
|
##kls
|
||||||
|
OPTIMIZE_OUTPUT_FOR_C = NO
|
||||||
|
|
||||||
|
# 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 = YES
|
||||||
|
|
||||||
|
# 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 =
|
||||||
|
|
||||||
|
# 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 *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
|
||||||
|
# *.h++ *.idl
|
||||||
|
|
||||||
|
FILE_PATTERNS = *.c *.h
|
||||||
|
|
||||||
|
# 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 =
|
||||||
|
|
||||||
|
# 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 = */RCS/* */OLD/*
|
||||||
|
|
||||||
|
# The EXAMPLE_PATH tag can be used to specify one or more files or
|
||||||
|
# directories that contain example code fragments that are included (see
|
||||||
|
# the \include command).
|
||||||
|
|
||||||
|
EXAMPLE_PATH =
|
||||||
|
|
||||||
|
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
|
||||||
|
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
|
||||||
|
# and *.h) to filter out the source-files in the directories. If left
|
||||||
|
# blank all files are included.
|
||||||
|
|
||||||
|
EXAMPLE_PATTERNS =
|
||||||
|
|
||||||
|
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
|
||||||
|
# searched for input files to be used with the \include or \dontinclude
|
||||||
|
# commands irrespective of the value of the RECURSIVE tag.
|
||||||
|
# Possible values are YES and NO. If left blank NO is used.
|
||||||
|
|
||||||
|
EXAMPLE_RECURSIVE = NO
|
||||||
|
|
||||||
|
# The IMAGE_PATH tag can be used to specify one or more files or
|
||||||
|
# directories that contain image that are included in the documentation (see
|
||||||
|
# the \image command).
|
||||||
|
|
||||||
|
IMAGE_PATH =
|
||||||
|
|
||||||
|
# The INPUT_FILTER tag can be used to specify a program that doxygen should
|
||||||
|
# invoke to filter for each input file. Doxygen will invoke the filter program
|
||||||
|
# by executing (via popen()) the command <filter> <input-file>, where <filter>
|
||||||
|
# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
|
||||||
|
# input file. Doxygen will then use the output that the filter program writes
|
||||||
|
# to standard output.
|
||||||
|
|
||||||
|
INPUT_FILTER =
|
||||||
|
|
||||||
|
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
|
||||||
|
# INPUT_FILTER) will be used to filter the input files when producing source
|
||||||
|
# files to browse.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
SOURCE_BROWSER = YES
|
||||||
|
|
||||||
|
# Setting the INLINE_SOURCES tag to YES will include the body
|
||||||
|
# of functions and classes directly in the documentation.
|
||||||
|
|
||||||
|
INLINE_SOURCES = NO
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# 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 = 5
|
||||||
|
|
||||||
|
# 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 = c
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# 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 =
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
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 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 and frames is required (for instance Mozilla, Netscape 4.0+,
|
||||||
|
# or Internet explorer 4.0+). Note that for large projects the tree generation
|
||||||
|
# can take a very long time. In such cases it is better to disable this feature.
|
||||||
|
# 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 =
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# 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 optimised 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 =
|
||||||
|
|
||||||
|
# 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 assigments. 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 =
|
||||||
|
|
||||||
|
# The MAN_EXTENSION tag determines the extension that is added to
|
||||||
|
# the generated man pages (default is the subroutine's section .3)
|
||||||
|
|
||||||
|
MAN_EXTENSION =
|
||||||
|
|
||||||
|
# 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. Note that this
|
||||||
|
# feature is still experimental and incomplete at the
|
||||||
|
# moment.
|
||||||
|
|
||||||
|
GENERATE_XML = NO
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# 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 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_PREDEF_ONLY 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 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::addtions related to external references
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# The TAGFILES tag can be used to specify one or more tagfiles.
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
# The PERL_PATH should be the absolute path and name of the perl script
|
||||||
|
# interpreter (i.e. the result of `which perl').
|
||||||
|
|
||||||
|
PERL_PATH =
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# 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 superceded by the HAVE_DOT option below. This is only a fallback. It is
|
||||||
|
# recommended to install and use dot, since it yield more powerful graphs.
|
||||||
|
|
||||||
|
CLASS_DIAGRAMS = 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 = YES
|
||||||
|
|
||||||
|
# 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 = NO
|
||||||
|
|
||||||
|
# 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 set to YES, the inheritance and collaboration graphs will show the
|
||||||
|
# relations between templates and their instances.
|
||||||
|
|
||||||
|
TEMPLATE_RELATIONS = YES
|
||||||
|
|
||||||
|
# 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 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 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 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
|
||||||
|
|
||||||
|
# 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 intermedate dot files that are used to generate
|
||||||
|
# the various graphs.
|
||||||
|
|
||||||
|
DOT_CLEANUP = YES
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------
|
||||||
|
# Configuration::addtions 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
|
||||||
|
|
||||||
|
# The CGI_NAME tag should be the name of the CGI script that
|
||||||
|
# starts the search engine (doxysearch) with the correct parameters.
|
||||||
|
# A script with this name will be generated by doxygen.
|
||||||
|
|
||||||
|
CGI_NAME =
|
||||||
|
|
||||||
|
# The CGI_URL tag should be the absolute URL to the directory where the
|
||||||
|
# cgi binaries are located. See the documentation of your http daemon for
|
||||||
|
# details.
|
||||||
|
|
||||||
|
CGI_URL =
|
||||||
|
|
||||||
|
# The DOC_URL tag should be the absolute URL to the directory where the
|
||||||
|
# documentation is located. If left blank the absolute path to the
|
||||||
|
# documentation, with file:// prepended to it, will be used.
|
||||||
|
|
||||||
|
DOC_URL =
|
||||||
|
|
||||||
|
# The DOC_ABSPATH tag should be the absolute path to the directory where the
|
||||||
|
# documentation is located. If left blank the directory on the local machine
|
||||||
|
# will be used.
|
||||||
|
|
||||||
|
DOC_ABSPATH =
|
||||||
|
|
||||||
|
# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
|
||||||
|
# is installed.
|
||||||
|
|
||||||
|
BIN_ABSPATH =
|
||||||
|
|
||||||
|
# The EXT_DOC_PATHS tag can be used to specify one or more paths to
|
||||||
|
# documentation generated for other projects. This allows doxysearch to search
|
||||||
|
# the documentation for these projects as well.
|
||||||
|
|
||||||
|
EXT_DOC_PATHS =
|
6
HISTORY
6
HISTORY
@ -1863,7 +1863,7 @@ Video Disk Recorder Revision History
|
|||||||
read from the keyboard).
|
read from the keyboard).
|
||||||
- The 'ncurses' library is now only necessary when compiling VDR with DEBUG_OSD=1.
|
- The 'ncurses' library is now only necessary when compiling VDR with DEBUG_OSD=1.
|
||||||
|
|
||||||
2002-12-13: Version 1.1.20
|
2002-12-14: Version 1.1.20
|
||||||
|
|
||||||
- Now checking if there is a connection to the keyboard (thanks to Jaakko Hyvätti)
|
- Now checking if there is a connection to the keyboard (thanks to Jaakko Hyvätti)
|
||||||
and only creating the KBD remote control if VDR is running in the foreground.
|
and only creating the KBD remote control if VDR is running in the foreground.
|
||||||
@ -1894,3 +1894,7 @@ Video Disk Recorder Revision History
|
|||||||
through the new 'kKbd' key code and none of it will be processed as normal remote
|
through the new 'kKbd' key code and none of it will be processed as normal remote
|
||||||
control functions (thanks to Jan Rieger for suggestions and testing).
|
control functions (thanks to Jan Rieger for suggestions and testing).
|
||||||
- Fixed deleting characters in string entry fields in 'insert' mode.
|
- Fixed deleting characters in string entry fields in 'insert' mode.
|
||||||
|
- Now using "Doxygen" to generate source documentation (thanks to Walter Stroebel
|
||||||
|
for providing an initial 'Doxyfile' configuration and adjusting some comments).
|
||||||
|
See INSTALL for information how to do this. Some function descriptions have
|
||||||
|
already been adapted to Doxygen, more will follow.
|
||||||
|
8
INSTALL
8
INSTALL
@ -357,3 +357,11 @@ If you prefer different key assignments, or if the default doesn't work for
|
|||||||
your keyboard, simply delete the file 'remote.conf' and restart 'vdr' to get
|
your keyboard, simply delete the file 'remote.conf' and restart 'vdr' to get
|
||||||
into learning mode.
|
into learning mode.
|
||||||
|
|
||||||
|
Generating source code documentation:
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
You can do a 'make srcdoc' to generate source code documentation using the
|
||||||
|
Doxygen tool. To do so you need the Doxygen package from http://www.doxygen.src
|
||||||
|
and the Graphviz package from http://www.research.att.com/sw/tools/graphviz.
|
||||||
|
After installing these two packages you can do 'make srcdoc' and then use your
|
||||||
|
HTML browser to read srcdoc/html/index.html.
|
||||||
|
14
Makefile
14
Makefile
@ -4,7 +4,7 @@
|
|||||||
# See the main source file 'vdr.c' for copyright information and
|
# See the main source file 'vdr.c' for copyright information and
|
||||||
# how to reach the author.
|
# how to reach the author.
|
||||||
#
|
#
|
||||||
# $Id: Makefile 1.54 2002/12/13 14:49:12 kls Exp $
|
# $Id: Makefile 1.55 2002/12/15 15:15:55 kls Exp $
|
||||||
|
|
||||||
.DELETE_ON_ERROR:
|
.DELETE_ON_ERROR:
|
||||||
|
|
||||||
@ -23,6 +23,9 @@ PLUGINDIR= ./PLUGINS
|
|||||||
|
|
||||||
VIDEODIR = /video
|
VIDEODIR = /video
|
||||||
|
|
||||||
|
DOXYGEN = /usr/bin/doxygen
|
||||||
|
DOXYFILE = Doxyfile
|
||||||
|
|
||||||
-include Make.config
|
-include Make.config
|
||||||
|
|
||||||
INCLUDES = -I$(DVBDIR)/include
|
INCLUDES = -I$(DVBDIR)/include
|
||||||
@ -122,12 +125,21 @@ install:
|
|||||||
cp *.conf $(VIDEODIR);\
|
cp *.conf $(VIDEODIR);\
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Source documentation:
|
||||||
|
|
||||||
|
srcdoc:
|
||||||
|
@cp $(DOXYFILE) $(DOXYFILE).tmp
|
||||||
|
@echo PROJECT_NUMBER = `grep VDRVERSION config.h | awk '{ print $$3 }'` >> $(DOXYFILE).tmp
|
||||||
|
$(DOXYGEN) $(DOXYFILE).tmp
|
||||||
|
@rm $(DOXYFILE).tmp
|
||||||
|
|
||||||
# Housekeeping:
|
# Housekeeping:
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(MAKE) -C $(DTVDIR) clean
|
$(MAKE) -C $(DTVDIR) clean
|
||||||
-rm -f $(OBJS) $(DEPFILE) vdr genfontfile genfontfile.o core* *~
|
-rm -f $(OBJS) $(DEPFILE) vdr genfontfile genfontfile.o core* *~
|
||||||
-rm -rf include
|
-rm -rf include
|
||||||
|
-rm -rf srcdoc
|
||||||
fontclean:
|
fontclean:
|
||||||
-rm -f fontfix.c fontosd.c
|
-rm -f fontfix.c fontosd.c
|
||||||
CLEAN: clean fontclean
|
CLEAN: clean fontclean
|
||||||
|
366
device.h
366
device.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.h 1.27 2002/11/03 11:16:11 kls Exp $
|
* $Id: device.h 1.28 2002/12/15 14:40:11 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -50,6 +50,8 @@ class cPlayer;
|
|||||||
class cReceiver;
|
class cReceiver;
|
||||||
class cSpuDecoder;
|
class cSpuDecoder;
|
||||||
|
|
||||||
|
/// The cDevice class is the base from which actual devices can be derived.
|
||||||
|
|
||||||
class cDevice : public cThread {
|
class cDevice : public cThread {
|
||||||
private:
|
private:
|
||||||
static int numDevices;
|
static int numDevices;
|
||||||
@ -58,32 +60,35 @@ private:
|
|||||||
static cDevice *primaryDevice;
|
static cDevice *primaryDevice;
|
||||||
public:
|
public:
|
||||||
static int NumDevices(void) { return numDevices; }
|
static int NumDevices(void) { return numDevices; }
|
||||||
// Returns the total number of devices.
|
///< Returns the total number of devices.
|
||||||
static void SetUseDevice(int n);
|
static void SetUseDevice(int n);
|
||||||
// Sets the 'useDevice' flag of the given device.
|
///< Sets the 'useDevice' flag of the given device.
|
||||||
// If this function is not called before initializing, all devices
|
///< If this function is not called before initializing, all devices
|
||||||
// will be used.
|
///< will be used.
|
||||||
static bool UseDevice(int n) { return useDevice == 0 || (useDevice & (1 << n)) != 0; }
|
static bool UseDevice(int n) { return useDevice == 0 || (useDevice & (1 << n)) != 0; }
|
||||||
// Tells whether the device with the given card index shall be used in
|
///< Tells whether the device with the given card index shall be used in
|
||||||
// this instance of VDR.
|
///< this instance of VDR.
|
||||||
static bool SetPrimaryDevice(int n);
|
static bool SetPrimaryDevice(int n);
|
||||||
// Sets the primary device to 'n' (which must be in the range
|
///< Sets the primary device to 'n'.
|
||||||
// 1...numDevices) and returns true if this was possible.
|
///< \param n must be in the range 1...numDevices.
|
||||||
|
///< \return true if this was possible.
|
||||||
static cDevice *PrimaryDevice(void) { return primaryDevice; }
|
static cDevice *PrimaryDevice(void) { return primaryDevice; }
|
||||||
// Returns the primary device.
|
///< Returns the primary device.
|
||||||
static cDevice *GetDevice(int Index);
|
static cDevice *GetDevice(int Index);
|
||||||
// Returns the device with the Index (if Index is in the range
|
///< Gets the device with the given Index.
|
||||||
// 0..numDevices-1, NULL otherwise).
|
///< \param Index must be in the range 0..numDevices-1.
|
||||||
|
///< \return A pointer to the device, or NULL if the Index was invalid.
|
||||||
static cDevice *GetDevice(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL);
|
static cDevice *GetDevice(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL);
|
||||||
// Returns a device that is able to receive the given Channel at the
|
///< Returns a device that is able to receive the given Channel at the
|
||||||
// given Priority (see ProvidesChannel() for more information on how
|
///< given Priority.
|
||||||
// priorities are handled, and the meaning of NeedsDetachReceivers).
|
///< See ProvidesChannel() for more information on how
|
||||||
|
///< priorities are handled, and the meaning of NeedsDetachReceivers.
|
||||||
static void SetCaCaps(int Index = -1);
|
static void SetCaCaps(int Index = -1);
|
||||||
// Sets the CaCaps of the given device according to the Setup data.
|
///< Sets the CaCaps of the given device according to the Setup data.
|
||||||
// By default the CaCaps of all devices are set.
|
///< By default the CaCaps of all devices are set.
|
||||||
static void Shutdown(void);
|
static void Shutdown(void);
|
||||||
// Closes down all devices.
|
///< Closes down all devices.
|
||||||
// Must be called at the end of the program.
|
///< Must be called at the end of the program.
|
||||||
private:
|
private:
|
||||||
static int nextCardIndex;
|
static int nextCardIndex;
|
||||||
int cardIndex;
|
int cardIndex;
|
||||||
@ -92,49 +97,50 @@ protected:
|
|||||||
cDevice(void);
|
cDevice(void);
|
||||||
virtual ~cDevice();
|
virtual ~cDevice();
|
||||||
static int NextCardIndex(int n = 0);
|
static int NextCardIndex(int n = 0);
|
||||||
// Each device in a given machine must have a unique card index, which
|
///< Calculates the next card index.
|
||||||
// will be used to identify the device for assigning Ca parameters and
|
///< Each device in a given machine must have a unique card index, which
|
||||||
// deciding whether to actually use that device in this particular
|
///< will be used to identify the device for assigning Ca parameters and
|
||||||
// instance of VDR. Every time a new cDevice is created, it will be
|
///< deciding whether to actually use that device in this particular
|
||||||
// given the current nextCardIndex, and then nextCardIndex will be
|
///< instance of VDR. Every time a new cDevice is created, it will be
|
||||||
// automatically incremented by 1. A derived class can determine whether
|
///< given the current nextCardIndex, and then nextCardIndex will be
|
||||||
// a given device shall be used by checking UseDevice(NextCardIndex()).
|
///< automatically incremented by 1. A derived class can determine whether
|
||||||
// If a device is skipped, or if there are possible device indexes left
|
///< a given device shall be used by checking UseDevice(NextCardIndex()).
|
||||||
// after a derived class has set up all its devices, NextCardIndex(n)
|
///< If a device is skipped, or if there are possible device indexes left
|
||||||
// must be called, where n is the number of card indexes to skip.
|
///< after a derived class has set up all its devices, NextCardIndex(n)
|
||||||
|
///< must be called, where n is the number of card indexes to skip.
|
||||||
virtual void MakePrimaryDevice(bool On);
|
virtual void MakePrimaryDevice(bool On);
|
||||||
// Informs a device that it will be the primary device. If there is
|
///< Informs a device that it will be the primary device. If there is
|
||||||
// anything the device needs to set up when it becomes the primary
|
///< anything the device needs to set up when it becomes the primary
|
||||||
// device (On = true) or to shut down when it no longer is the primary
|
///< device (On = true) or to shut down when it no longer is the primary
|
||||||
// device (On = false), it should do so in this function.
|
///< device (On = false), it should do so in this function.
|
||||||
public:
|
public:
|
||||||
bool IsPrimaryDevice(void) const { return this == primaryDevice; }
|
bool IsPrimaryDevice(void) const { return this == primaryDevice; }
|
||||||
int CardIndex(void) const { return cardIndex; }
|
int CardIndex(void) const { return cardIndex; }
|
||||||
// Returns the card index of this device (0 ... MAXDEVICES - 1).
|
///< Returns the card index of this device (0 ... MAXDEVICES - 1).
|
||||||
int DeviceNumber(void) const;
|
int DeviceNumber(void) const;
|
||||||
// Returns number of this device (0 ... MAXDEVICES - 1).
|
///< Returns the number of this device (0 ... MAXDEVICES - 1).
|
||||||
int ProvidesCa(int Ca) const;
|
int ProvidesCa(int Ca) const;
|
||||||
// Checks whether this device provides the given value in its
|
///< Checks whether this device provides the given value in its
|
||||||
// caCaps. Returns 0 if the value is not provided, 1 if only this
|
///< caCaps. Returns 0 if the value is not provided, 1 if only this
|
||||||
// value is provided, and > 1 if this and other values are provided.
|
///< value is provided, and > 1 if this and other values are provided.
|
||||||
// If the given value is equal to the number of this device,
|
///< If the given value is equal to the number of this device,
|
||||||
// 1 is returned. If it is 0 (FTA), 1 plus the number of other values
|
///< 1 is returned. If it is 0 (FTA), 1 plus the number of other values
|
||||||
// in caCaps is returned.
|
///< in caCaps is returned.
|
||||||
virtual bool HasDecoder(void) const;
|
virtual bool HasDecoder(void) const;
|
||||||
// Tells whether this device has an MPEG decoder.
|
///< Tells whether this device has an MPEG decoder.
|
||||||
|
|
||||||
// OSD facilities
|
// OSD facilities
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual cOsdBase *NewOsd(int x, int y);
|
virtual cOsdBase *NewOsd(int x, int y);
|
||||||
// Creates a new cOsdBase object that can be used by the cOsd class
|
///< Creates a new cOsdBase object that can be used by the cOsd class
|
||||||
// to display information on the screen, with the upper left corner
|
///< to display information on the screen, with the upper left corner
|
||||||
// of the OSD at the given coordinates. If a derived cDevice doesn't
|
///< of the OSD at the given coordinates. If a derived cDevice doesn't
|
||||||
// implement this function, NULL will be returned by default (which
|
///< implement this function, NULL will be returned by default (which
|
||||||
// means the device has no OSD capabilities).
|
///< means the device has no OSD capabilities).
|
||||||
virtual cSpuDecoder *GetSpuDecoder(void);
|
virtual cSpuDecoder *GetSpuDecoder(void);
|
||||||
// Returns a pointer to the device's SPU decoder (or NULL, if this
|
///< Returns a pointer to the device's SPU decoder (or NULL, if this
|
||||||
// device doesn't have an SPU decoder).
|
///< device doesn't have an SPU decoder).
|
||||||
|
|
||||||
// Channel facilities
|
// Channel facilities
|
||||||
|
|
||||||
@ -142,38 +148,38 @@ protected:
|
|||||||
static int currentChannel;
|
static int currentChannel;
|
||||||
public:
|
public:
|
||||||
virtual bool ProvidesSource(int Source) const;
|
virtual bool ProvidesSource(int Source) const;
|
||||||
// Returns true if this device can provide the given source.
|
///< Returns true if this device can provide the given source.
|
||||||
virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const;
|
virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const;
|
||||||
// Returns true if this device can provide the given channel.
|
///< Returns true if this device can provide the given channel.
|
||||||
// In case the device has cReceivers attached to it or it is the primary
|
///< In case the device has cReceivers attached to it or it is the primary
|
||||||
// device, Priority is used to decide whether the caller's request can
|
///< device, Priority is used to decide whether the caller's request can
|
||||||
// be honored.
|
///< be honored.
|
||||||
// The special Priority value -1 will tell the caller whether this device
|
///< The special Priority value -1 will tell the caller whether this device
|
||||||
// is principally able to provide the given Channel, regardless of any
|
///< is principally able to provide the given Channel, regardless of any
|
||||||
// attached cReceivers.
|
///< attached cReceivers.
|
||||||
// If NeedsDetachReceivers is given, the resulting value in it will tell the
|
///< If NeedsDetachReceivers is given, the resulting value in it will tell the
|
||||||
// caller whether or not it will have to detach any currently attached
|
///< caller whether or not it will have to detach any currently attached
|
||||||
// receivers from this device before calling SwitchChannel. Note
|
///< receivers from this device before calling SwitchChannel. Note
|
||||||
// that the return value in NeedsDetachReceivers is only meaningful if the
|
///< that the return value in NeedsDetachReceivers is only meaningful if the
|
||||||
// function itself actually returns true.
|
///< function itself actually returns true.
|
||||||
// The default implementation always returns false, so a derived cDevice
|
///< The default implementation always returns false, so a derived cDevice
|
||||||
// class that can provide channels must implement this function.
|
///< class that can provide channels must implement this function.
|
||||||
bool SwitchChannel(const cChannel *Channel, bool LiveView);
|
bool SwitchChannel(const cChannel *Channel, bool LiveView);
|
||||||
// Switches the device to the given Channel, initiating transfer mode
|
///< Switches the device to the given Channel, initiating transfer mode
|
||||||
// if necessary.
|
///< if necessary.
|
||||||
static bool SwitchChannel(int Direction);
|
static bool SwitchChannel(int Direction);
|
||||||
// Switches the primary device to the next available channel in the given
|
///< Switches the primary device to the next available channel in the given
|
||||||
// Direction (only the sign of Direction is evaluated, positive values
|
///< Direction (only the sign of Direction is evaluated, positive values
|
||||||
// switch to higher channel numbers).
|
///< switch to higher channel numbers).
|
||||||
private:
|
private:
|
||||||
eSetChannelResult SetChannel(const cChannel *Channel, bool LiveView);
|
eSetChannelResult SetChannel(const cChannel *Channel, bool LiveView);
|
||||||
// Sets the device to the given channel (general setup).
|
///< Sets the device to the given channel (general setup).
|
||||||
protected:
|
protected:
|
||||||
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
||||||
// Sets the device to the given channel (actual physical setup).
|
///< Sets the device to the given channel (actual physical setup).
|
||||||
public:
|
public:
|
||||||
static int CurrentChannel(void) { return primaryDevice ? currentChannel : 0; }
|
static int CurrentChannel(void) { return primaryDevice ? currentChannel : 0; }
|
||||||
// Returns the number of the current channel on the primary device.
|
///< Returns the number of the current channel on the primary device.
|
||||||
|
|
||||||
// PID handle facilities
|
// PID handle facilities
|
||||||
|
|
||||||
@ -191,33 +197,43 @@ protected:
|
|||||||
};
|
};
|
||||||
cPidHandle pidHandles[MAXPIDHANDLES];
|
cPidHandle pidHandles[MAXPIDHANDLES];
|
||||||
bool HasPid(int Pid) const;
|
bool HasPid(int Pid) const;
|
||||||
// Returns true if this device is currently receiving the given PID.
|
///< Returns true if this device is currently receiving the given PID.
|
||||||
bool AddPid(int Pid, ePidType PidType = ptOther);
|
bool AddPid(int Pid, ePidType PidType = ptOther);
|
||||||
// Adds a PID to the set of PIDs this device shall receive.
|
///< Adds a PID to the set of PIDs this device shall receive.
|
||||||
void DelPid(int Pid);
|
void DelPid(int Pid);
|
||||||
// Deletes a PID from the set of PIDs this device shall receive.
|
///< Deletes a PID from the set of PIDs this device shall receive.
|
||||||
virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
|
virtual bool SetPid(cPidHandle *Handle, int Type, bool On);
|
||||||
// Does the actual PID setting on this device.
|
///< Does the actual PID setting on this device.
|
||||||
// On indicates whether the PID shall be added or deleted.
|
///< On indicates whether the PID shall be added or deleted.
|
||||||
// Handle->handle can be used by the device to store information it
|
///< Handle->handle can be used by the device to store information it
|
||||||
// needs to receive this PID (for instance a file handle).
|
///< needs to receive this PID (for instance a file handle).
|
||||||
// Handle->used indicated how many receivers are using this PID.
|
///< Handle->used indicated how many receivers are using this PID.
|
||||||
// Type indicates some special types of PIDs, which the device may
|
///< Type indicates some special types of PIDs, which the device may
|
||||||
// need to set in a specific way.
|
///< need to set in a specific way.
|
||||||
|
|
||||||
// Image Grab facilities
|
// Image Grab facilities
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool GrabImage(const char *FileName, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
|
virtual bool GrabImage(const char *FileName, bool Jpeg = true, int Quality = -1, int SizeX = -1, int SizeY = -1);
|
||||||
// Grabs the currently visible screen image into the given file, with the
|
///< Capture a single frame as an image.
|
||||||
// given parameters.
|
///< Grabs the currently visible screen image into the given file, with the
|
||||||
|
///< given parameters.
|
||||||
|
///< \param FileName The name of the file to write. Should include the proper extension.
|
||||||
|
///< \param Jpeg If true will write a JPEG file. Otherwise a PNM file will be written.
|
||||||
|
///< \param Quality The compression factor for JPEG. 1 will create a very blocky
|
||||||
|
///< and small image, 70..80 will yield reasonable quality images while keeping the
|
||||||
|
///< image file size around 50 KB for a full frame. The default will create a big
|
||||||
|
///< but very high quality image.
|
||||||
|
///< \param SizeX The number of horizontal pixels in the frame (default is the current screen width).
|
||||||
|
///< \param SizeY The number of vertical pixels in the frame (default is the current screen height).
|
||||||
|
///< \return True if all went well. */
|
||||||
|
|
||||||
// Video format facilities
|
// Video format facilities
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void SetVideoFormat(bool VideoFormat16_9);
|
virtual void SetVideoFormat(bool VideoFormat16_9);
|
||||||
// Sets the output video format to either 16:9 or 4:3 (only useful
|
///< Sets the output video format to either 16:9 or 4:3 (only useful
|
||||||
// if this device has an MPEG decoder).
|
///< if this device has an MPEG decoder).
|
||||||
|
|
||||||
// Audio facilities
|
// Audio facilities
|
||||||
|
|
||||||
@ -226,51 +242,51 @@ private:
|
|||||||
int volume;
|
int volume;
|
||||||
protected:
|
protected:
|
||||||
virtual void SetVolumeDevice(int Volume);
|
virtual void SetVolumeDevice(int Volume);
|
||||||
// Sets the audio volume on this device (Volume = 0...255).
|
///< Sets the audio volume on this device (Volume = 0...255).
|
||||||
virtual int NumAudioTracksDevice(void) const;
|
virtual int NumAudioTracksDevice(void) const;
|
||||||
// Returns the number of audio tracks that are currently available on this
|
///< Returns the number of audio tracks that are currently available on this
|
||||||
// device. The default return value is 0, meaning that this device
|
///< device. The default return value is 0, meaning that this device
|
||||||
// doesn't have multiple audio track capabilities. The return value may
|
///< doesn't have multiple audio track capabilities. The return value may
|
||||||
// change with every call and need not necessarily be the number of list
|
///< change with every call and need not necessarily be the number of list
|
||||||
// entries returned by GetAudioTracksDevice(). This function is mainly called to
|
///< entries returned by GetAudioTracksDevice(). This function is mainly called to
|
||||||
// decide whether there should be an "Audio" button in a menu.
|
///< decide whether there should be an "Audio" button in a menu.
|
||||||
virtual const char **GetAudioTracksDevice(int *CurrentTrack = NULL) const;
|
virtual const char **GetAudioTracksDevice(int *CurrentTrack = NULL) const;
|
||||||
// Returns a list of currently available audio tracks. The last entry in the
|
///< Returns a list of currently available audio tracks. The last entry in the
|
||||||
// list must be NULL. The number of entries does not necessarily have to be
|
///< list must be NULL. The number of entries does not necessarily have to be
|
||||||
// the same as returned by a previous call to NumAudioTracksDevice().
|
///< the same as returned by a previous call to NumAudioTracksDevice().
|
||||||
// If CurrentTrack is given, it will be set to the index of the current track
|
///< If CurrentTrack is given, it will be set to the index of the current track
|
||||||
// in the returned list. Note that the list must not be changed after it has
|
///< in the returned list. Note that the list must not be changed after it has
|
||||||
// been returned by a call to GetAudioTracksDevice()! The only time the list may
|
///< been returned by a call to GetAudioTracksDevice()! The only time the list may
|
||||||
// change is *inside* the GetAudioTracksDevice() function.
|
///< change is *inside* the GetAudioTracksDevice() function.
|
||||||
// By default the return value is NULL and CurrentTrack, if given, will not
|
///< By default the return value is NULL and CurrentTrack, if given, will not
|
||||||
// have any meaning.
|
///< have any meaning.
|
||||||
virtual void SetAudioTrackDevice(int Index);
|
virtual void SetAudioTrackDevice(int Index);
|
||||||
// Sets the current audio track to the given value, which should be within the
|
///< Sets the current audio track to the given value, which should be within the
|
||||||
// range of the list returned by a previous call to GetAudioTracksDevice()
|
///< range of the list returned by a previous call to GetAudioTracksDevice()
|
||||||
// (otherwise nothing will happen).
|
///< (otherwise nothing will happen).
|
||||||
public:
|
public:
|
||||||
bool IsMute(void) const { return mute; }
|
bool IsMute(void) const { return mute; }
|
||||||
bool ToggleMute(void);
|
bool ToggleMute(void);
|
||||||
// Turns the volume off or on and returns the new mute state.
|
///< Turns the volume off or on and returns the new mute state.
|
||||||
void SetVolume(int Volume, bool Absolute = false);
|
void SetVolume(int Volume, bool Absolute = false);
|
||||||
// Sets the volume to the given value, either absolutely or relative to
|
///< Sets the volume to the given value, either absolutely or relative to
|
||||||
// the current volume.
|
///< the current volume.
|
||||||
static int CurrentVolume(void) { return primaryDevice ? primaryDevice->volume : 0; }//XXX???
|
static int CurrentVolume(void) { return primaryDevice ? primaryDevice->volume : 0; }//XXX???
|
||||||
int NumAudioTracks(void) const;
|
int NumAudioTracks(void) const;
|
||||||
// Returns the number of audio tracks that are currently available on this
|
///< Returns the number of audio tracks that are currently available on this
|
||||||
// device or a player attached to it.
|
///< device or a player attached to it.
|
||||||
const char **GetAudioTracks(int *CurrentTrack = NULL) const;
|
const char **GetAudioTracks(int *CurrentTrack = NULL) const;
|
||||||
// Returns a list of currently available audio tracks. The last entry in the
|
///< Returns a list of currently available audio tracks. The last entry in the
|
||||||
// list is NULL. The number of entries does not necessarily have to be
|
///< list is NULL. The number of entries does not necessarily have to be
|
||||||
// the same as returned by a previous call to NumAudioTracks().
|
///< the same as returned by a previous call to NumAudioTracks().
|
||||||
// If CurrentTrack is given, it will be set to the index of the current track
|
///< If CurrentTrack is given, it will be set to the index of the current track
|
||||||
// in the returned list.
|
///< in the returned list.
|
||||||
// By default the return value is NULL and CurrentTrack, if given, will not
|
///< By default the return value is NULL and CurrentTrack, if given, will not
|
||||||
// have any meaning.
|
///< have any meaning.
|
||||||
void SetAudioTrack(int Index);
|
void SetAudioTrack(int Index);
|
||||||
// Sets the current audio track to the given value, which should be within the
|
///< Sets the current audio track to the given value, which should be within the
|
||||||
// range of the list returned by a previous call to GetAudioTracks() (otherwise
|
///< range of the list returned by a previous call to GetAudioTracks() (otherwise
|
||||||
// nothing will happen).
|
///< nothing will happen).
|
||||||
|
|
||||||
// Player facilities
|
// Player facilities
|
||||||
|
|
||||||
@ -279,54 +295,54 @@ private:
|
|||||||
bool playerDetached;
|
bool playerDetached;
|
||||||
protected:
|
protected:
|
||||||
virtual bool CanReplay(void) const;
|
virtual bool CanReplay(void) const;
|
||||||
// Returns true if this device can currently start a replay session.
|
///< Returns true if this device can currently start a replay session.
|
||||||
virtual bool SetPlayMode(ePlayMode PlayMode);
|
virtual bool SetPlayMode(ePlayMode PlayMode);
|
||||||
// Sets the device into the given play mode.
|
///< Sets the device into the given play mode.
|
||||||
// Returns true if the operation was successful.
|
///< \return true if the operation was successful.
|
||||||
public:
|
public:
|
||||||
virtual void TrickSpeed(int Speed);
|
virtual void TrickSpeed(int Speed);
|
||||||
// Sets the device into a mode where replay is done slower.
|
///< Sets the device into a mode where replay is done slower.
|
||||||
// Every single frame shall then be displayed the given number of
|
///< Every single frame shall then be displayed the given number of
|
||||||
// times.
|
///< times.
|
||||||
virtual void Clear(void);
|
virtual void Clear(void);
|
||||||
// Clears all video and audio data from the device.
|
///< Clears all video and audio data from the device.
|
||||||
// A derived class must call the base class function to make sure
|
///< A derived class must call the base class function to make sure
|
||||||
// all registered cAudio objects are notified.
|
///< all registered cAudio objects are notified.
|
||||||
virtual void Play(void);
|
virtual void Play(void);
|
||||||
// Sets the device into play mode (after a previous trick
|
///< Sets the device into play mode (after a previous trick
|
||||||
// mode).
|
///< mode).
|
||||||
virtual void Freeze(void);
|
virtual void Freeze(void);
|
||||||
// Puts the device into "freeze frame" mode.
|
///< Puts the device into "freeze frame" mode.
|
||||||
virtual void Mute(void);
|
virtual void Mute(void);
|
||||||
// Turns off audio while replaying.
|
///< Turns off audio while replaying.
|
||||||
// A derived class must call the base class function to make sure
|
///< A derived class must call the base class function to make sure
|
||||||
// all registered cAudio objects are notified.
|
///< all registered cAudio objects are notified.
|
||||||
virtual void StillPicture(const uchar *Data, int Length);
|
virtual void StillPicture(const uchar *Data, int Length);
|
||||||
// Displays the given I-frame as a still picture.
|
///< Displays the given I-frame as a still picture.
|
||||||
virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
|
virtual bool Poll(cPoller &Poller, int TimeoutMs = 0);
|
||||||
// Returns true if the device itself or any of the file handles in
|
///< Returns true if the device itself or any of the file handles in
|
||||||
// Poller is ready for further action.
|
///< Poller is ready for further action.
|
||||||
// If TimeoutMs is not zero, the device will wait up to the given number
|
///< If TimeoutMs is not zero, the device will wait up to the given number
|
||||||
// of milleseconds before returning in case there is no immediate
|
///< of milleseconds before returning in case there is no immediate
|
||||||
// need for data.
|
///< need for data.
|
||||||
virtual int PlayVideo(const uchar *Data, int Length);
|
virtual int PlayVideo(const uchar *Data, int Length);
|
||||||
// Actually plays the given data block as video. The data must be
|
///< Actually plays the given data block as video. The data must be
|
||||||
// part of a PES (Packetized Elementary Stream) which can contain
|
///< part of a PES (Packetized Elementary Stream) which can contain
|
||||||
// one video and one audio strem.
|
///< one video and one audio strem.
|
||||||
virtual void PlayAudio(const uchar *Data, int Length);
|
virtual void PlayAudio(const uchar *Data, int Length);
|
||||||
// Plays additional audio streams, like Dolby Digital.
|
///< Plays additional audio streams, like Dolby Digital.
|
||||||
// A derived class must call the base class function to make sure data
|
///< A derived class must call the base class function to make sure data
|
||||||
// is distributed to all registered cAudio objects.
|
///< is distributed to all registered cAudio objects.
|
||||||
bool Replaying(void) const;
|
bool Replaying(void) const;
|
||||||
// Returns true if we are currently replaying.
|
///< Returns true if we are currently replaying.
|
||||||
void StopReplay(void);
|
void StopReplay(void);
|
||||||
// Stops the current replay session (if any).
|
///< Stops the current replay session (if any).
|
||||||
bool AttachPlayer(cPlayer *Player);
|
bool AttachPlayer(cPlayer *Player);
|
||||||
// Attaches the given player to this device.
|
///< Attaches the given player to this device.
|
||||||
void Detach(cPlayer *Player);
|
void Detach(cPlayer *Player);
|
||||||
// Detaches the given player from this device.
|
///< Detaches the given player from this device.
|
||||||
bool PlayerDetached(void);
|
bool PlayerDetached(void);
|
||||||
// Returns true if a player has been detached and resets the 'playerDetached' flag.
|
///< Returns true if a player has been detached and resets the 'playerDetached' flag.
|
||||||
|
|
||||||
// Receiver facilities
|
// Receiver facilities
|
||||||
|
|
||||||
@ -335,39 +351,39 @@ private:
|
|||||||
int CanShift(int Ca, int Priority, int UsedCards = 0) const;
|
int CanShift(int Ca, int Priority, int UsedCards = 0) const;
|
||||||
protected:
|
protected:
|
||||||
int Priority(void) const;
|
int Priority(void) const;
|
||||||
// Returns the priority of the current receiving session (0..MAXPRIORITY),
|
///< Returns the priority of the current receiving session (0..MAXPRIORITY),
|
||||||
// or -1 if no receiver is currently active. The primary device will
|
///< or -1 if no receiver is currently active. The primary device will
|
||||||
// always return at least Setup.PrimaryLimit-1.
|
///< always return at least Setup.PrimaryLimit-1.
|
||||||
virtual bool OpenDvr(void);
|
virtual bool OpenDvr(void);
|
||||||
// Opens the DVR of this device and prepares it to deliver a Transport
|
///< Opens the DVR of this device and prepares it to deliver a Transport
|
||||||
// Stream for use in a cReceiver.
|
///< Stream for use in a cReceiver.
|
||||||
virtual void CloseDvr(void);
|
virtual void CloseDvr(void);
|
||||||
// Shuts down the DVR.
|
///< Shuts down the DVR.
|
||||||
virtual bool GetTSPacket(uchar *&Data);
|
virtual bool GetTSPacket(uchar *&Data);
|
||||||
// Gets exactly one TS packet from the DVR of this device and returns
|
///< Gets exactly one TS packet from the DVR of this device and returns
|
||||||
// a pointer to it in Data. Only the first 188 bytes (TS_SIZE) Data
|
///< a pointer to it in Data. Only the first 188 bytes (TS_SIZE) Data
|
||||||
// points to are valid and may be accessed. If there is currently no
|
///< points to are valid and may be accessed. If there is currently no
|
||||||
// new data available, Data will be set to NULL. The function returns
|
///< new data available, Data will be set to NULL. The function returns
|
||||||
// false in case of a non recoverable error, otherwise it returns true,
|
///< false in case of a non recoverable error, otherwise it returns true,
|
||||||
// even if Data is NULL.
|
///< even if Data is NULL.
|
||||||
public:
|
public:
|
||||||
int Ca(void) const;
|
int Ca(void) const;
|
||||||
// Returns the ca of the current receiving session(s).
|
///< Returns the ca of the current receiving session(s).
|
||||||
bool Receiving(bool CheckAny = false) const;
|
bool Receiving(bool CheckAny = false) const;
|
||||||
// Returns true if we are currently receiving.
|
///< Returns true if we are currently receiving.
|
||||||
bool AttachReceiver(cReceiver *Receiver);
|
bool AttachReceiver(cReceiver *Receiver);
|
||||||
// Attaches the given receiver to this device.
|
///< Attaches the given receiver to this device.
|
||||||
void Detach(cReceiver *Receiver);
|
void Detach(cReceiver *Receiver);
|
||||||
// Detaches the given receiver from this device.
|
///< Detaches the given receiver from this device.
|
||||||
};
|
};
|
||||||
|
|
||||||
// Derived cDevice classes that can receive channels will have to provide
|
/// Derived cDevice classes that can receive channels will have to provide
|
||||||
// Transport Stream (TS) packets one at a time. cTSBuffer implements a
|
/// Transport Stream (TS) packets one at a time. cTSBuffer implements a
|
||||||
// simple buffer that allows the device to read a larger amount of data
|
/// simple buffer that allows the device to read a larger amount of data
|
||||||
// from the driver with each call to Read(), thus avoiding the overhead
|
/// from the driver with each call to Read(), thus avoiding the overhead
|
||||||
// of getting each TS packet separately from the driver. It also makes
|
/// of getting each TS packet separately from the driver. It also makes
|
||||||
// sure the returned data points to a TS packet and automatically
|
/// sure the returned data points to a TS packet and automatically
|
||||||
// re-synchronizes after broken packet.
|
/// re-synchronizes after broken packet.
|
||||||
|
|
||||||
class cTSBuffer {
|
class cTSBuffer {
|
||||||
private:
|
private:
|
||||||
|
11
dvbdevice.h
11
dvbdevice.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.h 1.19 2002/12/07 14:44:29 kls Exp $
|
* $Id: dvbdevice.h 1.20 2002/12/15 14:45:29 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBDEVICE_H
|
#ifndef __DVBDEVICE_H
|
||||||
@ -24,15 +24,18 @@
|
|||||||
|
|
||||||
class cDvbTuner;
|
class cDvbTuner;
|
||||||
|
|
||||||
|
/// The cDvbDevice implements a DVB device which can be accessed through the Linux DVB driver API.
|
||||||
|
|
||||||
class cDvbDevice : public cDevice {
|
class cDvbDevice : public cDevice {
|
||||||
friend class cDvbOsd;
|
friend class cDvbOsd;
|
||||||
private:
|
private:
|
||||||
static bool Probe(const char *FileName);
|
static bool Probe(const char *FileName);
|
||||||
// Probes for existing DVB devices.
|
///< Probes for existing DVB devices.
|
||||||
public:
|
public:
|
||||||
static bool Initialize(void);
|
static bool Initialize(void);
|
||||||
// Initializes the DVB devices.
|
///< Initializes the DVB devices.
|
||||||
// Must be called before accessing any DVB functions.
|
///< Must be called before accessing any DVB functions.
|
||||||
|
///< \return True if any devices are available.
|
||||||
private:
|
private:
|
||||||
fe_type_t frontendType;
|
fe_type_t frontendType;
|
||||||
int fd_osd, fd_audio, fd_video, fd_dvr;
|
int fd_osd, fd_audio, fd_video, fd_dvr;
|
||||||
|
14
tools.h
14
tools.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: tools.h 1.53 2002/11/30 12:51:45 kls Exp $
|
* $Id: tools.h 1.54 2002/12/15 14:59:53 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TOOLS_H
|
#ifndef __TOOLS_H
|
||||||
@ -59,11 +59,11 @@ char *readline(FILE *f);
|
|||||||
char *strcpyrealloc(char *dest, const char *src);
|
char *strcpyrealloc(char *dest, const char *src);
|
||||||
char *strn0cpy(char *dest, const char *src, size_t n);
|
char *strn0cpy(char *dest, const char *src, size_t n);
|
||||||
char *strreplace(char *s, char c1, char c2);
|
char *strreplace(char *s, char c1, char c2);
|
||||||
char *strreplace(char *s, const char *s1, const char *s2); // re-allocates 's' and deletes the original string if necessary!
|
char *strreplace(char *s, const char *s1, const char *s2); ///< re-allocates 's' and deletes the original string if necessary!
|
||||||
char *skipspace(const char *s);
|
char *skipspace(const char *s);
|
||||||
char *stripspace(char *s);
|
char *stripspace(char *s);
|
||||||
char *compactspace(char *s);
|
char *compactspace(char *s);
|
||||||
const char *strescape(const char *s, const char *chars); // returns a statically allocated string!
|
const char *strescape(const char *s, const char *chars); ///< \warning returns a statically allocated string!
|
||||||
bool startswith(const char *s, const char *p);
|
bool startswith(const char *s, const char *p);
|
||||||
bool endswith(const char *s, const char *p);
|
bool endswith(const char *s, const char *p);
|
||||||
bool isempty(const char *s);
|
bool isempty(const char *s);
|
||||||
@ -71,8 +71,8 @@ int numdigits(int n);
|
|||||||
int time_ms(void);
|
int time_ms(void);
|
||||||
void delay_ms(int ms);
|
void delay_ms(int ms);
|
||||||
bool isnumber(const char *s);
|
bool isnumber(const char *s);
|
||||||
const char *itoa(int n); // returns a statically allocated string!
|
const char *itoa(int n); ///< \warning returns a statically allocated string!
|
||||||
const char *AddDirectory(const char *DirName, const char *FileName); // returns a statically allocated string!
|
const char *AddDirectory(const char *DirName, const char *FileName); ///< \warning returns a statically allocated string!
|
||||||
int FreeDiskSpaceMB(const char *Directory, int *UsedMB = NULL);
|
int FreeDiskSpaceMB(const char *Directory, int *UsedMB = NULL);
|
||||||
bool DirectoryOk(const char *DirName, bool LogErrors = false);
|
bool DirectoryOk(const char *DirName, bool LogErrors = false);
|
||||||
bool MakeDirs(const char *FileName, bool IsDirectory = false);
|
bool MakeDirs(const char *FileName, bool IsDirectory = false);
|
||||||
@ -80,8 +80,8 @@ bool RemoveFileOrDir(const char *FileName, bool FollowSymlinks = false);
|
|||||||
bool RemoveEmptyDirectories(const char *DirName, bool RemoveThis = false);
|
bool RemoveEmptyDirectories(const char *DirName, bool RemoveThis = false);
|
||||||
char *ReadLink(const char *FileName);
|
char *ReadLink(const char *FileName);
|
||||||
bool SpinUpDisk(const char *FileName);
|
bool SpinUpDisk(const char *FileName);
|
||||||
const char *WeekDayName(int WeekDay); // returns a statically allocated string!
|
const char *WeekDayName(int WeekDay); ///< \warning returns a statically allocated string!
|
||||||
const char *DayDateTime(time_t t = 0); // returns a statically allocated string!
|
const char *DayDateTime(time_t t = 0); ///< \warning returns a statically allocated string!
|
||||||
|
|
||||||
class cPoller {
|
class cPoller {
|
||||||
private:
|
private:
|
||||||
|
Loading…
Reference in New Issue
Block a user