23 class TrackingContext;
28 struct StreamerContext;
39 class StreamerListenerProxy;
40 class IBandwidthStatListener;
112 virtual void OnBandwidthWarning(
Streamer* source,
TTV_ErrorCode ec, uint32_t backupMilliseconds) = 0;
120 Streamer(
const std::shared_ptr<User>& user,
const std::shared_ptr<StreamerContext>& context);
123 void AddListener(
const std::shared_ptr<IListener>& listener);
124 void RemoveListener(
const std::shared_ptr<IListener>& listener);
126 void AddBandwidthStatListener(
const std::shared_ptr<IBandwidthStatListener>& listener);
127 void RemoveBandwidthStatListener(
const std::shared_ptr<IBandwidthStatListener>& listener);
132 TTV_ErrorCode SetVideoEncoder(
const std::shared_ptr<IVideoEncoder>& encoder);
133 TTV_ErrorCode SetAudioEncoder(
const std::shared_ptr<IAudioEncoder>& encoder);
134 TTV_ErrorCode SetCustomMuxer(
const std::shared_ptr<IMuxer>& muxer);
149 virtual void SetTaskRunner(std::shared_ptr<TaskRunner> taskRunner)
override;
151 virtual void Update()
override;
155 virtual std::string GetLoggerName()
const override;
156 virtual bool CheckShutdown()
override;
157 virtual void CompleteShutdown()
override;
171 void SetAudioCapturer(
AudioLayerId layerId,
const std::shared_ptr<IAudioCapture>& capturer);
172 void SetAudioCapturerEnabled(
AudioLayerId layer,
bool enabled);
173 void GetAudioCapturers(std::vector<std::shared_ptr<IAudioCapture>>& result)
const;
174 std::shared_ptr<IAudioCapture> GetAudioCapturer(
AudioLayerId layer)
const;
176 void SetVideoCapturer(std::shared_ptr<IVideoCapture> capturer);
177 std::shared_ptr<IVideoCapture> GetVideoCapturer()
const;
179 uint64_t GetStreamTime()
const;
182 std::shared_ptr<const StreamStats>
GetStreamStats()
const {
return mStreamStats; }
197 static void GetRequiredAuthScopes(std::vector<std::string>& scopes);
201 TTV_ErrorCode AddVideoFrame(
const std::shared_ptr<VideoFrame>& frame);
204 TTV_ErrorCode SetStreamName(
const std::string& streamKey,
bool absEnabled);
220 void NotifyStreamerStateChanged();
280 typedef std::function<void(Streamer* source, TTV_ErrorCode ec, uint32_t backupMilliseconds)>
BandwidthWarningFunc;
281 typedef std::function<void(Streamer* source, TTV_ErrorCode ec, const StreamInfo& streamInfo)>
StreamInfoFetchedFunc;
286 if (mStartCompleteFunc !=
nullptr)
288 mStartCompleteFunc(source, ec);
294 if (mStopCompleteFunc !=
nullptr)
296 mStopCompleteFunc(source, ec);
302 if (mStreamerStateChangedFunc !=
nullptr)
304 mStreamerStateChangedFunc(source, state, ec);
310 if (mBandwidthWarningFunc !=
nullptr)
312 mBandwidthWarningFunc(source, ec, backupMilliseconds);
318 if (mStreamInfoFetchedFunc !=
nullptr)
320 mStreamInfoFetchedFunc(source, ec, streamInfo);
std::shared_ptr< IAudioEncoder > mAudioEncoder
Definition: streamer.h:256
std::string title
Definition: streamer.h:57
std::string category
Definition: streamer.h:56
TTV_ErrorCode mBandwidthWarningState
Definition: streamer.h:251
StartParams mStartParams
Definition: streamer.h:226
std::unique_ptr< StreamInfo > mStreamInfo
Definition: streamer.h:223
WaitForExpiry mMinuteBroadcastTrackingTimer
Definition: streamer.h:253
Definition: streamer.h:71
ConnectionType connectionType
Definition: streamer.h:55
std::function< void(Streamer *source, TTV_ErrorCode ec)> StartCompleteFunc
Definition: streamer.h:277
bool mFirstFrameSubmitted
Definition: streamer.h:265
AudioParams mAudioParams
Definition: streamer.h:227
StreamStartFlags flags
Definition: streamer.h:86
virtual void OnStartComplete(Streamer *source, TTV_ErrorCode ec) override
Definition: streamer.h:284
StreamerState mStreamerState
Definition: streamer.h:246
std::function< void(TTV_ErrorCode ec)> StartCallback
Definition: streamer.h:90
std::shared_ptr< TrackingContext > mTrackingContext
Definition: streamer.h:261
void SetBroadcasterSoftware(const std::string &str)
Definition: streamer.h:139
WaitForExpiry mBandwidthWarningTimer
Definition: streamer.h:250
uint32_t AudioLayerId
Definition: broadcasttypes.h:192
Definition: streamer.h:274
StreamStartFlags
Definition: broadcasttypes.h:225
Definition: coretypes.h:130
std::string mStreamKey
The key that grants stream access to the channel.
Definition: streamer.h:241
std::shared_ptr< FrameWriter > mFrameWriter
Definition: streamer.h:232
StreamerState mLastReportedStreamerState
The state last reported to the client.
Definition: streamer.h:248
void SetFrameWriterDelayStateChangedCallback(const FrameWriterDelayStateChangedCallback &callback)
Definition: streamer.h:146
std::shared_ptr< StreamerContext > mContext
Definition: streamer.h:229
virtual void OnBandwidthWarning(Streamer *source, TTV_ErrorCode ec, uint32_t backupMilliseconds) override
Definition: streamer.h:308
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
std::shared_ptr< FlvMuxer > mFlvMuxer
Definition: streamer.h:231
virtual void OnStreamerStateChanged(Streamer *source, Streamer::StreamerState state, TTV_ErrorCode ec) override
Definition: streamer.h:300
uint64_t mInitialTime
The number of system ticks at the time of stream start.
Definition: streamer.h:244
std::shared_ptr< AudioStreamer > mAudioStreamer
Definition: streamer.h:235
virtual void OnStopComplete(Streamer *source, TTV_ErrorCode ec) override
Definition: streamer.h:292
Definition: iaudioencoder.h:29
bool mBandwidthTestMode
Definition: streamer.h:266
bool mForceArchiveBroadcast
If true appends recorder=1 to the RTMP URL forcing the server to record the broadcast.
Definition: streamer.h:267
Definition: eventsource.h:18
StreamerStateChangedFunc mStreamerStateChangedFunc
Definition: streamer.h:327
ConnectionType
Definition: broadcasttypes.h:154
ttv::ConcurrentQueue< BandwidthStat > mStatQueue
Definition: streamer.h:237
std::string mOutputStreamName
Definition: streamer.h:230
void SetForceArchiveBroadcast(bool forceArchive)
Definition: streamer.h:144
StreamInfoFetchedFunc mStreamInfoFetchedFunc
Definition: streamer.h:329
Definition: broadcasttypes.h:80
std::atomic_bool isBusy
Definition: streamer.h:53
virtual void OnStreamInfoFetched(Streamer *source, TTV_ErrorCode ec, const StreamInfo &streamInfo) override
Definition: streamer.h:316
Definition: broadcasttypes.h:32
StopCompleteFunc mStopCompleteFunc
Definition: streamer.h:326
IngestServer mSelectedIngestServer
Definition: streamer.h:228
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
static std::string GetComponentName()
Definition: streamer.h:196
Definition: component.h:87
RetryTimer mStreamInfoFetchTimer
Definition: streamer.h:247
BandwidthWarningFunc mBandwidthWarningFunc
Definition: streamer.h:328
EventSource< IListener > mListeners
Definition: streamer.h:236
std::shared_ptr< IVideoCapture > mVideoCapturer
Definition: streamer.h:258
ChannelId mChannelId
The name of the channel to broadcast to.
Definition: streamer.h:240
std::function< void(FrameWriter::DelayState state)> FrameWriterDelayStateChangedCallback
Definition: streamer.h:92
Definition: concurrentqueue.h:16
std::function< void(TTV_ErrorCode ec)> StopCallback
Definition: streamer.h:91
std::shared_ptr< TrackingContext > sharedTrackingContext
Definition: streamer.h:54
std::shared_ptr< IVideoEncoder > mVideoEncoder
Definition: streamer.h:255
FrameWriterDelayStateChangedCallback mFrameWriterDelayStateChangedCallback
Definition: streamer.h:263
std::shared_ptr< StreamStats > mStreamStats
Definition: streamer.h:233
std::function< void(Streamer *source, TTV_ErrorCode ec, uint32_t backupMilliseconds)> BandwidthWarningFunc
Definition: streamer.h:280
std::wstring outputFile
Definition: streamer.h:87
std::shared_ptr< IMuxer > mCustomMuxer
Definition: streamer.h:260
Definition: streamer.h:94
uint32_t ChannelId
Definition: coretypes.h:23
StartCompleteFunc mStartCompleteFunc
Definition: streamer.h:325
std::function< void(Streamer *source, TTV_ErrorCode ec, const StreamInfo &streamInfo)> StreamInfoFetchedFunc
Definition: streamer.h:281
std::mutex mStateMutex
Definition: streamer.h:245
VideoParams GetVideoParams() const
Definition: streamer.h:184
std::shared_ptr< StreamStats > GetStreamStats()
Definition: streamer.h:181
IngestServer ingestServer
Definition: streamer.h:85
std::function< void(Streamer *source, TTV_ErrorCode ec)> StopCompleteFunc
Definition: streamer.h:278
std::function< void(Streamer *source, Streamer::StreamerState state, TTV_ErrorCode ec)> StreamerStateChangedFunc
Definition: streamer.h:279
TTV_ErrorCode mStateChangeError
The cause of the last state change.
Definition: streamer.h:249
EventSource< IBandwidthStatListener > mBandwidthStatListeners
Definition: streamer.h:238
VideoParams videoParams
Definition: streamer.h:84
Definition: streamer.h:46
std::string mBroadcasterSoftware
The broadcaster_software parameter to send over RTMP.
Definition: streamer.h:243
std::shared_ptr< VideoStreamer > mVideoStreamer
Definition: streamer.h:234
StreamerState
Definition: streamer.h:74
StreamerContext()
Definition: streamer.h:48
Definition: streamer.h:82
std::shared_ptr< const StreamStats > GetStreamStats() const
Definition: streamer.h:182