Exemple #1
0
nsRefPtr<MP4TrackDemuxer::SamplesPromise>
MP4TrackDemuxer::GetSamples(int32_t aNumSamples)
{
  nsRefPtr<SamplesHolder> samples = new SamplesHolder;
  if (!aNumSamples) {
    return SamplesPromise::CreateAndReject(DemuxerFailureReason::DEMUXER_ERROR, __func__);
  }

  if (mQueuedSample) {
    samples->mSamples.AppendElement(mQueuedSample);
    mQueuedSample = nullptr;
    aNumSamples--;
  }
  MonitorAutoLock mon(mMonitor);
  nsRefPtr<MediaRawData> sample;
  while (aNumSamples && (sample = mIterator->GetNext())) {
    samples->mSamples.AppendElement(sample);
    aNumSamples--;
  }

  if (samples->mSamples.IsEmpty()) {
    return SamplesPromise::CreateAndReject(DemuxerFailureReason::END_OF_STREAM, __func__);
  } else {
    UpdateSamples(samples->mSamples);
    return SamplesPromise::CreateAndResolve(samples, __func__);
  }
}
Exemple #2
0
void TerrainGesture::TouchMoved(Touch* touch)
{
	if (_hotspot->HasCapturedTouch(touch))
	{
		TerrainView* terrainView = _hotspot->GetTerrainView();

		switch (_hotspot->GetTerrainHotspotMode())
		{
			case TerrainHotspotMode::MoveAndOrbit:
				terrainView->Orbit(
					_hotspot->GetOrbitAnchor(),
					CalculateOrbitFactor() * _hotspot->GetOrbitAngle());

				terrainView->Move(
					_hotspot->GetContentPosition1(),
					_hotspot->GetCurrentScreenPosition1());
				break;

			case TerrainHotspotMode::Zoom:
				terrainView->Zoom(
					_hotspot->GetContentPositions(),
					_hotspot->GetCurrentScreenPositions());
				break;

			default:
				break;
		}

		AdjustToKeepInView(0.5, 0);
		UpdateSamples(touch->GetTimestamp());
	}
}