MythTV master
audioplayer.h
Go to the documentation of this file.
1#ifndef AUDIOPLAYER_H
2#define AUDIOPLAYER_H
3
6
7#include "mythplayerstate.h"
8
9#include <QCoreApplication>
10#include <QRecursiveMutex>
11
12#include <cstdint>
13#include <vector>
14
15class MythPlayer;
16class AudioOutput;
17struct AVCodecContext;
18struct AVPacket;
19
20class MTV_PUBLIC AudioPlayer : public QObject
21{
22 Q_OBJECT
23
24 signals:
26
27 public:
28 AudioPlayer(MythPlayer *parent, bool muted);
29 ~AudioPlayer() override;
30
31 void addVisual(Visualization *vis);
32 void removeVisual(Visualization *vis);
33
34 void Reset(void);
35 void DeleteOutput(void);
36 QString ReinitAudio(void);
37 void SetAudioOutput(AudioOutput *ao);
38 void SetAudioInfo(const QString &main_device,
39 const QString &passthru_device,
40 uint samplerate,
41 int codec_profile = -1);
42 void SetAudioParams(AudioFormat format, int orig_channels, int channels,
43 AVCodecID codec, int samplerate, bool passthru,
44 int codec_profile = -1);
45 void SetEffDsp(int dsprate);
46
47 void CheckFormat(void);
48 void SetNoAudio(void) { m_noAudioOut = true; }
49 bool HasAudioIn(void) const { return !m_noAudioIn; }
50 bool HasAudioOut(void) const { return !m_noAudioOut; }
51 bool ControlsVolume(void) const { return m_controlsVolume; }
52
53 bool Pause(bool pause);
54 bool IsPaused(void);
55 void PauseAudioUntilBuffered(void);
56 AVCodecID GetCodec(void) const { return m_state.m_codec; }
57 int GetOrigChannels(void) const { return m_state.m_origChannels; }
58 int GetSampleRate(void) const { return m_state.m_sampleRate; }
59 uint GetVolume(void);
60 uint AdjustVolume(int change);
61 uint SetVolume(int newvolume);
62 float GetStretchFactor(void) const { return m_stretchFactor; }
63 void SetStretchFactor(float factor);
64 bool IsUpmixing(void);
65 bool EnableUpmix(bool enable, bool toggle = false);
66 bool CanUpmix(void);
67 bool CanPassthrough(int samplerate, int channels, AVCodecID codec, int profile);
68 bool CanDownmix(void);
69 bool CanAC3(void);
70 bool CanDTS(void);
71 bool CanEAC3(void);
72 bool CanTrueHD(void);
73 bool CanDTSHD(void);
74 uint GetMaxChannels(void);
75 int GetMaxHDRate(void);
76 std::chrono::milliseconds GetAudioTime(void);
77 AudioFormat GetFormat(void) const { return m_state.m_format; }
78 bool CanProcess(AudioFormat fmt);
79 uint32_t CanProcess(void);
80 int DecodeAudio(AVCodecContext *ctx,
81 uint8_t *buffer, int &data_size,
82 const AVPacket *pkt);
83
84 bool IsMuted(void) { return GetMuteState() == kMuteAll; }
85 bool SetMuted(bool mute);
86 MuteState GetMuteState(void);
87 MuteState SetMuteState(MuteState mstate);
88 MuteState IncrMuteState(void);
89
90 void AddAudioData(char *buffer, int len, std::chrono::milliseconds timecode, int frames);
91 bool NeedDecodingBeforePassthrough(void);
92 std::chrono::milliseconds LengthLastData(void);
93 bool GetBufferStatus(uint &fill, uint &total);
94 bool IsBufferAlmostFull(void);
95 std::chrono::milliseconds GetAudioBufferedTime(void);
96
100 AudioOutput *GetAudioOutput(void) const { return m_audioOutput; }
101
102 private:
103 void AddVisuals(void);
104 void RemoveVisuals(void);
105 void ResetVisuals(void);
106
107 private:
108 MythPlayer *m_parent {nullptr};
109 AudioOutput *m_audioOutput {nullptr};
111 float m_stretchFactor {1.0F};
112 QRecursiveMutex m_lock;
113 bool m_mutedOnCreation {false};
116 bool m_noAudioIn {false};
117 bool m_noAudioOut {true};
118 bool m_controlsVolume {true};
119 std::vector<Visualization*> m_visuals;
120};
121
122#endif // AUDIOPLAYER_H
void AudioPlayerStateChanged(MythAudioPlayerState State)
void SetNoAudio(void)
Definition: audioplayer.h:48
AudioOutput * GetAudioOutput(void) const
Return internal AudioOutput object.
Definition: audioplayer.h:100
std::vector< Visualization * > m_visuals
Definition: audioplayer.h:119
float GetStretchFactor(void) const
Definition: audioplayer.h:62
AudioFormat GetFormat(void) const
Definition: audioplayer.h:77
int GetSampleRate(void) const
Definition: audioplayer.h:58
MythAudioPlayerState m_state
Definition: audioplayer.h:110
bool HasAudioOut(void) const
Definition: audioplayer.h:50
bool HasAudioIn(void) const
Definition: audioplayer.h:49
QString m_mainDevice
Definition: audioplayer.h:114
bool IsMuted(void)
Definition: audioplayer.h:84
QString m_passthruDevice
Definition: audioplayer.h:115
QRecursiveMutex m_lock
Definition: audioplayer.h:112
int GetOrigChannels(void) const
Definition: audioplayer.h:57
bool ControlsVolume(void) const
Definition: audioplayer.h:51
AVCodecID GetCodec(void) const
Definition: audioplayer.h:56
unsigned int uint
Definition: compat.h:60
#define MTV_PUBLIC
Definition: mythtvexp.h:8
MuteState
Definition: volumebase.h:8
@ kMuteAll
Definition: volumebase.h:12
State
Definition: zmserver.h:69