void MFolderFromProfile::RemoveFilter(const String& filter) { wxArrayString filters = GetFilters(); int n = filters.Index(filter); if ( n != wxNOT_FOUND ) { filters.RemoveAt(n); SetFilters(filters); } }
bool VideoOutputOpenGL::SetupOpenGL(void) { if (!gl_context) return false; const QRect dvr = window.GetDisplayVisibleRect(); if (video_codec_id == kCodec_NONE) { gl_context->SetViewPort(QRect(QPoint(),dvr.size())); return true; } if (window.GetPIPState() >= kPIPStandAlone) { QRect tmprect = QRect(QPoint(0,0), dvr.size()); ResizeDisplayWindow(tmprect, true); } bool success = false; OpenGLLocker ctx_lock(gl_context); gl_videochain = new OpenGLVideo(); QString options = GetFilters(); if (gl_opengl_lite) options += " preferycbcr"; success = gl_videochain->Init(gl_context, &videoColourSpace, window.GetVideoDim(), window.GetVideoDispDim(), dvr, window.GetDisplayVideoRect(), window.GetVideoRect(), true, options, !codec_is_std(video_codec_id)); if (success) { bool temp_deinterlacing = m_deinterlacing; if (!m_deintfiltername.isEmpty() && !m_deintfiltername.contains("opengl")) { gl_videochain->SetSoftwareDeinterlacer(m_deintfiltername); } SetDeinterlacingEnabled(true); if (!temp_deinterlacing) { SetDeinterlacingEnabled(false); } } return success; }
void VideoOutputOpenGL::ShowPIP(VideoFrame */*frame*/, MythPlayer *pipplayer, PIPLocation loc) { if (!pipplayer) return; int pipw, piph; VideoFrame *pipimage = pipplayer->GetCurrentFrame(pipw, piph); const float pipVideoAspect = pipplayer->GetVideoAspect(); const QSize pipVideoDim = pipplayer->GetVideoBufferSize(); const bool pipActive = pipplayer->IsPIPActive(); const bool pipVisible = pipplayer->IsPIPVisible(); const uint pipVideoWidth = pipVideoDim.width(); const uint pipVideoHeight = pipVideoDim.height(); // If PiP is not initialized to values we like, silently ignore the frame. if ((pipVideoAspect <= 0) || !pipimage || !pipimage->buf || pipimage->codec != FMT_YV12) { pipplayer->ReleaseCurrentFrame(pipimage); return; } if (!pipVisible) { pipplayer->ReleaseCurrentFrame(pipimage); return; } QRect position = GetPIPRect(loc, pipplayer); QRect dvr = window.GetDisplayVisibleRect(); gl_pip_ready[pipplayer] = false; OpenGLVideo *gl_pipchain = gl_pipchains[pipplayer]; if (!gl_pipchain) { LOG(VB_PLAYBACK, LOG_INFO, LOC + "Initialise PiP."); gl_pipchains[pipplayer] = gl_pipchain = new OpenGLVideo(); QString options = GetFilters(); if (gl_opengl_lite) options += " preferycbcr"; bool success = gl_pipchain->Init(gl_context, &videoColourSpace, pipVideoDim, pipVideoDim, dvr, position, QRect(0, 0, pipVideoWidth, pipVideoHeight), false, options, false); QSize viewport = window.GetDisplayVisibleRect().size(); gl_pipchain->SetMasterViewport(viewport); if (!success) { pipplayer->ReleaseCurrentFrame(pipimage); return; } } QSize current = gl_pipchain->GetVideoSize(); if ((uint)current.width() != pipVideoWidth || (uint)current.height() != pipVideoHeight) { LOG(VB_PLAYBACK, LOG_INFO, LOC + "Re-initialise PiP."); delete gl_pipchain; gl_pipchains[pipplayer] = gl_pipchain = new OpenGLVideo(); QString options = GetFilters(); if (gl_opengl_lite) options += " preferycbcr"; bool success = gl_pipchain->Init( gl_context, &videoColourSpace, pipVideoDim, pipVideoDim, dvr, position, QRect(0, 0, pipVideoWidth, pipVideoHeight), false, options, false); QSize viewport = window.GetDisplayVisibleRect().size(); gl_pipchain->SetMasterViewport(viewport); if (!success) { pipplayer->ReleaseCurrentFrame(pipimage); return; } } gl_pipchain->SetVideoRect(position, QRect(0, 0, pipVideoWidth, pipVideoHeight)); gl_pipchain->UpdateInputFrame(pipimage); gl_pip_ready[pipplayer] = true; if (pipActive) gl_pipchain_active = gl_pipchain; pipplayer->ReleaseCurrentFrame(pipimage); }
bool VideoOutputOpenGL::SetupOpenGL(void) { if (!gl_context) return false; QRect dvr = window.GetDisplayVisibleRect(); MythMainWindow *mainWin = GetMythMainWindow(); QSize mainSize = mainWin->size(); // If the Video screen mode has vertically less pixels // than the GUI screen mode - OpenGL coordinate adjustments // must be made to put the video at the top of the display // area instead of at the bottom. if (dvr.height() < mainSize.height()) dvr.setTop(dvr.top()-mainSize.height()+dvr.height()); // If the Video screen mode has horizontally less pixels // than the GUI screen mode - OpenGL width must be set // as the higher GUI width so that the Program Guide // invoked from playback is not cut off. if (dvr.width() < mainSize.width()) dvr.setWidth(mainSize.width()); if (video_codec_id == kCodec_NONE) { gl_context->SetViewPort(QRect(QPoint(),dvr.size())); return true; } if (window.GetPIPState() >= kPIPStandAlone) { QRect tmprect = QRect(QPoint(0,0), dvr.size()); ResizeDisplayWindow(tmprect, true); } bool success = false; OpenGLLocker ctx_lock(gl_context); gl_videochain = new OpenGLVideo(); QString options = GetFilters(); if (gl_opengl_lite) options += " preferycbcr"; success = gl_videochain->Init(gl_context, &videoColourSpace, window.GetVideoDim(), window.GetVideoDispDim(), dvr, window.GetDisplayVideoRect(), window.GetVideoRect(), true, options, !codec_sw_copy(video_codec_id)); if (success) { bool temp_deinterlacing = m_deinterlacing; if (!m_deintfiltername.isEmpty() && !m_deintfiltername.contains("opengl")) { gl_videochain->SetSoftwareDeinterlacer(m_deintfiltername); } SetDeinterlacingEnabled(true); if (!temp_deinterlacing) { SetDeinterlacingEnabled(false); } } return success; }
void MFolderFromProfile::AddFilter(const String& filter) { wxArrayString filters = GetFilters(); filters.Add(filter); SetFilters(filters); }
void MFolderFromProfile::PrependFilter(const String& filter) { wxArrayString filters = GetFilters(); filters.Insert(filter, 0); SetFilters(filters); }
/******************************************************************************************** > FormatEntry::~FormatEntry() Author: Colin_Barfoot (Xara Group Ltd) <*****@*****.**> Created: 10/12/96 Purpose: Default constructor deleting associated FilterEntry items ********************************************************************************************/ FormatEntry::~FormatEntry() { GetFilters().DeleteAll(); }