content/media/encoder/TrackMetadataBase.h

Fri, 16 Jan 2015 04:50:19 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 04:50:19 +0100
branch
TOR_BUG_9701
changeset 13
44a2da4a2ab2
permissions
-rw-r--r--

Replace accessor implementation with direct member state manipulation, by
request https://trac.torproject.org/projects/tor/ticket/9701#comment:32

     1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     4  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 #ifndef TrackMetadataBase_h_
     7 #define TrackMetadataBase_h_
     9 #include "nsTArray.h"
    10 #include "nsCOMPtr.h"
    11 namespace mozilla {
    13 // A class represent meta data for various codec format. Only support one track information.
    14 class TrackMetadataBase
    15 {
    16 public:
    17   NS_INLINE_DECL_THREADSAFE_REFCOUNTING(TrackMetadataBase)
    18   enum MetadataKind {
    19     METADATA_OPUS,    // Represent the Opus metadata
    20     METADATA_VP8,
    21     METADATA_VORBIS,
    22     METADATA_AVC,
    23     METADATA_AAC,
    24     METADATA_AMR,
    25     METADATA_UNKNOWN  // Metadata Kind not set
    26   };
    27   // Return the specific metadata kind
    28   virtual MetadataKind GetKind() const = 0;
    30 protected:
    31   // Protected destructor, to discourage deletion outside of Release():
    32   virtual ~TrackMetadataBase() {}
    33 };
    35 // The base class for audio metadata.
    36 class AudioTrackMetadata : public TrackMetadataBase {
    37 public:
    38   // The duration of each sample set generated by encoder. (counted by samples)
    39   // If the duration is variant, this value should return 0.
    40   virtual uint32_t GetAudioFrameDuration() = 0;
    42   // The size of each sample set generated by encoder. (counted by byte)
    43   // If the size is variant, this value should return 0.
    44   virtual uint32_t GetAudioFrameSize() = 0;
    46   // AudioSampleRate is the number of audio sample per second.
    47   virtual uint32_t GetAudioSampleRate() = 0;
    49   virtual uint32_t GetAudioChannels() = 0;
    50 };
    52 // The base class for video metadata.
    53 class VideoTrackMetadata : public TrackMetadataBase {
    54 public:
    55   // VideoHeight and VideoWidth are the frame size of the elementary stream.
    56   virtual uint32_t GetVideoHeight() = 0;
    57   virtual uint32_t GetVideoWidth() = 0;
    59   // VideoDisplayHeight and VideoDisplayWidth are the display frame size.
    60   virtual uint32_t GetVideoDisplayHeight() = 0;
    61   virtual uint32_t GetVideoDisplayWidth() = 0;
    63   // VideoClockRate is the number of samples per second in video frame's
    64   // timestamp.
    65   // For example, if VideoClockRate is 90k Hz and VideoFrameRate is
    66   // 30 fps, each frame's sample duration will be 3000 Hz.
    67   virtual uint32_t GetVideoClockRate() = 0;
    69   // VideoFrameRate is numner of frames per second.
    70   virtual uint32_t GetVideoFrameRate() = 0;
    71 };
    73 }
    74 #endif

mercurial