MythTV  master
Public Slots | Signals | Public Member Functions | Protected Slots | Private Member Functions | Private Attributes | List of all members
MythPlayerAudioUI Class Reference

Acts as the interface between the UI and the underlying AudioPlayer object. More...

#include <mythplayeraudioui.h>

Inheritance diagram for MythPlayerAudioUI:
Inheritance graph
Collaboration diagram for MythPlayerAudioUI:
Collaboration graph

Public Slots

void RefreshAudioState ()
- Public Slots inherited from MythPlayerOverlayUI
void BrowsingChanged (bool Browsing)
void EditingChanged (bool Editing)


void AudioStateChanged (MythAudioState State)
- Signals inherited from MythPlayerOverlayUI
void OverlayStateChanged (MythOverlayState OverlayState)
- Signals inherited from MythPlayer
void CheckCallbacks ()
void SeekingSlow (int Count)
void SeekingComplete ()
void PauseChanged (bool Paused)
void RequestResetCaptions ()
void SignalTracksChanged (uint Type)

Public Member Functions

 MythPlayerAudioUI (MythMainWindow *MainWindow, TV *Tv, PlayerContext *Context, PlayerFlags Flags)
const AudioOutputGraphGetAudioGraph () const
void SetupAudioGraph (double VideoFrameRate)
void ClearAudioGraph ()
- Public Member Functions inherited from MythPlayerOverlayUI
 MythPlayerOverlayUI (MythMainWindow *MainWindow, TV *Tv, PlayerContext *Context, PlayerFlags Flags)
 ~MythPlayerOverlayUI () override=default
virtual void UpdateSliderInfo (osdInfo &Info, bool PaddedFields=false)
void LockOSD ()
void UnlockOSD ()
- Public Member Functions inherited from MythPlayerUIBase
 MythPlayerUIBase (MythMainWindow *MainWindow, TV *Tv, PlayerContext *Context, PlayerFlags Flags)
MythRenderGetRender () const
- Public Member Functions inherited from MythPlayer
 MythPlayer (PlayerContext *Context, PlayerFlags Flags=kNoFlags)
 ~MythPlayer () override
virtual int OpenFile (int Retries=4)
virtual bool InitVideo (void)
virtual void ReinitVideo (bool ForceUpdate)
virtual void InitFrameInterval ()
void SetLength (std::chrono::seconds len)
void SetFramesPlayed (uint64_t played)
void SetEof (EofState eof)
void SetWatchingRecording (bool mode)
void SetKeyframeDistance (int keyframedistance)
virtual void SetVideoParams (int w, int h, double fps, float aspect, bool ForceUpdate, int ReferenceFrames, FrameScanType=kScan_Ignore, const QString &codecName=QString())
void SetFileLength (std::chrono::seconds total, int frames)
void SetDuration (std::chrono::seconds duration)
void SetFrameRate (double fps)
QSize GetVideoBufferSize (void) const
QSize GetVideoSize (void) const
float GetVideoAspect (void) const
float GetFrameRate (void) const
bool IsAudioNeeded (void)
int GetFreeVideoFrames (void) const
 Returns the number of frames available for decoding onto. More...
int GetFFRewSkip (void) const
float GetPlaySpeed (void) const
AudioPlayerGetAudio (void)
float GetNextPlaySpeed (void) const
std::chrono::seconds GetLength (void) const
uint64_t GetTotalFrameCount (void) const
uint64_t GetCurrentFrameCount (void) const
uint64_t GetFramesPlayed (void) const
virtual uint64_t GetBookmark (void)
QString GetError (void) const
QString GetEncodingType (void) const
QString GetXDS (const QString &key) const
bool IsPaused (void) const
bool GetRawAudioState (void) const
bool GetLimitKeyRepeat (void) const
EofState GetEof (void) const
bool IsErrored (void) const
bool IsPlaying (std::chrono::milliseconds wait_in_msec=0ms, bool wait_for=true) const
bool AtNormalSpeed (void) const
bool IsReallyNearEnd (void) const
 Returns true iff really near end of recording. More...
bool IsNearEnd (void)
 Returns true iff near end of recording. More...
