Twitch SDK (Internal)
ingesttester.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 
16 #include "twitchsdk/core/timer.h"
17 #include <functional>
18 #include <memory>
19 
20 namespace ttv
21 {
22  class User;
23 
24  namespace broadcast
25  {
26  class IngestTester;
27  class Streamer;
28  struct StreamerContext;
29  class StreamerListenerProxy;
30  class StreamStatsListenerProxy;
31  class IIngestTesterListener;
32  class IVideoEncoder;
33  class SampleDataVideoCapturer;
34  }
35 }
36 
44  public IIngestTester
45 {
46 public:
47  using DisposerFunc = std::function<void()>;
48 
49 public:
50  IngestTester(const std::shared_ptr<User>& user, const std::shared_ptr<StreamerContext>& streamerContext);
51  virtual ~IngestTester();
52 
53  void SetDisposer(DisposerFunc&& func) { mDisposerFunc = func; }
54 
56 
57  void AddListener(const std::shared_ptr<IIngestTesterListener>& listener);
58  void RemoveListener(const std::shared_ptr<IIngestTesterListener>& listener);
59 
60  TTV_ErrorCode SetTestData(const uint8_t* buffer, uint32_t length);
61 
62  // IIngestTester implementation
63  virtual TTV_ErrorCode GetTestState(TestState& result) const override;
64  virtual TTV_ErrorCode GetIngestServer(IngestServer& result) const override;
65  virtual TTV_ErrorCode Start(const IngestServer& ingestServer) override;
66  virtual TTV_ErrorCode Cancel() override;
67  virtual TTV_ErrorCode GetMeasuredKbps(uint32_t& result) override;
68  virtual TTV_ErrorCode GetTestError(TTV_ErrorCode& result) override;
69  virtual TTV_ErrorCode SetTestDurationMilliseconds(uint64_t duration) override;
70  virtual TTV_ErrorCode GetTestDurationMilliseconds(uint64_t& result) const override;
71  virtual TTV_ErrorCode GetProgress(float& result) const override;
72  virtual TTV_ErrorCode GetUserId(UserId& result) const override;
73 
74  // Component overrides
75  virtual TTV_ErrorCode Initialize() override;
76  virtual void Update() override;
77  virtual TTV_ErrorCode Shutdown() override;
78  virtual std::string GetLoggerName() const override;
79 
80 protected:
81  // Component overrides
82  virtual bool CheckShutdown() override;
83  virtual void CompleteShutdown() override;
84 
85 private:
86  bool IsDone() const;
87  void SetTestState(TestState state);
89  void UpdateServerTest();
90  void StopServerTest();
91  void UpdateProgress();
92  void OnStreamerStarted();
93  void OnStreamerStopped();
94 
96  std::shared_ptr<Streamer> mStreamer;
97  std::shared_ptr<StreamerListenerProxy> mStreamerListener;
98  std::shared_ptr<StreamStatsListenerProxy> mStatsListener;
99  std::shared_ptr<IVideoEncoder> mVideoEncoder;
100  std::shared_ptr<SampleDataVideoCapturer> mVideoCapturer;
101  std::shared_ptr<StreamerContext> mStreamerContext;
102 
104  uint32_t mMeasuredKbps;
106  std::shared_ptr<IngestSampleData> mSampleData;
107 
108  std::shared_ptr<ComponentContainer> mComponentContainer;
112  uint64_t mTotalBytesSent;
116 
118 
119  float mProgress;
123 };
uint32_t UserId
Definition: coretypes.h:22
virtual TTV_ErrorCode Start(const IngestServer &ingestServer) override
std::shared_ptr< StreamerListenerProxy > mStreamerListener
Definition: ingesttester.h:97
virtual TTV_ErrorCode GetTestError(TTV_ErrorCode &result) override
bool mWaitingForStartCallback
Definition: ingesttester.h:121
uint64_t mStartingBytesSent
Definition: ingesttester.h:111
void SetTestState(TestState state)
std::shared_ptr< StreamerContext > mStreamerContext
Definition: ingesttester.h:101
virtual void Update() override
WaitForExpiry mServerTestTimer
Definition: ingesttester.h:114
EventSource< IIngestTesterListener > mListeners
Definition: ingesttester.h:95
virtual bool CheckShutdown() override
bool mWaitingForStopCallback
Definition: ingesttester.h:122
virtual TTV_ErrorCode SetTestDurationMilliseconds(uint64_t duration) override
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
virtual TTV_ErrorCode GetTestState(TestState &result) const override
std::function< void()> DisposerFunc
Definition: ingesttester.h:47
void AddListener(const std::shared_ptr< IIngestTesterListener > &listener)
std::shared_ptr< Streamer > mStreamer
Definition: ingesttester.h:96
Definition: timer.h:52
VideoParams mVideoParams
Definition: ingesttester.h:115
std::shared_ptr< IngestSampleData > mSampleData
Definition: ingesttester.h:106
Definition: eventsource.h:18
float mProgress
Definition: ingesttester.h:119
virtual void CompleteShutdown() override
std::shared_ptr< StreamStatsListenerProxy > mStatsListener
Definition: ingesttester.h:98
virtual TTV_ErrorCode Initialize() override
Definition: broadcasttypes.h:80
Definition: broadcasttypes.h:32
virtual TTV_ErrorCode Shutdown() override
TestState mTestState
Definition: ingesttester.h:109
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
Definition: component.h:87
TTV_ErrorCode mTestErrorCode
Definition: ingesttester.h:105
virtual TTV_ErrorCode GetProgress(float &result) const override
virtual TTV_ErrorCode GetUserId(UserId &result) const override
uint32_t mMeasuredKbps
Definition: ingesttester.h:104
TTV_ErrorCode StartServerTest()
std::shared_ptr< SampleDataVideoCapturer > mVideoCapturer
Definition: ingesttester.h:100
TestState
Definition: iingesttester.h:31
virtual std::string GetLoggerName() const override
void RemoveListener(const std::shared_ptr< IIngestTesterListener > &listener)
virtual TTV_ErrorCode GetMeasuredKbps(uint32_t &result) override
Definition: ingesttester.h:43
TTV_ErrorCode SetTestData(const uint8_t *buffer, uint32_t length)
void SetDisposer(DisposerFunc &&func)
Definition: ingesttester.h:53
std::shared_ptr< IVideoEncoder > mVideoEncoder
Definition: ingesttester.h:99
uint64_t mTotalVideoPacketsSent
Definition: ingesttester.h:113
virtual TTV_ErrorCode GetTestDurationMilliseconds(uint64_t &result) const override
IngestTester(const std::shared_ptr< User > &user, const std::shared_ptr< StreamerContext > &streamerContext)
virtual TTV_ErrorCode Cancel() override
uint64_t mTotalBytesSent
Definition: ingesttester.h:112
virtual TTV_ErrorCode GetIngestServer(IngestServer &result) const override
IngestServer mIngestServer
Definition: ingesttester.h:103
DisposerFunc mDisposerFunc
Definition: ingesttester.h:117
Definition: iingesttester.h:28
bool mBroadcasting
Definition: ingesttester.h:120
uint64_t mTestDurationMilliseconds
Definition: ingesttester.h:110
std::shared_ptr< ComponentContainer > mComponentContainer
Definition: ingesttester.h:108