Permits measuring encoding time even when performed on another thread, typically for hardware encoding, instead of assuming that encoding is blocking the calling thread. Permitted encoding time is increased for hardware encoders since they can be timed to keep 30fps, for instance, without indicating overload. Merges EncodingTimeObserver into EncodedFrameObserver to have one post-encode callback. BUG=webrtc:5042, webrtc:5132 R=asapersson@webrtc.org, mflodman@webrtc.org Review URL: https://codereview.webrtc.org/1569853002 . Cr-Commit-Position: refs/heads/master@{#11499}
56 lines
1.4 KiB
C++
56 lines
1.4 KiB
C++
/*
|
|
* Copyright (c) 2013 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_FRAME_CALLBACK_H_
|
|
#define WEBRTC_FRAME_CALLBACK_H_
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include "webrtc/common_types.h"
|
|
|
|
namespace webrtc {
|
|
|
|
class VideoFrame;
|
|
|
|
struct EncodedFrame {
|
|
public:
|
|
EncodedFrame() : data_(NULL), length_(0), frame_type_(kEmptyFrame) {}
|
|
EncodedFrame(const uint8_t* data, size_t length, FrameType frame_type)
|
|
: data_(data), length_(length), frame_type_(frame_type) {}
|
|
|
|
const uint8_t* data_;
|
|
const size_t length_;
|
|
const FrameType frame_type_;
|
|
};
|
|
|
|
class I420FrameCallback {
|
|
public:
|
|
// This function is called with a I420 frame allowing the user to modify the
|
|
// frame content.
|
|
virtual void FrameCallback(VideoFrame* video_frame) = 0;
|
|
|
|
protected:
|
|
virtual ~I420FrameCallback() {}
|
|
};
|
|
|
|
class EncodedFrameObserver {
|
|
public:
|
|
virtual void EncodedFrameCallback(const EncodedFrame& encoded_frame) = 0;
|
|
virtual void OnEncodeTiming(int64_t capture_ntp_ms, int encode_duration_ms) {}
|
|
|
|
protected:
|
|
virtual ~EncodedFrameObserver() {}
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_FRAME_CALLBACK_H_
|