bool HasTVChainNext (void) const
bool IsWatchingInprogress (void) const
virtual InteractiveTVGetInteractiveTV ()
MythVideoOutputGetVideoOutput (void)
virtual bool SwitchTitle (int)
virtual bool NextTitle (void)
virtual bool PrevTitle (void)
virtual bool SwitchAngle (int)
virtual bool NextAngle (void)
virtual bool PrevAngle (void)
MythVideoFrameGetNextVideoFrame (void)
 Removes a frame from the available queue for decoding onto. More...
void DeLimboFrame (MythVideoFrame *frame)
virtual void ReleaseNextVideoFrame (MythVideoFrame *buffer, std::chrono::milliseconds timecode, bool wrap=true)
 Places frame on the queue of frames ready for display. More...
void DiscardVideoFrame (MythVideoFrame *buffer)
 Places frame in the available frames queue. More...
void DiscardVideoFrames (bool KeyFrame, bool Flushed)
 Places frames in the available frames queue. More...
DecoderBaseGetDecoder (void)
 Returns the stream decoder currently in use. More...
virtual bool HasReachedEof (void) const
void SetDisablePassThrough (bool disabled)
void ForceSetupAudioStream (void)
virtual bool PrepareAudioSample (std::chrono::milliseconds &timecode)
virtual CC708ReaderGetCC708Reader (uint=0)
virtual CC608ReaderGetCC608Reader (uint=0)
virtual SubtitleReaderGetSubReader (uint=0)
virtual TeletextReaderGetTeletextReader (uint=0)
void EnableForcedSubtitles (bool enable)
bool ForcedSubtitlesFavored (void) const
bool GetAllowForcedSubtitles (void) const
void CheckTVChain ()
void FileChangedCallback ()
virtual int GetNumChapters (void)
virtual int GetCurrentChapter (void)
virtual void GetChapterTimes (QList< std::chrono::seconds > &times)
virtual int GetNumTitles (void) const
virtual int GetCurrentTitle (void) const
virtual std::chrono::seconds GetTitleDuration (int) const
virtual QString GetTitleName (int) const
virtual int GetNumAngles (void) const
virtual int GetCurrentAngle (void) const
virtual QString GetAngleName (int) const
virtual bool IsInStillFrame () const
bool PosMapFromEnc (uint64_t start, frm_pos_map_t &posMap, frm_pos_map_t &durMap)
void SaveTotalDuration (void)
void ResetTotalDuration (void)
void SaveTotalFrames (void)
void SetErrored (const QString &reason)

Protected Slots

void InitialiseState () override
 Initialise audio and signal initial state. More...
void ChangeMuteState (bool CycleChannels)
void ChangeVolume (bool Direction, int Volume)
void ResetAudio ()
void ReinitAudio ()
void EnableUpmix (bool Enable, bool Toggle=false)
void PauseAudioUntilBuffered ()
void AdjustAudioTimecodeOffset (std::chrono::milliseconds Delta, std::chrono::milliseconds Value)
- Protected Slots inherited from MythPlayerOverlayUI
void UpdateOSDMessage (const QString &Message)
void UpdateOSDMessage (const QString &Message, OSDTimeout Timeout)
void SetOSDStatus (const QString &Title, OSDTimeout Timeout)
void UpdateOSDStatus (osdInfo &Info, int Type, enum OSDTimeout Timeout)
void UpdateOSDStatus (const QString &Title, const QString &Desc, const QString &Value, int Type, const QString &Units, int Position, OSDTimeout Timeout)
void ChangeOSDPositionUpdates (bool Enable)
void UpdateOSDPosition ()
 Update the OSD status/position window. More...
- Protected Slots inherited from MythPlayerUIBase
virtual void InitialiseState ()

Private Member Functions

void SetupAudioOutput (float TimeStretch)

Private Attributes

AudioOutputGraph m_audioGraph

Additional Inherited Members

- Static Public Attributes inherited from MythPlayer
static const int kNightModeBrightenssAdjustment = 10
static const int kNightModeContrastAdjustment = 10
static const double kInaccuracyNone = 0
static const double kInaccuracyDefault = 0.1
static const double kInaccuracyEditor = 0.5
static const double kInaccuracyFull = -1.0
- Protected Member Functions inherited from MythPlayerOverlayUI
virtual std::chrono::milliseconds GetMillisecondsPlayed (bool HonorCutList)
virtual std::chrono::milliseconds GetTotalMilliseconds (bool HonorCutList) const
std::chrono::seconds GetSecondsPlayed (bool HonorCutList)
std::chrono::seconds GetTotalSeconds (bool HonorCutList) const
- Protected Member Functions inherited from MythPlayer
void OpenDummy (void)
virtual long long CalcMaxFFTime (long long ff, bool setjump=true) const
 CalcMaxFFTime(ffframes): forward ffframes forward. More...
