/*
 *  Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

#ifndef WEBRTC_EXAMPLES_UNITYPLUGIN_VIDEO_OBSERVER_H_
#define WEBRTC_EXAMPLES_UNITYPLUGIN_VIDEO_OBSERVER_H_

#include <mutex>

#include "webrtc/api/mediastreaminterface.h"
#include "webrtc/examples/unityplugin/unity_plugin_apis.h"
#include "webrtc/media/base/videosinkinterface.h"

class VideoObserver : public rtc::VideoSinkInterface<webrtc::VideoFrame> {
 public:
  VideoObserver() {}
  ~VideoObserver() {}
  void SetVideoCallback(I420FRAMEREADY_CALLBACK callback);

 protected:
  // VideoSinkInterface implementation
  void OnFrame(const webrtc::VideoFrame& frame) override;

 private:
  I420FRAMEREADY_CALLBACK OnI420FrameReady = nullptr;
  std::mutex mutex;
};

#endif  // WEBRTC_EXAMPLES_UNITYPLUGIN_VIDEO_OBSERVER_H_
