diff -r 000000000000 -r 6474c204b198 content/media/MediaInfo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/media/MediaInfo.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,76 @@ +/* -*- 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