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"; }
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(); }
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); } }
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(); }
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(); }
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(); }
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"; }