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) |
![]() | |
Decoder () | |
virtual | ~Decoder () |
virtual Kwave::MetaDataList & | metaData () |
![]() | |
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 | |
![]() | |
void | sourceProcessed (quint64 pos) |
![]() | |
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().