Esempio n. 1
0
void CClip::Reset(REFERENCE_TIME totalStreamOffset)
{
  CAutoLock vectorVLock(&m_sectionVectorVideo);
  CAutoLock vectorALock(&m_sectionVectorAudio);
  LogDebug("CClip:: Clip Reset (%d,%d) stream Offset %I64d", nPlaylist, nClip, totalStreamOffset);
  FlushAudio();
  FlushVideo();
  lastVideoPosition = playlistFirstPacketTime;
  lastAudioPosition = playlistFirstPacketTime;
  if (clipPlaylistOffset != totalStreamOffset)
  {
    clipReset = true;
    clipPlaylistOffset = totalStreamOffset;
  }
  audioPlaybackPosition = playlistFirstPacketTime;
  videoPlaybackPosition = playlistFirstPacketTime;
  m_rtClipStartingOffset = 0LL;

  earliestPacketAccepted = INT64_MAX;

  superceeded=0;
  sparseVideo = false;
  if (m_pSparseVideoPacket)
  {
    delete m_pSparseVideoPacket;
    m_pSparseVideoPacket = NULL;
  }

  firstAudio=true;
  firstVideo=true;
  firstPacketAccepted = false;
  firstPacketReturned = false;
}
Esempio n. 2
0
CClip::~CClip(void)
{
  CAutoLock vectorVLock(&m_sectionVectorVideo);
  CAutoLock vectorALock(&m_sectionVectorAudio);
  FlushAudio();
  FlushVideo();
  DeleteMediaType(m_videoPmt);
  if (m_pSparseVideoPacket)
    delete m_pSparseVideoPacket;
  m_pSparseVideoPacket = NULL;
}
Esempio n. 3
0
void CDeMultiplexer::Flush(bool bClearclips)
{
  LogDebug("demux:flushing");

  SetHoldAudio(true);
  SetHoldVideo(true);

  FlushPESBuffers(true, false);

  if (bClearclips)
    m_playlistManager->ClearClips();

  FlushAudio();
  FlushVideo();

  SetHoldAudio(false);
  SetHoldVideo(false);
}