Twitch SDK (Internal)
iaudiomixer.h
Go to the documentation of this file.
1 /********************************************************************************************
2 * Twitch Broadcasting SDK
3 *
4 * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5 * may not be copied or used except in accordance with the terms of that agreement
6 * Copyright (c) 2012-2016 Twitch Interactive, Inc.
7 *********************************************************************************************/
8 
9 #pragma once
10 
13 #include <memory>
14 
15 namespace ttv
16 {
17  namespace broadcast
18  {
19  class IAudioMixer;
20  class AudioMixerProxy;
21  class AudioFrame;
22  }
23 }
24 
29 {
30 public:
31  virtual ~IAudioMixer();
32 
33  virtual TTV_ErrorCode SubmitFrame(AudioLayerId audioLayerId, const std::shared_ptr<AudioFrame>& audioFrame) = 0;
35  virtual std::shared_ptr<IAudioFrameReceiver> GetReceiverImplementation(IAudioFrameReceiver::ReceiverTypeId typeId) = 0;
36 };
37 
38 
40 {
41 public:
42  using SubmitFrameFunc = std::function<TTV_ErrorCode(AudioLayerId audioLayerId, const std::shared_ptr<AudioFrame>& audioFrame)>;
43  using SupportsReceiverProtocolFunc = std::function<bool(IAudioFrameReceiver::ReceiverTypeId typeId)>;
44  using GetReceiverImplementationFunc = std::function<std::shared_ptr<IAudioFrameReceiver>(IAudioFrameReceiver::ReceiverTypeId typeId)>;
45 
46 public:
47  virtual TTV_ErrorCode SubmitFrame(AudioLayerId audioLayerId, const std::shared_ptr<AudioFrame>& audioFrame) override
48  {
49  return mSubmitFrameFunc(audioLayerId, audioFrame);
50  }
51 
53  {
54  return mSupportsReceiverProtocolFunc(typeId);
55  }
56 
57  virtual std::shared_ptr<IAudioFrameReceiver> GetReceiverImplementation(IAudioFrameReceiver::ReceiverTypeId typeId) override
58  {
59  return mGetReceiverImplementationFunc(typeId);
60  }
61 
62 public:
66 };
std::function< std::shared_ptr< IAudioFrameReceiver >(IAudioFrameReceiver::ReceiverTypeId typeId)> GetReceiverImplementationFunc
Definition: iaudiomixer.h:44
SupportsReceiverProtocolFunc mSupportsReceiverProtocolFunc
Definition: iaudiomixer.h:64
virtual std::shared_ptr< IAudioFrameReceiver > GetReceiverImplementation(IAudioFrameReceiver::ReceiverTypeId typeId)=0
virtual TTV_ErrorCode SubmitFrame(AudioLayerId audioLayerId, const std::shared_ptr< AudioFrame > &audioFrame)=0
std::function< bool(IAudioFrameReceiver::ReceiverTypeId typeId)> SupportsReceiverProtocolFunc
Definition: iaudiomixer.h:43
Definition: iaudiomixer.h:39
virtual std::shared_ptr< IAudioFrameReceiver > GetReceiverImplementation(IAudioFrameReceiver::ReceiverTypeId typeId) override
Definition: iaudiomixer.h:57
uint32_t AudioLayerId
Definition: broadcasttypes.h:192
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
virtual TTV_ErrorCode SubmitFrame(AudioLayerId audioLayerId, const std::shared_ptr< AudioFrame > &audioFrame) override
Definition: iaudiomixer.h:47
virtual bool SupportsReceiverProtocol(IAudioFrameReceiver::ReceiverTypeId typeId) const =0
SubmitFrameFunc mSubmitFrameFunc
Definition: iaudiomixer.h:63
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
size_t ReceiverTypeId
Definition: iaudioframereceiver.h:28
GetReceiverImplementationFunc mGetReceiverImplementationFunc
Definition: iaudiomixer.h:65
virtual bool SupportsReceiverProtocol(IAudioFrameReceiver::ReceiverTypeId typeId) const override
Definition: iaudiomixer.h:52
std::function< TTV_ErrorCode(AudioLayerId audioLayerId, const std::shared_ptr< AudioFrame > &audioFrame)> SubmitFrameFunc
Definition: iaudiomixer.h:42
Definition: iaudiomixer.h:28