|
kwave
18.07.70
|
#include <MP3Decoder.h>


Public Member Functions | |
| MP3Decoder () | |
| virtual | ~MP3Decoder () |
| virtual Kwave::Decoder * | instance () |
| virtual bool | open (QWidget *widget, QIODevice &source) |
| virtual bool | decode (QWidget *widget, Kwave::MultiWriter &dst) |
| virtual void | close () |
| enum mad_flow | fillInput (struct mad_stream *stream) |
| enum mad_flow | processOutput (void *data, struct mad_header const *header, struct mad_pcm *pcm) |
| enum mad_flow | handleError (void *data, struct mad_stream *stream, struct mad_frame *frame) |
Public Member Functions inherited from Kwave::Decoder | |
| Decoder () | |
| virtual | ~Decoder () |
| virtual Kwave::MetaDataList & | metaData () |
Public Member Functions inherited from Kwave::CodecBase | |
| CodecBase () | |
| virtual | ~CodecBase () |
| virtual bool | supports (const QMimeType &mimetype) |
| virtual bool | supports (const QString &mimetype_name) |
| virtual QStringList | extensions (const QString &mimetype_name) const |
| virtual const QList< CodecBase::MimeType > | mimeTypes () |
| virtual const QList< Kwave::Compression::Type > | compressionTypes () |
| virtual void | addMimeType (const char *name, const QString &description, const char *patterns) |
| virtual void | addCompression (Kwave::Compression::Type compression) |
| virtual QString | mimeTypeOf (const QUrl &url) |
Private Member Functions | |
| bool | parseMp3Header (const Mp3_Headerinfo &header, QWidget *widget) |
| bool | parseID3Tags (ID3_Tag &tag) |
| QString | parseId3Frame2String (const ID3_Frame *frame) |
Private Attributes | |
| ID3_PropertyMap | m_property_map |
| QIODevice * | m_source |
| Kwave::MultiWriter * | m_dest |
| unsigned char * | m_buffer |
| int | m_buffer_size |
| size_t | m_prepended_bytes |
| size_t | m_appended_bytes |
| unsigned int | m_failures |
| QWidget * | m_parent_widget |
Additional Inherited Members | |
Signals inherited from Kwave::Decoder | |
| void | sourceProcessed (quint64 pos) |
Protected Attributes inherited from Kwave::Decoder | |
| Kwave::MetaDataList | m_meta_data |
Definition at line 40 of file MP3Decoder.h.
| Kwave::MP3Decoder::MP3Decoder | ( | ) |
Constructor
Definition at line 48 of file MP3Decoder.cpp.
References REGISTER_COMPRESSION_TYPES, and REGISTER_MIME_TYPES.
Referenced by instance().

|
virtual |
Destructor
Definition at line 65 of file MP3Decoder.cpp.
References close(), m_buffer, and m_source.

|
virtual |
Closes the source.
Implements Kwave::Decoder.
Definition at line 733 of file MP3Decoder.cpp.
References m_source.
Referenced by ~MP3Decoder().

|
virtual |
Decodes a stream of bytes into a MultiWriter
| widget | a widget that can be used for displaying message boxes or dialogs |
| dst | MultiWriter that receives the audio data |
Implements Kwave::Decoder.
Definition at line 702 of file MP3Decoder.cpp.
References _error_adapter(), _input_adapter(), _output_adapter(), m_dest, m_failures, m_parent_widget, m_prepended_bytes, and m_source.

| enum mad_flow Kwave::MP3Decoder::fillInput | ( | struct mad_stream * | stream | ) |
Callback for filling libmad's input buffer
Definition at line 566 of file MP3Decoder.cpp.
References Kwave::MultiWriter::isCanceled(), m_appended_bytes, m_buffer, m_buffer_size, m_dest, m_source, and Kwave::toUint().
Referenced by _input_adapter().


| enum mad_flow Kwave::MP3Decoder::handleError | ( | void * | data, |
| struct mad_stream * | stream, | ||
| struct mad_frame * | frame | ||
| ) |
Callback for handling stream errors
Definition at line 503 of file MP3Decoder.cpp.
References _, m_buffer, m_failures, m_parent_widget, Kwave::MessageBox::warningContinueCancel(), and Kwave::MessageBox::warningYesNo().
Referenced by _error_adapter().


|
virtual |
Returns a new instance of the decoder
Implements Kwave::Decoder.
Definition at line 72 of file MP3Decoder.cpp.
References MP3Decoder().

|
virtual |
Opens the source and decodes the header information.
| widget | a widget that can be used for displaying message boxes or dialogs |
| source | file or other source with a stream of bytes |
Implements Kwave::Decoder.
Definition at line 411 of file MP3Decoder.cpp.
References _, Kwave::INF_MIMETYPE, m_appended_bytes, m_buffer, m_buffer_size, m_prepended_bytes, m_source, Kwave::Decoder::metaData(), parseID3Tags(), parseMp3Header(), Kwave::MetaDataList::replace(), Kwave::FileInfo::set(), Kwave::MessageBox::sorry(), and Kwave::toUint().

