adv-audio-control.hpp 1.7 KB
Newer Older
J
jp9000 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#pragma once

#include <obs.hpp>
#include <QWidget>

class QLabel;
class QSpinBox;
class QCheckBox;
class QSlider;

class OBSAdvAudioCtrl : public QWidget {
	Q_OBJECT

private:
	OBSSource              source;
	QLabel                 *nameLabel              = nullptr;
	QSpinBox               *volume                 = nullptr;
	QCheckBox              *forceMono              = nullptr;
	QSlider                *panning                = nullptr;
	QSpinBox               *syncOffset             = nullptr;
J
jp9000 已提交
21 22 23 24
	QCheckBox              *mixer1                 = nullptr;
	QCheckBox              *mixer2                 = nullptr;
	QCheckBox              *mixer3                 = nullptr;
	QCheckBox              *mixer4                 = nullptr;
J
jp9000 已提交
25 26 27 28

	OBSSignal              volChangedSignal;
	OBSSignal              syncOffsetSignal;
	OBSSignal              flagsSignal;
29
	OBSSignal              mixersSignal;
J
jp9000 已提交
30 31 32 33

	static void OBSSourceFlagsChanged(void *param, calldata_t *calldata);
	static void OBSSourceVolumeChanged(void *param, calldata_t *calldata);
	static void OBSSourceSyncChanged(void *param, calldata_t *calldata);
34
	static void OBSSourceMixersChanged(void *param, calldata_t *calldata);
J
jp9000 已提交
35 36 37 38 39 40 41 42 43 44

public:
	OBSAdvAudioCtrl(obs_source_t *source_);

	inline obs_source_t *GetSource() const {return source;}

public slots:
	void SourceFlagsChanged(uint32_t flags);
	void SourceVolumeChanged(float volume);
	void SourceSyncChanged(int64_t offset);
45
	void SourceMixersChanged(uint32_t mixers);
J
jp9000 已提交
46 47 48 49 50

	void volumeChanged(int percentage);
	void downmixMonoChanged(bool checked);
	void panningChanged(int val);
	void syncOffsetChanged(int milliseconds);
J
jp9000 已提交
51 52 53 54
	void mixer1Changed(bool checked);
	void mixer2Changed(bool checked);
	void mixer3Changed(bool checked);
	void mixer4Changed(bool checked);
J
jp9000 已提交
55
};