vdr-plugin-softhddevice-drm-gles 1.6.7
cPipHandler Class Reference

PiP Stream Handler. More...

#include <pipreceiver.h>

Public Member Functions

 cPipHandler (cSoftHdDevice *)
 
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

cSoftHdDevicem_pDevice
 pointer to device
 
cPipReceiverm_pPipReceiver = nullptr
 pointer to pip receiver
 
int m_pipChannelNum = 0
 current pip channel number
 
const cChannelm_pPipChannel
 current pip channel
 
std::atomic< boolm_active = false
 true, if pip is active
 

Detailed Description

PiP Stream Handler.

Definition at line 55 of file pipreceiver.h.

Constructor & Destructor Documentation

◆ cPipHandler()

cPipHandler::cPipHandler ( cSoftHdDevice device)

Definition at line 158 of file pipreceiver.cpp.

◆ ~cPipHandler()

cPipHandler::~cPipHandler ( void  )
virtual

Definition at line 163 of file pipreceiver.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 pipreceiver.cpp.

References HandleChannelChange(), and m_active.

Referenced by cSoftHdDevice::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 pipreceiver.cpp.

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

Referenced by cSoftHdDevice::PipChannelSwap().

◆ Disable()

void cPipHandler::Disable ( void  )

Stop picture-in-picture.

Definition at line 317 of file pipreceiver.cpp.

References HandleEnable(), and m_active.

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

◆ Enable()

void cPipHandler::Enable ( void  )

Start picture-in-picture.

Definition at line 306 of file pipreceiver.cpp.

References HandleEnable(), and m_active.

Referenced by cSoftHdDevice::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 pipreceiver.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 pipreceiver.cpp.

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

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

◆ IsEnabled()

bool cPipHandler::IsEnabled ( void  )
inline

Definition at line 68 of file pipreceiver.h.

References m_active.

Referenced by cSoftHdDevice::PipIsEnabled().

◆ SetSize()

void cPipHandler::SetSize ( void  )

Set size and position for the pip window.

Definition at line 377 of file pipreceiver.cpp.

References m_pDevice, and cSoftHdDevice::SetRenderPipSize().

Referenced by cSoftHdDevice::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 pipreceiver.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 pipreceiver.cpp.

References LOGDEBUG, m_active, m_pDevice, m_pPipChannel, m_pPipReceiver, and cSoftHdDevice::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 pipreceiver.cpp.

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

Referenced by cSoftHdDevice::PipSwapPosition().

◆ Toggle()

void cPipHandler::Toggle ( void  )

Toggle picture-in-picture.

Definition at line 328 of file pipreceiver.cpp.

References HandleEnable(), and m_active.

Referenced by cSoftHdDevice::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 pipreceiver.h.

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

◆ m_pDevice

cSoftHdDevice* cPipHandler::m_pDevice
private

pointer to device

Definition at line 71 of file pipreceiver.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 pipreceiver.h.

Referenced by HandleEnable(), and Start().

◆ m_pPipChannel

const cChannel* cPipHandler::m_pPipChannel
private

current pip channel

Definition at line 74 of file pipreceiver.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 pipreceiver.h.

Referenced by Start(), and Stop().


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