这篇教程C++ EnsureActive函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中EnsureActive函数的典型用法代码示例。如果您正苦于以下问题:C++ EnsureActive函数的具体用法?C++ EnsureActive怎么用?C++ EnsureActive使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了EnsureActive函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: EnsureActivevoidRtspMediaCodecReader::HandleResourceAllocated(){ EnsureActive(); MediaCodecReader::HandleResourceAllocated(); mRtspResource->EnablePlayoutDelay();;}
开发者ID:Jar-win,项目名称:Waterfox,代码行数:7,
示例2: EnsureActivevoidRtspMediaCodecReader::RequestVideoData(bool aSkipToNextKeyframe, int64_t aTimeThreshold){ EnsureActive(); MediaCodecReader::RequestVideoData(aSkipToNextKeyframe, aTimeThreshold);}
开发者ID:dirkschulze,项目名称:gecko-dev,代码行数:7,
示例3: MOZ_ASSERTbool MediaOmxReader::DecodeAudioData(){ MOZ_ASSERT(OnTaskQueue()); EnsureActive(); MOZ_ASSERT(mStreamSource); // This is the approximate byte position in the stream. int64_t pos = mStreamSource->Tell(); // Read next frame MPAPI::AudioFrame source; if (!mOmxDecoder->ReadAudio(&source, mAudioSeekTimeUs)) { return false; } mAudioSeekTimeUs = -1; // Ignore empty buffer which stagefright media read will sporadically return if (source.mSize == 0) { return true; } uint32_t frames = source.mSize / (source.mAudioChannels * sizeof(AudioDataValue)); typedef AudioCompactor::NativeCopy OmxCopy; return mAudioCompactor.Push(pos, source.mTimeUs, source.mAudioSampleRate, frames, source.mAudioChannels, OmxCopy(static_cast<uint8_t *>(source.mData), source.mSize, source.mAudioChannels));}
开发者ID:norihirou,项目名称:gecko-dev,代码行数:34,
示例4: NS_ASSERTIONnsRefPtr<MediaDecoderReader::SeekPromise>MediaOmxReader::Seek(int64_t aTarget, int64_t aEndTime){ NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); EnsureActive(); VideoFrameContainer* container = mDecoder->GetVideoFrameContainer(); if (container && container->GetImageContainer()) { container->GetImageContainer()->ClearAllImagesExceptFront(); } if (mHasAudio && mHasVideo) { // The OMXDecoder seeks/demuxes audio and video streams separately. So if // we seek both audio and video to aTarget, the audio stream can typically // seek closer to the seek target, since typically every audio block is // a sync point, whereas for video there are only keyframes once every few // seconds. So if we have both audio and video, we must seek the video // stream to the preceeding keyframe first, get the stream time, and then // seek the audio stream to match the video stream's time. Otherwise, the // audio and video streams won't be in sync after the seek. mVideoSeekTimeUs = aTarget; const VideoData* v = DecodeToFirstVideoData(); mAudioSeekTimeUs = v ? v->mTime : aTarget; } else { mAudioSeekTimeUs = mVideoSeekTimeUs = aTarget; } return SeekPromise::CreateAndResolve(mAudioSeekTimeUs, __func__);}
开发者ID:Standard8,项目名称:gecko-dev,代码行数:29,
示例5: EnsureActivevoidPathBuilderD2D::LineTo(const Point &aPoint){ EnsureActive(aPoint); mSink->AddLine(D2DPoint(aPoint)); mCurrentPoint = aPoint;}
开发者ID:MekliCZ,项目名称:positron,代码行数:8,
示例6: FloatvoidPathBuilderD2D::Arc(const Point &aOrigin, Float aRadius, Float aStartAngle, Float aEndAngle, bool aAntiClockwise){ if (aAntiClockwise && aStartAngle < aEndAngle) { // D2D does things a little differently, and draws the arc by specifying an // beginning and an end point. This means the circle will be the wrong way // around if the start angle is smaller than the end angle. It might seem // tempting to invert aAntiClockwise but that would change the sweeping // direction of the arc to instead we exchange start/begin. Float oldStart = aStartAngle; aStartAngle = aEndAngle; aEndAngle = oldStart; } // XXX - Workaround for now, D2D does not appear to do the desired thing when // the angle sweeps a complete circle. if (aEndAngle - aStartAngle >= 2 * M_PI) { aEndAngle = Float(aStartAngle + M_PI * 1.9999); } else if (aStartAngle - aEndAngle >= 2 * M_PI) { aStartAngle = Float(aEndAngle + M_PI * 1.9999); } Point startPoint; startPoint.x = aOrigin.x + aRadius * cos(aStartAngle); startPoint.y = aOrigin.y + aRadius * sin(aStartAngle); if (!mFigureActive) { EnsureActive(startPoint); } else { mSink->AddLine(D2DPoint(startPoint)); } Point endPoint; endPoint.x = aOrigin.x + aRadius * cos(aEndAngle); endPoint.y = aOrigin.y + aRadius * sin(aEndAngle); D2D1_ARC_SIZE arcSize = D2D1_ARC_SIZE_SMALL; if (aAntiClockwise) { if (aStartAngle - aEndAngle > M_PI) { arcSize = D2D1_ARC_SIZE_LARGE; } } else { if (aEndAngle - aStartAngle > M_PI) { arcSize = D2D1_ARC_SIZE_LARGE; } } mSink->AddArc(D2D1::ArcSegment(D2DPoint(endPoint), D2D1::SizeF(aRadius, aRadius), 0.0f, aAntiClockwise ? D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE : D2D1_SWEEP_DIRECTION_CLOCKWISE, arcSize)); mCurrentPoint = endPoint;}
开发者ID:CodeSpeaker,项目名称:gecko-dev,代码行数:58,
示例7: csvoid MessageQueue::Post(MessageHandler *phandler, uint32 id, MessageData *pdata, bool time_sensitive) { if (fStop_) return; // Keep thread safe // Add the message to the end of the queue // Signal for the multiplexer to return CritScope cs(&crit_); EnsureActive(); Message msg; msg.phandler = phandler; msg.message_id = id; msg.pdata = pdata; if (time_sensitive) { msg.ts_sensitive = Time() + kMaxMsgLatency; } msgq_.push_back(msg); ss_->WakeUp();}
开发者ID:shaxunyeman,项目名称:dbliu,代码行数:21,
示例8: EnsureActivevoid MediaOmxReader::HandleResourceAllocated(){ EnsureActive(); // After resources are available, set the metadata. if (!mOmxDecoder->EnsureMetadata()) { mMetadataPromise.Reject(ReadMetadataFailureReason::METADATA_ERROR, __func__); return; } bool isMP3 = mDecoder->GetResource()->GetContentType().EqualsASCII(AUDIO_MP3); if (isMP3 && mMP3FrameParser.IsMP3()) { // Check if the MP3 frame parser found a duration. mLastParserDuration = mMP3FrameParser.GetDuration(); } if (mLastParserDuration >= 0) { // Prefer the parser duration if we have it. mInfo.mMetadataDuration = Some(TimeUnit::FromMicroseconds(mLastParserDuration)); } else { // MP3 parser failed to find a duration. // Set the total duration (the max of the audio and video track). int64_t durationUs; mOmxDecoder->GetDuration(&durationUs); if (durationUs) { mInfo.mMetadataDuration = Some(TimeUnit::FromMicroseconds(durationUs)); } } if (mOmxDecoder->HasVideo()) { int32_t displayWidth, displayHeight, width, height; mOmxDecoder->GetVideoParameters(&displayWidth, &displayHeight, &width, &height); nsIntRect pictureRect(0, 0, width, height); // Validate the container-reported frame and pictureRect sizes. This ensures // that our video frame creation code doesn't overflow. nsIntSize displaySize(displayWidth, displayHeight); nsIntSize frameSize(width, height); if (!IsValidVideoRegion(frameSize, pictureRect, displaySize)) { mMetadataPromise.Reject(ReadMetadataFailureReason::METADATA_ERROR, __func__); return; } // Video track's frame sizes will not overflow. Activate the video track. mHasVideo = true; mInfo.mVideo.mDisplay = displaySize; mPicture = pictureRect; mInitialFrame = frameSize; VideoFrameContainer* container = mDecoder->GetVideoFrameContainer(); if (container) { container->ClearCurrentFrame(gfxIntSize(displaySize.width, displaySize.height)); } } if (mOmxDecoder->HasAudio()) { int32_t numChannels, sampleRate; mOmxDecoder->GetAudioParameters(&numChannels, &sampleRate); mHasAudio = true; mInfo.mAudio.mChannels = numChannels; mInfo.mAudio.mRate = sampleRate; } nsRefPtr<MetadataHolder> metadata = new MetadataHolder(); metadata->mInfo = mInfo; metadata->mTags = nullptr;#ifdef MOZ_AUDIO_OFFLOAD CheckAudioOffload();#endif mMetadataPromise.Resolve(metadata, __func__);}
开发者ID:norihirou,项目名称:gecko-dev,代码行数:73,
示例9: FloatvoidPathBuilderD2D::Arc(const Point &aOrigin, Float aRadius, Float aStartAngle, Float aEndAngle, bool aAntiClockwise){ if (aAntiClockwise && aStartAngle < aEndAngle) { // D2D does things a little differently, and draws the arc by specifying an // beginning and an end point. This means the circle will be the wrong way // around if the start angle is smaller than the end angle. It might seem // tempting to invert aAntiClockwise but that would change the sweeping // direction of the arc so instead we exchange start/begin. Float oldStart = aStartAngle; aStartAngle = aEndAngle; aEndAngle = oldStart; } // XXX - Workaround for now, D2D does not appear to do the desired thing when // the angle sweeps a complete circle. bool fullCircle = false; if (aEndAngle - aStartAngle >= 2 * M_PI) { fullCircle = true; aEndAngle = Float(aStartAngle + M_PI * 1.9999); } else if (aStartAngle - aEndAngle >= 2 * M_PI) { fullCircle = true; aStartAngle = Float(aEndAngle + M_PI * 1.9999); } Point startPoint; startPoint.x = aOrigin.x + aRadius * cos(aStartAngle); startPoint.y = aOrigin.y + aRadius * sin(aStartAngle); if (!mFigureActive) { EnsureActive(startPoint); } else { mSink->AddLine(D2DPoint(startPoint)); } Point endPoint; endPoint.x = aOrigin.x + aRadius * cosf(aEndAngle); endPoint.y = aOrigin.y + aRadius * sinf(aEndAngle); D2D1_ARC_SIZE arcSize = D2D1_ARC_SIZE_SMALL; D2D1_SWEEP_DIRECTION direction = aAntiClockwise ? D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE : D2D1_SWEEP_DIRECTION_CLOCKWISE; // if startPoint and endPoint of our circle are too close there are D2D issues // with drawing the circle as a single arc const Float kEpsilon = 1e-5f; if (!fullCircle || (std::abs(startPoint.x - endPoint.x) + std::abs(startPoint.y - endPoint.y) > kEpsilon)) { if (aAntiClockwise) { if (aStartAngle - aEndAngle > M_PI) { arcSize = D2D1_ARC_SIZE_LARGE; } } else { if (aEndAngle - aStartAngle > M_PI) { arcSize = D2D1_ARC_SIZE_LARGE; } } mSink->AddArc(D2D1::ArcSegment(D2DPoint(endPoint), D2D1::SizeF(aRadius, aRadius), 0.0f, direction, arcSize)); } else { // our first workaround attempt didn't work, so instead draw the circle as // two half-circles Float midAngle = aEndAngle > aStartAngle ? Float(aStartAngle + M_PI) : Float(aEndAngle + M_PI); Point midPoint; midPoint.x = aOrigin.x + aRadius * cosf(midAngle); midPoint.y = aOrigin.y + aRadius * sinf(midAngle); mSink->AddArc(D2D1::ArcSegment(D2DPoint(midPoint), D2D1::SizeF(aRadius, aRadius), 0.0f, direction, arcSize)); // if the adjusted endPoint computed above is used here and endPoint != // startPoint then this half of the circle won't render... mSink->AddArc(D2D1::ArcSegment(D2DPoint(startPoint), D2D1::SizeF(aRadius, aRadius), 0.0f, direction, arcSize)); } mCurrentPoint = endPoint;}
开发者ID:MekliCZ,项目名称:positron,代码行数:94,
示例10: NS_ASSERTIONnsresult MediaOmxReader::ReadMetadata(MediaInfo* aInfo, MetadataTags** aTags){ NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread."); EnsureActive(); *aTags = nullptr; // Initialize the internal OMX Decoder. nsresult rv = InitOmxDecoder(); if (NS_FAILED(rv)) { return rv; } if (!mOmxDecoder->TryLoad()) { return NS_ERROR_FAILURE; }#ifdef MOZ_AUDIO_OFFLOAD CheckAudioOffload();#endif if (IsWaitingMediaResources()) { return NS_OK; } // Set the total duration (the max of the audio and video track). int64_t durationUs; mOmxDecoder->GetDuration(&durationUs); if (durationUs) { ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor()); mDecoder->SetMediaDuration(durationUs); } if (mOmxDecoder->HasVideo()) { int32_t displayWidth, displayHeight, width, height; mOmxDecoder->GetVideoParameters(&displayWidth, &displayHeight, &width, &height); nsIntRect pictureRect(0, 0, width, height); // Validate the container-reported frame and pictureRect sizes. This ensures // that our video frame creation code doesn't overflow. nsIntSize displaySize(displayWidth, displayHeight); nsIntSize frameSize(width, height); if (!IsValidVideoRegion(frameSize, pictureRect, displaySize)) { return NS_ERROR_FAILURE; } // Video track's frame sizes will not overflow. Activate the video track. mHasVideo = mInfo.mVideo.mHasVideo = true; mInfo.mVideo.mDisplay = displaySize; mPicture = pictureRect; mInitialFrame = frameSize; VideoFrameContainer* container = mDecoder->GetVideoFrameContainer(); if (container) { container->SetCurrentFrame(gfxIntSize(displaySize.width, displaySize.height), nullptr, mozilla::TimeStamp::Now()); } } if (mOmxDecoder->HasAudio()) { int32_t numChannels, sampleRate; mOmxDecoder->GetAudioParameters(&numChannels, &sampleRate); mHasAudio = mInfo.mAudio.mHasAudio = true; mInfo.mAudio.mChannels = numChannels; mInfo.mAudio.mRate = sampleRate; } *aInfo = mInfo; return NS_OK;}
开发者ID:aknow,项目名称:gecko-dev,代码行数:73,
注:本文中的EnsureActive函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ EnsureDirectoryExists函数代码示例 C++ EngineData函数代码示例 |