aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/Doxyfile221
-rw-r--r--src/qmmp/CMakeLists.txt3
-rw-r--r--src/qmmp/abstractengine.h13
-rw-r--r--src/qmmp/audioconverter.h2
-rw-r--r--src/qmmp/audioparameters.h42
-rw-r--r--src/qmmp/decoder.h27
-rw-r--r--src/qmmp/effect.h10
-rw-r--r--src/qmmp/effectfactory.h2
-rw-r--r--src/qmmp/emptyinputsource.h2
-rw-r--r--src/qmmp/fileinputsource.h2
-rw-r--r--src/qmmp/inputsource.h40
-rw-r--r--src/qmmp/metadatamanager.h13
-rw-r--r--src/qmmp/metadatamodel.h29
-rw-r--r--src/qmmp/output.h4
-rw-r--r--src/qmmp/qmmp.h11
-rw-r--r--src/qmmp/qmmp.pro38
-rw-r--r--src/qmmp/qmmpaudioengine.h3
-rw-r--r--src/qmmp/qmmpsettings.h80
-rw-r--r--src/qmmp/replaygain.h2
-rw-r--r--src/qmmp/statehandler.h4
-rw-r--r--src/qmmp/tagmodel.h53
21 files changed, 478 insertions, 123 deletions
diff --git a/doc/Doxyfile b/doc/Doxyfile
index cbc98c44c..1311f3ca8 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -1,4 +1,4 @@
-# Doxyfile 1.5.6
+# Doxyfile 1.5.9
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project
@@ -54,11 +54,11 @@ CREATE_SUBDIRS = NO
# information to generate all constant output in the proper language.
# The default language is English, other supported languages are:
# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
-# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
-# Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish,
-# and Ukrainian.
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
OUTPUT_LANGUAGE = English
@@ -155,13 +155,6 @@ QT_AUTOBRIEF = NO
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.
@@ -214,6 +207,17 @@ OPTIMIZE_FOR_FORTRAN = NO
OPTIMIZE_OUTPUT_VHDL = NO
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should
# set this tag to YES in order to let doxygen match functions declarations and
@@ -223,7 +227,7 @@ OPTIMIZE_OUTPUT_VHDL = NO
BUILTIN_STL_SUPPORT = NO
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
CPP_CLI_SUPPORT = NO
@@ -268,6 +272,22 @@ SUBGROUPING = YES
TYPEDEF_HIDES_STRUCT = NO
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@@ -395,7 +415,7 @@ SORT_GROUP_NAMES = NO
# 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 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.
@@ -452,14 +472,15 @@ SHOW_USED_FILES = YES
SHOW_DIRECTORIES = NO
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
# This will remove the Files entry from the Quick Index and from the
# Folder Tree View (if specified). The default is YES.
SHOW_FILES = YES
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page. This will remove the Namespaces entry from the Quick Index
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
# and from the Folder Tree View (if specified). The default is YES.
SHOW_NAMESPACES = YES
@@ -474,6 +495,15 @@ SHOW_NAMESPACES = YES
FILE_VERSION_FILTER =
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE =
+
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
@@ -534,8 +564,8 @@ WARN_LOGFILE =
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT =../src/qmmp \
- ../src/qmmpui
+INPUT = ../src/qmmp \
+ ../src/qmmpui
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -619,14 +649,17 @@ IMAGE_PATH =
# 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. If FILTER_PATTERNS is specified, this tag will be
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
# ignored.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form:
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
@@ -673,10 +706,11 @@ REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code. Otherwise they will link to the documentstion.
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
REFERENCES_LINK_SOURCE = YES
@@ -765,12 +799,13 @@ HTML_STYLESHEET =
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 compiled HTML help file (.chm)
-# of the generated HTML documentation.
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-GENERATE_HTMLHELP = NO
+HTML_DYNAMIC_SECTIONS = NO
# If the GENERATE_DOCSET tag is set to YES, additional index files
# will be generated that can be used as input for Apple's Xcode 3
@@ -779,7 +814,8 @@ GENERATE_HTMLHELP = NO
# HTML output directory. Running make will produce the docset in that
# directory and running "make install" will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
GENERATE_DOCSET = NO
@@ -797,13 +833,12 @@ DOCSET_FEEDNAME = "Doxygen generated docs"
DOCSET_BUNDLE_ID = org.doxygen.Project
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+# 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 compiled HTML help file (.chm)
+# of the generated HTML documentation.
-HTML_DYNAMIC_SECTIONS = NO
+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
@@ -825,8 +860,8 @@ HHC_LOCATION =
GENERATE_CHI = NO
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
# content.
CHM_INDEX_ENCODING =
@@ -842,6 +877,55 @@ BINARY_TOC = NO
TOC_EXPAND = NO
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
# 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.
@@ -853,19 +937,19 @@ DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to FRAME, a side panel will be generated
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, 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. Other possible values
-# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
-# and Class Hiererachy pages using a tree view instead of an ordered list;
-# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
-# disables this behavior completely. For backwards compatibility with previous
-# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
# respectively.
GENERATE_TREEVIEW = NONE
@@ -960,6 +1044,10 @@ LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
+# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
+
+LATEX_SOURCE_CODE = NO
+
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
@@ -1096,8 +1184,10 @@ GENERATE_PERLMOD = NO
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
+# 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.
@@ -1184,14 +1274,16 @@ SKIP_FUNCTION_MACROS = YES
# 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 ...
+#
+# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
+#
+# 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)
+# 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.
@@ -1265,6 +1357,11 @@ HAVE_DOT = NO
DOT_FONTNAME = FreeSans
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
# By default doxygen will tell dot to use the output directory to look for the
# FreeSans.ttf font (which doxygen will put there itself). If you specify a
# different font using DOT_FONTNAME you can set the path where dot
@@ -1339,13 +1436,13 @@ GRAPHICAL_HIERARCHY = YES
# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
+# in a graphical way. The dependency relations are determined by the #include
# relations between the files in the directories.
DIRECTORY_GRAPH = 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
+# generated by dot. Possible values are png, jpg, or gif
# If left blank png will be used.
DOT_IMAGE_FORMAT = png
@@ -1382,10 +1479,10 @@ DOT_GRAPH_MAX_NODES = 50
MAX_DOT_GRAPH_DEPTH = 0
# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is enabled by default, which results in a transparent
-# background. Warning: Depending on the platform used, enabling this option
-# may lead to badly anti-aliased labels on the edges of a graph (i.e. they
-# become hard to read).
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
DOT_TRANSPARENT = YES
@@ -1409,7 +1506,7 @@ GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine
+# Options related to the search engine
#---------------------------------------------------------------------------
# The SEARCHENGINE tag specifies whether or not a search engine should be
diff --git a/src/qmmp/CMakeLists.txt b/src/qmmp/CMakeLists.txt
index f9c6e5fd9..bada92b84 100644
--- a/src/qmmp/CMakeLists.txt
+++ b/src/qmmp/CMakeLists.txt
@@ -93,12 +93,12 @@ SET(libqmmp_MOC_HDRS
SET(libqmmp_DEVEL_HDRS
visual.h
+ recycler.h
buffer.h
decoder.h
output.h
fileinfo.h
outputfactory.h
- decoderfactory.h
soundcore.h
effectfactory.h
effect.h
@@ -107,7 +107,6 @@ SET(libqmmp_DEVEL_HDRS
volumecontrol.h
metadatamodel.h
tagmodel.h
- qmmpaudioengine.h
abstractengine.h
audioparameters.h
inputsource.h
diff --git a/src/qmmp/abstractengine.h b/src/qmmp/abstractengine.h
index b8dc453c3..f9fa32179 100644
--- a/src/qmmp/abstractengine.h
+++ b/src/qmmp/abstractengine.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -32,15 +32,18 @@ class QIODevice;
class InputSource;
-/*!
+/*! @brief The AbstractEngine class provides the base interface class of audio audio engines.
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
class AbstractEngine : public QThread
{
Q_OBJECT
public:
+ /*!
+ * Object contsructor.
+ * @param parent Parent object.
+ */
AbstractEngine(QObject *parent = 0);
-
/*!
* Prepares decoder for usage.
* Subclass should reimplement this function.
@@ -78,12 +81,12 @@ public:
QWaitCondition *cond();
/*!
* Sets equalizer settings. Each item of \p bands[] and \p reamp should be \b -20.0..20.0
- * Subclass with own equalizer should reimplement this function.
+ * Subclass should reimplement this function.
*/
virtual void setEQ(double bands[10], double preamp) = 0;
/*!
* Enables equalizer if \p on is \b true or disables it if \p on is \b false
- * Subclass with own equalizer should reimplement this function.
+ * Subclass should reimplement this function.
*/
virtual void setEQEnabled(bool on) = 0;
/*!
diff --git a/src/qmmp/audioconverter.h b/src/qmmp/audioconverter.h
index 010c84e71..5fdaa1caa 100644
--- a/src/qmmp/audioconverter.h
+++ b/src/qmmp/audioconverter.h
@@ -23,7 +23,7 @@
#include "effect.h"
-/*!
+/*! @internal
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
class AudioConverter : public Effect
diff --git a/src/qmmp/audioparameters.h b/src/qmmp/audioparameters.h
index 2a99305eb..a8d893a12 100644
--- a/src/qmmp/audioparameters.h
+++ b/src/qmmp/audioparameters.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -24,24 +24,58 @@
#include <QtGlobal>
#include "qmmp.h"
-/*!
+/*! @brief The AudioParameters class keeps information about audio settings.
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
class AudioParameters
{
public:
+ /*!
+ * Contsructor.
+ */
AudioParameters();
+ /*!
+ * Constructs audio settings with the given parameters.
+ * @param srate Sampling rate.
+ * @param chan Number of channels.
+ * @param format PCM data format.
+ */
AudioParameters(quint32 srate, int chan, Qmmp::AudioFormat format);
+ /*!
+ * Constructs a copy of \b other.
+ */
AudioParameters(const AudioParameters &other);
-
+ /*!
+ * Assigns audio parameters \b p to this parameters.
+ */
void operator=(const AudioParameters &p);
+ /*!
+ * Returns \b true if parameters \b p is equal to this parameters; otherwise returns \b false.
+ */
bool operator==(const AudioParameters &p) const;
+ /*!
+ * Returns \b true if parameters \b p is not equal to this parameters; otherwise returns \b false.
+ */
bool operator!=(const AudioParameters &p) const;
-
+ /*!
+ * Returns sample rate in Hz.
+ */
quint32 sampleRate() const;
+ /*!
+ * Returns number of channels.
+ */
int channels() const;
+ /*!
+ * Returns pcm format.
+ */
Qmmp::AudioFormat format() const;
+ /*!
+ * Returns sample size in bytes.
+ */
int sampleSize() const;
+ /*!
+ * Returns sample size in bytes of the given pcm data \b format.
+ */
static int sampleSize(Qmmp::AudioFormat format);
private:
diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h
index 867c2f830..fad61295b 100644
--- a/src/qmmp/decoder.h
+++ b/src/qmmp/decoder.h
@@ -29,7 +29,8 @@ class Decoder
{
public:
/*!
- *
+ * Object contsructor.
+ * @param input QIODevice-based input source.
*/
Decoder(QIODevice *input = 0);
/*!
@@ -61,12 +62,34 @@ public:
* Subclass should reimplement this function.
*/
virtual int bitrate() = 0;
+ /*!
+ * Tells decoder that it should play next track.
+ * By default this function does nothing.
+ * Reimplemet it if your decoder can play next track without stop/start cycle.
+ * This may be useful for multitrack formats like cue or cda.
+ */
virtual void next();
+ /*!
+ * Returns url which decoder can play without stop/start cycle.
+ * By default this function does nothing.
+ * Reimplemet it if your decoder can play next track without stop/start cycle.
+ */
virtual const QString nextURL();
-
+ /*!
+ * Returns detected audio parameters.
+ */
AudioParameters audioParameters() const;
+ /*!
+ * Returns ReplayGain information.
+ */
QMap<Qmmp::ReplayGainKey, double> replayGainInfo() const;
+ /*!
+ * Sets ReplayGain information. Use this function before playback.
+ */
void setReplayGainInfo(const QMap<Qmmp::ReplayGainKey,double> &rg);
+ /*!
+ * Returns QIODevice-based input source assigned for this decoder.
+ */
QIODevice *input();
/*!
* Returns DecoderFactory pointer which supports file \b path or 0 if file \b path is unsupported
diff --git a/src/qmmp/effect.h b/src/qmmp/effect.h
index 71cd7b63f..eacee0ca9 100644
--- a/src/qmmp/effect.h
+++ b/src/qmmp/effect.h
@@ -49,7 +49,7 @@ public:
/*!
* Prepares object for usage.
* Subclasses that reimplement this function must call the base implementation.
- * @param freq Sample rate.
+ * @param srate Sample rate.
* @param chan Number of channels.
* @param f Audio format.
*/
@@ -66,10 +66,14 @@ public:
* Returns audio format.
*/
Qmmp::AudioFormat format();
-
+ /*!
+ * Returns audio parameters for output data.
+ */
const AudioParameters audioParameters() const;
+ /*!
+ * Returns assigned factory object.
+ */
EffectFactory* factory() const;
-
/*!
* Creates a list of enabled effects.
*/
diff --git a/src/qmmp/effectfactory.h b/src/qmmp/effectfactory.h
index c5cd35e6c..3ab46d4cd 100644
--- a/src/qmmp/effectfactory.h
+++ b/src/qmmp/effectfactory.h
@@ -27,7 +27,7 @@ class QWidget;
class QTranslator;
class Effect;
-/*! @brief Helper class to store effect plugin properies.
+/*! @brief Helper class to store effect plugin properties.
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
class EffectProperties
diff --git a/src/qmmp/emptyinputsource.h b/src/qmmp/emptyinputsource.h
index c2c30db7f..09798791b 100644
--- a/src/qmmp/emptyinputsource.h
+++ b/src/qmmp/emptyinputsource.h
@@ -23,7 +23,7 @@
#include "inputsource.h"
-/**
+/*! @internal
@author Ilya Kotov <forkotov02@hotmail.ru>
*/
class EmptyInputSource : public InputSource
diff --git a/src/qmmp/fileinputsource.h b/src/qmmp/fileinputsource.h
index 5efe2a2b2..084a412ab 100644
--- a/src/qmmp/fileinputsource.h
+++ b/src/qmmp/fileinputsource.h
@@ -25,7 +25,7 @@
class QFile;
-/**
+/** @internal
@author Ilya Kotov <forkotov02@hotmail.ru>
*/
class FileInputSource : public InputSource
diff --git a/src/qmmp/inputsource.h b/src/qmmp/inputsource.h
index 06a33b55b..9c708dbab 100644
--- a/src/qmmp/inputsource.h
+++ b/src/qmmp/inputsource.h
@@ -27,21 +27,51 @@
#include <QIODevice>
#include "inputsourcefactory.h"
-/*!
+/*! @brief The InputSource class provides the base interface class of transports.
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
class InputSource : public QObject
{
Q_OBJECT
public:
+ /*!
+ * Object contsructor.
+ * @param url Input source path or url.
+ * @param parent Parent object.
+ */
InputSource(const QString &url, QObject *parent = 0);
+ /*!
+ * Returns QIODevice-based object for I/O operations.
+ * Subclass shoud reimplement this function.
+ */
virtual QIODevice *ioDevice() = 0;
+ /*!
+ * Prepares input data source for usage.
+ * Subclass shoud reimplement this function.
+ */
virtual bool initialize() = 0;
+ /*!
+ * Returns \b true if transport is ready for usage; otherwise returns \b false.
+ */
virtual bool isReady() = 0;
+ /*!
+ * Returns input source path or url.
+ */
const QString url() const;
+ /*!
+ * Returns start position is ms;
+ */
qint64 offset() const;
+ /*!
+ * Sets start position to \b offset ms.
+ */
void setOffset(qint64 offset);
-
+ /*!
+ * Creates InputSource object.
+ * @param url Input source path or url.
+ * @param parent Parent object.
+ * Returns \b 0 if the given url is not supported.
+ */
static InputSource *create(const QString &url, QObject *parent = 0);
/*!
* Returns a list of transport factories.
@@ -53,7 +83,11 @@ public:
static QStringList files();
signals:
- void ready(InputSource *);
+ /*!
+ * This signal is emitted when transport is ready for usage.
+ * @param s Pointer of this object.
+ */
+ void ready(InputSource *s);
private:
QString m_url;
diff --git a/src/qmmp/metadatamanager.h b/src/qmmp/metadatamanager.h
index 8c5e288e7..5e40894be 100644
--- a/src/qmmp/metadatamanager.h
+++ b/src/qmmp/metadatamanager.h
@@ -32,13 +32,20 @@ class DecoderFactory;
class EngineFactory;
class InputSourceFactory;
class QmmpSettings;
-/*!
+
+/*! @brief The MetaDataManager class is the base class for metadata access.
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
class MetaDataManager
{
public:
+ /*!
+ * Constructor. Use MetaDataManager::instance() instead.
+ */
MetaDataManager();
+ /*!
+ * Destructor. Use MetaDataManager::destroy() instead.
+ */
~MetaDataManager();
/*!
* Extracts metadata and audio information from file \b path and returns a list of FileInfo items.
@@ -89,7 +96,11 @@ public:
* Returns a pointer to the MetaDataManager instance.
*/
static MetaDataManager* instance();
+ /*!
+ * Destroys MetaDataManager object.
+ */
static void destroy();
+
private:
QFileInfoList findCoverFiles(QDir dir, int depth) const;
QList <DecoderFactory *> *m_decoderFactories;
diff --git a/src/qmmp/metadatamodel.h b/src/qmmp/metadatamodel.h
index d787fe5e1..f95797b8e 100644
--- a/src/qmmp/metadatamodel.h
+++ b/src/qmmp/metadatamodel.h
@@ -28,16 +28,45 @@
#include <QPixmap>
#include "tagmodel.h"
+/*! @brief The MetaDataModel is the base interface class of metadata access.
+ * @author Ilya Kotov <forkotov02@hotmail.ru>
+ */
class MetaDataModel : public QObject
{
Q_OBJECT
public:
+ /*!
+ * Constructor.
+ * @param parent Parent Object.
+ */
MetaDataModel(QObject *parent = 0);
+ /*!
+ * Destructor.
+ */
virtual ~MetaDataModel();
+ /*!
+ * Returns an associative array of the audio properties.
+ * Subclass should reimplement this function. Default implementation returns empty array.
+ */
virtual QHash<QString, QString> audioProperties();
+ /*!
+ * Returns an associative array of the long descriptions.
+ * Subclass should reimplement this function. Default implementation returns empty array.
+ */
virtual QHash<QString, QString> descriptions();
+ /*!
+ * Returns a list of available tags.
+ * Subclass should reimplement this function. Default implementation returns empty array.
+ */
virtual QList<TagModel* > tags();
+ /*!
+ * Returns cover pixmap.
+ * Subclass should reimplement this function. Default implementation returns empty pixmap.
+ */
virtual QPixmap cover();
+ /*!
+ * Returns path to cover pixmap.
+ */
virtual QString coverPath();
};
diff --git a/src/qmmp/output.h b/src/qmmp/output.h
index 82e1b343e..f2c729721 100644
--- a/src/qmmp/output.h
+++ b/src/qmmp/output.h
@@ -104,7 +104,9 @@ public:
* Returns selected audio format.
*/
Qmmp::AudioFormat format() const;
-
+ /*!
+ * Returns sample size in bytes.
+ */
int sampleSize() const;
/*!
* Creates selected output.
diff --git a/src/qmmp/qmmp.h b/src/qmmp/qmmp.h
index 2f30d0c6d..ebc7d226f 100644
--- a/src/qmmp/qmmp.h
+++ b/src/qmmp/qmmp.h
@@ -56,12 +56,15 @@ public:
DISCNUMBER,/*!< Disc number */
URL /*!< Stream url or local file path */
};
+ /*!
+ * Keys of ReplayGain information
+ */
enum ReplayGainKey
{
- REPLAYGAIN_TRACK_GAIN = 0,
- REPLAYGAIN_TRACK_PEAK,
- REPLAYGAIN_ALBUM_GAIN,
- REPLAYGAIN_ALBUM_PEAK
+ REPLAYGAIN_TRACK_GAIN = 0, /*!< track gain */
+ REPLAYGAIN_TRACK_PEAK, /*!< track peak */
+ REPLAYGAIN_ALBUM_GAIN, /*!< album gain */
+ REPLAYGAIN_ALBUM_PEAK /*!< album peak */
};
/*!
* Audio formats
diff --git a/src/qmmp/qmmp.pro b/src/qmmp/qmmp.pro
index 316a969c2..018ddd00e 100644
--- a/src/qmmp/qmmp.pro
+++ b/src/qmmp/qmmp.pro
@@ -78,21 +78,29 @@ contains(CONFIG, SVN_VERSION) {
unix {
target.path = $$LIB_DIR
devel.files += buffer.h \
- decoderfactory.h \
- decoder.h \
- effectfactory.h \
- effect.h \
- fileinfo.h \
- outputfactory.h \
- output.h \
- qmmp.h \
- recycler.h \
- soundcore.h \
- statehandler.h \
- visualfactory.h \
- visual.h \
- volumecontrol.h \
- abstractdetailsdialog.h
+ buffer.h \
+ decoder.h \
+ output.h \
+ outputfactory.h \
+ decoderfactory.h \
+ soundcore.h \
+ visual.h \
+ visualfactory.h \
+ effect.h \
+ effectfactory.h \
+ statehandler.h \
+ qmmp.h \
+ fileinfo.h \
+ volumecontrol.h \
+ metadatamodel.h \
+ tagmodel.h \
+ abstractengine.h \
+ audioparameters.h \
+ inputsource.h \
+ inputsourcefactory.h \
+ enginefactory.h \
+ metadatamanager.h \
+ qmmpsettings.h
devel.path = /include/qmmp
INSTALLS += target \
devel
diff --git a/src/qmmp/qmmpaudioengine.h b/src/qmmp/qmmpaudioengine.h
index 47b5cca01..4b57c4149 100644
--- a/src/qmmp/qmmpaudioengine.h
+++ b/src/qmmp/qmmpaudioengine.h
@@ -37,6 +37,9 @@ class EffectFactory;
class ReplayGain;
class QmmpSettings;
+/*! @internal
+ * @author Ilya Kotov <forkotov02@hotmail.ru>
+ */
class QmmpAudioEngine : public AbstractEngine
{
Q_OBJECT
diff --git a/src/qmmp/qmmpsettings.h b/src/qmmp/qmmpsettings.h
index 35b87d959..0776a33f0 100644
--- a/src/qmmp/qmmpsettings.h
+++ b/src/qmmp/qmmpsettings.h
@@ -25,31 +25,69 @@
#include <QUrl>
#include <QStringList>
-/*!
+/*! @brief The QmmpSettings class provides access to global settings.
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
class QmmpSettings : public QObject
{
Q_OBJECT
public:
+ /*!
+ * Constructor.
+ * @param parent Parent object.
+ * This functions is for internal usage only, use QmmpSettings::instance() instead.
+ */
QmmpSettings(QObject *parent = 0);
+ /*!
+ * Destructor.
+ */
~QmmpSettings();
-
+ /*!
+ * This enum describes possible replaygain modes.
+ */
enum ReplayGainMode
{
- REPLAYGAIN_TRACK = 0,
- REPLAYGAIN_ALBUM,
- REPLAYGAIN_DISABLED
+ REPLAYGAIN_TRACK = 0, /*!< Use track gain/peak */
+ REPLAYGAIN_ALBUM, /*!< Use album gain/peak */
+ REPLAYGAIN_DISABLED /*!< Disable ReplayGain */
};
-
+ /*!
+ * Returns current ReplayGain mode.
+ */
QmmpSettings::ReplayGainMode replayGainMode() const;
+ /*!
+ * Returns preamp in dB.
+ */
double replayGainPreamp() const;
+ /*!
+ * Returns default gain in dB.
+ */
double replayGainDefaultGain() const;
+ /*!
+ * Returns \b true if clipping prevention is enabled; otherwise returns \b false.
+ */
bool replayGainPreventClipping() const;
+ /*!
+ * Sets ReplayGains settings.
+ * @param mode ReplayGain mode.
+ * @param preamp Preamp in dB.
+ * @param default_gain Default gain in dB.
+ * @param clip Clipping prevention state.
+ */
void setReplayGainSettings(ReplayGainMode mode, double preamp, double default_gain, bool clip);
-
+ /*!
+ * Returns \b true if software volume is enabled; otherwise returns \b false.
+ */
bool useSoftVolume() const;
+ /*!
+ * Returns \b true if 16-bit converter is enabled; otherwise returns \b false.
+ */
bool use16BitOutput() const;
+ /*!
+ * Sets audio settings.
+ * @param soft_volume State of software volume.
+ * @param use_16bit State of the 16-bit audio converter.
+ */
void setAudioSettings(bool soft_volume, bool use_16bit);
/*!
* If \b include is \b true, this function returns include cover file name filters,
@@ -60,6 +98,9 @@ public:
* Returns a depth of recursive cover file search.
*/
int coverSearchDepth() const;
+ /*!
+ * Returns \b true if cover file search is enabled; otherwise returns \b false.
+ */
bool useCoverFiles() const;
/*!
* Sets cover search options.
@@ -67,6 +108,8 @@ public:
* @param exc Exclude cover name filters
* @param depth Depth of recursive cover file search.
* Recursive cover file search can be disabled by setting \b depth to \b 0.
+ * @param use_files Use or not use files with covers.
+ * This parameter doesn't take effect in embedded covers.
*/
void setCoverSettings(QStringList inc, QStringList exc, int depth, bool use_files);
/*!
@@ -81,15 +124,34 @@ public:
* Returns global proxy url.
*/
QUrl proxy() const;
+ /*!
+ * Sets network settings.
+ * @param use_proxy Enables or disables global proxy.
+ * @param auth Enables or disables proxy authentication.
+ * @param proxy Proxy url.
+ */
void setNetworkSettings(bool use_proxy, bool auth, const QUrl &proxy);
-
-
+ /*!
+ * Returns a pointer to the QmmpSettings instance.
+ */
static QmmpSettings* instance();
signals:
+ /*!
+ * Emitted when ReplayGain settings are changed.
+ */
void replayGainSettingsChanged();
+ /*!
+ * Emitted when audio settings are changed.
+ */
void audioSettingsChanged();
+ /*!
+ * Emitted when cover settings are changed.
+ */
void coverSettingsChanged();
+ /*!
+ * Emitted when network settings are changed.
+ */
void networkSettingsChanged();
private slots:
diff --git a/src/qmmp/replaygain.h b/src/qmmp/replaygain.h
index 56bc0c7a3..50b3a373a 100644
--- a/src/qmmp/replaygain.h
+++ b/src/qmmp/replaygain.h
@@ -26,7 +26,7 @@
#include "qmmpsettings.h"
#include "qmmp.h"
-/*!
+/*! @internal
* @author Ilya Kotov <forkotov02@hotmail.ru>
*/
class ReplayGain
diff --git a/src/qmmp/statehandler.h b/src/qmmp/statehandler.h
index 3bcb089f4..cffa9a3ec 100644
--- a/src/qmmp/statehandler.h
+++ b/src/qmmp/statehandler.h
@@ -65,7 +65,7 @@ public:
virtual void dispatch(Qmmp::State state);
/*!
* Sends buffering progress.
- * @param \b percent Indicates the current percentage of buffering completed.
+ * @param percent Indicates the current percentage of buffering completed.
*/
virtual void dispatchBuffer(int percent);
/*!
@@ -144,7 +144,7 @@ signals:
*/
void finished();
/*!
- *
+ * Emitted before the playback ends.
*/
void aboutToFinish();
/*!
diff --git a/src/qmmp/tagmodel.h b/src/qmmp/tagmodel.h
index 582db9bad..c3e2fbf18 100644
--- a/src/qmmp/tagmodel.h
+++ b/src/qmmp/tagmodel.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
+ * Copyright (C) 2009-2010 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -25,26 +25,69 @@
#include <QList>
#include "qmmp.h"
+/*! @brief The StateHandler class provides is the base interface class of tag editor.
+ * @author Ilya Kotov <forkotov02@hotmail.ru>
+ */
class TagModel
{
public:
+ /*!
+ * This enum describes tag editor capabilities
+ */
enum Caps
{
- NoOptions = 0x0,
- CreateRemove = 0x1,
- Save = 0x2,
+ NoOptions = 0x0, /*!< No capabilities */
+ CreateRemove = 0x1, /*!< Can create/remove tag */
+ Save = 0x2, /*!< Can save changes */
};
+ /*!
+ * Constructor.
+ * @param f Capabilities.
+ */
TagModel(int f = TagModel::CreateRemove | TagModel::Save);
-
+ /*!
+ * Returns tag name.
+ * Subclass should reimplement this fucntion.
+ */
virtual const QString name() = 0;
+ /*!
+ * Returns available keys. Default implementations returns all possible keys.
+ */
virtual QList<Qmmp::MetaData> keys();
+ /*!
+ * Returns the metdata string associated with the given \b key.
+ * Subclass should reimplement this fucntion.
+ */
virtual const QString value(Qmmp::MetaData key) = 0;
+ /*!
+ * Changes metadata string associated with the given \b key to \b value.
+ * Subclass should reimplement this fucntion.
+ */
virtual void setValue(Qmmp::MetaData key, const QString &value) = 0;
+ /*!
+ * Changes metadata string associated with the given \b key to \b value.
+ * Subclass should reimplement this fucntion.
+ */
virtual void setValue(Qmmp::MetaData key, int value);
+ /*!
+ * Returns \b true if this tag exists; otherwise returns \b false.
+ */
virtual bool exists();
+ /*!
+ * Creates tag.
+ */
virtual void create();
+ /*!
+ * Removes tag.
+ */
virtual void remove();
+ /*!
+ * Saves tag.
+ */
virtual void save();
+ /*!
+ * Returns capability flags.
+ */
int caps();
private: