vdr-plugin-drmdevice 2.0.0-46418f1
cPipHandler Class Reference

PiP Stream Handler. More...

#include <pip.h>

Public Member Functions

 cPipHandler (cOutputDevice *)
 
virtual ~cPipHandler (void)
 
void Enable (void)
 Start picture-in-picture.
 
void Disable (void)
 Stop picture-in-picture.
 
void Toggle (void)
 Toggle picture-in-picture.
 
void ChannelChange (int)
 Change the pip channel.
 
void ChannelSwap (bool)
 Swap the pip channel with main live channel.
 
void SetSize (void)
 Set size and position for the pip window.
 
void SwapPosition (void)
 Swap pip between normal and alternative position.
 
bool IsEnabled (void)
 

Private Member Functions

int Start (int)
 Create a new pip receiver and render the pip stream.
 
void Stop (void)
 Delete the pip receiver, clear decoder and display buffers and disable rendering the pip window.
 
void HandleEnable (bool)
 Enable/ disable picture-in-picture.
 
void HandleChannelChange (int)
 Change the pip channel.
 

Private Attributes

cOutputDevice * m_pDevice
 pointer to device
 
cPipReceiver * m_pPipReceiver = nullptr
 pointer to pip receiver
 
int m_pipChannelNum = 0
 current pip channel number
 
const cChannel * m_pPipChannel
 current pip channel
 
std::atomic< bool > m_active = false
 true, if pip is active
 

Detailed Description

PiP Stream Handler.

Definition at line 55 of file pip.h.

Constructor & Destructor Documentation

◆ cPipHandler()

cPipHandler::cPipHandler ( cOutputDevice *  device)

Definition at line 158 of file pip.cpp.

◆ ~cPipHandler()

cPipHandler::~cPipHandler ( void  )
virtual

Definition at line 163 of file pip.cpp.

References Stop().

Member Function Documentation

◆ ChannelChange()

void cPipHandler::ChannelChange ( int  direction)

Change the pip channel.

Parameters
direction1: channel up, -1: channel down

Definition at line 338 of file pip.cpp.

References HandleChannelChange(), and m_active.

Referenced by cOutputDevice::PipChannelChange().

◆ ChannelSwap()

void cPipHandler::ChannelSwap ( bool  closePip)

Swap the pip channel with main live channel.

Parameters
closePipclose the pip window after the channel swap

Definition at line 354 of file pip.cpp.

References LOGDEBUG, m_active, m_pPipChannel, Start(), and Stop().

Referenced by cOutputDevice::PipChannelSwap().

◆ Disable()

void cPipHandler::Disable ( void  )

Stop picture-in-picture.

Definition at line 317 of file pip.cpp.

References HandleEnable(), and m_active.

Referenced by cOutputDevice::Detach(), cOutputDevice::PipDisable(), cOutputDevice::SetPlayMode(), and cOutputDevice::Stop().

◆ Enable()

void cPipHandler::Enable ( void  )

Start picture-in-picture.

Definition at line 306 of file pip.cpp.

References HandleEnable(), and m_active.

Referenced by cOutputDevice::PipEnable().

◆ HandleChannelChange()

void cPipHandler::HandleChannelChange ( int  direction)
private

Change the pip channel.

Parameters
direction1: channel up, -1: channel down

Definition at line 263 of file pip.cpp.

References m_active, m_pDevice, m_pPipChannel, Start(), and Stop().

Referenced by ChannelChange().

◆ HandleEnable()

void cPipHandler::HandleEnable ( bool  on)
private

Enable/ disable picture-in-picture.

Parameters
ontrue, if pip should be enabled

Definition at line 241 of file pip.cpp.

References LOGDEBUG, m_active, m_pDevice, m_pipChannelNum, cOutputDevice::SetRenderPipActive(), Start(), and Stop().

Referenced by Disable(), Enable(), and Toggle().

◆ IsEnabled()

bool cPipHandler::IsEnabled ( void  )
inline

Definition at line 68 of file pip.h.

References m_active.

Referenced by cOutputDevice::PipIsEnabled().

◆ SetSize()

void cPipHandler::SetSize ( void  )

Set size and position for the pip window.

Definition at line 377 of file pip.cpp.

References m_pDevice, and cOutputDevice::SetRenderPipSize().

Referenced by cOutputDevice::PipSetSize().

◆ Start()

int cPipHandler::Start ( int  channelNum)
private

Create a new pip receiver and render the pip stream.

Parameters
channelNumnumber of the channel to be switched to 0 switches to the current main stream channel
Return values
0pip was enabled
-1pip wasn't enabled, no device for channel available

Definition at line 177 of file pip.cpp.

References LOGDEBUG, LOGERROR, m_active, m_pDevice, m_pipChannelNum, m_pPipChannel, m_pPipReceiver, and Stop().

Referenced by ChannelSwap(), HandleChannelChange(), and HandleEnable().

◆ Stop()

void cPipHandler::Stop ( void  )
private

Delete the pip receiver, clear decoder and display buffers and disable rendering the pip window.

We do not need to halt main stream decoder for this, so only halt the PiP decoding and render thread here (in m_pDevice->ResetPipStream())

Definition at line 219 of file pip.cpp.

References LOGDEBUG, m_active, m_pDevice, m_pPipChannel, m_pPipReceiver, and cOutputDevice::ResetPipStream().

Referenced by ChannelSwap(), HandleChannelChange(), HandleEnable(), Start(), and ~cPipHandler().

◆ SwapPosition()

void cPipHandler::SwapPosition ( void  )

Swap pip between normal and alternative position.

Definition at line 385 of file pip.cpp.

References m_pDevice, cOutputDevice::SetRenderPipSize(), and cOutputDevice::ToggleRenderPipPosition().

Referenced by cOutputDevice::PipSwapPosition().

◆ Toggle()

void cPipHandler::Toggle ( void  )

Toggle picture-in-picture.

Definition at line 328 of file pip.cpp.

References HandleEnable(), and m_active.

Referenced by cOutputDevice::PipToggle().

Member Data Documentation

◆ m_active

std::atomic<bool> cPipHandler::m_active = false
private

true, if pip is active

Definition at line 75 of file pip.h.

Referenced by ChannelChange(), ChannelSwap(), Disable(), Enable(), HandleChannelChange(), HandleEnable(), IsEnabled(), Start(), Stop(), and Toggle().

◆ m_pDevice

cOutputDevice* cPipHandler::m_pDevice
private

pointer to device

Definition at line 71 of file pip.h.

Referenced by HandleChannelChange(), HandleEnable(), SetSize(), Start(), Stop(), and SwapPosition().

◆ m_pipChannelNum

int cPipHandler::m_pipChannelNum = 0
private

current pip channel number

Definition at line 73 of file pip.h.

Referenced by HandleEnable(), and Start().

◆ m_pPipChannel

const cChannel* cPipHandler::m_pPipChannel
private

current pip channel

Definition at line 74 of file pip.h.

Referenced by ChannelSwap(), HandleChannelChange(), Start(), and Stop().

◆ m_pPipReceiver

cPipReceiver* cPipHandler::m_pPipReceiver = nullptr
private

pointer to pip receiver

Definition at line 72 of file pip.h.

Referenced by Start(), and Stop().


The documentation for this class was generated from the following files: