/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=8 sts=2 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #if !defined(MediaInfo_h) #define MediaInfo_h #include "nsSize.h" #include "nsRect.h" #include "ImageTypes.h" namespace mozilla { // Stores info relevant to presenting media frames. class VideoInfo { public: VideoInfo() : mDisplay(0,0) , mStereoMode(StereoMode::MONO) , mHasVideo(false) {} // Size in pixels at which the video is rendered. This is after it has // been scaled by its aspect ratio. nsIntSize mDisplay; // Indicates the frame layout for single track stereo videos. StereoMode mStereoMode; // True if we have an active video bitstream. bool mHasVideo; }; class AudioInfo { public: AudioInfo() : mRate(44100) , mChannels(2) , mHasAudio(false) {} // Sample rate. uint32_t mRate; // Number of audio channels. uint32_t mChannels; // True if we have an active audio bitstream. bool mHasAudio; }; class MediaInfo { public: bool HasVideo() const { return mVideo.mHasVideo; } bool HasAudio() const { return mAudio.mHasAudio; } bool HasValidMedia() const { return HasVideo() || HasAudio(); } VideoInfo mVideo; AudioInfo mAudio; }; } // namespace mozilla #endif // MediaInfo_h