1
0

OBSAdvAudioCtrl.hpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #pragma once
  2. #include <obs.hpp>
  3. #include <QObject>
  4. #include <QPointer>
  5. class BalanceSlider;
  6. class QCheckBox;
  7. class QComboBox;
  8. class QDoubleSpinBox;
  9. class QGridLayout;
  10. class QLabel;
  11. class QSpinBox;
  12. class QStackedWidget;
  13. class QWidget;
  14. enum class VolumeType {
  15. dB,
  16. Percent,
  17. };
  18. class OBSAdvAudioCtrl : public QObject {
  19. Q_OBJECT
  20. private:
  21. OBSSource source;
  22. QPointer<QWidget> mixerContainer;
  23. QPointer<QWidget> balanceContainer;
  24. QPointer<QLabel> iconLabel;
  25. QPointer<QLabel> nameLabel;
  26. QPointer<QLabel> active;
  27. QPointer<QStackedWidget> stackedWidget;
  28. QPointer<QSpinBox> percent;
  29. QPointer<QDoubleSpinBox> volume;
  30. QPointer<QCheckBox> forceMono;
  31. QPointer<BalanceSlider> balance;
  32. QPointer<QLabel> labelL;
  33. QPointer<QLabel> labelR;
  34. QPointer<QSpinBox> syncOffset;
  35. QPointer<QComboBox> monitoringType;
  36. QPointer<QCheckBox> mixer1;
  37. QPointer<QCheckBox> mixer2;
  38. QPointer<QCheckBox> mixer3;
  39. QPointer<QCheckBox> mixer4;
  40. QPointer<QCheckBox> mixer5;
  41. QPointer<QCheckBox> mixer6;
  42. std::vector<OBSSignal> sigs;
  43. static void OBSSourceActivated(void *param, calldata_t *calldata);
  44. static void OBSSourceDeactivated(void *param, calldata_t *calldata);
  45. static void OBSSourceFlagsChanged(void *param, calldata_t *calldata);
  46. static void OBSSourceVolumeChanged(void *param, calldata_t *calldata);
  47. static void OBSSourceSyncChanged(void *param, calldata_t *calldata);
  48. static void OBSSourceMonitoringTypeChanged(void *param, calldata_t *calldata);
  49. static void OBSSourceMixersChanged(void *param, calldata_t *calldata);
  50. static void OBSSourceBalanceChanged(void *param, calldata_t *calldata);
  51. static void OBSSourceRenamed(void *param, calldata_t *calldata);
  52. public:
  53. OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_);
  54. virtual ~OBSAdvAudioCtrl();
  55. inline obs_source_t *GetSource() const { return source; }
  56. void ShowAudioControl(QGridLayout *layout);
  57. void SetVolumeWidget(VolumeType type);
  58. void SetIconVisible(bool visible);
  59. public slots:
  60. void SourceActiveChanged(bool active);
  61. void SourceFlagsChanged(uint32_t flags);
  62. void SourceVolumeChanged(float volume);
  63. void SourceSyncChanged(int64_t offset);
  64. void SourceMonitoringTypeChanged(int type);
  65. void SourceMixersChanged(uint32_t mixers);
  66. void SourceBalanceChanged(int balance);
  67. void SetSourceName(QString newName);
  68. void volumeChanged(double db);
  69. void percentChanged(int percent);
  70. void downmixMonoChanged(bool checked);
  71. void balanceChanged(int val);
  72. void syncOffsetChanged(int milliseconds);
  73. void monitoringTypeChanged(int index);
  74. void ResetBalance();
  75. };