Go to the documentation of this file.
9 #define LOC QString("ScanTracker: ")
12 : m_parentPlayer(Parent)
63 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Reverting to auto detection of scan");
123 std::chrono::microseconds FrameInterval)
178 std::chrono::microseconds FrameInterval,
bool AllowLock)
185 LOG(VB_PLAYBACK, LOG_INFO,
LOC + QString(
"Locking scan override to '%1'")
197 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Unlocking frame scan");
205 if (
Frame->m_interlaced)
209 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
210 QString(
"Interlaced frame seen after %1 progressive frames")
215 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
"Locking scan to Interlaced.");
226 LOG(VB_PLAYBACK, LOG_INFO,
LOC +
227 QString(
"Progressive frame seen after %1 interlaced frames")
234 int min_count = !AllowLock ? 0 : 2;
248 QString(
"%1").arg(
static_cast<double>(Rate)) + QString(
", ") +
249 QString(
"%1").arg(VideoHeight) + QString(
") ->");
257 if ((720 == VideoHeight) || (Rate < 25) || (Rate > 30) || (VideoHeight > 1080))
bool AtNormalSpeed(void) const
QString ScanTypeToUserString(FrameScanType Scan, bool Forced=false)
This class serves as the base class for all video output methods.
FrameScanType m_scanOverride
FrameScanType NextScanOverride()
VideoFrameType m_lastFrameCodec
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
bool is_current_thread(MThread *thread)
Use this to determine if you are in the named thread.
FrameScanType m_resetScan
def scan(profile, smoonURL, gate)
MythDeintType m_lastDeinterlacer
float GetPlaySpeed(void) const
FrameScanType DetectInterlace(FrameScanType NewScan, float Rate, int VideoHeight)
MythPlayerUI * m_parentPlayer
void CheckScanUpdate(MythVideoOutput *VideoOutput, std::chrono::microseconds FrameInterval)
QString ScanTypeToString(FrameScanType Scan)
bool m_lastDeinterlacer2x
FrameScanType GetScanForDisplay(MythVideoFrame *Frame, bool &SecondField)
static VideoFrameType PixelFormatToFrameType(AVPixelFormat Fmt)
MythVideoScanTracker(MythPlayerUI *Parent)
virtual void AutoDeint(MythVideoFrame *Frame, MythVideoOutput *VideoOutput, std::chrono::microseconds FrameInterval, bool AllowLock=true)
Check whether deinterlacing should be enabled.
void InitialiseScan(MythVideoOutput *VideoOutput)
void SetScanType(FrameScanType Scan, MythVideoOutput *VideoOutput, std::chrono::microseconds FrameInterval)
std::chrono::microseconds m_lastFrameInterval
void SetScanOverride(FrameScanType Scan)
static QString DeinterlacerName(MythDeintType Deint, bool DoubleRate, VideoFrameType Format=FMT_NONE)
FrameScanType GetScanTypeWithOverride() const
QString GetDeinterlacerName()
FrameScanType GetScanType() const
bool CanSupportDoubleRate()
bool is_interlaced(FrameScanType Scan)