long long CalcRWTime (long long rw) const
 CalcRWTime(rw): rewind rw frames back. More...
std::chrono::milliseconds TranslatePositionFrameToMs (uint64_t position, bool use_cutlist) const
uint64_t TranslatePositionMsToFrame (std::chrono::milliseconds position, bool use_cutlist) const
uint64_t TranslatePositionAbsToRel (uint64_t position) const
uint64_t TranslatePositionRelToAbs (uint64_t position) const
float ComputeSecs (uint64_t position, bool use_cutlist) const
uint64_t FindFrame (float offset, bool use_cutlist) const
void SetAutoCommercialSkip (CommSkipMode autoskip)
void SkipCommercials (int direction)
void SetCommBreakMap (const frm_dir_map_t &NewMap)
CommSkipMode GetAutoCommercialSkip (void)
virtual void ResetPlaying (bool resetframes=true)
virtual void StopPlaying (void)
bool PauseDecoder (void)
void UnpauseDecoder (void)
bool Pause (void)
bool Play (float speed=1.0, bool normal=true, bool unpauseaudio=true)
virtual bool FastForward (float seconds)
virtual bool Rewind (float seconds)
virtual bool JumpToFrame (uint64_t frame)
void JumpChapter (int chapter)
virtual bool PrebufferEnoughFrames (int min_buffers=0)
void SetBuffering (bool new_buffering)
virtual void VideoEnd (void)
virtual void DecoderStart (bool start_paused)
virtual void DecoderLoop (bool pause)
virtual void DecoderEnd (void)
virtual void DecoderPauseCheck (void)
virtual void AudioEnd (void)
bool GetEditMode (void) const
bool IsInDelete (uint64_t frame)
void SetPlayingInfo (const ProgramInfo &pginfo)
void SetPlaying (bool is_playing)
void ResetErrored (void)
void PauseVideo (void)
void UnpauseVideo (void)
void PauseBuffer (void)
void UnpauseBuffer (void)
virtual void CreateDecoder (TestBufferVec &TestBuffer)
void SetDecoder (DecoderBase *dec)
 Sets the stream decoder, deleting any existing recorder. More...
const DecoderBaseGetDecoder (void) const
 Returns the stream decoder currently in use. More...
virtual bool DecoderGetFrameFFREW (void)
virtual bool DecoderGetFrameREW (void)
bool DecoderGetFrame (DecodeType decodetype, bool unsafe=false)
bool DoGetFrame (DecodeType DecodeType)
 Get one frame from the decoder. More...
bool UpdateFFRewSkip (float ffrewScale=1.0F)
virtual void ChangeSpeed (void)
bool DoFastForward (uint64_t frames, double inaccuracy)
bool DoRewind (uint64_t frames, double inaccuracy)
void DoJumpToFrame (uint64_t frame, double inaccuracy)
void WaitForSeek (uint64_t frame, uint64_t seeksnap_wanted)
void ClearAfterSeek (bool clearvideobuffers=true)
 This is to support seeking... More...
void ClearBeforeSeek (uint64_t Frames)
 Discard video frames prior to seeking. More...
