1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // VideoReader is a generic interface used by ConnectionToHost to read 6 // video stream. ProtobufVideoReader implements this interface for 7 // protobuf video stream. 8 9 #ifndef REMOTING_PROTOCOL_VIDEO_READER_H_ 10 #define REMOTING_PROTOCOL_VIDEO_READER_H_ 11 12 #include "base/callback.h" 13 #include "base/memory/scoped_ptr.h" 14 #include "remoting/protocol/video_stub.h" 15 16 namespace remoting { 17 namespace protocol { 18 19 class Session; 20 class SessionConfig; 21 22 class VideoReader { 23 public: 24 // The callback is called when initialization is finished. The 25 // parameter is set to true on success. 26 typedef base::Callback<void(bool)> InitializedCallback; 27 28 virtual ~VideoReader(); 29 30 static scoped_ptr<VideoReader> Create(const SessionConfig& config); 31 32 // Initializies the reader. Doesn't take ownership of either |connection| 33 // or |video_stub|. 34 virtual void Init(Session* session, 35 VideoStub* video_stub, 36 const InitializedCallback& callback) = 0; 37 virtual bool is_connected() = 0; 38 39 protected: 40 VideoReader() { } 41 42 private: 43 DISALLOW_COPY_AND_ASSIGN(VideoReader); 44 }; 45 46 } // namespace protocol 47 } // namespace remoting 48 49 #endif // REMOTING_PROTOCOL_VIDEO_READER_H_ 50