Tag Parser  9.0.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 
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 
110  void parseHeader(Diagnostics &diag);
111  bool isHeaderValid() const;
112 
113 protected:
114  AbstractTrack(std::istream &inputStream, std::ostream &outputStream, std::uint64_t startOffset);
115  AbstractTrack(std::iostream &stream, std::uint64_t startOffset);
116  virtual void internalParseHeader(Diagnostics &diag) = 0;
117 
118  std::istream *m_istream;
119  std::ostream *m_ostream;
120  CppUtilities::BinaryReader m_reader;
121  CppUtilities::BinaryWriter m_writer;
122  std::uint64_t m_startOffset;
125  std::string m_formatId;
126  std::string m_formatName;
128  double m_version;
129  std::uint64_t m_size;
130  std::uint32_t m_trackNumber;
131  std::uint64_t m_id;
132  std::string m_name;
134  double m_bitrate;
135  double m_maxBitrate;
138  std::string m_language;
139  std::uint32_t m_samplingFrequency;
141  std::uint16_t m_bitsPerSample;
142  std::uint32_t m_bytesPerSecond;
143  std::uint16_t m_channelCount;
144  std::uint8_t m_channelConfig;
146  std::uint16_t m_chunkSize;
147  std::uint64_t m_sampleCount;
152  std::string m_compressorName;
153  std::uint16_t m_depth;
154  std::uint32_t m_fps;
155  const char *m_chromaFormat;
158  std::uint32_t m_timeScale;
159  bool m_enabled;
160  bool m_default;
161  bool m_forced;
162  bool m_lacing;
166  std::uint32_t m_colorSpace;
168 };
169 
173 inline std::istream &AbstractTrack::inputStream()
174 {
175  return *m_istream;
176 }
177 
184 inline void AbstractTrack::setInputStream(std::istream &stream)
185 {
186  m_reader.setStream(m_istream = &stream);
187 }
188 
192 inline std::ostream &AbstractTrack::outputStream()
193 {
194  return *m_ostream;
195 }
196 
203 inline void AbstractTrack::setOutputStream(std::ostream &stream)
204 {
205  m_writer.setStream(m_ostream = &stream);
206 }
207 
214 inline CppUtilities::BinaryReader &AbstractTrack::reader()
215 {
216  return m_reader;
217 }
218 
225 inline CppUtilities::BinaryWriter &AbstractTrack::writer()
226 {
227  return m_writer;
228 }
229 
234 {
235  return TrackType::Unspecified;
236 }
237 
241 inline std::uint64_t AbstractTrack::startOffset() const
242 {
243  return m_startOffset;
244 }
245 
250 {
251  return m_format;
252 }
253 
257 inline double AbstractTrack::version() const
258 {
259  return m_version;
260 }
261 
269 inline const char *AbstractTrack::formatName() const
270 {
271  return m_format || m_formatName.empty() ? m_format.name() : m_formatName.c_str();
272 }
273 
278 inline const char *AbstractTrack::formatAbbreviation() const
279 {
280  const char *abbr = m_format.abbreviation();
281  return *abbr || m_formatId.empty() ? m_format.abbreviation() : m_formatId.c_str();
282 }
283 
288 inline const std::string &AbstractTrack::formatId() const
289 {
290  return m_formatId;
291 }
292 
297 {
298  return m_mediaType;
299 }
300 
304 inline const char *AbstractTrack::mediaTypeName() const
305 {
307 }
308 
312 inline std::uint64_t AbstractTrack::size() const
313 {
314  return m_size;
315 }
316 
320 inline std::uint32_t AbstractTrack::trackNumber() const
321 {
322  return m_trackNumber;
323 }
324 
329 inline void AbstractTrack::setTrackNumber(std::uint32_t trackNumber)
330 {
332 }
333 
337 inline std::uint64_t AbstractTrack::id() const
338 {
339  return m_id;
340 }
341 
346 inline void AbstractTrack::setId(std::uint64_t id)
347 {
348  m_id = id;
349 }
350 
354 inline const std::string AbstractTrack::name() const
355 {
356  return m_name;
357 }
358 
363 inline void AbstractTrack::setName(const std::string &name)
364 {
365  m_name = name;
366 }
367 
372 {
373  return m_duration;
374 }
375 
379 inline double AbstractTrack::bitrate() const
380 {
381  return m_bitrate;
382 }
383 
387 inline double AbstractTrack::maxBitrate() const
388 {
389  return m_maxBitrate;
390 }
391 
396 {
397  return m_creationTime;
398 }
399 
404 {
405  return m_modificationTime;
406 }
407 
413 inline const std::string &AbstractTrack::language() const
414 {
415  return m_language;
416 }
417 
422 inline void AbstractTrack::setLanguage(const std::string &language)
423 {
425 }
426 
430 inline std::uint32_t AbstractTrack::samplingFrequency() const
431 {
432  return m_samplingFrequency;
433 }
434 
439 inline std::uint32_t AbstractTrack::extensionSamplingFrequency() const
440 {
442 }
443 
447 inline std::uint16_t AbstractTrack::bitsPerSample() const
448 {
449  return m_bitsPerSample;
450 }
451 
457 inline std::uint16_t AbstractTrack::channelCount() const
458 {
459  return m_channelCount;
460 }
461 
468 inline std::uint8_t AbstractTrack::channelConfig() const
469 {
470  return m_channelConfig;
471 }
472 
476 inline std::uint64_t AbstractTrack::sampleCount() const
477 {
478  return m_sampleCount;
479 }
480 
486 inline int AbstractTrack::quality() const
487 {
488  return m_quality;
489 }
490 
496 inline const Size &AbstractTrack::pixelSize() const
497 {
498  return m_pixelSize;
499 }
500 
506 inline const Size &AbstractTrack::displaySize() const
507 {
508  return m_displaySize;
509 }
510 
516 inline const Size &AbstractTrack::resolution() const
517 {
518  return m_resolution;
519 }
520 
524 inline const std::string &AbstractTrack::compressorName() const
525 {
526  return m_compressorName;
527 }
528 
533 inline void AbstractTrack::setCompressorName(const std::string &compressorName)
534 {
536 }
537 
541 inline std::uint16_t AbstractTrack::depth() const
542 {
543  return m_depth;
544 }
545 
551 inline std::uint32_t AbstractTrack::fps() const
552 {
553  return m_fps;
554 }
555 
561 inline const char *AbstractTrack::chromaFormat() const
562 {
563  return m_chromaFormat;
564 }
565 
570 {
571  return m_pixelAspectRatio;
572 }
573 
579 inline bool AbstractTrack::isInterlaced() const
580 {
581  return m_interlaced;
582 }
583 
589 inline std::uint32_t AbstractTrack::timeScale() const
590 {
591  return m_timeScale;
592 }
593 
597 inline bool AbstractTrack::isEnabled() const
598 {
599  return m_enabled;
600 }
601 
606 inline void AbstractTrack::setEnabled(bool enabled)
607 {
608  m_enabled = enabled;
609 }
610 
614 inline bool AbstractTrack::isDefault() const
615 {
616  return m_default;
617 }
618 
623 inline void AbstractTrack::setDefault(bool isDefault)
624 {
626 }
627 
631 inline bool AbstractTrack::isForced() const
632 {
633  return m_forced;
634 }
635 
640 inline void AbstractTrack::setForced(bool forced)
641 {
642  m_forced = forced;
643 }
644 
648 inline bool AbstractTrack::hasLacing() const
649 {
650  return m_lacing;
651 }
652 
656 inline bool AbstractTrack::isEncrypted() const
657 {
658  return m_encrypted;
659 }
660 
664 inline std::uint32_t AbstractTrack::colorSpace() const
665 {
666  return m_colorSpace;
667 }
668 
672 inline const Margin &AbstractTrack::cropping() const
673 {
674  return m_cropping;
675 }
676 
680 inline bool AbstractTrack::isHeaderValid() const
681 {
682  return m_headerValid;
683 }
684 
685 } // namespace TagParser
686 
687 #endif // TAG_PARSER_ABSTRACTTRACK_H
TagParser::AbstractTrack::m_trackNumber
std::uint32_t m_trackNumber
Definition: abstracttrack.h:130
TagParser::AbstractTrack::samplingFrequency
std::uint32_t samplingFrequency() const
Returns the number of samples per second if known; otherwise returns 0.
Definition: abstracttrack.h:430
TagParser::AbstractTrack::m_colorSpace
std::uint32_t m_colorSpace
Definition: abstracttrack.h:166
TagParser::AbstractTrack::m_samplingFrequency
std::uint32_t m_samplingFrequency
Definition: abstracttrack.h:139
TagParser::AbstractTrack::maxBitrate
double maxBitrate() const
Returns the maximum bitrate in kbit/s if known; otherwise returns zero.
Definition: abstracttrack.h:387
TagParser::AbstractTrack::colorSpace
std::uint32_t colorSpace() const
Returns the color space if known; otherwise returns 0.
Definition: abstracttrack.h:664
TagParser::AbstractTrack::setId
void setId(std::uint64_t id)
Sets the track ID.
Definition: abstracttrack.h:346
TagParser::TagDataType::TimeSpan
TagParser::AbstractTrack::fps
std::uint32_t fps() const
Returns the number of frames per second if known; otherwise returns 0.
Definition: abstracttrack.h:551
TagParser::AbstractTrack::isEnabled
bool isEnabled() const
Returns true if the track is denoted as enabled; otherwise returns false.
Definition: abstracttrack.h:597
TagParser::AbstractTrack::m_enabled
bool m_enabled
Definition: abstracttrack.h:159
TagParser::AbstractTrack::m_bitrate
double m_bitrate
Definition: abstracttrack.h:134
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:278
TagParser::AbstractTrack::m_resolution
Size m_resolution
Definition: abstracttrack.h:151
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:561
TagParser::AbstractTrack::m_maxBitrate
double m_maxBitrate
Definition: abstracttrack.h:135
TagParser::AbstractTrack::m_language
std::string m_language
Definition: abstracttrack.h:138
TagParser::AbstractTrack::m_encrypted
bool m_encrypted
Definition: abstracttrack.h:163
TagParser::AbstractTrack::depth
std::uint16_t depth() const
Returns the bit depth if known; otherwise returns 0.
Definition: abstracttrack.h:541
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:648
TagParser::Mp4TagExtendedNameIds::label
const char * label
Definition: mp4ids.cpp:31
TagParser::AbstractTrack::m_version
double m_version
Definition: abstracttrack.h:128
TagParser::AbstractTrack::channelCount
std::uint16_t channelCount() const
Returns the number of channels if known; otherwise returns 0.
Definition: abstracttrack.h:457
TagParser::AbstractTrack::m_forced
bool m_forced
Definition: abstracttrack.h:161
TagParser::AbstractTrack::m_displaySize
Size m_displaySize
Definition: abstracttrack.h:150
TagParser::TrackType::IvfStream
TagParser::AbstractTrack::cropping
const Margin & cropping() const
Returns the cropping if known; otherwise returns zero margins.
Definition: abstracttrack.h:672
TagParser::AbstractTrack::isInterlaced
bool isInterlaced() const
Returns true if the video is denoted as interlaced; otherwise returns false.
Definition: abstracttrack.h:579
TagParser::TrackType::MatroskaTrack
TagParser::AbstractTrack::isEncrypted
bool isEncrypted() const
Returns true if the track is denoted as encrypted; otherwise returns false.
Definition: abstracttrack.h:656
TagParser::AbstractTrack::m_chromaFormat
const char * m_chromaFormat
Definition: abstracttrack.h:155
TagParser::VorbisCommentIds::version
constexpr const TAG_PARSER_EXPORT char * version()
Definition: vorbiscommentids.h:33
TagParser::TrackType::Mp4Track
TagParser::AbstractTrack::m_timeScale
std::uint32_t m_timeScale
Definition: abstracttrack.h:158
TagParser::AbstractTrack::setTrackNumber
void setTrackNumber(std::uint32_t trackNumber)
Sets the track number.
Definition: abstracttrack.h:329
TagParser::TrackType::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:403
TagParser::AbstractTrack::m_ostream
std::ostream * m_ostream
Definition: abstracttrack.h:119
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:132
TagParser::AbstractTrack::m_formatId
std::string m_formatId
Definition: abstracttrack.h:125
TagParser::AbstractTrack::setForced
void setForced(bool forced)
Sets whether the track is forced.
Definition: abstracttrack.h:640
TagParser::VorbisCommentIds::trackNumber
constexpr const TAG_PARSER_EXPORT char * trackNumber()
Definition: vorbiscommentids.h:13
TagParser::AbstractTrack::m_sampleCount
std::uint64_t m_sampleCount
Definition: abstracttrack.h:147
TagParser::AbstractTrack::m_reader
CppUtilities::BinaryReader m_reader
Definition: abstracttrack.h:120
TagParser::AbstractTrack::isForced
bool isForced() const
Returns true if the track is denoted as forced; otherwise returns false.
Definition: abstracttrack.h:631
TagParser::AbstractTrack::m_chunkSize
std::uint16_t m_chunkSize
Definition: abstracttrack.h:146
TagParser::MatroskaTagIds::language
constexpr const TAG_PARSER_EXPORT char * language()
Definition: matroskatagid.h:346
aspectratio.h
TagParser::AbstractTrack::outputStream
std::ostream & outputStream()
Returns the associated output stream.
Definition: abstracttrack.h:192
TagParser::TrackType::AdtsStream
TagParser::MatroskaTagIds::duration
constexpr const TAG_PARSER_EXPORT char * duration()
Definition: matroskatagid.h:342
TagParser::AbstractTrack::setEnabled
void setEnabled(bool enabled)
Sets whether the track is enabled.
Definition: abstracttrack.h:606
TagParser::AbstractTrack::m_depth
std::uint16_t m_depth
Definition: abstracttrack.h:153
TagParser::AbstractTrack::format
MediaFormat format() const
Returns the format of the track if known; otherwise returns MediaFormat::Unknown.
Definition: abstracttrack.h:249
TagParser::AbstractTrack::size
std::uint64_t size() const
Returns the size in bytes if known; otherwise returns 0.
Definition: abstracttrack.h:312
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:133
TagParser::AbstractTrack::setOutputStream
void setOutputStream(std::ostream &stream)
Assigns another output stream.
Definition: abstracttrack.h:203
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:454
TagParser::AbstractTrack::duration
const CppUtilities::TimeSpan & duration() const
Returns the duration if known; otherwise returns a TimeSpan of zero ticks.
Definition: abstracttrack.h:371
TagParser::AbstractTrack::m_usedWhenPreviewing
bool m_usedWhenPreviewing
Definition: abstracttrack.h:165
TagParser::AbstractTrack::m_extensionSamplingFrequency
std::uint32_t m_extensionSamplingFrequency
Definition: abstracttrack.h:140
TagParser::AbstractTrack::setInputStream
void setInputStream(std::istream &stream)
Assigns another input stream.
Definition: abstracttrack.h:184
TagParser::AbstractTrack::resolution
const Size & resolution() const
Returns the resolution if known; otherwise returns a zero size.
Definition: abstracttrack.h:516
TagParser::AbstractTrack::inputStream
std::istream & inputStream()
Returns the associated input stream.
Definition: abstracttrack.h:173
TagParser::AbstractTrack::m_id
std::uint64_t m_id
Definition: abstracttrack.h:131
TagParser::AbstractTrack::m_size
std::uint64_t m_size
Definition: abstracttrack.h:129
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:296
TagParser::AbstractTrack::bitrate
double bitrate() const
Returns the average bitrate in kbit/s if known; otherwise returns zero.
Definition: abstracttrack.h:379
TagParser::AbstractTrack::m_headerValid
bool m_headerValid
Definition: abstracttrack.h:123
diagnostics.h
TagParser::TrackType::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:233
TagParser::AbstractTrack::sampleCount
std::uint64_t sampleCount() const
Returns the number of samples/frames if known; otherwise returns 0.
Definition: abstracttrack.h:476
TagParser::AbstractTrack::version
double version() const
Returns the version/level of the track if known; otherwise returns 0.
Definition: abstracttrack.h:257
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:269
TagParser::AbstractTrack::m_default
bool m_default
Definition: abstracttrack.h:160
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:143
TagParser::AbstractTrack::m_pixelSize
Size m_pixelSize
Definition: abstracttrack.h:149
TagParser::AbstractTrack::m_modificationTime
CppUtilities::DateTime m_modificationTime
Definition: abstracttrack.h:137
margin.h
TagParser::AbstractTrack::m_mediaType
MediaType m_mediaType
Definition: abstracttrack.h:127
TagParser::MatroskaTagIds::fps
constexpr const TAG_PARSER_EXPORT char * fps()
Definition: matroskatagid.h:334
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:121
TagParser::AbstractTrack::m_bytesPerSecond
std::uint32_t m_bytesPerSecond
Definition: abstracttrack.h:142
TagParser::AbstractTrack::m_bitsPerSample
std::uint16_t m_bitsPerSample
Definition: abstracttrack.h:141
TagParser::AbstractTrack::quality
int quality() const
Returns the quality if known; otherwise returns 0.
Definition: abstracttrack.h:486
TagParser::AbstractTrack::compressorName
const std::string & compressorName() const
Returns the compressor name if known; otherwise returns an empty string.
Definition: abstracttrack.h:524
TagParser::AbstractTrack::creationTime
const CppUtilities::DateTime & creationTime() const
Returns the creation time if known; otherwise returns a DateTime of zero ticks.
Definition: abstracttrack.h:395
TagParser::TrackType::MpegAudioFrameStream
TagParser::TrackType::FlacStream
TagParser::AbstractTrack::isHeaderValid
bool isHeaderValid() const
Returns an indication whether the track header is valid.
Definition: abstracttrack.h:680
TagParser::mediaTypeName
const TAG_PARSER_EXPORT char * mediaTypeName(MediaType mediaType)
Returns the string representation for the specified mediaType.
Definition: mediaformat.cpp:997
TagParser::AbstractTrack::m_startOffset
std::uint64_t m_startOffset
Definition: abstracttrack.h:122
TagParser::AbstractTrack::setDefault
void setDefault(bool isDefault)
Sets whether the track is a default track.
Definition: abstracttrack.h:623
TagParser::AbstractTrack::m_compressorName
std::string m_compressorName
Definition: abstracttrack.h:152
TagParser::TagDataType::DateTime
TagParser::AspectRatio
The AspectRatio struct defines an aspect ratio.
Definition: aspectratio.h:13
TagParser::AbstractTrack::m_format
MediaFormat m_format
Definition: abstracttrack.h:124
TagParser::AbstractTrack::language
const std::string & language() const
Returns the language of the track if known; otherwise returns an empty string.
Definition: abstracttrack.h:413
TagParser::AbstractTrack::m_fps
std::uint32_t m_fps
Definition: abstracttrack.h:154
TagParser::AbstractTrack::setName
void setName(const std::string &name)
Sets the name.
Definition: abstracttrack.h:363
TagParser::MatroskaTagIds::TrackSpecific::bitrate
constexpr const TAG_PARSER_EXPORT char * bitrate()
The track's bit rate in bits per second.
Definition: matroskatagid.h:463
TagParser::AbstractTrack::id
std::uint64_t id() const
Returns the track ID if known; otherwise returns 0.
Definition: abstracttrack.h:337
TagParser::AbstractTrack::reader
CppUtilities::BinaryReader & reader()
Returns a binary reader for the associated stream.
Definition: abstracttrack.h:214
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:241
TagParser::AbstractTrack::m_lacing
bool m_lacing
Definition: abstracttrack.h:162
TagParser::AbstractTrack::isDefault
bool isDefault() const
Returns true if the track is denoted as default; otherwise returns false.
Definition: abstracttrack.h:614
TagParser::AbstractTrack::pixelAspectRatio
const AspectRatio & pixelAspectRatio() const
Returns the pixel aspect ratio (PAR).
Definition: abstracttrack.h:569
TagParser::AbstractTrack::m_channelConfig
std::uint8_t m_channelConfig
Definition: abstracttrack.h:144
mediaformat.h
TagParser::AbstractTrack::m_pixelAspectRatio
AspectRatio m_pixelAspectRatio
Definition: abstracttrack.h:156
TagParser::AbstractTrack::bitsPerSample
std::uint16_t bitsPerSample() const
Returns the number of bits per sample; otherwise returns 0.
Definition: abstracttrack.h:447
TagParser::AbstractTrack::m_usedInPresentation
bool m_usedInPresentation
Definition: abstracttrack.h:164
TagParser::AbstractTrack::m_formatName
std::string m_formatName
Definition: abstracttrack.h:126
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:506
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:496
TagParser::MpegAudioFrameStream
Implementation of TagParser::AbstractTrack MPEG audio streams.
Definition: mpegaudioframestream.h:12
TagParser::AbstractTrack::m_interlaced
bool m_interlaced
Definition: abstracttrack.h:157
TagParser::AbstractTrack::formatId
const std::string & formatId() const
Returns the format/codec ID.
Definition: abstracttrack.h:288
TagParser::AbstractTrack::extensionSamplingFrequency
std::uint32_t extensionSamplingFrequency() const
Returns the number of samples per second if known; otherwise returns 0.
Definition: abstracttrack.h:439
TagParser::AbstractTrack::timeScale
std::uint32_t timeScale() const
Returns the time scale if known; otherwise returns 0.
Definition: abstracttrack.h:589
TagParser::AbstractTrack::mediaTypeName
const char * mediaTypeName() const
Returns the string representation of the media type of the track.
Definition: abstracttrack.h:304
TagParser::Mpeg4ChannelConfigs::channelConfigString
const TAG_PARSER_EXPORT char * channelConfigString(std::uint8_t config)
Returns the string representation for the specified MPEG-4 channel config.
Definition: mp4ids.cpp:427
TagParser::AbstractTrack::channelConfig
std::uint8_t channelConfig() const
Returns the channel configuration.
Definition: abstracttrack.h:468
TagParser::AbstractTrack::m_creationTime
CppUtilities::DateTime m_creationTime
Definition: abstracttrack.h:136
TagParser::AbstractTrack::name
const std::string name() const
Returns the track name if known; otherwise returns an empty string.
Definition: abstracttrack.h:354
size.h
TagParser::AbstractTrack::m_cropping
Margin m_cropping
Definition: abstracttrack.h:167
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:118
TagParser::AbstractTrack::setCompressorName
void setCompressorName(const std::string &compressorName)
Returns the compressor name if known; otherwise returns an empty string.
Definition: abstracttrack.h:533
TagParser::AbstractTrack::writer
CppUtilities::BinaryWriter & writer()
Returns a binary writer for the associated stream.
Definition: abstracttrack.h:225
TagParser::AbstractTrack::m_extensionChannelConfig
std::uint8_t m_extensionChannelConfig
Definition: abstracttrack.h:145
TagParser::AbstractTrack::setLanguage
void setLanguage(const std::string &language)
Sets the language of the track.
Definition: abstracttrack.h:422
TagParser::MatroskaTagIds::description
constexpr const TAG_PARSER_EXPORT char * description()
Definition: matroskatagid.h:234
TagParser::TrackType::Unspecified
TagParser::AbstractTrack::m_quality
int m_quality
Definition: abstracttrack.h:148
TagParser::AbstractTrack::trackNumber
std::uint32_t trackNumber() const
Returns the track number if known; otherwise returns 0.
Definition: abstracttrack.h:320