// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_PUBLIC_RENDERER_MEDIA_STREAM_VIDEO_SINK_H_
#define CONTENT_PUBLIC_RENDERER_MEDIA_STREAM_VIDEO_SINK_H_

#include "base/callback.h"
#include "base/compiler_specific.h"
#include "base/memory/ref_counted.h"
#include "base/time/time.h"
#include "content/common/content_export.h"
#include "content/common/media/video_capture.h"
#include "content/public/renderer/media_stream_sink.h"
#include "media/base/video_capturer_source.h"
#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"

namespace content {

// MediaStreamVideoSink is an interface used for receiving video frames from a
// Video Stream Track or a Video Source. It should be extended by embedders,
// which connect/disconnect the sink implementation to a track to start/stop the
// flow of video frames.
//
// http://dev.w3.org/2011/webrtc/editor/getusermedia.html
// All methods calls will be done from the main render thread.
class CONTENT_EXPORT MediaStreamVideoSink : public MediaStreamSink {
 protected:
  MediaStreamVideoSink();
  ~MediaStreamVideoSink() override;

  // An implementation of MediaStreamVideoSink should call ConnectToTrack when
  // it is ready to receive data from a video track. Before the implementation
  // is destroyed, DisconnectFromTrack must be called. This MediaStreamVideoSink
  // base class holds a reference to the WebMediaStreamTrack until
  // DisconnectFromTrack is called.
  //
  // Calls to these methods must be done on the main render thread.
  // Note that |callback| for frame delivery happens on the IO thread.
  //
  // Warning: Calling DisconnectFromTrack does not immediately stop frame
  // delivery through the |callback|, since frames are being delivered on a
  // different thread.
  //
  // |is_sink_secure| indicates if this MediaStreamVideoSink is secure (i.e.
  // meets output protection requirement). Generally, this should be false
  // unless you know what you are doing.
  void ConnectToTrack(const blink::WebMediaStreamTrack& track,
                      const VideoCaptureDeliverFrameCB& callback,
                      bool is_sink_secure);
  void DisconnectFromTrack();

  // Returns the currently-connected track, or a null instance otherwise.
  const blink::WebMediaStreamTrack& connected_track() const {
    return connected_track_;
  }

 private:
  // Set by ConnectToTrack() and cleared by DisconnectFromTrack().
  blink::WebMediaStreamTrack connected_track_;
};


}  // namespace content

#endif  // CONTENT_PUBLIC_RENDERER_MEDIA_STREAM_VIDEO_SINK_H_
