Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter.h

Issue 2288223002: Extract simulcast rate allocation outside of video encoder. (Closed)
Patch Set: Rebase, handle pause case in simulcast wrapper Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 * 9 *
10 */ 10 */
11 11
12 #ifndef WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_ENCODER_ADAPTER_H_ 12 #ifndef WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_ENCODER_ADAPTER_H_
13 #define WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_ENCODER_ADAPTER_H_ 13 #define WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_ENCODER_ADAPTER_H_
14 14
15 #include <memory> 15 #include <memory>
16 #include <string> 16 #include <string>
17 #include <vector> 17 #include <vector>
18 18
19 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" 19 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h"
20 20
21 namespace webrtc { 21 namespace webrtc {
22 22
23 class SimulcastRateAllocator;
24
23 class VideoEncoderFactory { 25 class VideoEncoderFactory {
24 public: 26 public:
25 virtual VideoEncoder* Create() = 0; 27 virtual VideoEncoder* Create() = 0;
26 virtual void Destroy(VideoEncoder* encoder) = 0; 28 virtual void Destroy(VideoEncoder* encoder) = 0;
27 virtual ~VideoEncoderFactory() {} 29 virtual ~VideoEncoderFactory() {}
28 }; 30 };
29 31
30 // SimulcastEncoderAdapter implements simulcast support by creating multiple 32 // SimulcastEncoderAdapter implements simulcast support by creating multiple
31 // webrtc::VideoEncoder instances with the given VideoEncoderFactory. 33 // webrtc::VideoEncoder instances with the given VideoEncoderFactory.
32 // All the public interfaces are expected to be called from the same thread, 34 // All the public interfaces are expected to be called from the same thread,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 send_stream(send_stream) {} 86 send_stream(send_stream) {}
85 // Deleted by SimulcastEncoderAdapter::Release(). 87 // Deleted by SimulcastEncoderAdapter::Release().
86 VideoEncoder* encoder; 88 VideoEncoder* encoder;
87 EncodedImageCallback* callback; 89 EncodedImageCallback* callback;
88 uint16_t width; 90 uint16_t width;
89 uint16_t height; 91 uint16_t height;
90 bool key_frame_request; 92 bool key_frame_request;
91 bool send_stream; 93 bool send_stream;
92 }; 94 };
93 95
94 // Get the stream bitrate, for the stream |stream_idx|, given the bitrate
95 // |new_bitrate_kbit| and the actual configured stream count in
96 // |total_number_of_streams|. The function also returns whether there's enough
97 // bandwidth to send this stream via |send_stream|.
98 uint32_t GetStreamBitrate(int stream_idx,
99 size_t total_number_of_streams,
100 uint32_t new_bitrate_kbit,
101 bool* send_stream) const;
102
103 // Populate the codec settings for each stream. 96 // Populate the codec settings for each stream.
104 void PopulateStreamCodec(const webrtc::VideoCodec* inst, 97 void PopulateStreamCodec(const webrtc::VideoCodec* inst,
105 int stream_index, 98 int stream_index,
106 size_t total_number_of_streams, 99 uint32_t start_bitrate_kbps,
107 bool highest_resolution_stream, 100 bool highest_resolution_stream,
108 webrtc::VideoCodec* stream_codec, 101 webrtc::VideoCodec* stream_codec);
109 bool* send_stream);
110 102
111 bool Initialized() const; 103 bool Initialized() const;
112 104
113 std::unique_ptr<VideoEncoderFactory> factory_; 105 std::unique_ptr<VideoEncoderFactory> factory_;
114 std::unique_ptr<TemporalLayersFactory> screensharing_tl_factory_; 106 std::unique_ptr<TemporalLayersFactory> screensharing_tl_factory_;
115 VideoCodec codec_; 107 VideoCodec codec_;
116 std::vector<StreamInfo> streaminfos_; 108 std::vector<StreamInfo> streaminfos_;
117 EncodedImageCallback* encoded_complete_callback_; 109 EncodedImageCallback* encoded_complete_callback_;
118 std::string implementation_name_; 110 std::string implementation_name_;
111 std::unique_ptr<SimulcastRateAllocator> rate_allocator_;
119 }; 112 };
120 113
121 } // namespace webrtc 114 } // namespace webrtc
122 115
123 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_ENCODER_ADAPTER_H_ 116 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_SIMULCAST_ENCODER_ADAPTER_H_
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/BUILD.gn ('k') | webrtc/modules/video_coding/codecs/vp8/simulcast_encoder_adapter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698