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