|
private |
parse a ID3 frame into a string
| frame | a ID3 frame |
Definition at line 399 of file MP3Decoder.cpp.
References _.
Referenced by parseID3Tags().

|
private |
parse all known ID3 tags
Definition at line 211 of file MP3Decoder.cpp.
References _, Kwave::FileInfo::contains(), DBG, Kwave::ID3_PropertyMap::ENC_COMMENT, Kwave::ID3_PropertyMap::ENC_GENRE_TYPE, Kwave::ID3_PropertyMap::ENC_LENGTH, Kwave::ID3_PropertyMap::ENC_NONE, Kwave::ID3_PropertyMap::ENC_TERMS_OF_USE, Kwave::ID3_PropertyMap::ENC_TEXT, Kwave::ID3_PropertyMap::ENC_TEXT_PARTINSET, Kwave::ID3_PropertyMap::ENC_TEXT_SLASH, Kwave::ID3_PropertyMap::ENC_TEXT_TIMESTAMP, Kwave::ID3_PropertyMap::ENC_TEXT_URL, Kwave::ID3_PropertyMap::ENC_TRACK_NUM, Kwave::ID3_PropertyMap::encoding(), Kwave::GenreType::fromID3(), Kwave::FileInfo::get(), Kwave::INF_CD, Kwave::INF_CDS, Kwave::INF_CREATION_DATE, Kwave::INF_TRACK, Kwave::INF_TRACKS, m_property_map, Kwave::Decoder::metaData(), Kwave::GenreType::name(), parseId3Frame2String(), Kwave::ID3_PropertyMap::property(), Kwave::FileInfo::rate(), Kwave::MetaDataList::replace(), Kwave::FileInfo::set(), Kwave::FileInfo::setLength(), and Kwave::string2date().
Referenced by open().


|
private |
parse MP3 headers
Definition at line 78 of file MP3Decoder.cpp.
References _, Kwave::INF_BITRATE_NOMINAL, Kwave::INF_COMPRESSION, Kwave::INF_COPYRIGHTED, Kwave::INF_MPEG_EMPHASIS, Kwave::INF_MPEG_LAYER, Kwave::INF_MPEG_MODEEXT, Kwave::INF_MPEG_VERSION, Kwave::INF_ORIGINAL, Kwave::INF_PRIVATE, Kwave::Decoder::metaData(), Kwave::Compression::MPEG_LAYER_I, Kwave::Compression::MPEG_LAYER_II, Kwave::Compression::MPEG_LAYER_III, Kwave::MetaDataList::replace(), SAMPLE_BITS, Kwave::FileInfo::set(), Kwave::FileInfo::setBits(), Kwave::FileInfo::setLength(), Kwave::FileInfo::setRate(), Kwave::FileInfo::setTracks(), and Kwave::MessageBox::warningContinueCancel().
Referenced by open().


| enum mad_flow Kwave::MP3Decoder::processOutput | ( | void * | data, |
| struct mad_header const * | header, | ||
| struct mad_pcm * | pcm | ||
| ) |
Calback for processing libmad's output
Definition at line 675 of file MP3Decoder.cpp.
References audio_linear_dither(), m_dest, SAMPLE_BITS, and Kwave::MultiTrackSink< SINK, INITIALIZE >::tracks().
Referenced by _output_adapter().


|
private |
number of appended bytes / id3v1 tag
Definition at line 124 of file MP3Decoder.h.
Referenced by fillInput(), and open().
|
private |
buffer for libmad
Definition at line 115 of file MP3Decoder.h.
Referenced by fillInput(), handleError(), open(), and ~MP3Decoder().
|
private |
size of m_buffer in bytes
Definition at line 118 of file MP3Decoder.h.
Referenced by fillInput(), and open().
|
private |
destination of the audio data
Definition at line 112 of file MP3Decoder.h.
Referenced by decode(), fillInput(), and processOutput().
|
private |
number of failures
Definition at line 127 of file MP3Decoder.h.
Referenced by decode(), and handleError().
|
private |
widget used for displaying error messages
Definition at line 130 of file MP3Decoder.h.
Referenced by decode(), and handleError().
|
private |
number of prepended bytes / id3v2 tag
Definition at line 121 of file MP3Decoder.h.
|
private |
property - to - ID3 mapping
Definition at line 106 of file MP3Decoder.h.
Referenced by parseID3Tags().
|
private |
source of the raw mp3 data
Definition at line 109 of file MP3Decoder.h.
Referenced by close(), decode(), fillInput(), open(), and ~MP3Decoder().