https://github.com/mozilla/gecko-dev
Raw File
Tip revision: 57bc556309b960edd1f76936a33ea936541d6bee authored by seabld on 21 July 2012, 17:05:03 UTC
Added tag SEAMONKEY_2_12b1_RELEASE for changeset FIREFOX_15_0b1_BUILD1. CLOSED TREE a=release
Tip revision: 57bc556
VideoUtils.cpp
/* 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);
  }
}
back to top