content/media/encoder/OmxTrackEncoder.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/content/media/encoder/OmxTrackEncoder.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,96 @@
     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 OmxTrackEncoder_h_
    1.10 +#define OmxTrackEncoder_h_
    1.11 +
    1.12 +#include "TrackEncoder.h"
    1.13 +
    1.14 +namespace android {
    1.15 +class OMXVideoEncoder;
    1.16 +class OMXAudioEncoder;
    1.17 +}
    1.18 +
    1.19 +/**
    1.20 + * There are two major classes defined in file OmxTrackEncoder;
    1.21 + * OmxVideoTrackEncoder and OmxAudioTrackEncoder, the video and audio track
    1.22 + * encoder for media type AVC/H.264 and AAC. OMXCodecWrapper wraps and controls
    1.23 + * an instance of MediaCodec, defined in libstagefright, runs on Android Jelly
    1.24 + * Bean platform.
    1.25 + */
    1.26 +
    1.27 +namespace mozilla {
    1.28 +
    1.29 +class OmxVideoTrackEncoder: public VideoTrackEncoder
    1.30 +{
    1.31 +public:
    1.32 +  OmxVideoTrackEncoder()
    1.33 +    : VideoTrackEncoder()
    1.34 +  {}
    1.35 +
    1.36 +  already_AddRefed<TrackMetadataBase> GetMetadata() MOZ_OVERRIDE;
    1.37 +
    1.38 +  nsresult GetEncodedTrack(EncodedFrameContainer& aData) MOZ_OVERRIDE;
    1.39 +
    1.40 +protected:
    1.41 +  nsresult Init(int aWidth, int aHeight,
    1.42 +                int aDisplayWidth, int aDisplayHeight,
    1.43 +                TrackRate aTrackRate) MOZ_OVERRIDE;
    1.44 +
    1.45 +private:
    1.46 +  nsAutoPtr<android::OMXVideoEncoder> mEncoder;
    1.47 +};
    1.48 +
    1.49 +class OmxAudioTrackEncoder : public AudioTrackEncoder
    1.50 +{
    1.51 +public:
    1.52 +  OmxAudioTrackEncoder()
    1.53 +    : AudioTrackEncoder()
    1.54 +  {}
    1.55 +
    1.56 +  already_AddRefed<TrackMetadataBase> GetMetadata() = 0;
    1.57 +
    1.58 +  nsresult GetEncodedTrack(EncodedFrameContainer& aData) MOZ_OVERRIDE;
    1.59 +
    1.60 +protected:
    1.61 +  nsresult Init(int aChannels, int aSamplingRate) = 0;
    1.62 +
    1.63 +  // Append encoded frames to aContainer.
    1.64 +  nsresult AppendEncodedFrames(EncodedFrameContainer& aContainer);
    1.65 +
    1.66 +  nsAutoPtr<android::OMXAudioEncoder> mEncoder;
    1.67 +};
    1.68 +
    1.69 +class OmxAACAudioTrackEncoder MOZ_FINAL : public OmxAudioTrackEncoder
    1.70 +{
    1.71 +public:
    1.72 +  OmxAACAudioTrackEncoder()
    1.73 +    : OmxAudioTrackEncoder()
    1.74 +  {}
    1.75 +
    1.76 +  already_AddRefed<TrackMetadataBase> GetMetadata() MOZ_OVERRIDE;
    1.77 +
    1.78 +protected:
    1.79 +  nsresult Init(int aChannels, int aSamplingRate) MOZ_OVERRIDE;
    1.80 +};
    1.81 +
    1.82 +class OmxAMRAudioTrackEncoder MOZ_FINAL : public OmxAudioTrackEncoder
    1.83 +{
    1.84 +public:
    1.85 +  OmxAMRAudioTrackEncoder()
    1.86 +    : OmxAudioTrackEncoder()
    1.87 +  {}
    1.88 +
    1.89 +  enum {
    1.90 +    AMR_NB_SAMPLERATE = 8000,
    1.91 +  };
    1.92 +  already_AddRefed<TrackMetadataBase> GetMetadata() MOZ_OVERRIDE;
    1.93 +
    1.94 +protected:
    1.95 +  nsresult Init(int aChannels, int aSamplingRate) MOZ_OVERRIDE;
    1.96 +};
    1.97 +
    1.98 +}
    1.99 +#endif

mercurial