/* 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/. */ #include "VideoUtils.h" #include "nsMathUtils.h" #include "prtypes.h" #include "mozilla/StandardInteger.h" // Converts from number of audio frames to microseconds, given the specified // audio rate. CheckedInt64 FramesToUsecs(PRInt64 aFrames, PRUint32 aRate) { return (CheckedInt64(aFrames) * USECS_PER_S) / aRate; } // Converts from microseconds to number of audio frames, given the specified // audio rate. CheckedInt64 UsecsToFrames(PRInt64 aUsecs, PRUint32 aRate) { return (CheckedInt64(aUsecs) * aRate) / USECS_PER_S; } static PRInt32 ConditionDimension(float aValue) { // This will exclude NaNs and too-big values. if (aValue > 1.0 && aValue <= PR_INT32_MAX) return PRInt32(NS_round(aValue)); return 0; } void ScaleDisplayByAspectRatio(nsIntSize& aDisplay, float aAspectRatio) { if (aAspectRatio > 1.0) { // Increase the intrinsic width aDisplay.width = ConditionDimension(aAspectRatio * aDisplay.width); } else { // Increase the intrinsic height aDisplay.height = ConditionDimension(aDisplay.height / aAspectRatio); } }