Bug 1135655 - bump up tab sharing dimension defaults to match screensharing r=jesup

This commit is contained in:
Jan-Ivar Bruaroey 2015-03-13 12:21:20 -04:00
Родитель 8bd1b37f87
Коммит c27c8bdddb
1 изменённых файлов: 13 добавлений и 6 удалений

Просмотреть файл

@ -114,6 +114,10 @@ MediaEngineTabVideoSource::GetUUID(nsAString_internal& aUuid)
aUuid.AssignLiteral(MOZ_UTF16("uuid")); aUuid.AssignLiteral(MOZ_UTF16("uuid"));
} }
#define DEFAULT_TABSHARE_VIDEO_MAX_WIDTH 4096
#define DEFAULT_TABSHARE_VIDEO_MAX_HEIGHT 4096
#define DEFAULT_TABSHARE_VIDEO_FRAMERATE 30
nsresult nsresult
MediaEngineTabVideoSource::Allocate(const dom::MediaTrackConstraints& aConstraints, MediaEngineTabVideoSource::Allocate(const dom::MediaTrackConstraints& aConstraints,
const MediaEnginePrefs& aPrefs) const MediaEnginePrefs& aPrefs)
@ -129,11 +133,11 @@ MediaEngineTabVideoSource::Allocate(const dom::MediaTrackConstraints& aConstrain
FlattenedConstraints c(aConstraints); FlattenedConstraints c(aConstraints);
mBufWidthMax = c.mWidth.Clamp(c.mWidth.mIdeal.WasPassed() ? mBufWidthMax = c.mWidth.Clamp(c.mWidth.mIdeal.WasPassed() ?
c.mWidth.mIdeal.Value() : aPrefs.GetWidth(false)); c.mWidth.mIdeal.Value() : DEFAULT_TABSHARE_VIDEO_MAX_WIDTH);
mBufHeightMax = c.mHeight.Clamp(c.mHeight.mIdeal.WasPassed() ? mBufHeightMax = c.mHeight.Clamp(c.mHeight.mIdeal.WasPassed() ?
c.mHeight.mIdeal.Value() : aPrefs.GetHeight(false)); c.mHeight.mIdeal.Value() : DEFAULT_TABSHARE_VIDEO_MAX_HEIGHT);
double frameRate = c.mFrameRate.Clamp(c.mFrameRate.mIdeal.WasPassed() ? double frameRate = c.mFrameRate.Clamp(c.mFrameRate.mIdeal.WasPassed() ?
c.mFrameRate.mIdeal.Value() : aPrefs.mFPS); c.mFrameRate.mIdeal.Value() : DEFAULT_TABSHARE_VIDEO_FRAMERATE);
mTimePerFrame = std::max(10, int(1000.0 / (frameRate > 0? frameRate : 1))); mTimePerFrame = std::max(10, int(1000.0 / (frameRate > 0? frameRate : 1)));
return NS_OK; return NS_OK;
} }
@ -198,12 +202,15 @@ MediaEngineTabVideoSource::Draw() {
IntSize size; IntSize size;
// maintain source aspect ratio // maintain source aspect ratio
if (mBufWidthMax/innerWidth < mBufHeightMax/innerHeight) { if (mBufWidthMax/innerWidth < mBufHeightMax/innerHeight) {
// mBufWidthMax is quite large by default, so use innerWidth if less.
int32_t width = std::min(innerWidth, mBufWidthMax);
// adjust width to be divisible by 4 to work around bug 1125393 // adjust width to be divisible by 4 to work around bug 1125393
int32_t width = mBufWidthMax - (mBufWidthMax % 4); width = width - (width % 4);
size = IntSize(width, (width * ((float) innerHeight/innerWidth))); size = IntSize(width, (width * ((float) innerHeight/innerWidth)));
} else { } else {
int32_t tmpWidth = (mBufHeightMax * ((float) innerWidth/innerHeight)); int32_t width = std::min(innerHeight, mBufHeightMax) *
int32_t width = tmpWidth - (tmpWidth % 4); ((float) innerWidth/innerHeight);
width = width - (width % 4);
size = IntSize(width, (width * ((float) innerHeight/innerWidth))); size = IntSize(width, (width * ((float) innerHeight/innerWidth)));
} }