这篇教程C++ AssertOwnerThread函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中AssertOwnerThread函数的典型用法代码示例。如果您正苦于以下问题:C++ AssertOwnerThread函数的具体用法?C++ AssertOwnerThread怎么用?C++ AssertOwnerThread使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了AssertOwnerThread函数的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: AssertOwnerThreadvoidVideoSink::RenderVideoFrames(int32_t aMaxFrames, int64_t aClockTime, const TimeStamp& aClockTimeStamp){ AssertOwnerThread(); AutoTArray<RefPtr<MediaData>,16> frames; VideoQueue().GetFirstElements(aMaxFrames, &frames); if (frames.IsEmpty() || !mContainer) { return; } AutoTArray<ImageContainer::NonOwningImage,16> images; TimeStamp lastFrameTime; MediaSink::PlaybackParams params = mAudioSink->GetPlaybackParams(); for (uint32_t i = 0; i < frames.Length(); ++i) { VideoData* frame = frames[i]->As<VideoData>(); frame->mSentToCompositor = true; if (!frame->mImage || !frame->mImage->IsValid()) { continue; } int64_t frameTime = frame->mTime; if (frameTime < 0) { // Frame times before the start time are invalid; drop such frames continue; } TimeStamp t; if (aMaxFrames > 1) { MOZ_ASSERT(!aClockTimeStamp.IsNull()); int64_t delta = frame->mTime - aClockTime; t = aClockTimeStamp + TimeDuration::FromMicroseconds(delta / params.mPlaybackRate); if (!lastFrameTime.IsNull() && t <= lastFrameTime) { // Timestamps out of order; drop the new frame. In theory we should // probably replace the previous frame with the new frame if the // timestamps are equal, but this is a corrupt video file already so // never mind. continue; } lastFrameTime = t; } ImageContainer::NonOwningImage* img = images.AppendElement(); img->mTimeStamp = t; img->mImage = frame->mImage; img->mFrameID = frame->mFrameID; img->mProducerID = mProducerID; VSINK_LOG_V("playing video frame %lld (id=%x) (vq-queued=%i)", frame->mTime, frame->mFrameID, VideoQueue().GetSize()); } mContainer->SetCurrentFrames(frames[0]->As<VideoData>()->mDisplay, images);}
开发者ID:TheGuy82,项目名称:gecko-dev,代码行数:58,
示例2: AssertOwnerThreadvoidAccurateSeekTask::CancelCallbacks(){ AssertOwnerThread(); mAudioCallback.DisconnectIfExists(); mVideoCallback.DisconnectIfExists(); mAudioWaitCallback.DisconnectIfExists(); mVideoWaitCallback.DisconnectIfExists();}
开发者ID:brendandahl,项目名称:positron,代码行数:9,
示例3: AssertOwnerThreadvoidVideoSink::UpdateRenderedVideoFrames(){ AssertOwnerThread(); MOZ_ASSERT(mAudioSink->IsPlaying(), "should be called while playing."); // Get the current playback position. TimeStamp nowTime; const int64_t clockTime = mAudioSink->GetPosition(&nowTime); NS_ASSERTION(clockTime >= 0, "Should have positive clock time."); // Skip frames up to the playback position. int64_t lastDisplayedFrameEndTime = 0; while (VideoQueue().GetSize() > mMinVideoQueueSize && clockTime >= VideoQueue().PeekFront()->GetEndTime()) { RefPtr<MediaData> frame = VideoQueue().PopFront(); if (frame->As<VideoData>()->mSentToCompositor) { lastDisplayedFrameEndTime = frame->GetEndTime(); mFrameStats.NotifyPresentedFrame(); } else { mFrameStats.NotifyDecodedFrames({ 0, 0, 1 }); VSINK_LOG_V("discarding video frame mTime=%lld clock_time=%lld", frame->mTime, clockTime); } } // The presentation end time of the last video frame displayed is either // the end time of the current frame, or if we dropped all frames in the // queue, the end time of the last frame we removed from the queue. RefPtr<MediaData> currentFrame = VideoQueue().PeekFront(); mVideoFrameEndTime = std::max(mVideoFrameEndTime, currentFrame ? currentFrame->GetEndTime() : lastDisplayedFrameEndTime); MaybeResolveEndPromise(); RenderVideoFrames(mVideoQueueSendToCompositorSize, clockTime, nowTime); // Get the timestamp of the next frame. Schedule the next update at // the start time of the next frame. If we don't have a next frame, // we will run render loops again upon incoming frames. nsTArray<RefPtr<MediaData>> frames; VideoQueue().GetFirstElements(2, &frames); if (frames.Length() < 2) { return; } int64_t nextFrameTime = frames[1]->mTime; TimeStamp target = nowTime + TimeDuration::FromMicroseconds( (nextFrameTime - clockTime) / mAudioSink->GetPlaybackParams().mPlaybackRate); RefPtr<VideoSink> self = this; mUpdateScheduler.Ensure(target, [self] () { self->UpdateRenderedVideoFramesByTimer(); }, [self] () { self->UpdateRenderedVideoFramesByTimer(); });}
开发者ID:subsevenx2001,项目名称:gecko-dev,代码行数:57,
示例4: AssertOwnerThreadvoidAudioSinkWrapper::SetPlaybackRate(double aPlaybackRate){ AssertOwnerThread(); mParams.playbackRate = aPlaybackRate; if (mAudioSink) { mAudioSink->SetPlaybackRate(aPlaybackRate); }}
开发者ID:sumitbh250,项目名称:gecko-dev,代码行数:9,
示例5: AssertOwnerThreadvoidAudioSinkWrapper::SetVolume(double aVolume){ AssertOwnerThread(); mParams.mVolume = aVolume; if (mAudioSink) { mAudioSink->SetVolume(aVolume); }}
开发者ID:MichaelKohler,项目名称:gecko-dev,代码行数:9,
示例6: AssertOwnerThreadvoidSeekTask::RequestAudioData(){ AssertOwnerThread(); SAMPLE_LOG("Queueing audio task - queued=%i, decoder-queued=%o", !!mSeekedAudioData, mReader->SizeOfAudioQueueInFrames()); mReader->RequestAudioData();}
开发者ID:ashie,项目名称:gecko-dev,代码行数:10,
示例7: AssertOwnerThreadvoidSeekTask::RejectIfExist(const char* aCallSite){ AssertOwnerThread(); SeekTaskRejectValue val; val.mIsAudioQueueFinished = mIsAudioQueueFinished; val.mIsVideoQueueFinished = mIsVideoQueueFinished; mSeekTaskPromise.RejectIfExists(val, aCallSite);}
开发者ID:brendandahl,项目名称:positron,代码行数:11,
注:本文中的AssertOwnerThread函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ AssertPtr函数代码示例 C++ AssertNoneLocked函数代码示例 |