Tag Parser  9.4.0
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
abstracttrack.h
Go to the documentation of this file.
1 #ifndef TAG_PARSER_ABSTRACTTRACK_H
2 #define TAG_PARSER_ABSTRACTTRACK_H
3 
4 #include "./aspectratio.h"
5 #include "./diagnostics.h"
6 #include "./margin.h"
7 #include "./mediaformat.h"
8 #include "./size.h"
9 
10 #include <c++utilities/chrono/datetime.h>
11 #include <c++utilities/chrono/timespan.h>
12 #include <c++utilities/io/binaryreader.h>
13 #include <c++utilities/io/binarywriter.h>
14 
15 #include <iosfwd>
16 #include <string>
17 
18 namespace TagParser {
19 
20 class MpegAudioFrameStream;
21 class WaveAudioStream;
22 class Mp4Track;
23 
27 enum class TrackType {
28  Unspecified,
31  Mp4Track,
33  OggStream,
34  AdtsStream,
35  FlacStream,
36  IvfStream,
37 };
38 
40  friend class MpegAudioFrameStream;
41  friend class WaveAudioStream;
42  friend class Mp4Track;
43 
44 public:
45  virtual ~AbstractTrack();
46 
47  virtual TrackType type() const;
48  std::istream &inputStream();
49  void setInputStream(std::istream &stream);
50  std::ostream &outputStream();
51  void setOutputStream(std::ostream &stream);
52  CppUtilities::BinaryReader &reader();
53  CppUtilities::BinaryWriter &writer();
54  std::uint64_t startOffset() const;
55  MediaFormat format() const;
56  double version() const;
57  const char *formatName() const;
58  const char *formatAbbreviation() const;
59  const std::string &formatId() const;
60  MediaType mediaType() const;
61  const char *mediaTypeName() const;
62  std::uint64_t size() const;
63  std::uint32_t trackNumber() const;
64  void setTrackNumber(std::uint32_t trackNumber);
65  std::uint64_t id() const;
66  void setId(std::uint64_t id);
67  const std::string name() const;
68  void setName(const std::string &name);
69  const CppUtilities::TimeSpan &duration() const;
70  double bitrate() const;
71  double maxBitrate() const;
72  const CppUtilities::DateTime &creationTime() const;
73  const CppUtilities::DateTime &modificationTime() const;
74  const std::string &language() const;
75  void setLanguage(const std::string &language);
76  std::uint32_t samplingFrequency() const;
77  std::uint32_t extensionSamplingFrequency() const;
78  std::uint16_t bitsPerSample() const;
79  std::uint16_t channelCount() const;
80  std::uint8_t channelConfig() const;
81  const char *channelConfigString() const;
82  std::uint8_t extensionChannelConfig() const;
83  const char *extensionChannelConfigString() const;
84  std::uint64_t sampleCount() const;
85  int quality() const;
86  const Size &pixelSize() const;
87  const Size &displaySize() const;
88  const Size &resolution() const;
89  const std::string &compressorName() const;
90  void setCompressorName(const std::string &compressorName);
91  std::uint16_t depth() const;
92  std::uint32_t fps() const;
93  const char *chromaFormat() const;
94  const AspectRatio &pixelAspectRatio() const;
95  bool isInterlaced() const;
96  std::uint32_t timeScale() const;
97  bool isEnabled() const;
98  void setEnabled(bool enabled);
99  bool isDefault() const;
100  void setDefault(bool isDefault);
101  bool isForced() const;
102  void setForced(bool forced);
103  bool hasLacing() const;
104  bool isEncrypted() const;
105  std::uint32_t colorSpace() const;
106  const Margin &cropping() const;
107  std::string label() const;
108  std::string description() const;
109  std::string shortDescription() const;
110 
111  void parseHeader(Diagnostics &diag);
112  bool isHeaderValid() const;
113 
114 protected:
115  AbstractTrack(std::istream &inputStream, std::ostream &outputStream, std::uint64_t startOffset);
116  AbstractTrack(std::iostream &stream, std::uint64_t startOffset);
117  virtual void internalParseHeader(Diagnostics &diag) = 0;
118 
119  std::istream *m_istream;
120  std::ostream *m_ostream;
121  CppUtilities::BinaryReader m_reader;
122  CppUtilities::BinaryWriter m_writer;
123  std::uint64_t m_startOffset;
126  std::string m_formatId;
127  std::string m_formatName;
129  double m_version;
130  std::uint64_t m_size;
131  std::uint32_t m_trackNumber;
132  std::uint64_t m_id;
133  std::string m_name;
134  CppUtilities::TimeSpan m_duration;
135  double m_bitrate;
136  double m_maxBitrate;
139  std::string m_language;
140  std::uint32_t m_samplingFrequency;
142  std::uint16_t m_bitsPerSample;
143  std::uint32_t m_bytesPerSecond;
144  std::uint16_t m_channelCount;
145  std::uint8_t m_channelConfig;
147  std::uint16_t m_chunkSize;
148  std::uint64_t m_sampleCount;
153  std::string m_compressorName;
154  std::uint16_t m_depth;
155  std::uint32_t m_fps;
156  const char *m_chromaFormat;
159  std::uint32_t m_timeScale;
160  bool m_enabled;
161  bool m_default;
162  bool m_forced;
163  bool m_lacing;
167  std::uint32_t m_colorSpace;
169 
170 private:
171  std::string makeDescription(bool verbose) const;
172 };
173 
177 inline std::istream &AbstractTrack::inputStream()
178 {
179  return *m_istream;
180 }
181 
188 inline void AbstractTrack::setInputStream(std::istream &stream)
189 {
190  m_reader.setStream(m_istream = &stream);
191 }
192 
196 inline std::ostream &AbstractTrack::outputStream()
197 {
198  return *m_ostream;
199 }
200 
207 inline void AbstractTrack::setOutputStream(std::ostream &stream)
208 {
209  m_writer.setStream(m_ostream = &stream);
210 }
211 
218 inline CppUtilities::BinaryReader &AbstractTrack::reader()
219 {
220  return m_reader;
221 }
222 
229 inline CppUtilities::BinaryWriter &AbstractTrack::writer()
230 {
231  return m_writer;
232 }
233 
238 {
239  return TrackType::Unspecified;
240 }
241 
245 inline std::uint64_t AbstractTrack::startOffset() const
246 {
247  return m_startOffset;
248 }
249 
254 {
255  return m_format;
256 }
257 
261 inline double AbstractTrack::version() const
262 {
263  return m_version;
264 }
265 
273 inline const char *AbstractTrack::formatName() const
274 {
275  return m_format || m_formatName.empty() ? m_format.name() : m_formatName.c_str();
276 }
277 
282 inline const char *AbstractTrack::formatAbbreviation() const
283 {
284  const char *abbr = m_format.abbreviation();
285  return *abbr || m_formatId.empty() ? m_format.abbreviation() : m_formatId.c_str();
286 }
287 
292 inline const std::string &AbstractTrack::formatId() const
293 {
294  return m_formatId;
295 }
296 
301 {
302  return m_mediaType;
303 }
304 
308 inline const char *AbstractTrack::mediaTypeName() const
309 {
311 }
312 
316 inline std::uint64_t AbstractTrack::size() const
317 {
318  return m_size;
319 }
320 
324 inline std::uint32_t AbstractTrack::trackNumber() const
325 {
326  return m_trackNumber;
327 }
328 
333 inline void AbstractTrack::setTrackNumber(std::uint32_t trackNumber)
334 {
336 }
337 
341 inline std::uint64_t AbstractTrack::id() const
342 {
343  return m_id;
344 }
345 
350 inline void AbstractTrack::setId(std::uint64_t id)
351 {
352  m_id = id;
353 }
354 
358 inline const std::string AbstractTrack::name() const
359 {
360  return m_name;
361 }
362 
367 inline void AbstractTrack::setName(const std::string &name)
368 {
369  m_name = name;
370 }
371 
375 inline const CppUtilities::TimeSpan &AbstractTrack::duration() const
376 {
377  return m_duration;
378 }
379 
383 inline double AbstractTrack::bitrate() const
384 {
385  return m_bitrate;
386 }
387 
391 inline double AbstractTrack::maxBitrate() const
392 {
393  return m_maxBitrate;
394 }
395 
400 {
401  return m_creationTime;
402 }
403 
408 {
409  return m_modificationTime;
410 }
411 
417 inline const std::string &AbstractTrack::language() const
418 {
419  return m_language;
420 }
421 
426 inline void AbstractTrack::setLanguage(const std::string &language)
427 {
429 }
430 
434 inline std::uint32_t AbstractTrack::samplingFrequency() const
435 {
436  return m_samplingFrequency;
437 }
438 
443 inline std::uint32_t AbstractTrack::extensionSamplingFrequency() const
444 {
446 }
447 
451 inline std::uint16_t AbstractTrack::bitsPerSample() const
452 {
453  return m_bitsPerSample;
454 }
455 
461 inline std::uint16_t AbstractTrack::channelCount() const
462 {
463  return m_channelCount;
464 }
465 
472 inline std::uint8_t AbstractTrack::channelConfig() const
473 {
474  return m_channelConfig;
475 }
476 
480 inline std::uint64_t AbstractTrack::sampleCount() const
481 {
482  return m_sampleCount;
483 }
484 
490 inline int AbstractTrack::quality() const
491 {
492  return m_quality;
493 }
494 
500 inline const Size &AbstractTrack::pixelSize() const
501 {
502  return m_pixelSize;
503 }
504 
510 inline const Size &AbstractTrack::displaySize() const
511 {
512  return m_displaySize;
513 }
514 
520 inline const Size &AbstractTrack::resolution() const
521 {
522  return m_resolution;
523 }
524 
528 inline const std::string &AbstractTrack::compressorName() const
529 {
530  return m_compressorName;
531 }
532 
537 inline void AbstractTrack::setCompressorName(const std::string &compressorName)
538 {
540 }
541 
545 inline std::uint16_t AbstractTrack::depth() const
546 {
547  return m_depth;
548 }
549 
555 inline std::uint32_t AbstractTrack::fps() const
556 {
557  return m_fps;
558 }
559 
565 inline const char *AbstractTrack::chromaFormat() const
566 {
567  return m_chromaFormat;
568 }
569 
574 {
575  return m_pixelAspectRatio;
576 }
577 
583 inline bool AbstractTrack::isInterlaced() const
584 {
585  return m_interlaced;
586 }
587 
593 inline std::uint32_t AbstractTrack::timeScale() const
594 {
595  return m_timeScale;
596 }
597 
601 inline bool AbstractTrack::isEnabled() const
602 {
603  return m_enabled;
604 }
605 
610 inline void AbstractTrack::setEnabled(bool enabled)
611 {
612  m_enabled = enabled;
613 }
614 
618 inline bool AbstractTrack::isDefault() const
619 {
620  return m_default;
621 }
622 
627 inline void AbstractTrack::setDefault(bool isDefault)
628 {
630 }
631 
635 inline bool AbstractTrack::isForced() const
636 {
637  return m_forced;
638 }
639 
644 inline void AbstractTrack::setForced(bool forced)
645 {
646  m_forced = forced;
647 }
648 
652 inline bool AbstractTrack::hasLacing() const
653 {
654  return m_lacing;
655 }
656 
660 inline bool AbstractTrack::isEncrypted() const
661 {
662  return m_encrypted;
663 }
664 
668 inline std::uint32_t AbstractTrack::colorSpace() const
669 {
670  return m_colorSpace;
671 }
672 
676 inline const Margin &AbstractTrack::cropping() const
677 {
678  return m_cropping;
679 }
680 
684 inline bool AbstractTrack::isHeaderValid() const
685 {
686  return m_headerValid;
687 }
688 
689 } // namespace TagParser
690 
691 #endif // TAG_PARSER_ABSTRACTTRACK_H
TagParser::AbstractTrack::m_trackNumber
std::uint32_t m_trackNumber
Definition: abstracttrack.h:131
TagParser::AbstractTrack::samplingFrequency
std::uint32_t samplingFrequency() const
Returns the number of samples per second if known; otherwise returns 0.
Definition: abstracttrack.h:434
TagParser::AbstractTrack::m_colorSpace
std::uint32_t m_colorSpace
Definition: abstracttrack.h:167
TagParser::AbstractTrack::m_samplingFrequency
std::uint32_t m_samplingFrequency
Definition: abstracttrack.h:140
TagParser::AbstractTrack::maxBitrate
double maxBitrate() const
Returns the maximum bitrate in kbit/s if known; otherwise returns zero.
Definition: abstracttrack.h:391
TagParser::AbstractTrack::colorSpace
std::uint32_t colorSpace() const
Returns the color space if known; otherwise returns 0.
Definition: abstracttrack.h:668
TagParser::AbstractTrack::setId
void setId(std::uint64_t id)
Sets the track ID.
Definition: abstracttrack.h:350
TagParser::AbstractTrack::fps
std::uint32_t fps() const
Returns the number of frames per second if known; otherwise returns 0.
Definition: abstracttrack.h:555
TagParser::AbstractTrack::isEnabled
bool isEnabled() const
Returns true if the track is denoted as enabled; otherwise returns false.
Definition: abstracttrack.h:601
TagParser::AbstractTrack::m_enabled
bool m_enabled
Definition: abstracttrack.h:160
TagParser::AbstractTrack::m_bitrate
double m_bitrate
Definition: abstracttrack.h:135
TagParser::VorbisCommentIds::version
constexpr TAG_PARSER_EXPORT const char * version()
Definition: vorbiscommentids.h:34
TagParser::MatroskaTagIds::TrackSpecific::bitrate
constexpr TAG_PARSER_EXPORT const char * bitrate()
The track's bit rate in bits per second.
Definition: matroskatagid.h:456
TagParser::MatroskaTagIds::description
constexpr TAG_PARSER_EXPORT const char * description()
Definition: matroskatagid.h:231
TagParser::AbstractTrack::formatAbbreviation
const char * formatAbbreviation() const
Returns the a more or less common abbreviation for the format of the track as C-style string if known...
Definition: abstracttrack.h:282
TagParser::AbstractTrack::m_resolution
Size m_resolution
Definition: abstracttrack.h:152
TagParser::MediaFormat::abbreviation
const char * abbreviation() const
Returns the abbreviation of the media format as C-style string.
Definition: mediaformat.cpp:446
TagParser::AbstractTrack::chromaFormat
const char * chromaFormat() const
Returns the chroma subsampling format if known; otherwise returns nullptr.
Definition: abstracttrack.h:565
TagParser::AbstractTrack::m_maxBitrate
double m_maxBitrate
Definition: abstracttrack.h:136
TagParser::AbstractTrack::m_language
std::string m_language
Definition: abstracttrack.h:139
TagParser::AbstractTrack::m_encrypted
bool m_encrypted
Definition: abstracttrack.h:164
TagParser::AbstractTrack::depth
std::uint16_t depth() const
Returns the bit depth if known; otherwise returns 0.
Definition: abstracttrack.h:545
TagParser::Margin
The Margin class defines the four margins of a rectangle.
Definition: margin.h:16
TagParser::AbstractTrack::hasLacing
bool hasLacing() const
Returns true if the track has lacing; otherwise returns false.
Definition: abstracttrack.h:652
TagParser::Mp4TagExtendedNameIds::label
const char * label
Definition: mp4ids.cpp:32
TagParser::AbstractTrack::m_version
double m_version
Definition: abstracttrack.h:129
TagParser::AbstractTrack::channelCount
std::uint16_t channelCount() const
Returns the number of channels if known; otherwise returns 0.
Definition: abstracttrack.h:461
TagParser::AbstractTrack::m_forced
bool m_forced
Definition: abstracttrack.h:162
TagParser::AbstractTrack::m_displaySize
Size m_displaySize
Definition: abstracttrack.h:151
TagParser::TrackType::IvfStream
@ IvfStream
TagParser::AbstractTrack::cropping
const Margin & cropping() const
Returns the cropping if known; otherwise returns zero margins.
Definition: abstracttrack.h:676
TagParser::AbstractTrack::isInterlaced
bool isInterlaced() const
Returns true if the video is denoted as interlaced; otherwise returns false.
Definition: abstracttrack.h:583
TagParser::TrackType::MatroskaTrack
@ MatroskaTrack
TagParser::AbstractTrack::isEncrypted
bool isEncrypted() const
Returns true if the track is denoted as encrypted; otherwise returns false.
Definition: abstracttrack.h:660
TagParser::AbstractTrack::m_chromaFormat
const char * m_chromaFormat
Definition: abstracttrack.h:156
TagParser::TrackType::Mp4Track
@ Mp4Track
TagParser::AbstractTrack::m_timeScale
std::uint32_t m_timeScale
Definition: abstracttrack.h:159
TagParser::AbstractTrack::setTrackNumber
void setTrackNumber(std::uint32_t trackNumber)
Sets the track number.
Definition: abstracttrack.h:333
TagParser::TrackType::WaveAudioStream
@ WaveAudioStream
TagParser::Diagnostics
The Diagnostics class is a container for DiagMessage.
Definition: diagnostics.h:156
TagParser::AbstractTrack::modificationTime
const CppUtilities::DateTime & modificationTime() const
Returns the time of the last modification if known; otherwise returns a DateTime of zero ticks.
Definition: abstracttrack.h:407
TagParser::MatroskaTagIds::fps
constexpr TAG_PARSER_EXPORT const char * fps()
Definition: matroskatagid.h:331
TagParser::AbstractTrack::m_ostream
std::ostream * m_ostream
Definition: abstracttrack.h:120
TagParser
Contains all classes and functions of the TagInfo library.
Definition: aaccodebook.h:10
TagParser::AbstractTrack::m_name
std::string m_name
Definition: abstracttrack.h:133
TagParser::AbstractTrack::m_formatId
std::string m_formatId
Definition: abstracttrack.h:126
TagParser::AbstractTrack::setForced
void setForced(bool forced)
Sets whether the track is forced.
Definition: abstracttrack.h:644
TagParser::AbstractTrack::m_sampleCount
std::uint64_t m_sampleCount
Definition: abstracttrack.h:148
TagParser::AbstractTrack::m_reader
CppUtilities::BinaryReader m_reader
Definition: abstracttrack.h:121
TagParser::AbstractTrack::isForced
bool isForced() const
Returns true if the track is denoted as forced; otherwise returns false.
Definition: abstracttrack.h:635
TagParser::AbstractTrack::m_chunkSize
std::uint16_t m_chunkSize
Definition: abstracttrack.h:147
aspectratio.h
TagParser::AbstractTrack::outputStream
std::ostream & outputStream()
Returns the associated output stream.
Definition: abstracttrack.h:196
TagParser::TrackType::AdtsStream
@ AdtsStream
TagParser::AbstractTrack::setEnabled
void setEnabled(bool enabled)
Sets whether the track is enabled.
Definition: abstracttrack.h:610
TagParser::AbstractTrack::m_depth
std::uint16_t m_depth
Definition: abstracttrack.h:154
TagParser::AbstractTrack::format
MediaFormat format() const
Returns the format of the track if known; otherwise returns MediaFormat::Unknown.
Definition: abstracttrack.h:253
TagParser::AbstractTrack::size
std::uint64_t size() const
Returns the size in bytes if known; otherwise returns 0.
Definition: abstracttrack.h:316
TagParser::MediaFormat::name
const char * name() const
Returns the name of the media format as C-style string.
Definition: mediaformat.cpp:17
TagParser::AbstractTrack::m_duration
CppUtilities::TimeSpan m_duration
Definition: abstracttrack.h:134
TagParser::AbstractTrack::setOutputStream
void setOutputStream(std::ostream &stream)
Assigns another output stream.
Definition: abstracttrack.h:207
TagParser::TrackType
TrackType
Specifies the track type.
Definition: abstracttrack.h:27
TagParser::Mpeg4ChannelConfigs::channelCount
TAG_PARSER_EXPORT std::uint8_t channelCount(std::uint8_t config)
Returns the channel count for the specified MPEG-4 channel config.
Definition: mp4ids.cpp:460
TagParser::AbstractTrack::duration
const CppUtilities::TimeSpan & duration() const
Returns the duration if known; otherwise returns a TimeSpan of zero ticks.
Definition: abstracttrack.h:375
TagParser::AbstractTrack::m_usedWhenPreviewing
bool m_usedWhenPreviewing
Definition: abstracttrack.h:166
TagParser::AbstractTrack::m_extensionSamplingFrequency
std::uint32_t m_extensionSamplingFrequency
Definition: abstracttrack.h:141
TagParser::AbstractTrack::setInputStream
void setInputStream(std::istream &stream)
Assigns another input stream.
Definition: abstracttrack.h:188
TagParser::AbstractTrack::resolution
const Size & resolution() const
Returns the resolution if known; otherwise returns a zero size.
Definition: abstracttrack.h:520
TagParser::AbstractTrack::inputStream
std::istream & inputStream()
Returns the associated input stream.
Definition: abstracttrack.h:177
TagParser::AbstractTrack::m_id
std::uint64_t m_id
Definition: abstracttrack.h:132
TagParser::TagTextEncoding::Latin1
@ Latin1
TagParser::AbstractTrack::m_size
std::uint64_t m_size
Definition: abstracttrack.h:130
TagParser::MediaType
MediaType
The MediaType enum specifies the type of media data (audio, video, text, ...).
Definition: mediaformat.h:13
TagParser::AbstractTrack::mediaType
MediaType mediaType() const
Returns the media type if known; otherwise returns MediaType::Other.
Definition: abstracttrack.h:300
TagParser::AbstractTrack::bitrate
double bitrate() const
Returns the average bitrate in kbit/s if known; otherwise returns zero.
Definition: abstracttrack.h:383
TagParser::MatroskaTagIds::language
constexpr TAG_PARSER_EXPORT const char * language()
Definition: matroskatagid.h:343
TagParser::AbstractTrack::m_headerValid
bool m_headerValid
Definition: abstracttrack.h:124
diagnostics.h
TagParser::TrackType::OggStream
@ OggStream
TagParser::Size
The Size class defines the size of a two-dimensional object using integer point precision.
Definition: size.h:16
TagParser::AbstractTrack::type
virtual TrackType type() const
Returns the type of the track if known; otherwise returns TrackType::Unspecified.
Definition: abstracttrack.h:237
TagParser::AbstractTrack::sampleCount
std::uint64_t sampleCount() const
Returns the number of samples/frames if known; otherwise returns 0.
Definition: abstracttrack.h:480
TagParser::VorbisCommentIds::trackNumber
constexpr TAG_PARSER_EXPORT const char * trackNumber()
Definition: vorbiscommentids.h:14
TagParser::AbstractTrack::version
double version() const
Returns the version/level of the track if known; otherwise returns 0.
Definition: abstracttrack.h:261
TagParser::AbstractTrack::formatName
const char * formatName() const
Returns the format of the track as C-style string if known; otherwise returns the format abbreviation...
Definition: abstracttrack.h:273
TagParser::AbstractTrack::m_default
bool m_default
Definition: abstracttrack.h:161
TagParser::Mp4Track
Implementation of TagParser::AbstractTrack for the MP4 container.
Definition: mp4track.h:118
TagParser::AbstractTrack
The AbstractTrack class parses and stores technical information about video, audio and other kinds of...
Definition: abstracttrack.h:39
TagParser::AbstractTrack::m_channelCount
std::uint16_t m_channelCount
Definition: abstracttrack.h:144
TagParser::AbstractTrack::m_pixelSize
Size m_pixelSize
Definition: abstracttrack.h:150
TagParser::AbstractTrack::m_modificationTime
CppUtilities::DateTime m_modificationTime
Definition: abstracttrack.h:138
margin.h
TagParser::AbstractTrack::m_mediaType
MediaType m_mediaType
Definition: abstracttrack.h:128
TagParser::WaveAudioStream
Implementation of TagParser::AbstractTrack for the RIFF WAVE container format.
Definition: waveaudiostream.h:51
TagParser::AbstractTrack::m_writer
CppUtilities::BinaryWriter m_writer
Definition: abstracttrack.h:122
TagParser::AbstractTrack::m_bytesPerSecond
std::uint32_t m_bytesPerSecond
Definition: abstracttrack.h:143
TagParser::AbstractTrack::m_bitsPerSample
std::uint16_t m_bitsPerSample
Definition: abstracttrack.h:142
TagParser::AbstractTrack::quality
int quality() const
Returns the quality if known; otherwise returns 0.
Definition: abstracttrack.h:490
TagParser::AbstractTrack::compressorName
const std::string & compressorName() const
Returns the compressor name if known; otherwise returns an empty string.
Definition: abstracttrack.h:528
TagParser::AbstractTrack::creationTime
const CppUtilities::DateTime & creationTime() const
Returns the creation time if known; otherwise returns a DateTime of zero ticks.
Definition: abstracttrack.h:399
TagParser::TrackType::MpegAudioFrameStream
@ MpegAudioFrameStream
TagParser::TrackType::FlacStream
@ FlacStream
TagParser::AbstractTrack::isHeaderValid
bool isHeaderValid() const
Returns an indication whether the track header is valid.
Definition: abstracttrack.h:684
TagParser::mediaTypeName
TAG_PARSER_EXPORT const char * mediaTypeName(MediaType mediaType)
Returns the string representation for the specified mediaType.
Definition: mediaformat.cpp:1059
TagParser::RawDataType::DateTime
@ DateTime
Definition: mp4tagfield.h:36
TagParser::AbstractTrack::m_startOffset
std::uint64_t m_startOffset
Definition: abstracttrack.h:123
TagParser::AbstractTrack::setDefault
void setDefault(bool isDefault)
Sets whether the track is a default track.
Definition: abstracttrack.h:627
TagParser::AbstractTrack::m_compressorName
std::string m_compressorName
Definition: abstracttrack.h:153
TagParser::AspectRatio
The AspectRatio struct defines an aspect ratio.
Definition: aspectratio.h:13
TagParser::AbstractTrack::m_format
MediaFormat m_format
Definition: abstracttrack.h:125
TagParser::AbstractTrack::language
const std::string & language() const
Returns the language of the track if known; otherwise returns an empty string.
Definition: abstracttrack.h:417
TagParser::AbstractTrack::m_fps
std::uint32_t m_fps
Definition: abstracttrack.h:155
TagParser::AbstractTrack::setName
void setName(const std::string &name)
Sets the name.
Definition: abstracttrack.h:367
TagParser::AbstractTrack::id
std::uint64_t id() const
Returns the track ID if known; otherwise returns 0.
Definition: abstracttrack.h:341
TagParser::AbstractTrack::reader
CppUtilities::BinaryReader & reader()
Returns a binary reader for the associated stream.
Definition: abstracttrack.h:218
TAG_PARSER_EXPORT
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.
TagParser::AbstractTrack::startOffset
std::uint64_t startOffset() const
Returns the start offset of the track in the associated stream.
Definition: abstracttrack.h:245
TagParser::AbstractTrack::m_lacing
bool m_lacing
Definition: abstracttrack.h:163
TagParser::AbstractTrack::isDefault
bool isDefault() const
Returns true if the track is denoted as default; otherwise returns false.
Definition: abstracttrack.h:618
TagParser::AbstractTrack::pixelAspectRatio
const AspectRatio & pixelAspectRatio() const
Returns the pixel aspect ratio (PAR).
Definition: abstracttrack.h:573
TagParser::AbstractTrack::m_channelConfig
std::uint8_t m_channelConfig
Definition: abstracttrack.h:145
mediaformat.h
TagParser::AbstractTrack::m_pixelAspectRatio
AspectRatio m_pixelAspectRatio
Definition: abstracttrack.h:157
TagParser::AbstractTrack::bitsPerSample
std::uint16_t bitsPerSample() const
Returns the number of bits per sample; otherwise returns 0.
Definition: abstracttrack.h:451
TagParser::AbstractTrack::m_usedInPresentation
bool m_usedInPresentation
Definition: abstracttrack.h:165
TagParser::AbstractTrack::m_formatName
std::string m_formatName
Definition: abstracttrack.h:127
TagParser::AbstractTrack::displaySize
const Size & displaySize() const
Returns the size of the video frames to display if known; otherwise returns a zero size.
Definition: abstracttrack.h:510
TagParser::AbstractTrack::pixelSize
const Size & pixelSize() const
Returns the size of the encoded video frames if known; otherwise returns a zero size.
Definition: abstracttrack.h:500
TagParser::MpegAudioFrameStream
Implementation of TagParser::AbstractTrack MPEG audio streams.
Definition: mpegaudioframestream.h:12
TagParser::AbstractTrack::m_interlaced
bool m_interlaced
Definition: abstracttrack.h:158
TagParser::AbstractTrack::formatId
const std::string & formatId() const
Returns the format/codec ID.
Definition: abstracttrack.h:292
TagParser::AbstractTrack::extensionSamplingFrequency
std::uint32_t extensionSamplingFrequency() const
Returns the number of samples per second if known; otherwise returns 0.
Definition: abstracttrack.h:443
TagParser::AbstractTrack::internalParseHeader
virtual void internalParseHeader(Diagnostics &diag)=0
This method is internally called to parse header information.
TagParser::AbstractTrack::timeScale
std::uint32_t timeScale() const
Returns the time scale if known; otherwise returns 0.
Definition: abstracttrack.h:593
TagParser::AbstractTrack::mediaTypeName
const char * mediaTypeName() const
Returns the string representation of the media type of the track.
Definition: abstracttrack.h:308
TagParser::Mpeg4ChannelConfigs::channelConfigString
TAG_PARSER_EXPORT const char * channelConfigString(std::uint8_t config)
Returns the string representation for the specified MPEG-4 channel config.
Definition: mp4ids.cpp:433
TagParser::AbstractTrack::channelConfig
std::uint8_t channelConfig() const
Returns the channel configuration.
Definition: abstracttrack.h:472
TagParser::AbstractTrack::m_creationTime
CppUtilities::DateTime m_creationTime
Definition: abstracttrack.h:137
TagParser::MatroskaTagIds::duration
constexpr TAG_PARSER_EXPORT const char * duration()
Definition: matroskatagid.h:339
TagParser::AbstractTrack::name
const std::string name() const
Returns the track name if known; otherwise returns an empty string.
Definition: abstracttrack.h:358
size.h
TagParser::AbstractTrack::m_cropping
Margin m_cropping
Definition: abstracttrack.h:168
TagParser::MediaFormat
The MediaFormat class specifies the format of media data.
Definition: mediaformat.h:245
TagParser::AbstractTrack::m_istream
std::istream * m_istream
Definition: abstracttrack.h:119
TagParser::AbstractTrack::setCompressorName
void setCompressorName(const std::string &compressorName)
Returns the compressor name if known; otherwise returns an empty string.
Definition: abstracttrack.h:537
TagParser::AbstractTrack::writer
CppUtilities::BinaryWriter & writer()
Returns a binary writer for the associated stream.
Definition: abstracttrack.h:229
TagParser::AbstractTrack::m_extensionChannelConfig
std::uint8_t m_extensionChannelConfig
Definition: abstracttrack.h:146
TagParser::AbstractTrack::setLanguage
void setLanguage(const std::string &language)
Sets the language of the track.
Definition: abstracttrack.h:426
TagParser::AbstractTrack::m_quality
int m_quality
Definition: abstracttrack.h:149
TagParser::AbstractTrack::trackNumber
std::uint32_t trackNumber() const
Returns the track number if known; otherwise returns 0.
Definition: abstracttrack.h:324