Ejemplo n.º 1
0
void OMXPlayerVideoBase::Flush()
{
	ofLogVerbose() << "OMXPlayerVideoBase::Flush start";
	Lock();
	LockDecoder();
	m_flush = true;
	while (!m_packets.empty())
	{
		OMXPacket *pkt = m_packets.front(); 
		m_packets.pop_front();
		//ofLogVerbose() << "OMXPlayerVideoBase->OMXReader FreePacket";
		OMXReader::FreePacket(pkt);
		
	}
	
	m_iCurrentPts = DVD_NOPTS_VALUE;
	m_cached_size = 0;
	
	if(m_decoder)
	{
		ofLogVerbose() << "OMXPlayerVideoBase::m_decoder->Reset";
		m_decoder->Reset();
	}
	
	UnLockDecoder();
	UnLock();
	ofLogVerbose() << "OMXPlayerVideoBase::Flush end";
}
Ejemplo n.º 2
0
void OMXPlayerVideo::Process()
{
  OMXPacket *omx_pkt = NULL;

  m_pts = 0;

  while(!m_bStop && !m_bAbort)
  {
    Lock();
    if(m_packets.empty())
      pthread_cond_wait(&m_packet_cond, &m_lock);
    UnLock();

    if(m_bAbort)
      break;

    Lock();
    if(m_flush && omx_pkt)
    {
      OMXReader::FreePacket(omx_pkt);
      omx_pkt = NULL;
      m_flush = false;
    }
    else if(!omx_pkt && !m_packets.empty())
    {
      omx_pkt = m_packets.front();
      m_cached_size -= omx_pkt->size;
      m_packets.pop_front();
    }
    UnLock();

    LockDecoder();
    if(m_flush && omx_pkt)
    {
      OMXReader::FreePacket(omx_pkt);
      omx_pkt = NULL;
      m_flush = false;
    }
    else if(omx_pkt && Decode(omx_pkt))
    {
      OMXReader::FreePacket(omx_pkt);
      omx_pkt = NULL;
    }
    UnLockDecoder();
    
    OMXPacket *subtitle_pkt = m_decoder->GetText();

    if(subtitle_pkt)
    {
      LockSubtitles();
      subtitle_pkt->pts = m_av_clock->GetClock();
      m_subtitle_packets.push_back(subtitle_pkt);
      UnLockSubtitles();
    }
  }

  if(omx_pkt)
    OMXReader::FreePacket(omx_pkt);
}
void OMXEGLImagePlayer::UnFlush()
{
	Lock();
	LockDecoder();
		m_flush = false;
	UnLockDecoder();
	UnLock();
}
Ejemplo n.º 4
0
void OMXPlayerAudio::Process()
{
	OMXPacket *omx_pkt = NULL;

	while(!m_bStop && !m_bAbort)
	{
		Lock();
		if(m_packets.empty())
		{
			pthread_cond_wait(&m_packet_cond, &m_lock);
		}
		UnLock();

		if(m_bAbort)
		{
			break;
		}

		Lock();
		if(m_flush && omx_pkt)
		{
			OMXReader::FreePacket(omx_pkt);
			omx_pkt = NULL;
			m_flush = false;
		}
		else if(!omx_pkt && !m_packets.empty())
		{
			omx_pkt = m_packets.front();
			m_cached_size -= omx_pkt->size;
			m_packets.pop_front();
		}
		UnLock();

		LockDecoder();
		if(m_flush && omx_pkt)
		{
			OMXReader::FreePacket(omx_pkt);
			omx_pkt = NULL;
			m_flush = false;
		}
		else if(omx_pkt && Decode(omx_pkt))
		{
			OMXReader::FreePacket(omx_pkt);
			omx_pkt = NULL;
		}
		UnLockDecoder();
	}

	if(omx_pkt)
	{
		OMXReader::FreePacket(omx_pkt);
	}
}
Ejemplo n.º 5
0
void OMXPlayerAudio::Flush()
{
  Lock();
  LockDecoder();
  m_flush = true;
  while (!m_packets.empty())
  {
    OMXPacket *pkt = m_packets.front(); 
    m_packets.pop_front();
    OMXReader::FreePacket(pkt);
  }
  m_iCurrentPts = DVD_NOPTS_VALUE;
  m_cached_size = 0;
  if(m_decoder)
    m_decoder->Flush();
  UnLockDecoder();
  UnLock();
}
Ejemplo n.º 6
0
void OMXPlayerVideo::Flush()
{
  m_flush_requested = true;
  Lock();
  LockDecoder();
  m_flush_requested = false;
  m_flush = true;
  while (!m_packets.empty())
  {
    OMXPacket *pkt = m_packets.front(); 
    m_packets.pop_front();
    OMXReader::FreePacket(pkt);
  }
  m_iCurrentPts = DVD_NOPTS_VALUE;
  m_cached_size = 0;
  if(m_decoder)
    m_decoder->Reset();
  UnLockDecoder();
  FlushSubtitles();
  UnLock();
}
Ejemplo n.º 7
0
void OMXPlayerVideo::FlushSubtitles()
{
  LockDecoder();
  LockSubtitles();
  while (!m_subtitle_packets.empty())
  {
    OMXPacket *pkt = m_subtitle_packets.front(); 
    m_subtitle_packets.pop_front();
    OMXReader::FreePacket(pkt);
  }
  while (!m_overlays.empty())
  {
    COMXOverlay *overlay = m_overlays.front(); 
    m_overlays.pop_front();
    delete overlay;
  }
  if(m_pSubtitleCodec)
    delete m_pSubtitleCodec;
  m_pSubtitleCodec = NULL;
  UnLockSubtitles();
  UnLockDecoder();
}
Ejemplo n.º 8
0
void OMXPlayerAudio::Flush()
{
	//ofLogVerbose(__func__) << "OMXPlayerAudio::Flush start";
	Lock();
	LockDecoder();
	m_flush = true;
	while (!m_packets.empty())
	{
		OMXPacket *pkt = m_packets.front();
		m_packets.pop_front();
		OMXReader::FreePacket(pkt);
	}
	m_iCurrentPts = DVD_NOPTS_VALUE;
	m_cached_size = 0;
	if(m_decoder)
	{
		m_decoder->Flush();
	}
	UnLockDecoder();
	UnLock();
	//ofLogVerbose(__func__) << "OMXPlayerAudio::Flush end";
}