virtual bool DoJumpChapter (int chapter)
virtual int64_t GetChapter (int chapter)
void WrapTimecode (std::chrono::milliseconds &timecode, TCTypes tc_type)
void SetFrameInterval (FrameScanType scan, double frame_period)
- Protected Attributes inherited from MythPlayerOverlayUI
OSD m_osd
QRecursiveMutex m_osdLock
bool m_browsing { false }
bool m_editing { false }
bool m_reinitOsd { false }
- Protected Attributes inherited from MythPlayerUIBase
MythMainWindowm_mainWindow { nullptr }
TVm_tv { nullptr }
MythRenderm_render { nullptr }
MythPainterm_painter { nullptr }
MythDisplaym_display { nullptr }
- Protected Attributes inherited from MythPlayer
DecoderBasem_decoder {nullptr}
QRecursiveMutex m_decoderChangeLock
MythVideoOutputm_videoOutput {nullptr}
const VideoFrameTypesm_renderFormats { &MythVideoFrame::kDefaultRenderFormats }
PlayerContextm_playerCtx {nullptr}
MythDecoderThreadm_decoderThread {nullptr}
QThread * m_playerThread {nullptr}
PlayerFlags m_playerFlags
QWaitCondition m_decoderThreadPause
QWaitCondition m_decoderThreadUnpause
QMutex m_decoderPauseLock
QMutex m_decoderSeekLock
QMutex m_bufferPauseLock
QMutex m_videoPauseLock
QMutex m_pauseLock
int64_t m_decoderSeek {-1}
bool m_totalDecoderPause {false}
bool m_decoderPaused {false}
bool m_inJumpToProgramPause {false}
bool m_pauseDecoder {false}
bool m_unpauseDecoder {false}
bool volatile m_killDecoder {false}
bool m_decodeOneFrame {false}
bool m_needNewPauseFrame {false}
bool m_bufferPaused {false}
bool m_videoPaused {false}
bool m_allPaused {false}
bool m_playing {false}
QWaitCondition m_playingWaitCond
QMutex m_vidExitLock
QMutex m_playingLock
QMutex m_errorLock
QString m_errorMsg
 Reason why NVP exited with a error. More...
int m_errorType {kError_None}
bool m_liveTV {false}
bool m_watchingRecording {false}
bool m_transcoding {false}
bool m_hasFullPositionMap {false}
bool m_limitKeyRepeat {false}
int m_jumpChapter {0}
uint64_t m_bookmarkSeek {0}
int m_clearSavedPosition {1}
int m_endExitPrompt
long long m_ffTime {0}
 If m_ffTime>0, number of frames to seek forward. More...
int m_videobufRetries {0}
 How often we have tried to wait for a video output buffer and failed. More...
uint64_t m_framesPlayed {0}
uint64_t m_totalFrames {0}
std::chrono::seconds m_totalLength {0s}
std::chrono::seconds m_totalDuration {0s}
long long m_rewindTime {0}
std::chrono::milliseconds m_latestVideoTimecode {-1ms}
MythPlayerAVSync m_avSync
double m_videoFrameRate {29.97}
 Video (input) Frame Rate (often inaccurate) More...
QString m_codecName
 Codec Name - used by playback profile. More...
QSize m_videoDispDim {0,0}
 Video (input) width & height. More...
QSize m_videoDim {0,0}
 Video (input) buffer width & height. More...
int m_maxReferenceFrames {0}
 Number of reference frames used in the video stream. More...
float m_videoAspect {4.0F / 3.0F}
 Video (input) Apect Ratio. More...
float m_forcedVideoAspect {-1}
uint m_keyframeDist {30}
 Video (input) Number of frames between key frames (often inaccurate) More...
bool m_buffering {false}
QTime m_bufferingStart
QTime m_bufferingLastMsg
uint m_vbiMode {VBIMode::None}
 VBI decoder to use. More...
int m_ttPageNum {0x888}
 VBI page to display when in PAL vbimode. More...
SubtitleReader m_subReader
TeletextReader m_ttxReader
bool m_captionsEnabledbyDefault {false}
 This allows us to enable captions/subtitles later if the streams are not immediately available when the video starts playing. More...
bool m_enableForcedSubtitles {false}
bool m_disableForcedSubtitles {false}
bool m_allowForcedSubtitles {true}
CC608Reader m_cc608
CC708Reader m_cc708
AudioPlayer m_audio
CommBreakMap m_commBreakMap
bool m_forcePositionMapSync {false}
DeleteMap m_deleteMap
QRecursiveMutex m_decoderLock
 Lock for next_play_speed and next_normal_speed. More...
float m_nextPlaySpeed {1.0F}
float m_playSpeed {1.0F}
std::chrono::microseconds m_frameInterval {microsecondsFromFloat(1000000.0F / 30)}
 always adjusted for play_speed More...
int m_fpsMultiplier {1}
 used to detect changes More...
int m_ffrewSkip {1}
int m_ffrewAdjust {0}
 offset after last skip More...
float m_ffrewScale {1.0F}
 scale skip for large gops More...
bool m_fileChanged {false}
bool m_nextNormalSpeed {true}
bool m_normalSpeed {true}
tctype_arr m_tcWrap {}
std::chrono::milliseconds m_savedAudioTimecodeOffset {0ms}
bool m_isDummy {false}
int m_bufferingCounter {0}

Detailed Description

Acts as the interface between the UI and the underlying AudioPlayer object.

