mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-18 08:07:56 +01:00

Vp8FrameBufferController is currently just a renamed Vp8TemporalLayers, but subsequent CLs will modify Vp8FrameBufferController in ways that are not relevant for Vp8TemporalLayers. Namely: 1. Loss notifications will be added. 2. Packet-loss rate will be tracked. 3. RTT will be tracked. 4. Vp8FrameBufferController will be made injectable. Vp8TemporalLayers is retained in order to: 1. Avoid needlessly changing api/. 2. Place for code shared between DefaultTemporalLayers and ScreenshareLayers. We can remove it in the future (with a proper public announcement). Bug: webrtc:10382 Change-Id: I49ad1b9bc1954d51bb0b5e60361985f1eb12ae9f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126045 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Elad Alon <eladalon@webrtc.org> Cr-Commit-Position: refs/heads/master@{#27009}
51 lines
1.8 KiB
C++
51 lines
1.8 KiB
C++
/*
|
|
* Copyright (c) 2018 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 API_VIDEO_CODECS_VP8_TEMPORAL_LAYERS_H_
|
|
#define API_VIDEO_CODECS_VP8_TEMPORAL_LAYERS_H_
|
|
|
|
#include <vector>
|
|
|
|
#include "api/video_codecs/vp8_frame_buffer_controller.h"
|
|
#include "api/video_codecs/vp8_frame_config.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// Two different flavors of temporal layers are currently available:
|
|
// kFixedPattern uses a fixed repeating pattern of 1-4 layers.
|
|
// kBitrateDynamic can allocate frames dynamically to 1 or 2 layers, based on
|
|
// the bitrate produced.
|
|
enum class Vp8TemporalLayersType { kFixedPattern, kBitrateDynamic };
|
|
|
|
// This interface defines a way of getting the encoder settings needed to
|
|
// realize a temporal layer structure.
|
|
class Vp8TemporalLayers : public Vp8FrameBufferController {
|
|
public:
|
|
~Vp8TemporalLayers() override = default;
|
|
|
|
bool SupportsEncoderFrameDropping() const override = 0;
|
|
|
|
void OnRatesUpdated(const std::vector<uint32_t>& bitrates_bps,
|
|
int framerate_fps) override = 0;
|
|
|
|
bool UpdateConfiguration(Vp8EncoderConfig* cfg) override = 0;
|
|
|
|
Vp8FrameConfig UpdateLayerConfig(uint32_t rtp_timestamp) override = 0;
|
|
|
|
void OnEncodeDone(uint32_t rtp_timestamp,
|
|
size_t size_bytes,
|
|
bool is_keyframe,
|
|
int qp,
|
|
CodecSpecificInfo* info) override = 0;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // API_VIDEO_CODECS_VP8_TEMPORAL_LAYERS_H_
|