您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ EnsureActive函数代码示例

51自学网 2021-06-01 20:38:18
  C++
这篇教程C++ EnsureActive函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中EnsureActive函数的典型用法代码示例。如果您正苦于以下问题:C++ EnsureActive函数的具体用法?C++ EnsureActive怎么用?C++ EnsureActive使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了EnsureActive函数的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: EnsureActive

voidRtspMediaCodecReader::HandleResourceAllocated(){  EnsureActive();  MediaCodecReader::HandleResourceAllocated();  mRtspResource->EnablePlayoutDelay();;}
开发者ID:Jar-win,项目名称:Waterfox,代码行数:7,


示例2: EnsureActive

voidRtspMediaCodecReader::RequestVideoData(bool aSkipToNextKeyframe,                                       int64_t aTimeThreshold){  EnsureActive();  MediaCodecReader::RequestVideoData(aSkipToNextKeyframe, aTimeThreshold);}
开发者ID:dirkschulze,项目名称:gecko-dev,代码行数:7,


示例3: MOZ_ASSERT

bool 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_ASSERTION

nsRefPtr<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: EnsureActive

voidPathBuilderD2D::LineTo(const Point &aPoint){  EnsureActive(aPoint);  mSink->AddLine(D2DPoint(aPoint));  mCurrentPoint = aPoint;}
开发者ID:MekliCZ,项目名称:positron,代码行数:8,


示例6: Float

voidPathBuilderD2D::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: cs

void 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: EnsureActive

void 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: Float

voidPathBuilderD2D::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_ASSERTION

nsresult 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函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。