Changes to the audio state (e.g. volume changes) are signalled from the parent TV object. Any subsequent change in state is signalled back via the AudioStateChanged signal.

As such, the public API is limited and is largely restricted to access to the AudioGraph, as required by the OSD/Edit mode.

Any other objects that are interested in the audio state should connect to the AudioStateChanged signal and retrieve the initial state via GetAudioState.

This could/should be extended to include track data and current source/output metadata.
Upmixing status (MythAudioState::m_canUpmix and MythAudioState::m_isUpmixing) appears to be working as expected but is not extensively tested. As far as I can tell, upmixing state/support only changes when the underlying audio object is reconfigured - which is restricted to ToggleUpmix and ReinitAudio - both of which are captured.

Definition at line 9 of file mythplayeraudioui.h.

Constructor & Destructor Documentation

◆ MythPlayerAudioUI()

MythPlayerAudioUI::MythPlayerAudioUI ( MythMainWindow MainWindow,
TV Tv,
PlayerContext Context,
PlayerFlags  Flags 

Definition at line 30 of file mythplayeraudioui.cpp.

Member Function Documentation

◆ AudioStateChanged

void MythPlayerAudioUI::AudioStateChanged ( MythAudioState  State)

◆ RefreshAudioState

void MythPlayerAudioUI::RefreshAudioState ( )

Definition at line 68 of file mythplayeraudioui.cpp.

Referenced by MythNavigationOverlay::Create().

◆ InitialiseState

void MythPlayerAudioUI::InitialiseState ( )

Initialise audio and signal initial state.

Definition at line 61 of file mythplayeraudioui.cpp.

Referenced by MythPlayerCaptionsUI::InitialiseState().

◆ ChangeMuteState

void MythPlayerAudioUI::ChangeMuteState ( bool  CycleChannels)

Definition at line 126 of file mythplayeraudioui.cpp.

Referenced by MythPlayerAudioUI().

◆ ChangeVolume

void MythPlayerAudioUI::ChangeVolume ( bool  Direction,
int  Volume 

Definition at line 104 of file mythplayeraudioui.cpp.

Referenced by MythPlayerAudioUI().

◆ ResetAudio

void MythPlayerAudioUI::ResetAudio ( )

Definition at line 73 of file mythplayeraudioui.cpp.

Referenced by MythPlayerAudioUI().

◆ ReinitAudio

void MythPlayerAudioUI::ReinitAudio ( )

Definition at line 79 of file mythplayeraudioui.cpp.

Referenced by InitialiseState(), and MythPlayerAudioUI().

◆ EnableUpmix

void MythPlayerAudioUI::EnableUpmix ( bool  Enable,
bool  Toggle = false 

Definition at line 154 of file mythplayeraudioui.cpp.

Referenced by MythPlayerAudioUI().

◆ PauseAudioUntilBuffered

void MythPlayerAudioUI::PauseAudioUntilBuffered ( )

Definition at line 170 of file mythplayeraudioui.cpp.

Referenced by MythPlayerAudioUI().

◆ AdjustAudioTimecodeOffset

void MythPlayerAudioUI::AdjustAudioTimecodeOffset ( std::chrono::milliseconds  Delta,
std::chrono::milliseconds  Value 

Definition at line 184 of file mythplayeraudioui.cpp.

Referenced by MythPlayerAudioUI().

◆ GetAudioGraph()

const AudioOutputGraph & MythPlayerAudioUI::GetAudioGraph ( ) const

Definition at line 85 of file mythplayeraudioui.cpp.

Referenced by OSD::SetGraph().

◆ SetupAudioGraph()

void MythPlayerAudioUI::SetupAudioGraph ( double  VideoFrameRate)

Definition at line 90 of file mythplayeraudioui.cpp.

Referenced by MythPlayerEditorUI::EnableEdit().

◆ ClearAudioGraph()

void MythPlayerAudioUI::ClearAudioGraph ( )

Definition at line 98 of file mythplayeraudioui.cpp.

Referenced by MythPlayerEditorUI::DisableEdit().

◆ SetupAudioOutput()

void MythPlayerAudioUI::SetupAudioOutput ( float  TimeStretch)

Definition at line 175 of file mythplayeraudioui.cpp.

Referenced by MythPlayerAudioUI().

Member Data Documentation

◆ m_audioGraph

AudioOutputGraph MythPlayerAudioUI::m_audioGraph

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