mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 09:45:41 +00:00
Bug 1571586 - p1: cast bitrate to correct type and set it when initializing. r=jya
Differential Revision: https://phabricator.services.mozilla.com/D41105 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
b768ed3d0f
commit
8dd4e83f54
@ -52,6 +52,16 @@ static void FrameCallback(void* aEncoder, void* aFrameParams, OSStatus aStatus,
|
||||
static_cast<AppleVTEncoder*>(aEncoder)->OutputFrame(aSampleBuffer);
|
||||
}
|
||||
|
||||
static bool SetAverageBitrate(VTCompressionSessionRef& aSession,
|
||||
MediaDataEncoder::Rate aBitsPerSec) {
|
||||
int64_t bps(aBitsPerSec);
|
||||
AutoCFRelease<CFNumberRef> bitrate(
|
||||
CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt64Type, &bps));
|
||||
return VTSessionSetProperty(aSession,
|
||||
kVTCompressionPropertyKey_AverageBitRate,
|
||||
bitrate) == noErr;
|
||||
}
|
||||
|
||||
static bool SetProfileLevel(VTCompressionSessionRef& aSession,
|
||||
AppleVTEncoder::H264Specific::ProfileLevel aValue) {
|
||||
CFStringRef profileLevel = nullptr;
|
||||
@ -91,6 +101,11 @@ RefPtr<MediaDataEncoder::InitPromise> AppleVTEncoder::Init() {
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_ABORT_ERR, __func__);
|
||||
}
|
||||
|
||||
if (!SetAverageBitrate(mSession, mConfig.mBitsPerSec)) {
|
||||
VTENC_LOGE("fail to configurate average bitrate");
|
||||
return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_ABORT_ERR, __func__);
|
||||
}
|
||||
|
||||
const Maybe<H264Specific>& h264Config = mConfig.mCodecSpecific;
|
||||
if (h264Config) {
|
||||
if (!SetProfileLevel(mSession, h264Config.ref().mProfileLevel)) {
|
||||
@ -543,11 +558,7 @@ RefPtr<GenericPromise> AppleVTEncoder::SetBitrate(
|
||||
RefPtr<AppleVTEncoder> self = this;
|
||||
return InvokeAsync(mTaskQueue, __func__, [self, aBitsPerSec]() {
|
||||
MOZ_ASSERT(self->mSession);
|
||||
AutoCFRelease<CFNumberRef> bitrate(
|
||||
CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt64Type, &aBitsPerSec));
|
||||
return VTSessionSetProperty(self->mSession,
|
||||
kVTCompressionPropertyKey_AverageBitRate,
|
||||
bitrate) == noErr
|
||||
return SetAverageBitrate(self->mSession, aBitsPerSec)
|
||||
? GenericPromise::CreateAndResolve(true, __func__)
|
||||
: GenericPromise::CreateAndReject(
|
||||
NS_ERROR_DOM_MEDIA_NOT_SUPPORTED_ERR, __func__);
|
||||
|
Loading…
Reference in New Issue
Block a user