Eric Oulashin's C++ Audio Mixer 1.0
EOUtils::MetadataAudioFile Class Referenceabstract

Abstract class that extends AudioFile with pure virtual methods for adding/updating common audio metadata (tags). Derived classes for audio formats that support metadata (e.g., FLAC, Ogg Vorbis) should inherit from this class and implement the metadata operations. More...

#include <MetadataAudioFile.h>

Inheritance diagram for EOUtils::MetadataAudioFile:
Inheritance graph
Collaboration diagram for EOUtils::MetadataAudioFile:
Collaboration graph

Public Member Functions

 MetadataAudioFile (const std::string &pFilename)
 MetadataAudioFile (const std::string &pFilename, AudioFileModes pFileMode)
 MetadataAudioFile (const MetadataAudioFile &pOther)
virtual ~MetadataAudioFile ()
virtual AudioFileResultType setTitle (const std::string &pTitle)=0
 Sets the title metadata tag.
virtual AudioFileResultType setArtist (const std::string &pArtist)=0
 Sets the artist metadata tag.
virtual AudioFileResultType setAlbum (const std::string &pAlbum)=0
 Sets the album metadata tag.
virtual AudioFileResultType setGenre (const std::string &pGenre)=0
 Sets the genre metadata tag.
virtual AudioFileResultType setTrackNumber (uint32_t pTrackNumber, uint32_t pTotalTracks=0)=0
 Sets the track number metadata tag.
virtual AudioFileResultType setYear (const std::string &pYear)=0
 Sets the year/date metadata tag.
virtual AudioFileResultType setComment (const std::string &pComment)=0
 Sets the comment metadata tag.
virtual AudioFileResultType getTitle (std::string &pTitle) const =0
 Gets the title metadata tag.
virtual AudioFileResultType getArtist (std::string &pArtist) const =0
 Gets the artist metadata tag.
virtual AudioFileResultType getAlbum (std::string &pAlbum) const =0
 Gets the album metadata tag.
virtual AudioFileResultType getGenre (std::string &pGenre) const =0
 Gets the genre metadata tag.
virtual AudioFileResultType getTrackNumber (uint32_t &pTrackNumber, uint32_t &pTotalTracks) const =0
 Gets the track number metadata tag.
virtual AudioFileResultType getYear (std::string &pYear) const =0
 Gets the year/date metadata tag.
virtual AudioFileResultType getComment (std::string &pComment) const =0
 Gets the comment metadata tag.
Public Member Functions inherited from EOUtils::AudioFile
 AudioFile (const std::string &pFilename)
 Constructor.
 AudioFile (const std::string &pFilename, AudioFileModes pFileMode)
 AudioFile (const AudioFile &pAudioFile)
virtual ~AudioFile ()
virtual void setAudioFileInfo (const AudioFileInfo &pAudioFileInfo)=0
virtual AudioFileResultType open (AudioFileModes pOpenMode)
virtual bool BitrateIsAdjustable () const =0
 Returns whether or not the audio file bitrate is adjustable.
virtual bool isOpen () const
 Returns whether or not the audio file is open.
virtual bool hasReadMode () const
 Returns whether or not read mode is enabled for the file.
virtual bool hasWriteMode () const
 Returns whether or not write mode is enabled for the file.
virtual void close ()
 Closes the audio file.
virtual AudioFileResultType getNextSample_int64 (int64_t &pAudioSample)=0
 Gets the next sample from the file, cast to a 64-bit integer.
virtual AudioFileResultType writeSample_int64 (int64_t pAudioSample)=0
 Writes an audio sample to the file. The parameter is a 64-bit integer but will be cast to the bitness of the audio samples in the file.
virtual AudioFileResultType getHighestSampleValue_int64 (int64_t &pHighestAudioSample)=0
 Gets the highest audio sample value from the file, cast to a 64-bit integer.
virtual AudioFileResultType goToAudioDataPos ()=0
 Goes to the audio data position in the audio file.
virtual size_t numSamples () const =0
 Returns the number of audio samples in the audio file.
virtual int64_t maxValueForSampleSize () const =0
 Returns the maximum possible positive value of the audio file's sample size.
const std::string & Filename () const
 Gets the filename of the audio file.
void Filename (const std::string &pFilename)
 Setter for the filename of the audio file.
void setMetadata (const std::string &pName, const std::string &pValue)
 Adds a piece of metadata for the audio file.
template<typename T>
void setMetadataFromVal (const std::string &pName, const T &pValue)
 Adds a piece of metadata for the audio file. Templatized for any value type. The value will be converted to a string to store in the metadata.
AudioFileResultType getMetadata (const std::string &pName, std::string &pValue) const
 Gets a metadata value as a string.
template<typename T>
AudioFileResultType getMetadataAs (const std::string &pName, T &pValue) const
 Gets a metadata value. Templatized to capture the value as any type.
std::string getMetadata (const std::string &pName) const
 Gets a metadata value.
template<typename T>
getMetadataAs (const std::string &pName) const
template<typename T>
getMetadataAs (const std::string &pName, const T &pDefaultVal) const
 Gets a metadata value. Templatized to return it as any type.
bool hasMetadata (const std::string &pName) const
 Returns whether or not a metadata item exists.
