content/media/encoder/fmp4_muxer/ISOTrackMetadata.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/content/media/encoder/fmp4_muxer/ISOTrackMetadata.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,104 @@
     1.4 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/
     1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public
     1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     1.7 + * You can obtain one at http://mozilla.org/MPL/2.0/. */
     1.8 +
     1.9 +#ifndef ISOTrackMetadata_h_
    1.10 +#define ISOTrackMetadata_h_
    1.11 +
    1.12 +#include "TrackMetadataBase.h"
    1.13 +
    1.14 +namespace mozilla {
    1.15 +
    1.16 +class AACTrackMetadata : public AudioTrackMetadata {
    1.17 +public:
    1.18 +  // AudioTrackMetadata members
    1.19 +  uint32_t GetAudioFrameDuration() MOZ_OVERRIDE { return mFrameDuration; }
    1.20 +  uint32_t GetAudioFrameSize() MOZ_OVERRIDE { return mFrameSize; }
    1.21 +  uint32_t GetAudioSampleRate() MOZ_OVERRIDE { return mSampleRate; }
    1.22 +  uint32_t GetAudioChannels() MOZ_OVERRIDE { return mChannels; }
    1.23 +
    1.24 +  // TrackMetadataBase member
    1.25 +  MetadataKind GetKind() const MOZ_OVERRIDE { return METADATA_AAC; }
    1.26 +
    1.27 +  // AACTrackMetadata members
    1.28 +  AACTrackMetadata()
    1.29 +    : mSampleRate(0)
    1.30 +    , mFrameDuration(0)
    1.31 +    , mFrameSize(0)
    1.32 +    , mChannels(0) {
    1.33 +    MOZ_COUNT_CTOR(AACTrackMetadata);
    1.34 +  }
    1.35 +  ~AACTrackMetadata() { MOZ_COUNT_DTOR(AACTrackMetadata); }
    1.36 +
    1.37 +  uint32_t mSampleRate;     // From 14496-3 table 1.16, it could be 7350 ~ 96000.
    1.38 +  uint32_t mFrameDuration;  // Audio frame duration based on SampleRate.
    1.39 +  uint32_t mFrameSize;      // Audio frame size, 0 is variant size.
    1.40 +  uint32_t mChannels;       // Channel number, it should be 1 or 2.
    1.41 +};
    1.42 +
    1.43 +// AVC clock rate is 90k Hz.
    1.44 +#define AVC_CLOCK_RATE 90000
    1.45 +
    1.46 +class AVCTrackMetadata : public VideoTrackMetadata {
    1.47 +public:
    1.48 +  // VideoTrackMetadata members
    1.49 +  uint32_t GetVideoHeight() MOZ_OVERRIDE { return mHeight; }
    1.50 +  uint32_t GetVideoWidth() MOZ_OVERRIDE {return mWidth; }
    1.51 +  uint32_t GetVideoDisplayHeight() MOZ_OVERRIDE { return mDisplayHeight; }
    1.52 +  uint32_t GetVideoDisplayWidth() MOZ_OVERRIDE { return mDisplayWidth;  }
    1.53 +  uint32_t GetVideoClockRate() MOZ_OVERRIDE { return AVC_CLOCK_RATE; }
    1.54 +  uint32_t GetVideoFrameRate() MOZ_OVERRIDE { return mFrameRate; }
    1.55 +
    1.56 +  // TrackMetadataBase member
    1.57 +  MetadataKind GetKind() const MOZ_OVERRIDE { return METADATA_AVC; }
    1.58 +
    1.59 +  // AVCTrackMetadata
    1.60 +  AVCTrackMetadata()
    1.61 +    : mHeight(0)
    1.62 +    , mWidth(0)
    1.63 +    , mDisplayHeight(0)
    1.64 +    , mDisplayWidth(0)
    1.65 +    , mFrameRate(0) {
    1.66 +    MOZ_COUNT_CTOR(AVCTrackMetadata);
    1.67 +  }
    1.68 +  ~AVCTrackMetadata() { MOZ_COUNT_DTOR(AVCTrackMetadata); }
    1.69 +
    1.70 +  uint32_t mHeight;
    1.71 +  uint32_t mWidth;
    1.72 +  uint32_t mDisplayHeight;
    1.73 +  uint32_t mDisplayWidth;
    1.74 +  uint32_t mFrameRate;       // frames per second
    1.75 +};
    1.76 +
    1.77 +
    1.78 +// AMR sample rate is 8000 samples/s.
    1.79 +#define AMR_SAMPLE_RATE 8000
    1.80 +
    1.81 +// Channel number is always 1.
    1.82 +#define AMR_CHANNELS    1
    1.83 +
    1.84 +// AMR speech codec, 3GPP TS 26.071. Encoder and continer support AMR-NB only
    1.85 +// currently.
    1.86 +class AMRTrackMetadata : public AudioTrackMetadata {
    1.87 +public:
    1.88 +  // AudioTrackMetadata members
    1.89 +  //
    1.90 +  // The number of sample sets generates by encoder is variant. So the
    1.91 +  // frame duration and frame size are both 0.
    1.92 +  uint32_t GetAudioFrameDuration() MOZ_OVERRIDE { return 0; }
    1.93 +  uint32_t GetAudioFrameSize() MOZ_OVERRIDE { return 0; }
    1.94 +  uint32_t GetAudioSampleRate() MOZ_OVERRIDE { return AMR_SAMPLE_RATE; }
    1.95 +  uint32_t GetAudioChannels() MOZ_OVERRIDE { return AMR_CHANNELS; }
    1.96 +
    1.97 +  // TrackMetadataBase member
    1.98 +  MetadataKind GetKind() const MOZ_OVERRIDE { return METADATA_AMR; }
    1.99 +
   1.100 +  // AMRTrackMetadata members
   1.101 +  AMRTrackMetadata() { MOZ_COUNT_CTOR(AMRTrackMetadata); }
   1.102 +  ~AMRTrackMetadata() { MOZ_COUNT_DTOR(AMRTrackMetadata); }
   1.103 +};
   1.104 +
   1.105 +}
   1.106 +
   1.107 +#endif // ISOTrackMetadata_h_

mercurial