Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

VideoOutputOpenGL: Ensure deinterlacing works after aspect changes.

The OpenGL deinterlacing code is dependant on having the correct chain
of filters for a given video and display size. This may be invalidated
following, for example, a change to the video fill. So force a check
after each change.
  • Loading branch information...
commit 68ab9582efdb69b3d1a22f00081218dc4c5db113 1 parent 8b6eb7c
Mark Kendall authored
View
4 mythtv/libs/libmythtv/openglvideo.cpp
@@ -835,11 +835,7 @@ void OpenGLVideo::UpdateInputFrame(const VideoFrame *frame, bool soft_bob)
void OpenGLVideo::SetDeinterlacing(bool deinterlacing)
{
- if (deinterlacing == hardwareDeinterlacing)
- return;
-
hardwareDeinterlacing = deinterlacing;
-
OpenGLLocker ctx_lock(gl_context);
CheckResize(hardwareDeinterlacing);
}
View
11 mythtv/libs/libmythtv/videoout_opengl.cpp
@@ -589,6 +589,12 @@ void VideoOutputOpenGL::MoveResize(void)
{
QMutexLocker locker(&gl_context_lock);
VideoOutput::MoveResize();
+ if (gl_videochain)
+ {
+ gl_videochain->SetVideoRect(vsz_enabled ? vsz_desired_display_rect :
+ window.GetDisplayVideoRect(),
+ window.GetVideoRect());
+ }
}
void VideoOutputOpenGL::UpdatePauseFrame(void)
@@ -657,6 +663,7 @@ bool VideoOutputOpenGL::SetupDeinterlace(
m_deintFilter = NULL;
}
+ MoveResize();
m_deinterlacing = interlaced;
if (m_deinterlacing && !m_deintfiltername.isEmpty())
@@ -713,8 +720,8 @@ bool VideoOutputOpenGL::SetDeinterlacingEnabled(bool enable)
}
}
- if (gl_videochain)
- gl_videochain->SetDeinterlacing(enable);
+ MoveResize();
+ gl_videochain->SetDeinterlacing(enable);
m_deinterlacing = enable;
Please sign in to comment.
Something went wrong with that request. Please try again.