virtual AudioFileInfo getAudioFileInfo () const =0
 Returns an AudioFile object with information about the audio file.
virtual void seekOutputToSampleNum (size_t pSampleNum)=0

Additional Inherited Members

Protected Member Functions inherited from EOUtils::AudioFile
virtual std::streampos fileSizeAccordingToStream ()
virtual void setFileMode (AudioFileModes pFileMode)
Protected Attributes inherited from EOUtils::AudioFile
std::string mFilename
std::fstream mFileStream
std::ios_base::openmode mFileOpenMode
size_t mDataSizeBytes
std::map< std::string, std::string > mMetadata

Detailed Description

Abstract class that extends AudioFile with pure virtual methods for adding/updating common audio metadata (tags). Derived classes for audio formats that support metadata (e.g., FLAC, Ogg Vorbis) should inherit from this class and implement the metadata operations.

Constructor & Destructor Documentation

◆ MetadataAudioFile() [1/3]

◆ MetadataAudioFile() [2/3]

EOUtils::MetadataAudioFile::MetadataAudioFile ( const std::string & pFilename,
AudioFileModes pFileMode )
explicit

References MetadataAudioFile().

◆ MetadataAudioFile() [3/3]

EOUtils::MetadataAudioFile::MetadataAudioFile ( const MetadataAudioFile & pOther)

◆ ~MetadataAudioFile()

EOUtils::MetadataAudioFile::~MetadataAudioFile ( )
virtual

Member Function Documentation

◆ getAlbum()

virtual AudioFileResultType EOUtils::MetadataAudioFile::getAlbum ( std::string & pAlbum) const
pure virtual

Gets the album metadata tag.

Parameters
[out]pAlbumWill receive the album string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ getArtist()

virtual AudioFileResultType EOUtils::MetadataAudioFile::getArtist ( std::string & pArtist) const
pure virtual

Gets the artist metadata tag.

Parameters
[out]pArtistWill receive the artist string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ getComment()

virtual AudioFileResultType EOUtils::MetadataAudioFile::getComment ( std::string & pComment) const
pure virtual

Gets the comment metadata tag.

Parameters
[out]pCommentWill receive the comment string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ getGenre()

virtual AudioFileResultType EOUtils::MetadataAudioFile::getGenre ( std::string & pGenre) const
pure virtual

Gets the genre metadata tag.

Parameters
[out]pGenreWill receive the genre string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ getTitle()

virtual AudioFileResultType EOUtils::MetadataAudioFile::getTitle ( std::string & pTitle) const
pure virtual

Gets the title metadata tag.

Parameters
[out]pTitleWill receive the title string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ getTrackNumber()

virtual AudioFileResultType EOUtils::MetadataAudioFile::getTrackNumber ( uint32_t & pTrackNumber,
uint32_t & pTotalTracks ) const
pure virtual

Gets the track number metadata tag.

Parameters
[out]pTrackNumberWill receive the track number
[out]pTotalTracksWill receive the total number of tracks (0 if not specified in the metadata)
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, and FLACFile.

◆ getYear()

virtual AudioFileResultType EOUtils::MetadataAudioFile::getYear ( std::string & pYear) const
pure virtual

Gets the year/date metadata tag.

Parameters
[out]pYearWill receive the year string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ setAlbum()

virtual AudioFileResultType EOUtils::MetadataAudioFile::setAlbum ( const std::string & pAlbum)
pure virtual

Sets the album metadata tag.

Parameters
[in]pAlbumThe album string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ setArtist()

virtual AudioFileResultType EOUtils::MetadataAudioFile::setArtist ( const std::string & pArtist)
pure virtual

Sets the artist metadata tag.

Parameters
[in]pArtistThe artist string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ setComment()

virtual AudioFileResultType EOUtils::MetadataAudioFile::setComment ( const std::string & pComment)
pure virtual

Sets the comment metadata tag.

Parameters
[in]pCommentThe comment string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ setGenre()

virtual AudioFileResultType EOUtils::MetadataAudioFile::setGenre ( const std::string & pGenre)
pure virtual

Sets the genre metadata tag.

Parameters
[in]pGenreThe genre string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ setTitle()

virtual AudioFileResultType EOUtils::MetadataAudioFile::setTitle ( const std::string & pTitle)
pure virtual

Sets the title metadata tag.

Parameters
[in]pTitleThe title string
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.

◆ setTrackNumber()

virtual AudioFileResultType EOUtils::MetadataAudioFile::setTrackNumber ( uint32_t pTrackNumber,
uint32_t pTotalTracks = 0 )
pure virtual

Sets the track number metadata tag.

Parameters
[in]pTrackNumberThe track number
[in]pTotalTracksThe total number of tracks (0 means not specified, stores only the track number)
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, and FLACFile.

◆ setYear()

virtual AudioFileResultType EOUtils::MetadataAudioFile::setYear ( const std::string & pYear)
pure virtual

Sets the year/date metadata tag.

Parameters
[in]pYearThe year string (e.g., "2024")
Returns
An AudioFileResultType with errors on failure

Implemented in EOUtils::FLACFile, EOUtils::SndFileBackedMetadataAudioFile, and FLACFile.


The documentation for this class was generated from the following files: