Fix decoration for static builds
This commit is contained in:
parent
0541c08864
commit
0cf30edbff
|
@ -13,7 +13,7 @@ namespace Media {
|
|||
|
||||
class MediaFileInfo;
|
||||
|
||||
class LIB_EXPORT StreamDataBlock
|
||||
class TAG_PARSER_EXPORT StreamDataBlock
|
||||
{
|
||||
public:
|
||||
StreamDataBlock(const std::function<std::istream & ()> &stream,
|
||||
|
@ -88,7 +88,7 @@ inline void StreamDataBlock::discardBuffer()
|
|||
m_buffer.reset();
|
||||
}
|
||||
|
||||
class LIB_EXPORT FileDataBlock : public StreamDataBlock
|
||||
class TAG_PARSER_EXPORT FileDataBlock : public StreamDataBlock
|
||||
{
|
||||
public:
|
||||
FileDataBlock(const std::string &path);
|
||||
|
@ -103,7 +103,7 @@ inline const MediaFileInfo *FileDataBlock::fileInfo() const
|
|||
return m_fileInfo.get();
|
||||
}
|
||||
|
||||
class LIB_EXPORT AbstractAttachment : public StatusProvider
|
||||
class TAG_PARSER_EXPORT AbstractAttachment : public StatusProvider
|
||||
{
|
||||
public:
|
||||
const std::string &description() const;
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT AbstractChapter : public StatusProvider
|
||||
class TAG_PARSER_EXPORT AbstractChapter : public StatusProvider
|
||||
{
|
||||
public:
|
||||
virtual ~AbstractChapter();
|
||||
|
|
|
@ -26,7 +26,7 @@ class AbstractTrack;
|
|||
class AbstractChapter;
|
||||
class AbstractAttachment;
|
||||
|
||||
class LIB_EXPORT AbstractContainer : public StatusProvider
|
||||
class TAG_PARSER_EXPORT AbstractContainer : public StatusProvider
|
||||
{
|
||||
public:
|
||||
virtual ~AbstractContainer();
|
||||
|
|
|
@ -37,7 +37,7 @@ enum class TrackType
|
|||
FlacStream, /**< The track is a Media::FlacStream. */
|
||||
};
|
||||
|
||||
class LIB_EXPORT AbstractTrack : public StatusProvider
|
||||
class TAG_PARSER_EXPORT AbstractTrack : public StatusProvider
|
||||
{
|
||||
friend class MpegAudioFrameStream;
|
||||
friend class WaveAudioStream;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#ifndef MEDIA_ADTSFRAME_H
|
||||
#define MEDIA_ADTSFRAME_H
|
||||
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
#include <c++utilities/application/global.h>
|
||||
|
||||
namespace IoUtilities {
|
||||
class BinaryReader;
|
||||
|
@ -10,7 +11,7 @@ class BinaryReader;
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT AdtsFrame
|
||||
class TAG_PARSER_EXPORT AdtsFrame
|
||||
{
|
||||
public:
|
||||
AdtsFrame();
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT AdtsStream : public AbstractTrack
|
||||
class TAG_PARSER_EXPORT AdtsStream : public AbstractTrack
|
||||
{
|
||||
public:
|
||||
AdtsStream(std::iostream &stream, uint64 startOffset);
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
#ifndef MEDIA_ASPECTRATIO_H
|
||||
#define MEDIA_ASPECTRATIO_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
namespace Media {
|
||||
|
||||
struct LIB_EXPORT AspectRatio {
|
||||
struct TAG_PARSER_EXPORT AspectRatio {
|
||||
AspectRatio();
|
||||
AspectRatio(byte aspectRatioType);
|
||||
AspectRatio(uint16 numerator, uint16 denominator);
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace Media {
|
|||
|
||||
class MediaFormat;
|
||||
|
||||
struct LIB_EXPORT AvcConfiguration
|
||||
struct TAG_PARSER_EXPORT AvcConfiguration
|
||||
{
|
||||
AvcConfiguration();
|
||||
byte profileIndication;
|
||||
|
|
|
@ -22,7 +22,7 @@ typedef uint32 ugolomb;
|
|||
*/
|
||||
typedef int32 sgolomb;
|
||||
|
||||
struct LIB_EXPORT TimingInfo {
|
||||
struct TAG_PARSER_EXPORT TimingInfo {
|
||||
TimingInfo();
|
||||
uint32 unitsInTick;
|
||||
uint32 timeScale;
|
||||
|
@ -43,7 +43,7 @@ inline int64 TimingInfo::defaultDuration() const
|
|||
return 1000000000ll * unitsInTick / timeScale;
|
||||
}
|
||||
|
||||
struct LIB_EXPORT HrdParameters {
|
||||
struct TAG_PARSER_EXPORT HrdParameters {
|
||||
HrdParameters();
|
||||
ugolomb cpbCount;
|
||||
byte bitRateScale;
|
||||
|
@ -66,7 +66,7 @@ inline HrdParameters::HrdParameters() :
|
|||
timeOffsetLength(0)
|
||||
{}
|
||||
|
||||
struct LIB_EXPORT SpsInfo {
|
||||
struct TAG_PARSER_EXPORT SpsInfo {
|
||||
SpsInfo();
|
||||
ugolomb id;
|
||||
byte profileIndication;
|
||||
|
@ -115,7 +115,7 @@ inline SpsInfo::SpsInfo() :
|
|||
size(0)
|
||||
{}
|
||||
|
||||
struct LIB_EXPORT PpsInfo {
|
||||
struct TAG_PARSER_EXPORT PpsInfo {
|
||||
PpsInfo();
|
||||
ugolomb id;
|
||||
ugolomb spsId;
|
||||
|
@ -132,7 +132,7 @@ inline PpsInfo::PpsInfo() :
|
|||
size(0)
|
||||
{}
|
||||
|
||||
struct LIB_EXPORT SliceInfo {
|
||||
struct TAG_PARSER_EXPORT SliceInfo {
|
||||
SliceInfo();
|
||||
byte naluType;
|
||||
byte naluRefIdc;
|
||||
|
@ -167,7 +167,7 @@ inline SliceInfo::SliceInfo() :
|
|||
pps(0)
|
||||
{}
|
||||
|
||||
class LIB_EXPORT AvcFrame {
|
||||
class TAG_PARSER_EXPORT AvcFrame {
|
||||
AvcFrame();
|
||||
|
||||
private:
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef MEDIA_BITMAPINFOHEADER_H
|
||||
#define MEDIA_BITMAPINFOHEADER_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
namespace IoUtilities {
|
||||
|
@ -10,7 +11,7 @@ class BinaryReader;
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT BitmapInfoHeader
|
||||
class TAG_PARSER_EXPORT BitmapInfoHeader
|
||||
{
|
||||
public:
|
||||
BitmapInfoHeader();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef BACKUPHELPER_H
|
||||
#define BACKUPHELPER_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
|
@ -12,10 +12,10 @@ class MediaFileInfo;
|
|||
|
||||
namespace BackupHelper {
|
||||
|
||||
LIB_EXPORT std::string &backupDirectory();
|
||||
LIB_EXPORT void restoreOriginalFileFromBackupFile(const std::string &originalPath, const std::string &backupPath, std::fstream &originalStream, std::fstream &backupStream);
|
||||
LIB_EXPORT void createBackupFile(const std::string &originalPath, std::string &backupPath, std::fstream &originalStream, std::fstream &backupStream);
|
||||
LIB_EXPORT void handleFailureAfterFileModified(MediaFileInfo &mediaFileInfo, const std::string &backupPath, std::fstream &outputStream, std::fstream &backupStream, const std::string &context = "making file");
|
||||
TAG_PARSER_EXPORT std::string &backupDirectory();
|
||||
TAG_PARSER_EXPORT void restoreOriginalFileFromBackupFile(const std::string &originalPath, const std::string &backupPath, std::fstream &originalStream, std::fstream &backupStream);
|
||||
TAG_PARSER_EXPORT void createBackupFile(const std::string &originalPath, std::string &backupPath, std::fstream &originalStream, std::fstream &backupStream);
|
||||
TAG_PARSER_EXPORT void handleFailureAfterFileModified(MediaFileInfo &mediaFileInfo, const std::string &backupPath, std::fstream &outputStream, std::fstream &backupStream, const std::string &context = "making file");
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef BASICFILEINFO_H
|
||||
#define BASICFILEINFO_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
#include <string>
|
||||
|
@ -9,7 +10,7 @@
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT BasicFileInfo
|
||||
class TAG_PARSER_EXPORT BasicFileInfo
|
||||
{
|
||||
public:
|
||||
// constructor, destructor
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef CASEINSENSITIVECOMPARER
|
||||
#define CASEINSENSITIVECOMPARER
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
|
@ -12,7 +12,7 @@ namespace Media {
|
|||
/*!
|
||||
* \brief The CaseInsensitiveCharComparer struct defines a method for case-insensivive character comparsion (less).
|
||||
*/
|
||||
struct LIB_EXPORT CaseInsensitiveCharComparer
|
||||
struct TAG_PARSER_EXPORT CaseInsensitiveCharComparer
|
||||
{
|
||||
static constexpr unsigned char toLower(const unsigned char c)
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ struct LIB_EXPORT CaseInsensitiveCharComparer
|
|||
/*!
|
||||
* \brief The CaseInsensitiveStringComparer struct defines a method for case-insensivive string comparsion (less).
|
||||
*/
|
||||
struct LIB_EXPORT CaseInsensitiveStringComparer
|
||||
struct TAG_PARSER_EXPORT CaseInsensitiveStringComparer
|
||||
{
|
||||
bool operator()(const std::string &lhs, const std::string &rhs) const
|
||||
{
|
||||
|
|
16
exceptions.h
16
exceptions.h
|
@ -1,14 +1,14 @@
|
|||
#ifndef MEDIA_EXCEPTIONS_H
|
||||
#define MEDIA_EXCEPTIONS_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT Failure : public std::exception
|
||||
class TAG_PARSER_EXPORT Failure : public std::exception
|
||||
{
|
||||
public:
|
||||
Failure() USE_NOTHROW;
|
||||
|
@ -16,7 +16,7 @@ public:
|
|||
virtual const char *what() const USE_NOTHROW;
|
||||
};
|
||||
|
||||
class LIB_EXPORT NoDataFoundException : public Failure
|
||||
class TAG_PARSER_EXPORT NoDataFoundException : public Failure
|
||||
{
|
||||
public:
|
||||
NoDataFoundException() USE_NOTHROW;
|
||||
|
@ -24,7 +24,7 @@ public:
|
|||
virtual const char *what() const USE_NOTHROW;
|
||||
};
|
||||
|
||||
class LIB_EXPORT InvalidDataException : public Failure
|
||||
class TAG_PARSER_EXPORT InvalidDataException : public Failure
|
||||
{
|
||||
public:
|
||||
InvalidDataException() USE_NOTHROW;
|
||||
|
@ -32,7 +32,7 @@ public:
|
|||
virtual const char *what() const USE_NOTHROW;
|
||||
};
|
||||
|
||||
class LIB_EXPORT TruncatedDataException : public InvalidDataException
|
||||
class TAG_PARSER_EXPORT TruncatedDataException : public InvalidDataException
|
||||
{
|
||||
public:
|
||||
TruncatedDataException() USE_NOTHROW;
|
||||
|
@ -40,7 +40,7 @@ public:
|
|||
virtual const char *what() const USE_NOTHROW;
|
||||
};
|
||||
|
||||
class LIB_EXPORT OperationAbortedException : public Failure
|
||||
class TAG_PARSER_EXPORT OperationAbortedException : public Failure
|
||||
{
|
||||
public:
|
||||
OperationAbortedException() USE_NOTHROW;
|
||||
|
@ -48,7 +48,7 @@ public:
|
|||
virtual const char *what() const USE_NOTHROW;
|
||||
};
|
||||
|
||||
class LIB_EXPORT VersionNotSupportedException : public Failure
|
||||
class TAG_PARSER_EXPORT VersionNotSupportedException : public Failure
|
||||
{
|
||||
public:
|
||||
VersionNotSupportedException() USE_NOTHROW;
|
||||
|
@ -56,7 +56,7 @@ public:
|
|||
virtual const char *what() const USE_NOTHROW;
|
||||
};
|
||||
|
||||
class LIB_EXPORT NotImplementedException : public Failure
|
||||
class TAG_PARSER_EXPORT NotImplementedException : public Failure
|
||||
{
|
||||
public:
|
||||
NotImplementedException() USE_NOTHROW;
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef MEDIA_FLACMETADATAHEADER_H
|
||||
#define MEDIA_FLACMETADATAHEADER_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
#include <iostream>
|
||||
|
@ -34,7 +35,7 @@ constexpr bool operator !=(byte lhs, FlacMetaDataBlockType type)
|
|||
return lhs != static_cast<byte>(type);
|
||||
}
|
||||
|
||||
class LIB_EXPORT FlacMetaDataBlockHeader
|
||||
class TAG_PARSER_EXPORT FlacMetaDataBlockHeader
|
||||
{
|
||||
public:
|
||||
FlacMetaDataBlockHeader();
|
||||
|
@ -115,7 +116,7 @@ inline void FlacMetaDataBlockHeader::setDataSize(uint32 dataSize)
|
|||
m_dataSize = dataSize;
|
||||
}
|
||||
|
||||
class LIB_EXPORT FlacMetaDataBlockStreamInfo
|
||||
class TAG_PARSER_EXPORT FlacMetaDataBlockStreamInfo
|
||||
{
|
||||
public:
|
||||
FlacMetaDataBlockStreamInfo();
|
||||
|
@ -254,7 +255,7 @@ inline const char *FlacMetaDataBlockStreamInfo::md5Sum() const
|
|||
return m_md5Sum;
|
||||
}
|
||||
|
||||
class LIB_EXPORT FlacMetaDataBlockPicture
|
||||
class TAG_PARSER_EXPORT FlacMetaDataBlockPicture
|
||||
{
|
||||
public:
|
||||
FlacMetaDataBlockPicture(TagValue &tagValue);
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace Media {
|
|||
class MediaFileInfo;
|
||||
class VorbisComment;
|
||||
|
||||
class LIB_EXPORT FlacStream : public AbstractTrack
|
||||
class TAG_PARSER_EXPORT FlacStream : public AbstractTrack
|
||||
{
|
||||
public:
|
||||
FlacStream(MediaFileInfo &mediaFileInfo, uint64 startOffset);
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace Media {
|
|||
|
||||
class OggIterator;
|
||||
|
||||
class LIB_EXPORT FlacToOggMappingHeader
|
||||
class TAG_PARSER_EXPORT FlacToOggMappingHeader
|
||||
{
|
||||
public:
|
||||
FlacToOggMappingHeader();
|
||||
|
|
|
@ -22,7 +22,7 @@ namespace Media {
|
|||
* \tparam ElementType Specifies the class which is used to deal with the elements the file consists of.
|
||||
*/
|
||||
template <class FileInfoType, class TagType, class TrackType, class ElementType>
|
||||
class LIB_EXPORT GenericContainer : public AbstractContainer
|
||||
class TAG_PARSER_EXPORT GenericContainer : public AbstractContainer
|
||||
{
|
||||
friend FileInfoType;
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ class FileElementTraits
|
|||
* \tparam ImplementationType Specifies the type of the actual implementation.
|
||||
*/
|
||||
template <class ImplementationType>
|
||||
class LIB_EXPORT GenericFileElement : public StatusProvider
|
||||
class TAG_PARSER_EXPORT GenericFileElement : public StatusProvider
|
||||
{
|
||||
friend class FileElementTraits<ImplementationType>;
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ class TagFieldTraits
|
|||
* with the "Curiously recurring template pattern".
|
||||
*/
|
||||
template <class ImplementationType>
|
||||
class LIB_EXPORT TagField
|
||||
class TAG_PARSER_EXPORT TagField
|
||||
{
|
||||
public:
|
||||
friend class TagFieldTraits<ImplementationType>;
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// Created via CMake from template global.h.in
|
||||
// WARNING! Any changes to this file will be overwritten by the next CMake run!
|
||||
|
||||
#ifndef TAG_PARSER_GLOBAL
|
||||
#define TAG_PARSER_GLOBAL
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
|
||||
#ifdef TAG_PARSER_STATIC
|
||||
# define TAG_PARSER_EXPORT
|
||||
# define TAG_PARSER_IMPORT
|
||||
#else
|
||||
# define TAG_PARSER_EXPORT LIB_EXPORT
|
||||
# define TAG_PARSER_IMPORT LIB_IMPORT
|
||||
#endif
|
||||
|
||||
#endif // TAG_PARSER_GLOBAL
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef ID3GENRES_H
|
||||
#define ID3GENRES_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
#include <string>
|
||||
|
@ -9,7 +10,7 @@
|
|||
namespace Media
|
||||
{
|
||||
|
||||
class LIB_EXPORT Id3Genres
|
||||
class TAG_PARSER_EXPORT Id3Genres
|
||||
{
|
||||
public:
|
||||
static const char *stringFromIndex(int index);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
namespace Media
|
||||
{
|
||||
|
||||
class LIB_EXPORT Id3v1Tag : public Tag
|
||||
class TAG_PARSER_EXPORT Id3v1Tag : public Tag
|
||||
{
|
||||
public:
|
||||
Id3v1Tag();
|
||||
|
|
|
@ -20,7 +20,7 @@ namespace Media
|
|||
|
||||
class Id3v2Frame;
|
||||
|
||||
class LIB_EXPORT Id3v2FrameMaker
|
||||
class TAG_PARSER_EXPORT Id3v2FrameMaker
|
||||
{
|
||||
friend class Id3v2Frame;
|
||||
|
||||
|
@ -78,7 +78,7 @@ inline uint32 Id3v2FrameMaker::requiredSize() const
|
|||
* \brief Defines traits for the TagField implementation of the Id3v2Frame class.
|
||||
*/
|
||||
template <>
|
||||
class LIB_EXPORT TagFieldTraits<Id3v2Frame>
|
||||
class TAG_PARSER_EXPORT TagFieldTraits<Id3v2Frame>
|
||||
{
|
||||
public:
|
||||
/*!
|
||||
|
@ -97,7 +97,7 @@ public:
|
|||
typedef Id3v2Frame implementationType;
|
||||
};
|
||||
|
||||
class LIB_EXPORT Id3v2Frame : public TagField<Id3v2Frame>, public StatusProvider
|
||||
class TAG_PARSER_EXPORT Id3v2Frame : public TagField<Id3v2Frame>, public StatusProvider
|
||||
{
|
||||
friend class TagField<Id3v2Frame>;
|
||||
|
||||
|
|
|
@ -12,12 +12,12 @@ namespace Media
|
|||
|
||||
class Id3v2Tag;
|
||||
|
||||
struct LIB_EXPORT FrameComparer
|
||||
struct TAG_PARSER_EXPORT FrameComparer
|
||||
{
|
||||
bool operator()(const uint32 &lhs, const uint32 &rhs) const;
|
||||
};
|
||||
|
||||
class LIB_EXPORT Id3v2TagMaker
|
||||
class TAG_PARSER_EXPORT Id3v2TagMaker
|
||||
{
|
||||
friend class Id3v2Tag;
|
||||
|
||||
|
@ -52,7 +52,7 @@ inline uint64 Id3v2TagMaker::requiredSize() const
|
|||
return m_requiredSize;
|
||||
}
|
||||
|
||||
class LIB_EXPORT Id3v2Tag : public FieldMapBasedTag<Id3v2Frame, FrameComparer>
|
||||
class TAG_PARSER_EXPORT Id3v2Tag : public FieldMapBasedTag<Id3v2Frame, FrameComparer>
|
||||
{
|
||||
public:
|
||||
Id3v2Tag();
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef MEDIA_LOCALEAWARESTRING_H
|
||||
#define MEDIA_LOCALEAWARESTRING_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
@ -11,7 +11,7 @@ namespace Media {
|
|||
/*!
|
||||
* \brief The LocaleAwareString class is a standard string with locale information (languages, countries).
|
||||
*/
|
||||
class LIB_EXPORT LocaleAwareString : public std::string
|
||||
class TAG_PARSER_EXPORT LocaleAwareString : public std::string
|
||||
{
|
||||
public:
|
||||
LocaleAwareString(const std::string &value = std::string());
|
||||
|
|
5
margin.h
5
margin.h
|
@ -1,7 +1,8 @@
|
|||
#ifndef MARGIN_H
|
||||
#define MARGIN_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
#include <string>
|
||||
|
@ -12,7 +13,7 @@ namespace Media {
|
|||
/*!
|
||||
* \brief The Margin class defines the four margins of a rectangle.
|
||||
*/
|
||||
class LIB_EXPORT Margin
|
||||
class TAG_PARSER_EXPORT Margin
|
||||
{
|
||||
public:
|
||||
constexpr Margin(uint32 top = 0, uint32 left = 0, uint32 bottom = 0, uint32 right = 0);
|
||||
|
|
|
@ -23,7 +23,7 @@ class MatroskaContainer;
|
|||
* \brief Defines traits for the GenericFileElement implementation EbmlElement.
|
||||
*/
|
||||
template <>
|
||||
class LIB_EXPORT FileElementTraits<EbmlElement>
|
||||
class TAG_PARSER_EXPORT FileElementTraits<EbmlElement>
|
||||
{
|
||||
public:
|
||||
/*!
|
||||
|
@ -47,7 +47,7 @@ public:
|
|||
typedef EbmlElement implementationType;
|
||||
};
|
||||
|
||||
class LIB_EXPORT EbmlElement : public GenericFileElement<EbmlElement>
|
||||
class TAG_PARSER_EXPORT EbmlElement : public GenericFileElement<EbmlElement>
|
||||
{
|
||||
friend class GenericFileElement<EbmlElement>;
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace Media {
|
|||
class EbmlElement;
|
||||
class MatroskaAttachment;
|
||||
|
||||
class LIB_EXPORT MatroskaAttachmentMaker
|
||||
class TAG_PARSER_EXPORT MatroskaAttachmentMaker
|
||||
{
|
||||
friend class MatroskaAttachment;
|
||||
|
||||
|
@ -42,7 +42,7 @@ inline uint64 MatroskaAttachmentMaker::requiredSize() const
|
|||
return m_totalSize;
|
||||
}
|
||||
|
||||
class LIB_EXPORT MatroskaAttachment : public AbstractAttachment
|
||||
class TAG_PARSER_EXPORT MatroskaAttachment : public AbstractAttachment
|
||||
{
|
||||
public:
|
||||
MatroskaAttachment();
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace Media {
|
|||
|
||||
class EbmlElement;
|
||||
|
||||
class LIB_EXPORT MatroskaChapter : public AbstractChapter
|
||||
class TAG_PARSER_EXPORT MatroskaChapter : public AbstractChapter
|
||||
{
|
||||
public:
|
||||
MatroskaChapter(EbmlElement *chapterAtomElement);
|
||||
|
|
|
@ -22,7 +22,7 @@ class MatroskaEditionEntry;
|
|||
|
||||
class MediaFileInfo;
|
||||
|
||||
class LIB_EXPORT MatroskaContainer : public GenericContainer<MediaFileInfo, MatroskaTag, MatroskaTrack, EbmlElement>
|
||||
class TAG_PARSER_EXPORT MatroskaContainer : public GenericContainer<MediaFileInfo, MatroskaTag, MatroskaTrack, EbmlElement>
|
||||
{
|
||||
public:
|
||||
MatroskaContainer(MediaFileInfo &stream, uint64 startOffset);
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT MatroskaOffsetStates
|
||||
class TAG_PARSER_EXPORT MatroskaOffsetStates
|
||||
{
|
||||
public:
|
||||
MatroskaOffsetStates(uint64 initialValue);
|
||||
|
@ -40,7 +40,7 @@ inline uint64 MatroskaOffsetStates::initialValue() const
|
|||
return m_initialValue;
|
||||
}
|
||||
|
||||
class LIB_EXPORT MatroskaReferenceOffsetPair : public MatroskaOffsetStates
|
||||
class TAG_PARSER_EXPORT MatroskaReferenceOffsetPair : public MatroskaOffsetStates
|
||||
{
|
||||
public:
|
||||
MatroskaReferenceOffsetPair(uint64 referenceOffset, uint64 initialValue);
|
||||
|
@ -59,7 +59,7 @@ inline uint64 MatroskaReferenceOffsetPair::referenceOffset() const
|
|||
return m_referenceOffset;
|
||||
}
|
||||
|
||||
class LIB_EXPORT MatroskaCuePositionUpdater : public StatusProvider
|
||||
class TAG_PARSER_EXPORT MatroskaCuePositionUpdater : public StatusProvider
|
||||
{
|
||||
public:
|
||||
MatroskaCuePositionUpdater();
|
||||
|
|
|
@ -7,7 +7,7 @@ namespace Media {
|
|||
|
||||
class EbmlElement;
|
||||
|
||||
class LIB_EXPORT MatroskaEditionEntry : public StatusProvider
|
||||
class TAG_PARSER_EXPORT MatroskaEditionEntry : public StatusProvider
|
||||
{
|
||||
public:
|
||||
MatroskaEditionEntry(EbmlElement *editionEntryElement);
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef MATROSKAIDS_H
|
||||
#define MATROSKAIDS_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
namespace Media {
|
||||
|
@ -488,7 +489,7 @@ enum KnownValues {
|
|||
|
||||
}
|
||||
|
||||
LIB_EXPORT const char *matroskaIdName(uint32 matroskaId);
|
||||
TAG_PARSER_EXPORT const char *matroskaIdName(uint32 matroskaId);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT MatroskaSeekInfo : public StatusProvider
|
||||
class TAG_PARSER_EXPORT MatroskaSeekInfo : public StatusProvider
|
||||
{
|
||||
public:
|
||||
MatroskaSeekInfo();
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace Media {
|
|||
class EbmlElement;
|
||||
class MatroskaTag;
|
||||
|
||||
class LIB_EXPORT MatroskaTagMaker
|
||||
class TAG_PARSER_EXPORT MatroskaTagMaker
|
||||
{
|
||||
friend class MatroskaTag;
|
||||
|
||||
|
@ -47,7 +47,7 @@ inline uint64 MatroskaTagMaker::requiredSize() const
|
|||
return m_totalSize;
|
||||
}
|
||||
|
||||
class LIB_EXPORT MatroskaTag : public FieldMapBasedTag<MatroskaTagField>
|
||||
class TAG_PARSER_EXPORT MatroskaTag : public FieldMapBasedTag<MatroskaTagField>
|
||||
{
|
||||
public:
|
||||
MatroskaTag();
|
||||
|
|
|
@ -13,7 +13,7 @@ class MatroskaTagField;
|
|||
* \brief Defines traits for the TagField implementation of the MatroskaTagField class.
|
||||
*/
|
||||
template <>
|
||||
class LIB_EXPORT TagFieldTraits<MatroskaTagField>
|
||||
class TAG_PARSER_EXPORT TagFieldTraits<MatroskaTagField>
|
||||
{
|
||||
public:
|
||||
/*!
|
||||
|
@ -42,7 +42,7 @@ inline bool TagFieldTraits<MatroskaTagField>::supportsNestedFields()
|
|||
return true;
|
||||
}
|
||||
|
||||
class LIB_EXPORT MatroskaTagFieldMaker
|
||||
class TAG_PARSER_EXPORT MatroskaTagFieldMaker
|
||||
{
|
||||
friend class MatroskaTagField;
|
||||
|
||||
|
@ -80,7 +80,7 @@ inline uint64 MatroskaTagFieldMaker::requiredSize() const
|
|||
|
||||
|
||||
|
||||
class LIB_EXPORT MatroskaTagField : public TagField<MatroskaTagField>, public StatusProvider
|
||||
class TAG_PARSER_EXPORT MatroskaTagField : public TagField<MatroskaTagField>, public StatusProvider
|
||||
{
|
||||
friend class TagField<MatroskaTagField>;
|
||||
|
||||
|
|
|
@ -10,327 +10,327 @@ namespace Media {
|
|||
*/
|
||||
namespace MatroskaTagIds {
|
||||
|
||||
inline LIB_EXPORT const char *original() {
|
||||
inline TAG_PARSER_EXPORT const char *original() {
|
||||
return "ORIGINAL";
|
||||
}
|
||||
inline LIB_EXPORT const char *sample() {
|
||||
inline TAG_PARSER_EXPORT const char *sample() {
|
||||
return "SAMPLE";
|
||||
}
|
||||
inline LIB_EXPORT const char *country() {
|
||||
inline TAG_PARSER_EXPORT const char *country() {
|
||||
return "COUNTRY";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *totalParts() {
|
||||
inline TAG_PARSER_EXPORT const char *totalParts() {
|
||||
return "TOTAL_PARTS";
|
||||
}
|
||||
inline LIB_EXPORT const char *partNumber() {
|
||||
inline TAG_PARSER_EXPORT const char *partNumber() {
|
||||
return "PART_NUMBER";
|
||||
}
|
||||
inline LIB_EXPORT const char *partOffset() {
|
||||
inline TAG_PARSER_EXPORT const char *partOffset() {
|
||||
return "PART_OFFSET";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *title() {
|
||||
inline TAG_PARSER_EXPORT const char *title() {
|
||||
return "TITLE";
|
||||
}
|
||||
inline LIB_EXPORT const char *subtitle() {
|
||||
inline TAG_PARSER_EXPORT const char *subtitle() {
|
||||
return "SUBTITLE";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *url() {
|
||||
inline TAG_PARSER_EXPORT const char *url() {
|
||||
return "URL";
|
||||
}
|
||||
inline LIB_EXPORT const char *sortWith() {
|
||||
inline TAG_PARSER_EXPORT const char *sortWith() {
|
||||
return "SORT_WITH";
|
||||
}
|
||||
inline LIB_EXPORT const char *instruments() {
|
||||
inline TAG_PARSER_EXPORT const char *instruments() {
|
||||
return "INSTRUMENTS";
|
||||
}
|
||||
inline LIB_EXPORT const char *email() {
|
||||
inline TAG_PARSER_EXPORT const char *email() {
|
||||
return "EMAIL";
|
||||
}
|
||||
inline LIB_EXPORT const char *address() {
|
||||
inline TAG_PARSER_EXPORT const char *address() {
|
||||
return "ADDRESS";
|
||||
}
|
||||
inline LIB_EXPORT const char *fax() {
|
||||
inline TAG_PARSER_EXPORT const char *fax() {
|
||||
return "FAX";
|
||||
}
|
||||
inline LIB_EXPORT const char *phone() {
|
||||
inline TAG_PARSER_EXPORT const char *phone() {
|
||||
return "PHONE";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *artist() {
|
||||
inline TAG_PARSER_EXPORT const char *artist() {
|
||||
return "ARTIST";
|
||||
}
|
||||
inline LIB_EXPORT const char *album() {
|
||||
inline TAG_PARSER_EXPORT const char *album() {
|
||||
return "ALBUM";
|
||||
}
|
||||
inline LIB_EXPORT const char *leadPerformer() {
|
||||
inline TAG_PARSER_EXPORT const char *leadPerformer() {
|
||||
return "LEAD_PERFORMER";
|
||||
}
|
||||
inline LIB_EXPORT const char *accompaniment() {
|
||||
inline TAG_PARSER_EXPORT const char *accompaniment() {
|
||||
return "ACCOMPANIMENT";
|
||||
}
|
||||
inline LIB_EXPORT const char *composer() {
|
||||
inline TAG_PARSER_EXPORT const char *composer() {
|
||||
return "COMPOSER";
|
||||
}
|
||||
inline LIB_EXPORT const char *arranger() {
|
||||
inline TAG_PARSER_EXPORT const char *arranger() {
|
||||
return "ARRANGER";
|
||||
}
|
||||
inline LIB_EXPORT const char *lyrics() {
|
||||
inline TAG_PARSER_EXPORT const char *lyrics() {
|
||||
return "LYRICS";
|
||||
}
|
||||
inline LIB_EXPORT const char *lyricist() {
|
||||
inline TAG_PARSER_EXPORT const char *lyricist() {
|
||||
return "LYRICIST";
|
||||
}
|
||||
inline LIB_EXPORT const char *conductor() {
|
||||
inline TAG_PARSER_EXPORT const char *conductor() {
|
||||
return "CONDUCTOR";
|
||||
}
|
||||
inline LIB_EXPORT const char *director() {
|
||||
inline TAG_PARSER_EXPORT const char *director() {
|
||||
return "DIRECTOR";
|
||||
}
|
||||
inline LIB_EXPORT const char *assistantDirector() {
|
||||
inline TAG_PARSER_EXPORT const char *assistantDirector() {
|
||||
return "ASSISTANT_DIRECTOR";
|
||||
}
|
||||
inline LIB_EXPORT const char *directorOfPhotography() {
|
||||
inline TAG_PARSER_EXPORT const char *directorOfPhotography() {
|
||||
return "DIRECTOR_OF_PHOTOGRAPHY";
|
||||
}
|
||||
inline LIB_EXPORT const char *soundEngineer() {
|
||||
inline TAG_PARSER_EXPORT const char *soundEngineer() {
|
||||
return "SOUND_ENGINEER";
|
||||
}
|
||||
inline LIB_EXPORT const char *artDirector() {
|
||||
inline TAG_PARSER_EXPORT const char *artDirector() {
|
||||
return "ART_DIRECTOR";
|
||||
}
|
||||
inline LIB_EXPORT const char *productionDesigner() {
|
||||
inline TAG_PARSER_EXPORT const char *productionDesigner() {
|
||||
return "PRODUCTION_DESIGNER";
|
||||
}
|
||||
inline LIB_EXPORT const char *choregrapher() {
|
||||
inline TAG_PARSER_EXPORT const char *choregrapher() {
|
||||
return "CHOREGRAPHER";
|
||||
}
|
||||
inline LIB_EXPORT const char *costumeDesigner() {
|
||||
inline TAG_PARSER_EXPORT const char *costumeDesigner() {
|
||||
return "COSTUME_DESIGNER";
|
||||
}
|
||||
inline LIB_EXPORT const char *actor() {
|
||||
inline TAG_PARSER_EXPORT const char *actor() {
|
||||
return "ACTOR";
|
||||
}
|
||||
inline LIB_EXPORT const char *character() {
|
||||
inline TAG_PARSER_EXPORT const char *character() {
|
||||
return "CHARACTER";
|
||||
}
|
||||
inline LIB_EXPORT const char *writtenBy() {
|
||||
inline TAG_PARSER_EXPORT const char *writtenBy() {
|
||||
return "WRITTEN_BY";
|
||||
}
|
||||
inline LIB_EXPORT const char *screenplayBy() {
|
||||
inline TAG_PARSER_EXPORT const char *screenplayBy() {
|
||||
return "SCREENPLAY_BY";
|
||||
}
|
||||
inline LIB_EXPORT const char *editedBy() {
|
||||
inline TAG_PARSER_EXPORT const char *editedBy() {
|
||||
return "EDITED_BY";
|
||||
}
|
||||
inline LIB_EXPORT const char *producer() {
|
||||
inline TAG_PARSER_EXPORT const char *producer() {
|
||||
return "PRODUCER";
|
||||
}
|
||||
inline LIB_EXPORT const char *coproducer() {
|
||||
inline TAG_PARSER_EXPORT const char *coproducer() {
|
||||
return "COPRODUCER";
|
||||
}
|
||||
inline LIB_EXPORT const char *executiveProducer() {
|
||||
inline TAG_PARSER_EXPORT const char *executiveProducer() {
|
||||
return "EXECUTIVE_PRODUCER";
|
||||
}
|
||||
inline LIB_EXPORT const char *distributedBy() {
|
||||
inline TAG_PARSER_EXPORT const char *distributedBy() {
|
||||
return "DISTRIBUTED_BY";
|
||||
}
|
||||
inline LIB_EXPORT const char *masteredBy() {
|
||||
inline TAG_PARSER_EXPORT const char *masteredBy() {
|
||||
return "MASTERED_BY";
|
||||
}
|
||||
inline LIB_EXPORT const char *encodedBy() {
|
||||
inline TAG_PARSER_EXPORT const char *encodedBy() {
|
||||
return "ENCODED_BY";
|
||||
}
|
||||
inline LIB_EXPORT const char *mixedBy() {
|
||||
inline TAG_PARSER_EXPORT const char *mixedBy() {
|
||||
return "MIXED_BY";
|
||||
}
|
||||
inline LIB_EXPORT const char *remixedBy() {
|
||||
inline TAG_PARSER_EXPORT const char *remixedBy() {
|
||||
return "REMIXED_BY";
|
||||
}
|
||||
inline LIB_EXPORT const char *productionStudio() {
|
||||
inline TAG_PARSER_EXPORT const char *productionStudio() {
|
||||
return "PRODUCTION_STUDIO";
|
||||
}
|
||||
inline LIB_EXPORT const char *thanksTo() {
|
||||
inline TAG_PARSER_EXPORT const char *thanksTo() {
|
||||
return "THANKS_TO";
|
||||
}
|
||||
inline LIB_EXPORT const char *publisher() {
|
||||
inline TAG_PARSER_EXPORT const char *publisher() {
|
||||
return "PUBLISHER";
|
||||
}
|
||||
inline LIB_EXPORT const char *label() {
|
||||
inline TAG_PARSER_EXPORT const char *label() {
|
||||
return "LABEL";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *genre() {
|
||||
inline TAG_PARSER_EXPORT const char *genre() {
|
||||
return "GENRE";
|
||||
}
|
||||
inline LIB_EXPORT const char *mood() {
|
||||
inline TAG_PARSER_EXPORT const char *mood() {
|
||||
return "MOOD";
|
||||
}
|
||||
inline LIB_EXPORT const char *originalMediaType() {
|
||||
inline TAG_PARSER_EXPORT const char *originalMediaType() {
|
||||
return "ORIGINAL_MEDIA_TYPE";
|
||||
}
|
||||
inline LIB_EXPORT const char *contentType() {
|
||||
inline TAG_PARSER_EXPORT const char *contentType() {
|
||||
return "CONTENT_TYPE";
|
||||
}
|
||||
inline LIB_EXPORT const char *subject() {
|
||||
inline TAG_PARSER_EXPORT const char *subject() {
|
||||
return "SUBJECT";
|
||||
}
|
||||
inline LIB_EXPORT const char *description() {
|
||||
inline TAG_PARSER_EXPORT const char *description() {
|
||||
return "DESCRIPTION";
|
||||
}
|
||||
inline LIB_EXPORT const char *keywords() {
|
||||
inline TAG_PARSER_EXPORT const char *keywords() {
|
||||
return "KEYWORDS";
|
||||
}
|
||||
inline LIB_EXPORT const char *summary() {
|
||||
inline TAG_PARSER_EXPORT const char *summary() {
|
||||
return "SUMMARY";
|
||||
}
|
||||
inline LIB_EXPORT const char *synopsis() {
|
||||
inline TAG_PARSER_EXPORT const char *synopsis() {
|
||||
return "SYNOPSIS";
|
||||
}
|
||||
inline LIB_EXPORT const char *initialKey() {
|
||||
inline TAG_PARSER_EXPORT const char *initialKey() {
|
||||
return "INITIAL_KEY";
|
||||
}
|
||||
inline LIB_EXPORT const char *period() {
|
||||
inline TAG_PARSER_EXPORT const char *period() {
|
||||
return "PERIOD";
|
||||
}
|
||||
inline LIB_EXPORT const char *lawRating() {
|
||||
inline TAG_PARSER_EXPORT const char *lawRating() {
|
||||
return "LAW_RATING";
|
||||
}
|
||||
inline LIB_EXPORT const char *icra() {
|
||||
inline TAG_PARSER_EXPORT const char *icra() {
|
||||
return "ICRA";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *dateRelease() {
|
||||
inline TAG_PARSER_EXPORT const char *dateRelease() {
|
||||
return "DATE_RELEASED";
|
||||
}
|
||||
inline LIB_EXPORT const char *dateRecorded() {
|
||||
inline TAG_PARSER_EXPORT const char *dateRecorded() {
|
||||
return "DATE_RECORDED";
|
||||
}
|
||||
inline LIB_EXPORT const char *dateEncoded() {
|
||||
inline TAG_PARSER_EXPORT const char *dateEncoded() {
|
||||
return "DATE_ENCODED";
|
||||
}
|
||||
inline LIB_EXPORT const char *dateTagged() {
|
||||
inline TAG_PARSER_EXPORT const char *dateTagged() {
|
||||
return "DATE_TAGGED";
|
||||
}
|
||||
inline LIB_EXPORT const char *dateDigitized() {
|
||||
inline TAG_PARSER_EXPORT const char *dateDigitized() {
|
||||
return "DATE_DIGITIZED";
|
||||
}
|
||||
inline LIB_EXPORT const char *dateWritten() {
|
||||
inline TAG_PARSER_EXPORT const char *dateWritten() {
|
||||
return "DATE_WRITTEN";
|
||||
}
|
||||
inline LIB_EXPORT const char *datePurchased() {
|
||||
inline TAG_PARSER_EXPORT const char *datePurchased() {
|
||||
return "DATE_PURCHASED";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *recordingLocation() {
|
||||
inline TAG_PARSER_EXPORT const char *recordingLocation() {
|
||||
return "RECORDING_LOCATION";
|
||||
}
|
||||
inline LIB_EXPORT const char *compositionLocation() {
|
||||
inline TAG_PARSER_EXPORT const char *compositionLocation() {
|
||||
return "COMPOSITION_LOCATION";
|
||||
}
|
||||
inline LIB_EXPORT const char *composerNationality() {
|
||||
inline TAG_PARSER_EXPORT const char *composerNationality() {
|
||||
return "COMPOSER_NATIONALITY";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *comment() {
|
||||
inline TAG_PARSER_EXPORT const char *comment() {
|
||||
return "COMMENT";
|
||||
}
|
||||
inline LIB_EXPORT const char *playCounter() {
|
||||
inline TAG_PARSER_EXPORT const char *playCounter() {
|
||||
return "PLAY_COUNTER";
|
||||
}
|
||||
inline LIB_EXPORT const char *rating() {
|
||||
inline TAG_PARSER_EXPORT const char *rating() {
|
||||
return "RATING";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *encoder() {
|
||||
inline TAG_PARSER_EXPORT const char *encoder() {
|
||||
return "ENCODER";
|
||||
}
|
||||
inline LIB_EXPORT const char *encoderSettings() {
|
||||
inline TAG_PARSER_EXPORT const char *encoderSettings() {
|
||||
return "ENCODER_SETTINGS";
|
||||
}
|
||||
inline LIB_EXPORT const char *bps() {
|
||||
inline TAG_PARSER_EXPORT const char *bps() {
|
||||
return "BPS";
|
||||
}
|
||||
inline LIB_EXPORT const char *fps() {
|
||||
inline TAG_PARSER_EXPORT const char *fps() {
|
||||
return "FPS";
|
||||
}
|
||||
inline LIB_EXPORT const char *bpm() {
|
||||
inline TAG_PARSER_EXPORT const char *bpm() {
|
||||
return "BPM";
|
||||
}
|
||||
inline LIB_EXPORT const char *duration() {
|
||||
inline TAG_PARSER_EXPORT const char *duration() {
|
||||
return "DURATION";
|
||||
}
|
||||
inline LIB_EXPORT const char *numberOfFrames() {
|
||||
inline TAG_PARSER_EXPORT const char *numberOfFrames() {
|
||||
return "NUMBER_OF_FRAMES";
|
||||
}
|
||||
inline LIB_EXPORT const char *numberOfBytes() {
|
||||
inline TAG_PARSER_EXPORT const char *numberOfBytes() {
|
||||
return "NUMBER_OF_BYTES";
|
||||
}
|
||||
inline LIB_EXPORT const char *measure() {
|
||||
inline TAG_PARSER_EXPORT const char *measure() {
|
||||
return "MEASURE";
|
||||
}
|
||||
inline LIB_EXPORT const char *tuning() {
|
||||
inline TAG_PARSER_EXPORT const char *tuning() {
|
||||
return "TUNING";
|
||||
}
|
||||
inline LIB_EXPORT const char *replaygainGain() {
|
||||
inline TAG_PARSER_EXPORT const char *replaygainGain() {
|
||||
return "REPLAYGAIN_GAIN";
|
||||
}
|
||||
inline LIB_EXPORT const char *replaygainPeak() {
|
||||
inline TAG_PARSER_EXPORT const char *replaygainPeak() {
|
||||
return "REPLAYGAIN_PEAK";
|
||||
}
|
||||
inline LIB_EXPORT const char *identifiers() {
|
||||
inline TAG_PARSER_EXPORT const char *identifiers() {
|
||||
return "Identifiers";
|
||||
}
|
||||
inline LIB_EXPORT const char *isrc() {
|
||||
inline TAG_PARSER_EXPORT const char *isrc() {
|
||||
return "ISRC";
|
||||
}
|
||||
inline LIB_EXPORT const char *mcdi() {
|
||||
inline TAG_PARSER_EXPORT const char *mcdi() {
|
||||
return "MCDI";
|
||||
}
|
||||
inline LIB_EXPORT const char *isbn() {
|
||||
inline TAG_PARSER_EXPORT const char *isbn() {
|
||||
return "ISBN";
|
||||
}
|
||||
inline LIB_EXPORT const char *barcode() {
|
||||
inline TAG_PARSER_EXPORT const char *barcode() {
|
||||
return "BARCODE";
|
||||
}
|
||||
inline LIB_EXPORT const char *catalogNumber() {
|
||||
inline TAG_PARSER_EXPORT const char *catalogNumber() {
|
||||
return "CATALOG_NUMBER";
|
||||
}
|
||||
inline LIB_EXPORT const char *labelCode() {
|
||||
inline TAG_PARSER_EXPORT const char *labelCode() {
|
||||
return "LABEL_CODE";
|
||||
}
|
||||
inline LIB_EXPORT const char *lccn() {
|
||||
inline TAG_PARSER_EXPORT const char *lccn() {
|
||||
return "LCCN";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *purchaseItem() {
|
||||
inline TAG_PARSER_EXPORT const char *purchaseItem() {
|
||||
return "PURCHASE_ITEM";
|
||||
}
|
||||
inline LIB_EXPORT const char *purchaseInfo() {
|
||||
inline TAG_PARSER_EXPORT const char *purchaseInfo() {
|
||||
return "PURCHASE_INFO";
|
||||
}
|
||||
inline LIB_EXPORT const char *purchaseOwner() {
|
||||
inline TAG_PARSER_EXPORT const char *purchaseOwner() {
|
||||
return "PURCHASE_OWNER";
|
||||
}
|
||||
inline LIB_EXPORT const char *purchasePrice() {
|
||||
inline TAG_PARSER_EXPORT const char *purchasePrice() {
|
||||
return "PURCHASE_PRICE";
|
||||
}
|
||||
inline LIB_EXPORT const char *purchaseCurrency() {
|
||||
inline TAG_PARSER_EXPORT const char *purchaseCurrency() {
|
||||
return "PURCHASE_CURRENCY";
|
||||
}
|
||||
|
||||
inline LIB_EXPORT const char *copyright() {
|
||||
inline TAG_PARSER_EXPORT const char *copyright() {
|
||||
return "COPYRIGHT";
|
||||
}
|
||||
inline LIB_EXPORT const char *productionCopyright() {
|
||||
inline TAG_PARSER_EXPORT const char *productionCopyright() {
|
||||
return "PRODUCTION_COPYRIGHT";
|
||||
}
|
||||
inline LIB_EXPORT const char *license() {
|
||||
inline TAG_PARSER_EXPORT const char *license() {
|
||||
return "LICENSE";
|
||||
}
|
||||
inline LIB_EXPORT const char *termsOfUse() {
|
||||
inline TAG_PARSER_EXPORT const char *termsOfUse() {
|
||||
return "TERMS_OF_USE";
|
||||
}
|
||||
|
||||
|
@ -339,7 +339,7 @@ inline LIB_EXPORT const char *termsOfUse() {
|
|||
/*!
|
||||
* \brief Returns the general TagTargetLevel for the Matroska specific \a targetLevelValue.
|
||||
*/
|
||||
inline LIB_EXPORT TagTargetLevel matroskaTagTargetLevel(uint64 targetLevelValue)
|
||||
inline TAG_PARSER_EXPORT TagTargetLevel matroskaTagTargetLevel(uint64 targetLevelValue)
|
||||
{
|
||||
return targetLevelValue > 70 ? TagTargetLevel::Collection : static_cast<TagTargetLevel>(targetLevelValue / 10);
|
||||
}
|
||||
|
@ -347,7 +347,7 @@ inline LIB_EXPORT TagTargetLevel matroskaTagTargetLevel(uint64 targetLevelValue)
|
|||
/*!
|
||||
* \brief Returns the Matroska specific target level value for the specified general \a targetLevel.
|
||||
*/
|
||||
inline LIB_EXPORT uint64 matroskaTagTargetLevelValue(TagTargetLevel targetLevel)
|
||||
inline TAG_PARSER_EXPORT uint64 matroskaTagTargetLevelValue(TagTargetLevel targetLevel)
|
||||
{
|
||||
return static_cast<uint64>(targetLevel) * 10;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace Media {
|
|||
class EbmlElement;
|
||||
class MatroskaContainer;
|
||||
|
||||
class LIB_EXPORT MatroskaTrack : public AbstractTrack
|
||||
class TAG_PARSER_EXPORT MatroskaTrack : public AbstractTrack
|
||||
{
|
||||
friend class MatroskaContainer;
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ enum class ParsingStatus : byte
|
|||
CriticalFailure /**< tried to parse the part, but critical errors occured */
|
||||
};
|
||||
|
||||
class LIB_EXPORT MediaFileInfo : public BasicFileInfo, public StatusProvider
|
||||
class TAG_PARSER_EXPORT MediaFileInfo : public BasicFileInfo, public StatusProvider
|
||||
{
|
||||
public:
|
||||
// constructor, destructor
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef MEDIAFORMAT_H
|
||||
#define MEDIAFORMAT_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <utility>
|
||||
|
||||
|
@ -21,7 +21,7 @@ enum class MediaType
|
|||
Hint /**< hint */
|
||||
};
|
||||
|
||||
extern const char *LIB_EXPORT mediaTypeName(MediaType mediaType);
|
||||
extern const char *TAG_PARSER_EXPORT mediaTypeName(MediaType mediaType);
|
||||
|
||||
/*!
|
||||
* \brief The GeneralMediaFormat enum specifies the general format of media data (PCM, MPEG-4, PNG, ...).
|
||||
|
@ -253,7 +253,7 @@ enum AudioFormatExtensions : unsigned char {
|
|||
};
|
||||
}
|
||||
|
||||
class LIB_EXPORT MediaFormat
|
||||
class TAG_PARSER_EXPORT MediaFormat
|
||||
{
|
||||
public:
|
||||
MediaFormat(GeneralMediaFormat general = GeneralMediaFormat::Unknown, unsigned char sub = 0, unsigned char extension = 0);
|
||||
|
|
|
@ -22,7 +22,7 @@ class Mp4Container;
|
|||
* \brief Defines traits for the GenericFileElement implementation Mp4Atom.
|
||||
*/
|
||||
template <>
|
||||
class LIB_EXPORT FileElementTraits<Mp4Atom>
|
||||
class TAG_PARSER_EXPORT FileElementTraits<Mp4Atom>
|
||||
{
|
||||
public:
|
||||
/*!
|
||||
|
@ -54,7 +54,7 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class LIB_EXPORT Mp4Atom : public GenericFileElement<Mp4Atom>
|
||||
class TAG_PARSER_EXPORT Mp4Atom : public GenericFileElement<Mp4Atom>
|
||||
{
|
||||
friend class GenericFileElement<Mp4Atom>;
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace Media {
|
|||
|
||||
class MediaFileInfo;
|
||||
|
||||
class LIB_EXPORT Mp4Container : public GenericContainer<MediaFileInfo, Mp4Tag, Mp4Track, Mp4Atom>
|
||||
class TAG_PARSER_EXPORT Mp4Container : public GenericContainer<MediaFileInfo, Mp4Tag, Mp4Track, Mp4Atom>
|
||||
{
|
||||
public:
|
||||
Mp4Container(MediaFileInfo &fileInfo, uint64 startOffset);
|
||||
|
|
754
mp4/mp4ids.cpp
754
mp4/mp4ids.cpp
|
@ -1,377 +1,377 @@
|
|||
#include "./mp4ids.h"
|
||||
|
||||
#include "../mediaformat.h"
|
||||
|
||||
namespace Media {
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates the most common MP4 atom IDs.
|
||||
*/
|
||||
namespace Mp4AtomIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates IDs of MP4 atoms holding tag information.
|
||||
*/
|
||||
namespace Mp4TagAtomIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates "mean values" used in iTunes style MP4 tags.
|
||||
*/
|
||||
namespace Mp4TagExtendedMeanIds {
|
||||
const char *iTunes = "com.apple.iTunes";
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates "name values" used in iTunes style MP4 tags.
|
||||
*/
|
||||
namespace Mp4TagExtendedNameIds {
|
||||
const char *cdec = "cdec";
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MP4 media type IDs.
|
||||
*/
|
||||
namespace Mp4MediaTypeIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MP4 media format IDs (aka "FOURCCs").
|
||||
* \sa http://wiki.multimedia.cx/?title=QuickTime_container
|
||||
*/
|
||||
namespace FourccIds {
|
||||
|
||||
MediaFormat fourccToMediaFormat(uint32 fourccId)
|
||||
{
|
||||
switch(fourccId) {
|
||||
case Mpeg:
|
||||
return GeneralMediaFormat::Mpeg1Video;
|
||||
case Mpeg2Imx30: case Mpeg2Imx50:
|
||||
return GeneralMediaFormat::Mpeg2Video;
|
||||
case Mpeg4Video:
|
||||
return GeneralMediaFormat::Mpeg4Video;
|
||||
case Mpeg4TimedText:
|
||||
return GeneralMediaFormat::Mpeg4TimedText;
|
||||
case Hevc1: case Hevc2:
|
||||
return MediaFormat(GeneralMediaFormat::Hevc);
|
||||
case Avc1: case Avc2: case Avc3: case Avc4: case H264Decoder1: case H264Decoder2:
|
||||
case H264Decoder3: case H264Decoder4: case H264Decoder5: case H264Decoder6:
|
||||
return MediaFormat(GeneralMediaFormat::Avc);
|
||||
case Divx4Decoder1: case Divx4Decoder2:
|
||||
case H263Quicktime: case H2633GPP: case XvidDecoder1: case XvidDecoder2:
|
||||
case XvidDecoder3: case XvidDecoder4: case XvidDecoder5: case Divx5Decoder:
|
||||
return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg4AdvancedSimpleProfile0);
|
||||
case Divx3Decoder1: case Divx3Decoder2: case Divx3Decoder3: case Divx3Decoder4: case Divx3Decoder5:
|
||||
case Divx3Decoder6: case Divx3Decoder7: case Divx3Decoder8: case Divx3Decoder9: case Divx3Decoder10:
|
||||
case Divx3Decoder11: case Divx3Decoder12: case Divx3Decoder13: case Divx3Decoder14: case Divx3Decoder15:
|
||||
return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg4SimpleProfile0);
|
||||
case Tiff:
|
||||
return GeneralMediaFormat::Tiff;
|
||||
case AppleTextAtsuiCodec:
|
||||
return GeneralMediaFormat::TimedText;
|
||||
case Raw:
|
||||
return GeneralMediaFormat::UncompressedVideoFrames;
|
||||
case Jpeg:
|
||||
return GeneralMediaFormat::Jpeg;
|
||||
case Gif:
|
||||
return GeneralMediaFormat::Gif;
|
||||
case Png:
|
||||
return GeneralMediaFormat::Png;
|
||||
case AdpcmAcm:
|
||||
return GeneralMediaFormat::AdpcmAcm;
|
||||
case ImaadpcmAcm:
|
||||
return GeneralMediaFormat::ImaadpcmAcm;
|
||||
case Mp3CbrOnly: case Mp3:
|
||||
return MediaFormat(GeneralMediaFormat::Mpeg1Audio, SubFormats::Mpeg1Layer3);
|
||||
case Mpeg4Audio:
|
||||
return GeneralMediaFormat::Aac;
|
||||
case Alac:
|
||||
return GeneralMediaFormat::Alac;
|
||||
case Ac3:
|
||||
return GeneralMediaFormat::Ac3;
|
||||
case EAc3:
|
||||
return GeneralMediaFormat::EAc3;
|
||||
case DolbyMpl:
|
||||
return GeneralMediaFormat::DolbyMlp;
|
||||
case Ac4:
|
||||
return GeneralMediaFormat::Ac4;
|
||||
case Rv20: case Rv30: case Rv40:
|
||||
return GeneralMediaFormat::RealVideo;
|
||||
case Int24: case Int32:
|
||||
return MediaFormat(GeneralMediaFormat::Pcm);
|
||||
case Int16Be:
|
||||
return MediaFormat(GeneralMediaFormat::Pcm, SubFormats::PcmIntBe);
|
||||
case Int16Le:
|
||||
return MediaFormat(GeneralMediaFormat::Pcm, SubFormats::PcmIntLe);
|
||||
case FloatingPoint32Bit: case FloatingPoint64Bit:
|
||||
return MediaFormat(GeneralMediaFormat::Pcm, SubFormats::PcmFloatIeee);
|
||||
case Amr: case AmrNarrowband:
|
||||
return MediaFormat(GeneralMediaFormat::Amr);
|
||||
case Dts: case DtsH:
|
||||
return MediaFormat(GeneralMediaFormat::Dts);
|
||||
case DtsE:
|
||||
return MediaFormat(GeneralMediaFormat::Dts, SubFormats::DtsExpress);
|
||||
case WindowsMediaAudio: case WindowsMediaAudio7:
|
||||
case WindowsMediaAudio9Professional: case WindowsMediaAudio9Standard:
|
||||
return MediaFormat(GeneralMediaFormat::WindowsMediaAudio);
|
||||
case MsMpeg4V1Decoder1: case MsMpeg4V1Decoder2: case MsMpeg4V1Decoder3:
|
||||
case MsMpeg4V1Decoder4: case MsMpeg4V1Decoder5: case MsMpeg4V1Decoder6:
|
||||
return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 1);
|
||||
case MsMpeg4V2Decoder1: case MsMpeg4V2Decoder2: case MsMpeg4V2Decoder3:
|
||||
case MsMpeg4V2Decoder4:
|
||||
return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 2);
|
||||
case MsMpeg4V3Decoder1: case MsMpeg4V3Decoder2:
|
||||
return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 3);
|
||||
case WindowsMediaVideoV17:
|
||||
return MediaFormat(GeneralMediaFormat::WindowsMediaVideo, 1);
|
||||
case WindowsMediaVideoV2: case WindowsMediaVideoV8:
|
||||
return MediaFormat(GeneralMediaFormat::WindowsMediaVideo, 2);
|
||||
// TODO: map more FOURCCs
|
||||
default:
|
||||
return GeneralMediaFormat::Unknown;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MP4 media format description extensions.
|
||||
* \sa https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html
|
||||
*/
|
||||
namespace Mp4FormatExtensionIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MPEG-4 elementary stream object IDs.
|
||||
*/
|
||||
namespace Mpeg4ElementaryStreamObjectIds {
|
||||
|
||||
/*!
|
||||
* \brief Returns the Media::MediaFormat denoted by the specified MPEG-4 stream ID.
|
||||
*/
|
||||
MediaFormat streamObjectTypeFormat(byte streamObjectTypeId)
|
||||
{
|
||||
switch(streamObjectTypeId) {
|
||||
case SystemsIso144961: return GeneralMediaFormat::Systems;
|
||||
case SystemsIso144961v2: return MediaFormat(GeneralMediaFormat::Systems, 2);
|
||||
case InteractionStream: return GeneralMediaFormat::InteractionStream;
|
||||
case AfxStream: return GeneralMediaFormat::AfxStream;
|
||||
case FontDataStream: return GeneralMediaFormat::FontDataStream;
|
||||
case SynthesizedTextureStream: return GeneralMediaFormat::SynthesizedTextureStream;
|
||||
case StreamingTextStream: return GeneralMediaFormat::StreamingTextStream;
|
||||
case Mpeg4Visual: return GeneralMediaFormat::Mpeg4Video;
|
||||
case Avc: return GeneralMediaFormat::Avc;
|
||||
case ParameterSetsForAvc: return GeneralMediaFormat::Avc;
|
||||
case Als: return GeneralMediaFormat::Als;
|
||||
case Sa0c: return GeneralMediaFormat::Sa0c;
|
||||
case Aac: return MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LowComplexityProfile);
|
||||
case Mpeg2VideoSimpleProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2SimpleProfile);
|
||||
case Mpeg2VideoMainProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2SnrProfile);
|
||||
case Mpeg2VideoSnrProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2SpatialProfile);
|
||||
case Mpeg2VideoSpatialProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2HighProfile);
|
||||
case Mpeg2VideoHighProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2HighProfile);
|
||||
case Mpeg2Video422Profile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2SimpleProfile);
|
||||
case Mpeg2AacMainProfile: return MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg2MainProfile);
|
||||
case Mpeg2AacLowComplexityProfile: return MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg2LowComplexityProfile);
|
||||
case Mpeg2AacScaleableSamplingRateProfile: return MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg2ScalableSamplingRateProfile);
|
||||
case Mpeg2Audio: return GeneralMediaFormat::Mpeg2Audio;
|
||||
case Mpeg1Video: return GeneralMediaFormat::Mpeg1Video;
|
||||
case Mpeg1Audio: return GeneralMediaFormat::Mpeg1Audio;
|
||||
case Jpeg: return GeneralMediaFormat::Jpeg;
|
||||
case Png: return GeneralMediaFormat::Png;
|
||||
case Evrc: case PrivateEvrc: return GeneralMediaFormat::Evrc;
|
||||
case Smv: return GeneralMediaFormat::Smv;
|
||||
case Gpp2Cmf: return GeneralMediaFormat::Gpp2Cmf;
|
||||
case Vc1: return GeneralMediaFormat::Vc1;
|
||||
case Dirac: return GeneralMediaFormat::Dirac;
|
||||
case Ac3: case PrivateAc3: return GeneralMediaFormat::Ac3;
|
||||
case EAc3: return GeneralMediaFormat::EAc3;
|
||||
case Dts: case PrivateDts: return GeneralMediaFormat::Dts;
|
||||
case DtsHdHighResolution: return MediaFormat(GeneralMediaFormat::DtsHd, SubFormats::DtsHdHighResolution);
|
||||
case DtsHdMasterAudio: return MediaFormat(GeneralMediaFormat::DtsHd, SubFormats::DtsHdMasterAudio);
|
||||
case DtsHdExpress: return MediaFormat(GeneralMediaFormat::DtsHd, SubFormats::DtsExpress);
|
||||
case PrivateOgg: case PrivateOgg2: return GeneralMediaFormat::Vorbis;
|
||||
case PrivateQcelp: return GeneralMediaFormat::Qcelp;
|
||||
default: return MediaFormat();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all known MPEG-4 descriptor IDs.
|
||||
*/
|
||||
namespace Mpeg4DescriptorIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the name of the stream type denoted by the specified MPEG-4 stream type ID.
|
||||
*/
|
||||
namespace Mpeg4ElementaryStreamTypeIds {
|
||||
|
||||
/*!
|
||||
* \brief Returns the name of the stream type denoted by the specified MPEG-4 stream type ID.
|
||||
*/
|
||||
const char *streamTypeName(byte streamTypeId)
|
||||
{
|
||||
switch(streamTypeId) {
|
||||
case ObjectDescriptor: return "object descriptor";
|
||||
case ClockReference: return "clock reference";
|
||||
case SceneDescriptor: return "scene descriptor";
|
||||
case Visual: return "visual";
|
||||
case Audio: return "audio";
|
||||
case Mpeg7: return "MPEG-7";
|
||||
case Ipmps: return "IMPS";
|
||||
case ObjectContentInfo: return "object content info";
|
||||
case MpegJava: return "MPEG Java";
|
||||
case Interaction: return "interaction";
|
||||
case Ipmp: return "IPMP";
|
||||
case FontData: return "font data";
|
||||
case StreamingText: return "streaming text";
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MPEG-4 audio object type IDs.
|
||||
* \sa http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio
|
||||
*/
|
||||
namespace Mpeg4AudioObjectIds {
|
||||
|
||||
LIB_EXPORT MediaFormat idToMediaFormat(byte mpeg4AudioObjectId, bool sbrPresent, bool psPresent)
|
||||
{
|
||||
MediaFormat fmt;
|
||||
switch(mpeg4AudioObjectId) {
|
||||
case AacMain:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4MainProfile);
|
||||
break;
|
||||
case AacLc:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LowComplexityProfile);
|
||||
break;
|
||||
case AacSsr:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ScalableSamplingRateProfile);
|
||||
break;
|
||||
case AacLtp:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LongTermPrediction);
|
||||
break;
|
||||
case Sbr:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LowComplexityProfile, ExtensionFormats::SpectralBandReplication);
|
||||
break;
|
||||
case AacScalable:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ScalableSamplingRateProfile);
|
||||
break;
|
||||
case ErAacLc:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ERLowComplecityProfile);
|
||||
break;
|
||||
case ErAacLtp:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ERLongTermPrediction);
|
||||
break;
|
||||
case ErAacLd:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ERLowDelay);
|
||||
break;
|
||||
case Ps:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LowComplexityProfile, ExtensionFormats::ParametricStereo);
|
||||
break;
|
||||
case Layer1:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Mpeg1Audio, SubFormats::Mpeg1Layer1);
|
||||
break;
|
||||
case Layer2:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Mpeg1Audio, SubFormats::Mpeg1Layer2);
|
||||
break;
|
||||
case Layer3:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Mpeg1Audio, SubFormats::Mpeg1Layer3);
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
if(sbrPresent) {
|
||||
fmt.extension |= ExtensionFormats::SpectralBandReplication;
|
||||
}
|
||||
if(psPresent) {
|
||||
fmt.extension |= ExtensionFormats::ParametricStereo;
|
||||
}
|
||||
return fmt;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uint32 mpeg4SamplingFrequencyTable[] = {
|
||||
96000, 88200, 64000, 48000, 44100, 32000,
|
||||
24000, 22050, 16000, 12000, 11025, 8000, 7350
|
||||
};
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MPEG-4 channel configurations.
|
||||
*/
|
||||
namespace Mpeg4ChannelConfigs {
|
||||
|
||||
/*!
|
||||
* \brief Returns the string representation for the specified MPEG-4 channel config.
|
||||
*/
|
||||
const char *channelConfigString(byte config)
|
||||
{
|
||||
switch(config) {
|
||||
case AotSpecificConfig:
|
||||
return "defined in AOT Specific Config";
|
||||
case FrontCenter:
|
||||
return "1 channel: front-center";
|
||||
case FrontLeftFrontRight:
|
||||
return "2 channels: front-left, front-right";
|
||||
case FrontCenterFrontLeftFrontRight:
|
||||
return "3 channels: front-center, front-left, front-right";
|
||||
case FrontCenterFrontLeftFrontRightBackCenter:
|
||||
return "4 channels: front-center, front-left, front-right, back-center";
|
||||
case FrontCenterFrontLeftFrontRightBackLeftBackRight:
|
||||
return "5 channels: front-center, front-left, front-right, back-left, back-right";
|
||||
case FrontCenterFrontLeftFrontRightBackLeftBackRightLFEChannel:
|
||||
return "6 channels: front-center, front-left, front-right, back-left, back-right, LFE-channel";
|
||||
case FrontCenterFrontLeftFrontRightSideLeftSideRightBackLeftBackRightLFEChannel:
|
||||
return "8 channels: front-center, front-left, front-right, side-left, side-right, back-left, back-right, LFE-channel";
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the channel count for the specified MPEG-4 channel config.
|
||||
*/
|
||||
byte channelCount(byte config)
|
||||
{
|
||||
switch(config) {
|
||||
case FrontCenter:
|
||||
return 1;
|
||||
case FrontLeftFrontRight:
|
||||
return 2;
|
||||
case FrontCenterFrontLeftFrontRight:
|
||||
return 3;
|
||||
case FrontCenterFrontLeftFrontRightBackCenter:
|
||||
return 4;
|
||||
case FrontCenterFrontLeftFrontRightBackLeftBackRight:
|
||||
return 5;
|
||||
case FrontCenterFrontLeftFrontRightBackLeftBackRightLFEChannel:
|
||||
return 6;
|
||||
case FrontCenterFrontLeftFrontRightSideLeftSideRightBackLeftBackRightLFEChannel:
|
||||
return 8;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates MPEG-4 video (14496-2) codes.
|
||||
*/
|
||||
namespace Mpeg4VideoCodes {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates MPEG-2 video codes.
|
||||
*/
|
||||
namespace Mpeg2VideoCodes {
|
||||
}
|
||||
|
||||
}
|
||||
#include "./mp4ids.h"
|
||||
|
||||
#include "../mediaformat.h"
|
||||
|
||||
namespace Media {
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates the most common MP4 atom IDs.
|
||||
*/
|
||||
namespace Mp4AtomIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates IDs of MP4 atoms holding tag information.
|
||||
*/
|
||||
namespace Mp4TagAtomIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates "mean values" used in iTunes style MP4 tags.
|
||||
*/
|
||||
namespace Mp4TagExtendedMeanIds {
|
||||
const char *iTunes = "com.apple.iTunes";
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates "name values" used in iTunes style MP4 tags.
|
||||
*/
|
||||
namespace Mp4TagExtendedNameIds {
|
||||
const char *cdec = "cdec";
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MP4 media type IDs.
|
||||
*/
|
||||
namespace Mp4MediaTypeIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MP4 media format IDs (aka "FOURCCs").
|
||||
* \sa http://wiki.multimedia.cx/?title=QuickTime_container
|
||||
*/
|
||||
namespace FourccIds {
|
||||
|
||||
MediaFormat fourccToMediaFormat(uint32 fourccId)
|
||||
{
|
||||
switch(fourccId) {
|
||||
case Mpeg:
|
||||
return GeneralMediaFormat::Mpeg1Video;
|
||||
case Mpeg2Imx30: case Mpeg2Imx50:
|
||||
return GeneralMediaFormat::Mpeg2Video;
|
||||
case Mpeg4Video:
|
||||
return GeneralMediaFormat::Mpeg4Video;
|
||||
case Mpeg4TimedText:
|
||||
return GeneralMediaFormat::Mpeg4TimedText;
|
||||
case Hevc1: case Hevc2:
|
||||
return MediaFormat(GeneralMediaFormat::Hevc);
|
||||
case Avc1: case Avc2: case Avc3: case Avc4: case H264Decoder1: case H264Decoder2:
|
||||
case H264Decoder3: case H264Decoder4: case H264Decoder5: case H264Decoder6:
|
||||
return MediaFormat(GeneralMediaFormat::Avc);
|
||||
case Divx4Decoder1: case Divx4Decoder2:
|
||||
case H263Quicktime: case H2633GPP: case XvidDecoder1: case XvidDecoder2:
|
||||
case XvidDecoder3: case XvidDecoder4: case XvidDecoder5: case Divx5Decoder:
|
||||
return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg4AdvancedSimpleProfile0);
|
||||
case Divx3Decoder1: case Divx3Decoder2: case Divx3Decoder3: case Divx3Decoder4: case Divx3Decoder5:
|
||||
case Divx3Decoder6: case Divx3Decoder7: case Divx3Decoder8: case Divx3Decoder9: case Divx3Decoder10:
|
||||
case Divx3Decoder11: case Divx3Decoder12: case Divx3Decoder13: case Divx3Decoder14: case Divx3Decoder15:
|
||||
return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg4SimpleProfile0);
|
||||
case Tiff:
|
||||
return GeneralMediaFormat::Tiff;
|
||||
case AppleTextAtsuiCodec:
|
||||
return GeneralMediaFormat::TimedText;
|
||||
case Raw:
|
||||
return GeneralMediaFormat::UncompressedVideoFrames;
|
||||
case Jpeg:
|
||||
return GeneralMediaFormat::Jpeg;
|
||||
case Gif:
|
||||
return GeneralMediaFormat::Gif;
|
||||
case Png:
|
||||
return GeneralMediaFormat::Png;
|
||||
case AdpcmAcm:
|
||||
return GeneralMediaFormat::AdpcmAcm;
|
||||
case ImaadpcmAcm:
|
||||
return GeneralMediaFormat::ImaadpcmAcm;
|
||||
case Mp3CbrOnly: case Mp3:
|
||||
return MediaFormat(GeneralMediaFormat::Mpeg1Audio, SubFormats::Mpeg1Layer3);
|
||||
case Mpeg4Audio:
|
||||
return GeneralMediaFormat::Aac;
|
||||
case Alac:
|
||||
return GeneralMediaFormat::Alac;
|
||||
case Ac3:
|
||||
return GeneralMediaFormat::Ac3;
|
||||
case EAc3:
|
||||
return GeneralMediaFormat::EAc3;
|
||||
case DolbyMpl:
|
||||
return GeneralMediaFormat::DolbyMlp;
|
||||
case Ac4:
|
||||
return GeneralMediaFormat::Ac4;
|
||||
case Rv20: case Rv30: case Rv40:
|
||||
return GeneralMediaFormat::RealVideo;
|
||||
case Int24: case Int32:
|
||||
return MediaFormat(GeneralMediaFormat::Pcm);
|
||||
case Int16Be:
|
||||
return MediaFormat(GeneralMediaFormat::Pcm, SubFormats::PcmIntBe);
|
||||
case Int16Le:
|
||||
return MediaFormat(GeneralMediaFormat::Pcm, SubFormats::PcmIntLe);
|
||||
case FloatingPoint32Bit: case FloatingPoint64Bit:
|
||||
return MediaFormat(GeneralMediaFormat::Pcm, SubFormats::PcmFloatIeee);
|
||||
case Amr: case AmrNarrowband:
|
||||
return MediaFormat(GeneralMediaFormat::Amr);
|
||||
case Dts: case DtsH:
|
||||
return MediaFormat(GeneralMediaFormat::Dts);
|
||||
case DtsE:
|
||||
return MediaFormat(GeneralMediaFormat::Dts, SubFormats::DtsExpress);
|
||||
case WindowsMediaAudio: case WindowsMediaAudio7:
|
||||
case WindowsMediaAudio9Professional: case WindowsMediaAudio9Standard:
|
||||
return MediaFormat(GeneralMediaFormat::WindowsMediaAudio);
|
||||
case MsMpeg4V1Decoder1: case MsMpeg4V1Decoder2: case MsMpeg4V1Decoder3:
|
||||
case MsMpeg4V1Decoder4: case MsMpeg4V1Decoder5: case MsMpeg4V1Decoder6:
|
||||
return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 1);
|
||||
case MsMpeg4V2Decoder1: case MsMpeg4V2Decoder2: case MsMpeg4V2Decoder3:
|
||||
case MsMpeg4V2Decoder4:
|
||||
return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 2);
|
||||
case MsMpeg4V3Decoder1: case MsMpeg4V3Decoder2:
|
||||
return MediaFormat(GeneralMediaFormat::MicrosoftMpeg4, 3);
|
||||
case WindowsMediaVideoV17:
|
||||
return MediaFormat(GeneralMediaFormat::WindowsMediaVideo, 1);
|
||||
case WindowsMediaVideoV2: case WindowsMediaVideoV8:
|
||||
return MediaFormat(GeneralMediaFormat::WindowsMediaVideo, 2);
|
||||
// TODO: map more FOURCCs
|
||||
default:
|
||||
return GeneralMediaFormat::Unknown;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MP4 media format description extensions.
|
||||
* \sa https://developer.apple.com/library/mac/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html
|
||||
*/
|
||||
namespace Mp4FormatExtensionIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MPEG-4 elementary stream object IDs.
|
||||
*/
|
||||
namespace Mpeg4ElementaryStreamObjectIds {
|
||||
|
||||
/*!
|
||||
* \brief Returns the Media::MediaFormat denoted by the specified MPEG-4 stream ID.
|
||||
*/
|
||||
MediaFormat streamObjectTypeFormat(byte streamObjectTypeId)
|
||||
{
|
||||
switch(streamObjectTypeId) {
|
||||
case SystemsIso144961: return GeneralMediaFormat::Systems;
|
||||
case SystemsIso144961v2: return MediaFormat(GeneralMediaFormat::Systems, 2);
|
||||
case InteractionStream: return GeneralMediaFormat::InteractionStream;
|
||||
case AfxStream: return GeneralMediaFormat::AfxStream;
|
||||
case FontDataStream: return GeneralMediaFormat::FontDataStream;
|
||||
case SynthesizedTextureStream: return GeneralMediaFormat::SynthesizedTextureStream;
|
||||
case StreamingTextStream: return GeneralMediaFormat::StreamingTextStream;
|
||||
case Mpeg4Visual: return GeneralMediaFormat::Mpeg4Video;
|
||||
case Avc: return GeneralMediaFormat::Avc;
|
||||
case ParameterSetsForAvc: return GeneralMediaFormat::Avc;
|
||||
case Als: return GeneralMediaFormat::Als;
|
||||
case Sa0c: return GeneralMediaFormat::Sa0c;
|
||||
case Aac: return MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LowComplexityProfile);
|
||||
case Mpeg2VideoSimpleProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2SimpleProfile);
|
||||
case Mpeg2VideoMainProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2SnrProfile);
|
||||
case Mpeg2VideoSnrProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2SpatialProfile);
|
||||
case Mpeg2VideoSpatialProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2HighProfile);
|
||||
case Mpeg2VideoHighProfile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2HighProfile);
|
||||
case Mpeg2Video422Profile: return MediaFormat(GeneralMediaFormat::Mpeg4Video, SubFormats::Mpeg2SimpleProfile);
|
||||
case Mpeg2AacMainProfile: return MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg2MainProfile);
|
||||
case Mpeg2AacLowComplexityProfile: return MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg2LowComplexityProfile);
|
||||
case Mpeg2AacScaleableSamplingRateProfile: return MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg2ScalableSamplingRateProfile);
|
||||
case Mpeg2Audio: return GeneralMediaFormat::Mpeg2Audio;
|
||||
case Mpeg1Video: return GeneralMediaFormat::Mpeg1Video;
|
||||
case Mpeg1Audio: return GeneralMediaFormat::Mpeg1Audio;
|
||||
case Jpeg: return GeneralMediaFormat::Jpeg;
|
||||
case Png: return GeneralMediaFormat::Png;
|
||||
case Evrc: case PrivateEvrc: return GeneralMediaFormat::Evrc;
|
||||
case Smv: return GeneralMediaFormat::Smv;
|
||||
case Gpp2Cmf: return GeneralMediaFormat::Gpp2Cmf;
|
||||
case Vc1: return GeneralMediaFormat::Vc1;
|
||||
case Dirac: return GeneralMediaFormat::Dirac;
|
||||
case Ac3: case PrivateAc3: return GeneralMediaFormat::Ac3;
|
||||
case EAc3: return GeneralMediaFormat::EAc3;
|
||||
case Dts: case PrivateDts: return GeneralMediaFormat::Dts;
|
||||
case DtsHdHighResolution: return MediaFormat(GeneralMediaFormat::DtsHd, SubFormats::DtsHdHighResolution);
|
||||
case DtsHdMasterAudio: return MediaFormat(GeneralMediaFormat::DtsHd, SubFormats::DtsHdMasterAudio);
|
||||
case DtsHdExpress: return MediaFormat(GeneralMediaFormat::DtsHd, SubFormats::DtsExpress);
|
||||
case PrivateOgg: case PrivateOgg2: return GeneralMediaFormat::Vorbis;
|
||||
case PrivateQcelp: return GeneralMediaFormat::Qcelp;
|
||||
default: return MediaFormat();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all known MPEG-4 descriptor IDs.
|
||||
*/
|
||||
namespace Mpeg4DescriptorIds {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the name of the stream type denoted by the specified MPEG-4 stream type ID.
|
||||
*/
|
||||
namespace Mpeg4ElementaryStreamTypeIds {
|
||||
|
||||
/*!
|
||||
* \brief Returns the name of the stream type denoted by the specified MPEG-4 stream type ID.
|
||||
*/
|
||||
const char *streamTypeName(byte streamTypeId)
|
||||
{
|
||||
switch(streamTypeId) {
|
||||
case ObjectDescriptor: return "object descriptor";
|
||||
case ClockReference: return "clock reference";
|
||||
case SceneDescriptor: return "scene descriptor";
|
||||
case Visual: return "visual";
|
||||
case Audio: return "audio";
|
||||
case Mpeg7: return "MPEG-7";
|
||||
case Ipmps: return "IMPS";
|
||||
case ObjectContentInfo: return "object content info";
|
||||
case MpegJava: return "MPEG Java";
|
||||
case Interaction: return "interaction";
|
||||
case Ipmp: return "IPMP";
|
||||
case FontData: return "font data";
|
||||
case StreamingText: return "streaming text";
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MPEG-4 audio object type IDs.
|
||||
* \sa http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio
|
||||
*/
|
||||
namespace Mpeg4AudioObjectIds {
|
||||
|
||||
TAG_PARSER_EXPORT MediaFormat idToMediaFormat(byte mpeg4AudioObjectId, bool sbrPresent, bool psPresent)
|
||||
{
|
||||
MediaFormat fmt;
|
||||
switch(mpeg4AudioObjectId) {
|
||||
case AacMain:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4MainProfile);
|
||||
break;
|
||||
case AacLc:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LowComplexityProfile);
|
||||
break;
|
||||
case AacSsr:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ScalableSamplingRateProfile);
|
||||
break;
|
||||
case AacLtp:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LongTermPrediction);
|
||||
break;
|
||||
case Sbr:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LowComplexityProfile, ExtensionFormats::SpectralBandReplication);
|
||||
break;
|
||||
case AacScalable:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ScalableSamplingRateProfile);
|
||||
break;
|
||||
case ErAacLc:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ERLowComplecityProfile);
|
||||
break;
|
||||
case ErAacLtp:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ERLongTermPrediction);
|
||||
break;
|
||||
case ErAacLd:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4ERLowDelay);
|
||||
break;
|
||||
case Ps:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Aac, SubFormats::AacMpeg4LowComplexityProfile, ExtensionFormats::ParametricStereo);
|
||||
break;
|
||||
case Layer1:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Mpeg1Audio, SubFormats::Mpeg1Layer1);
|
||||
break;
|
||||
case Layer2:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Mpeg1Audio, SubFormats::Mpeg1Layer2);
|
||||
break;
|
||||
case Layer3:
|
||||
fmt = MediaFormat(GeneralMediaFormat::Mpeg1Audio, SubFormats::Mpeg1Layer3);
|
||||
break;
|
||||
default:
|
||||
;
|
||||
}
|
||||
if(sbrPresent) {
|
||||
fmt.extension |= ExtensionFormats::SpectralBandReplication;
|
||||
}
|
||||
if(psPresent) {
|
||||
fmt.extension |= ExtensionFormats::ParametricStereo;
|
||||
}
|
||||
return fmt;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uint32 mpeg4SamplingFrequencyTable[] = {
|
||||
96000, 88200, 64000, 48000, 44100, 32000,
|
||||
24000, 22050, 16000, 12000, 11025, 8000, 7350
|
||||
};
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates all supported MPEG-4 channel configurations.
|
||||
*/
|
||||
namespace Mpeg4ChannelConfigs {
|
||||
|
||||
/*!
|
||||
* \brief Returns the string representation for the specified MPEG-4 channel config.
|
||||
*/
|
||||
const char *channelConfigString(byte config)
|
||||
{
|
||||
switch(config) {
|
||||
case AotSpecificConfig:
|
||||
return "defined in AOT Specific Config";
|
||||
case FrontCenter:
|
||||
return "1 channel: front-center";
|
||||
case FrontLeftFrontRight:
|
||||
return "2 channels: front-left, front-right";
|
||||
case FrontCenterFrontLeftFrontRight:
|
||||
return "3 channels: front-center, front-left, front-right";
|
||||
case FrontCenterFrontLeftFrontRightBackCenter:
|
||||
return "4 channels: front-center, front-left, front-right, back-center";
|
||||
case FrontCenterFrontLeftFrontRightBackLeftBackRight:
|
||||
return "5 channels: front-center, front-left, front-right, back-left, back-right";
|
||||
case FrontCenterFrontLeftFrontRightBackLeftBackRightLFEChannel:
|
||||
return "6 channels: front-center, front-left, front-right, back-left, back-right, LFE-channel";
|
||||
case FrontCenterFrontLeftFrontRightSideLeftSideRightBackLeftBackRightLFEChannel:
|
||||
return "8 channels: front-center, front-left, front-right, side-left, side-right, back-left, back-right, LFE-channel";
|
||||
default:
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the channel count for the specified MPEG-4 channel config.
|
||||
*/
|
||||
byte channelCount(byte config)
|
||||
{
|
||||
switch(config) {
|
||||
case FrontCenter:
|
||||
return 1;
|
||||
case FrontLeftFrontRight:
|
||||
return 2;
|
||||
case FrontCenterFrontLeftFrontRight:
|
||||
return 3;
|
||||
case FrontCenterFrontLeftFrontRightBackCenter:
|
||||
return 4;
|
||||
case FrontCenterFrontLeftFrontRightBackLeftBackRight:
|
||||
return 5;
|
||||
case FrontCenterFrontLeftFrontRightBackLeftBackRightLFEChannel:
|
||||
return 6;
|
||||
case FrontCenterFrontLeftFrontRightSideLeftSideRightBackLeftBackRightLFEChannel:
|
||||
return 8;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates MPEG-4 video (14496-2) codes.
|
||||
*/
|
||||
namespace Mpeg4VideoCodes {
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Encapsulates MPEG-2 video codes.
|
||||
*/
|
||||
namespace Mpeg2VideoCodes {
|
||||
}
|
||||
|
||||
}
|
||||
|
|
1425
mp4/mp4ids.h
1425
mp4/mp4ids.h
File diff suppressed because it is too large
Load Diff
|
@ -11,7 +11,7 @@ namespace Media
|
|||
class Mp4Atom;
|
||||
class Mp4Tag;
|
||||
|
||||
class LIB_EXPORT Mp4TagMaker
|
||||
class TAG_PARSER_EXPORT Mp4TagMaker
|
||||
{
|
||||
friend class Mp4Tag;
|
||||
|
||||
|
@ -46,7 +46,7 @@ inline uint64 Mp4TagMaker::requiredSize() const
|
|||
return m_metaSize;
|
||||
}
|
||||
|
||||
class LIB_EXPORT Mp4Tag : public FieldMapBasedTag<Mp4TagField>
|
||||
class TAG_PARSER_EXPORT Mp4Tag : public FieldMapBasedTag<Mp4TagField>
|
||||
{
|
||||
public:
|
||||
Mp4Tag();
|
||||
|
|
|
@ -53,7 +53,7 @@ class Mp4TagField;
|
|||
* \brief Defines traits for the TagField implementation of the Mp4TagField class.
|
||||
*/
|
||||
template <>
|
||||
class LIB_EXPORT TagFieldTraits<Mp4TagField>
|
||||
class TAG_PARSER_EXPORT TagFieldTraits<Mp4TagField>
|
||||
{
|
||||
public:
|
||||
/*!
|
||||
|
@ -74,7 +74,7 @@ public:
|
|||
|
||||
class Mp4Atom;
|
||||
|
||||
class LIB_EXPORT Mp4TagFieldMaker
|
||||
class TAG_PARSER_EXPORT Mp4TagFieldMaker
|
||||
{
|
||||
friend class Mp4TagField;
|
||||
|
||||
|
@ -110,7 +110,7 @@ inline uint64 Mp4TagFieldMaker::requiredSize() const
|
|||
return m_totalSize;
|
||||
}
|
||||
|
||||
class LIB_EXPORT Mp4TagField : public TagField<Mp4TagField>, public StatusProvider
|
||||
class TAG_PARSER_EXPORT Mp4TagField : public TagField<Mp4TagField>, public StatusProvider
|
||||
{
|
||||
friend class TagField<Mp4TagField>;
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ class Mp4Atom;
|
|||
class Mpeg4Descriptor;
|
||||
class AvcConfiguration;
|
||||
|
||||
class LIB_EXPORT Mpeg4AudioSpecificConfig
|
||||
class TAG_PARSER_EXPORT Mpeg4AudioSpecificConfig
|
||||
{
|
||||
public:
|
||||
Mpeg4AudioSpecificConfig();
|
||||
|
@ -39,7 +39,7 @@ public:
|
|||
byte epConfig;
|
||||
};
|
||||
|
||||
class LIB_EXPORT Mpeg4VideoSpecificConfig
|
||||
class TAG_PARSER_EXPORT Mpeg4VideoSpecificConfig
|
||||
{
|
||||
public:
|
||||
Mpeg4VideoSpecificConfig();
|
||||
|
@ -48,7 +48,7 @@ public:
|
|||
std::string userData;
|
||||
};
|
||||
|
||||
class LIB_EXPORT Mpeg4ElementaryStreamInfo
|
||||
class TAG_PARSER_EXPORT Mpeg4ElementaryStreamInfo
|
||||
{
|
||||
public:
|
||||
Mpeg4ElementaryStreamInfo();
|
||||
|
@ -116,7 +116,7 @@ inline bool Mpeg4ElementaryStreamInfo::upstream() const
|
|||
return decCfgDescFlags & 0x02;
|
||||
}
|
||||
|
||||
class LIB_EXPORT Mp4Track : public AbstractTrack
|
||||
class TAG_PARSER_EXPORT Mp4Track : public AbstractTrack
|
||||
{
|
||||
public:
|
||||
Mp4Track(Mp4Atom &trakAtom);
|
||||
|
|
|
@ -14,7 +14,7 @@ class Mpeg4Descriptor;
|
|||
* \brief Defines traits for the GenericFileElement implementation Mpeg4Descriptor.
|
||||
*/
|
||||
template <>
|
||||
class LIB_EXPORT FileElementTraits<Mpeg4Descriptor>
|
||||
class TAG_PARSER_EXPORT FileElementTraits<Mpeg4Descriptor>
|
||||
{
|
||||
public:
|
||||
/*!
|
||||
|
@ -46,7 +46,7 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class LIB_EXPORT Mpeg4Descriptor : public GenericFileElement<Mpeg4Descriptor>
|
||||
class TAG_PARSER_EXPORT Mpeg4Descriptor : public GenericFileElement<Mpeg4Descriptor>
|
||||
{
|
||||
friend class GenericFileElement<Mpeg4Descriptor>;
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#ifndef MP3FRAMEAUDIOSTREAM_H
|
||||
#define MP3FRAMEAUDIOSTREAM_H
|
||||
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
#include <c++utilities/application/global.h>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
|
@ -25,7 +26,7 @@ enum class MpegChannelMode
|
|||
Unspecifed /**< used to indicate that the channel mode is unknown */
|
||||
};
|
||||
|
||||
LIB_EXPORT const char *mpegChannelModeString(MpegChannelMode channelMode);
|
||||
TAG_PARSER_EXPORT const char *mpegChannelModeString(MpegChannelMode channelMode);
|
||||
|
||||
enum class XingHeaderFlags
|
||||
{
|
||||
|
@ -36,7 +37,7 @@ enum class XingHeaderFlags
|
|||
HasQualityIndicator = 0x8u /**< Xing quality indicator is present */
|
||||
};
|
||||
|
||||
class LIB_EXPORT MpegAudioFrame
|
||||
class TAG_PARSER_EXPORT MpegAudioFrame
|
||||
{
|
||||
public:
|
||||
MpegAudioFrame();
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
namespace Media
|
||||
{
|
||||
|
||||
class LIB_EXPORT MpegAudioFrameStream : public AbstractTrack
|
||||
class TAG_PARSER_EXPORT MpegAudioFrameStream : public AbstractTrack
|
||||
{
|
||||
public:
|
||||
MpegAudioFrameStream(std::iostream &stream, uint64 startOffset);
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef NOTIFICATION_H
|
||||
#define NOTIFICATION_H
|
||||
|
||||
#include "./global.h"
|
||||
|
||||
#include <c++utilities/chrono/datetime.h>
|
||||
|
||||
#include <string>
|
||||
|
@ -38,7 +40,7 @@ class Notification;
|
|||
|
||||
typedef std::list<Notification> NotificationList;
|
||||
|
||||
class LIB_EXPORT Notification
|
||||
class TAG_PARSER_EXPORT Notification
|
||||
{
|
||||
public:
|
||||
Notification(NotificationType type, const std::string &message, const std::string &context);
|
||||
|
|
|
@ -25,7 +25,7 @@ class OggContainer;
|
|||
/*!
|
||||
* \brief The OggParameter struct holds the OGG parameter for a VorbisComment.
|
||||
*/
|
||||
struct LIB_EXPORT OggParameter
|
||||
struct TAG_PARSER_EXPORT OggParameter
|
||||
{
|
||||
OggParameter();
|
||||
void set(std::size_t pageIndex, std::size_t segmentIndex, bool lastMetaDataBlock, GeneralMediaFormat streamFormat = GeneralMediaFormat::Vorbis);
|
||||
|
@ -65,7 +65,7 @@ inline void OggParameter::set(std::size_t pageIndex, std::size_t segmentIndex, b
|
|||
this->streamFormat = streamFormat;
|
||||
}
|
||||
|
||||
class LIB_EXPORT OggVorbisComment : public VorbisComment
|
||||
class TAG_PARSER_EXPORT OggVorbisComment : public VorbisComment
|
||||
{
|
||||
friend class OggContainer;
|
||||
|
||||
|
@ -124,7 +124,7 @@ inline const OggParameter &OggVorbisComment::oggParams() const
|
|||
return m_oggParams;
|
||||
}
|
||||
|
||||
class LIB_EXPORT OggContainer : public GenericContainer<MediaFileInfo, OggVorbisComment, OggStream, OggPage>
|
||||
class TAG_PARSER_EXPORT OggContainer : public GenericContainer<MediaFileInfo, OggVorbisComment, OggStream, OggPage>
|
||||
{
|
||||
friend class OggStream;
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT OggIterator
|
||||
class TAG_PARSER_EXPORT OggIterator
|
||||
{
|
||||
public:
|
||||
OggIterator(std::istream &stream, uint64 startOffset, uint64 streamSize);
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#ifndef OGGPAGE_H
|
||||
#define OGGPAGE_H
|
||||
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
#include <c++utilities/application/global.h>
|
||||
|
||||
#include <vector>
|
||||
#include <numeric>
|
||||
|
@ -10,7 +11,7 @@
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT OggPage
|
||||
class TAG_PARSER_EXPORT OggPage
|
||||
{
|
||||
public:
|
||||
OggPage();
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace Media {
|
|||
class OggContainer;
|
||||
class OggIterator;
|
||||
|
||||
class LIB_EXPORT OggStream : public AbstractTrack
|
||||
class TAG_PARSER_EXPORT OggStream : public AbstractTrack
|
||||
{
|
||||
friend class OggContainer;
|
||||
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
#ifndef MEDIA_OPUSIDENTIFICATIONHEADER_H
|
||||
#define MEDIA_OPUSIDENTIFICATIONHEADER_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
namespace Media {
|
||||
|
||||
class OggIterator;
|
||||
|
||||
class LIB_EXPORT OpusIdentificationHeader
|
||||
class TAG_PARSER_EXPORT OpusIdentificationHeader
|
||||
{
|
||||
public:
|
||||
OpusIdentificationHeader();
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef POSITIONINSET_H
|
||||
#define POSITIONINSET_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <c++utilities/conversion/stringconversion.h>
|
||||
|
||||
#include <string>
|
||||
|
@ -16,7 +17,7 @@ namespace Media {
|
|||
* This class is used to parse and store values like "9/11" which are used
|
||||
* by some tag formats to denote track positions.
|
||||
*/
|
||||
class LIB_EXPORT PositionInSet
|
||||
class TAG_PARSER_EXPORT PositionInSet
|
||||
{
|
||||
public:
|
||||
constexpr PositionInSet(int32 position = 0, int32 total = 0);
|
||||
|
|
15
signature.h
15
signature.h
|
@ -4,7 +4,6 @@
|
|||
#include "./mediaformat.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
#include <c++utilities/application/global.h>
|
||||
|
||||
namespace Media {
|
||||
|
||||
|
@ -62,13 +61,13 @@ enum class ContainerFormat
|
|||
Zip /**< ZIP archive */
|
||||
};
|
||||
|
||||
LIB_EXPORT ContainerFormat parseSignature(const char *buffer, int bufferSize);
|
||||
LIB_EXPORT const char *containerFormatName(ContainerFormat containerFormat);
|
||||
LIB_EXPORT const char *containerFormatAbbreviation(ContainerFormat containerFormat, MediaType mediaType = MediaType::Unknown, unsigned int version = 0);
|
||||
LIB_EXPORT const char *containerFormatSubversion(ContainerFormat containerFormat);
|
||||
LIB_EXPORT const char *containerMimeType(ContainerFormat containerFormat, MediaType mediaType = MediaType::Unknown);
|
||||
LIB_EXPORT TagTargetLevel containerTargetLevel(ContainerFormat containerFormat, uint64 targetLevelValue);
|
||||
LIB_EXPORT uint64 containerTargetLevelValue(ContainerFormat containerFormat, TagTargetLevel targetLevel);
|
||||
TAG_PARSER_EXPORT ContainerFormat parseSignature(const char *buffer, int bufferSize);
|
||||
TAG_PARSER_EXPORT const char *containerFormatName(ContainerFormat containerFormat);
|
||||
TAG_PARSER_EXPORT const char *containerFormatAbbreviation(ContainerFormat containerFormat, MediaType mediaType = MediaType::Unknown, unsigned int version = 0);
|
||||
TAG_PARSER_EXPORT const char *containerFormatSubversion(ContainerFormat containerFormat);
|
||||
TAG_PARSER_EXPORT const char *containerMimeType(ContainerFormat containerFormat, MediaType mediaType = MediaType::Unknown);
|
||||
TAG_PARSER_EXPORT TagTargetLevel containerTargetLevel(ContainerFormat containerFormat, uint64 targetLevelValue);
|
||||
TAG_PARSER_EXPORT uint64 containerTargetLevelValue(ContainerFormat containerFormat, TagTargetLevel targetLevel);
|
||||
|
||||
}
|
||||
|
||||
|
|
5
size.h
5
size.h
|
@ -1,7 +1,8 @@
|
|||
#ifndef SIZE_H
|
||||
#define SIZE_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
#include <string>
|
||||
|
@ -12,7 +13,7 @@ namespace Media {
|
|||
/*!
|
||||
* \brief The Size class defines the size of a two-dimensional object using integer point precision.
|
||||
*/
|
||||
class LIB_EXPORT Size
|
||||
class TAG_PARSER_EXPORT Size
|
||||
{
|
||||
public:
|
||||
constexpr Size();
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
namespace Media {
|
||||
|
||||
class LIB_EXPORT StatusProvider
|
||||
class TAG_PARSER_EXPORT StatusProvider
|
||||
{
|
||||
public:
|
||||
typedef std::function<void (StatusProvider &sender)> CallbackFunction;
|
||||
|
|
2
tag.h
2
tag.h
|
@ -96,7 +96,7 @@ constexpr KnownField nextKnownField(KnownField field)
|
|||
return field == lastKnownField ? KnownField::Invalid : static_cast<KnownField>(static_cast<int>(field) + 1);
|
||||
}
|
||||
|
||||
class LIB_EXPORT Tag : public StatusProvider
|
||||
class TAG_PARSER_EXPORT Tag : public StatusProvider
|
||||
{
|
||||
public:
|
||||
virtual ~Tag();
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
#ifndef MEDIA_TAGTARGET_H
|
||||
#define MEDIA_TAGTARGET_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "./global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
#include <string>
|
||||
|
@ -25,9 +26,9 @@ enum class TagTargetLevel : unsigned char
|
|||
Collection
|
||||
};
|
||||
|
||||
LIB_EXPORT const char *tagTargetLevelName(TagTargetLevel tagTargetLevel);
|
||||
TAG_PARSER_EXPORT const char *tagTargetLevelName(TagTargetLevel tagTargetLevel);
|
||||
|
||||
class LIB_EXPORT TagTarget
|
||||
class TAG_PARSER_EXPORT TagTarget
|
||||
{
|
||||
public:
|
||||
typedef uint64 IdType;
|
||||
|
|
|
@ -61,7 +61,7 @@ enum class TagDataType : unsigned int
|
|||
Undefined /**< undefined/invalid data type */
|
||||
};
|
||||
|
||||
class LIB_EXPORT TagValue
|
||||
class TAG_PARSER_EXPORT TagValue
|
||||
{
|
||||
public:
|
||||
// constructor, destructor
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace Media {
|
|||
class OggIterator;
|
||||
class VorbisComment;
|
||||
|
||||
class LIB_EXPORT VorbisComment : public FieldMapBasedTag<VorbisCommentField, CaseInsensitiveStringComparer>
|
||||
class TAG_PARSER_EXPORT VorbisComment : public FieldMapBasedTag<VorbisCommentField, CaseInsensitiveStringComparer>
|
||||
{
|
||||
public:
|
||||
VorbisComment();
|
||||
|
|
|
@ -38,7 +38,7 @@ class VorbisCommentField;
|
|||
* \brief Defines traits for the TagField implementation of the VorbisCommentField class.
|
||||
*/
|
||||
template <>
|
||||
class LIB_EXPORT TagFieldTraits<VorbisCommentField>
|
||||
class TAG_PARSER_EXPORT TagFieldTraits<VorbisCommentField>
|
||||
{
|
||||
public:
|
||||
/*!
|
||||
|
@ -57,7 +57,7 @@ public:
|
|||
|
||||
class OggIterator;
|
||||
|
||||
class LIB_EXPORT VorbisCommentField : public TagField<VorbisCommentField>, public StatusProvider
|
||||
class TAG_PARSER_EXPORT VorbisCommentField : public TagField<VorbisCommentField>, public StatusProvider
|
||||
{
|
||||
friend class TagField<VorbisCommentField>;
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef MEDIA_VORBISCOMMENTIDS_H
|
||||
#define MEDIA_VORBISCOMMENTIDS_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "../global.h"
|
||||
|
||||
namespace Media {
|
||||
|
||||
|
@ -10,112 +10,112 @@ namespace Media {
|
|||
*/
|
||||
namespace VorbisCommentIds {
|
||||
|
||||
inline LIB_EXPORT const char *trackNumber() {
|
||||
inline TAG_PARSER_EXPORT const char *trackNumber() {
|
||||
return "TRACKNUMBER";
|
||||
}
|
||||
inline LIB_EXPORT const char *diskNumber() {
|
||||
inline TAG_PARSER_EXPORT const char *diskNumber() {
|
||||
return "DISCNUMBER";
|
||||
}
|
||||
inline LIB_EXPORT const char *part() {
|
||||
inline TAG_PARSER_EXPORT const char *part() {
|
||||
return "PART";
|
||||
}
|
||||
inline LIB_EXPORT const char *partNumber() {
|
||||
inline TAG_PARSER_EXPORT const char *partNumber() {
|
||||
return "PARTNUMBER";
|
||||
}
|
||||
inline LIB_EXPORT const char *title() {
|
||||
inline TAG_PARSER_EXPORT const char *title() {
|
||||
return "TITLE";
|
||||
}
|
||||
inline LIB_EXPORT const char *version() {
|
||||
inline TAG_PARSER_EXPORT const char *version() {
|
||||
return "VERSION";
|
||||
}
|
||||
inline LIB_EXPORT const char *artist() {
|
||||
inline TAG_PARSER_EXPORT const char *artist() {
|
||||
return "ARTIST";
|
||||
}
|
||||
inline LIB_EXPORT const char *album() {
|
||||
inline TAG_PARSER_EXPORT const char *album() {
|
||||
return "ALBUM";
|
||||
}
|
||||
inline LIB_EXPORT const char *label() {
|
||||
inline TAG_PARSER_EXPORT const char *label() {
|
||||
return "LABEL";
|
||||
}
|
||||
inline LIB_EXPORT const char *labelNo() {
|
||||
inline TAG_PARSER_EXPORT const char *labelNo() {
|
||||
return "LABELNO";
|
||||
}
|
||||
inline LIB_EXPORT const char *language() {
|
||||
inline TAG_PARSER_EXPORT const char *language() {
|
||||
return "LANGUAGE";
|
||||
}
|
||||
inline LIB_EXPORT const char *performer() {
|
||||
inline TAG_PARSER_EXPORT const char *performer() {
|
||||
return "PERFORMER";
|
||||
}
|
||||
inline LIB_EXPORT const char *composer() {
|
||||
inline TAG_PARSER_EXPORT const char *composer() {
|
||||
return "COMPOSER";
|
||||
}
|
||||
inline LIB_EXPORT const char *ensemble() {
|
||||
inline TAG_PARSER_EXPORT const char *ensemble() {
|
||||
return "ENSEMBLE";
|
||||
}
|
||||
inline LIB_EXPORT const char *arranger() {
|
||||
inline TAG_PARSER_EXPORT const char *arranger() {
|
||||
return "ARRANGER";
|
||||
}
|
||||
inline LIB_EXPORT const char *lyricist() {
|
||||
inline TAG_PARSER_EXPORT const char *lyricist() {
|
||||
return "LYRICIST";
|
||||
}
|
||||
inline LIB_EXPORT const char *author() {
|
||||
inline TAG_PARSER_EXPORT const char *author() {
|
||||
return "AUTHOR";
|
||||
}
|
||||
inline LIB_EXPORT const char *conductor() {
|
||||
inline TAG_PARSER_EXPORT const char *conductor() {
|
||||
return "CONDUCTOR";
|
||||
}
|
||||
inline LIB_EXPORT const char *encoder() {
|
||||
inline TAG_PARSER_EXPORT const char *encoder() {
|
||||
return "ENCODER";
|
||||
}
|
||||
inline LIB_EXPORT const char *publisher() {
|
||||
inline TAG_PARSER_EXPORT const char *publisher() {
|
||||
return "PUBLISHER";
|
||||
}
|
||||
inline LIB_EXPORT const char *genre() {
|
||||
inline TAG_PARSER_EXPORT const char *genre() {
|
||||
return "GENRE";
|
||||
}
|
||||
inline LIB_EXPORT const char *originalMediaType() {
|
||||
inline TAG_PARSER_EXPORT const char *originalMediaType() {
|
||||
return "ORIGINAL_MEDIA_TYPE";
|
||||
}
|
||||
inline LIB_EXPORT const char *contentType() {
|
||||
inline TAG_PARSER_EXPORT const char *contentType() {
|
||||
return "CONTENT_TYPE";
|
||||
}
|
||||
inline LIB_EXPORT const char *subject() {
|
||||
inline TAG_PARSER_EXPORT const char *subject() {
|
||||
return "SUBJECT";
|
||||
}
|
||||
inline LIB_EXPORT const char *description() {
|
||||
inline TAG_PARSER_EXPORT const char *description() {
|
||||
return "DESCRIPTION";
|
||||
}
|
||||
inline LIB_EXPORT const char *isrc() {
|
||||
inline TAG_PARSER_EXPORT const char *isrc() {
|
||||
return "ISRC";
|
||||
}
|
||||
inline LIB_EXPORT const char *eanupn() {
|
||||
inline TAG_PARSER_EXPORT const char *eanupn() {
|
||||
return "EAN/UPN";
|
||||
}
|
||||
inline LIB_EXPORT const char *comment() {
|
||||
inline TAG_PARSER_EXPORT const char *comment() {
|
||||
return "COMMENT";
|
||||
}
|
||||
inline LIB_EXPORT const char *encoderSettings() {
|
||||
inline TAG_PARSER_EXPORT const char *encoderSettings() {
|
||||
return "ENCODING";
|
||||
}
|
||||
inline LIB_EXPORT const char *date() {
|
||||
inline TAG_PARSER_EXPORT const char *date() {
|
||||
return "DATE";
|
||||
}
|
||||
inline LIB_EXPORT const char *location() {
|
||||
inline TAG_PARSER_EXPORT const char *location() {
|
||||
return "LOCATION";
|
||||
}
|
||||
inline LIB_EXPORT const char *license() {
|
||||
inline TAG_PARSER_EXPORT const char *license() {
|
||||
return "LICENSE";
|
||||
}
|
||||
inline LIB_EXPORT const char *copyright() {
|
||||
inline TAG_PARSER_EXPORT const char *copyright() {
|
||||
return "COPYRIGHT";
|
||||
}
|
||||
inline LIB_EXPORT const char *opus() {
|
||||
inline TAG_PARSER_EXPORT const char *opus() {
|
||||
return "OPUS";
|
||||
}
|
||||
inline LIB_EXPORT const char *sourceMedia() {
|
||||
inline TAG_PARSER_EXPORT const char *sourceMedia() {
|
||||
return "SOURCEMEDIA";
|
||||
}
|
||||
inline LIB_EXPORT const char *cover() {
|
||||
inline TAG_PARSER_EXPORT const char *cover() {
|
||||
return "METADATA_BLOCK_PICTURE";
|
||||
}
|
||||
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
#ifndef MEDIA_VORBISIDENTIFICATIONHEADER_H
|
||||
#define MEDIA_VORBISIDENTIFICATIONHEADER_H
|
||||
|
||||
#include <c++utilities/application/global.h>
|
||||
#include "../global.h"
|
||||
|
||||
#include <c++utilities/conversion/types.h>
|
||||
|
||||
namespace Media {
|
||||
|
||||
class OggIterator;
|
||||
|
||||
class LIB_EXPORT VorbisIdentificationHeader
|
||||
class TAG_PARSER_EXPORT VorbisIdentificationHeader
|
||||
{
|
||||
public:
|
||||
VorbisIdentificationHeader();
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
namespace Media
|
||||
{
|
||||
|
||||
class LIB_EXPORT WaveFormatHeader
|
||||
class TAG_PARSER_EXPORT WaveFormatHeader
|
||||
{
|
||||
public:
|
||||
WaveFormatHeader();
|
||||
|
@ -33,7 +33,7 @@ inline uint32 WaveFormatHeader::bitrate() const
|
|||
return bitsPerSample * sampleRate * channelCount;
|
||||
}
|
||||
|
||||
class LIB_EXPORT WaveAudioStream : public AbstractTrack
|
||||
class TAG_PARSER_EXPORT WaveAudioStream : public AbstractTrack
|
||||
{
|
||||
public:
|
||||
WaveAudioStream(std::iostream &stream, uint64 startOffset);
|
||||
|
|
Loading…
Reference in New Issue