Twitch SDK (Internal)
unityframecapturer.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 
12 
13 namespace ttv
14 {
15  class BindingFrameCapturer;
16 
17  // Event types for UnitySetGraphicsDevice
18  // NOTE: don't change these since they line up with Unity's events
19  namespace GfxDeviceEventType
20  {
21  enum Enum
22  {
27  };
28  }
29 
30  namespace broadcast
31  {
32  class BroadcastAPI;
33  }
34 }
35 
36 
38 {
39 public:
41  virtual ~BindingFrameCapturer();
42 
43  virtual void SetGraphicsDevice(void* device, GfxDeviceEventType::Enum eventType);
44  virtual TTV_ErrorCode SetBroadcastController(ttv::broadcast::BroadcastAPI* broadcastController);
45  virtual TTV_ErrorCode Start(const TTV_VideoParams* videoParams, const TTV_AudioParams* audioParams, const TTV_IngestServer* ingestServer, uint32_t flags);
46  virtual TTV_ErrorCode Stop();
47  virtual TTV_ErrorCode PauseFrameSubmission();
48  virtual TTV_ErrorCode ResumeFrameSubmission();
49  virtual TTV_ErrorCode SubmitTexture(void* p, int width, int height) = 0;
50  virtual void Shutdown();
51  virtual void PreDeviceReset();
52  virtual void PostDeviceReset();
53  virtual bool RequiresVerticalFlip();
54 
55  bool GetIsStarted() const { return mStarted; }
56  ttv::broadcast::BroadcastAPI* GetBroadcastController(){ return mBroadcastController; }
57 
58 protected:
59  static void BufferUnlockCallback(const uint8_t* buffer, void* userData);
60 
61  virtual bool ShouldCreateFrameBuffers() const;
62  virtual void HandleBufferUnlock(const uint8_t* buffer);
63  virtual void CleanupObjects();
64  virtual TTV_ErrorCode SubmitVideoFrame(const uint8_t* frameBuffer,TTV_BufferUnlockCallback callback, void* userData);
65 
66  typedef std::vector<uint8_t*> BufferList;
67 
68  BufferList mAllFrameBuffers;
69  BufferList mFreeFrameBuffers;
70  TTV_VideoParams mVideoParams;
71  bool mStarted;
73 
74  static const size_t kNumBuffers = 3;
75 };
std::vector< uint8_t * > BufferList
Definition: unityframecapturer.h:66
bool mStarted
Definition: unityframecapturer.h:71
TTV_VideoParams mVideoParams
Definition: unityframecapturer.h:70
Enum
Definition: unityframecapturer.h:21
Definition: unityframecapturer.h:23
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
Definition: unityframecapturer.h:37
BufferList mFreeFrameBuffers
Definition: unityframecapturer.h:69
ttv::broadcast::BroadcastAPI * GetBroadcastController()
Definition: unityframecapturer.h:56
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
Definition: unityframecapturer.h:24
Definition: broadcastapi.h:73
BufferList mAllFrameBuffers
Definition: unityframecapturer.h:68
bool GetIsStarted() const
Definition: unityframecapturer.h:55
Definition: unityframecapturer.h:26
ttv::broadcast::BroadcastAPI * mBroadcastController
Definition: unityframecapturer.h:72
Definition: unityframecapturer.h:25