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

Side by Side Diff: webrtc/modules/video_coding/codecs/vp8/vp8_impl.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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 * WEBRTC VP8 wrapper interface 10 * WEBRTC VP8 wrapper interface
11 */ 11 */
12 12
13 #ifndef WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_VP8_IMPL_H_ 13 #ifndef WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_VP8_IMPL_H_
14 #define WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_VP8_IMPL_H_ 14 #define WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_VP8_IMPL_H_
15 15
16 #include <memory>
16 #include <vector> 17 #include <vector>
17 18
18 // NOTE: This include order must remain to avoid compile errors, even though 19 // NOTE: This include order must remain to avoid compile errors, even though
19 // it breaks the style guide. 20 // it breaks the style guide.
20 #include "vpx/vpx_encoder.h" 21 #include "vpx/vpx_encoder.h"
21 #include "vpx/vpx_decoder.h" 22 #include "vpx/vpx_decoder.h"
22 #include "vpx/vp8cx.h" 23 #include "vpx/vp8cx.h"
23 #include "vpx/vp8dx.h" 24 #include "vpx/vp8dx.h"
24 25
25 #include "webrtc/common_video/include/i420_buffer_pool.h" 26 #include "webrtc/common_video/include/i420_buffer_pool.h"
26 #include "webrtc/modules/video_coding/include/video_codec_interface.h" 27 #include "webrtc/modules/video_coding/include/video_codec_interface.h"
27 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" 28 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h"
28 #include "webrtc/modules/video_coding/codecs/vp8/reference_picture_selection.h" 29 #include "webrtc/modules/video_coding/codecs/vp8/reference_picture_selection.h"
29 #include "webrtc/modules/video_coding/utility/frame_dropper.h"
30 #include "webrtc/modules/video_coding/utility/quality_scaler.h" 30 #include "webrtc/modules/video_coding/utility/quality_scaler.h"
31 #include "webrtc/video_frame.h" 31 #include "webrtc/video_frame.h"
32 32
33 namespace webrtc { 33 namespace webrtc {
34 34
35 class SimulcastRateAllocator;
35 class TemporalLayers; 36 class TemporalLayers;
36 37
37 class VP8EncoderImpl : public VP8Encoder { 38 class VP8EncoderImpl : public VP8Encoder {
38 public: 39 public:
39 VP8EncoderImpl(); 40 VP8EncoderImpl();
40 41
41 virtual ~VP8EncoderImpl(); 42 virtual ~VP8EncoderImpl();
42 43
43 int Release() override; 44 int Release() override;
44 45
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 int GetEncodedPartitions(const VideoFrame& input_image, 87 int GetEncodedPartitions(const VideoFrame& input_image,
87 bool only_predicting_from_key_frame); 88 bool only_predicting_from_key_frame);
88 89
89 // Set the stream state for stream |stream_idx|. 90 // Set the stream state for stream |stream_idx|.
90 void SetStreamState(bool send_stream, int stream_idx); 91 void SetStreamState(bool send_stream, int stream_idx);
91 92
92 uint32_t MaxIntraTarget(uint32_t optimal_buffer_size); 93 uint32_t MaxIntraTarget(uint32_t optimal_buffer_size);
93 94
94 EncodedImageCallback* encoded_complete_callback_; 95 EncodedImageCallback* encoded_complete_callback_;
95 VideoCodec codec_; 96 VideoCodec codec_;
97 std::unique_ptr<SimulcastRateAllocator> rate_allocator_;
96 bool inited_; 98 bool inited_;
97 int64_t timestamp_; 99 int64_t timestamp_;
98 bool feedback_mode_; 100 bool feedback_mode_;
99 int qp_max_; 101 int qp_max_;
100 int cpu_speed_default_; 102 int cpu_speed_default_;
101 uint32_t rc_max_intra_target_; 103 uint32_t rc_max_intra_target_;
102 int token_partitions_; 104 int token_partitions_;
103 ReferencePictureSelection rps_; 105 ReferencePictureSelection rps_;
104 std::vector<TemporalLayers*> temporal_layers_; 106 std::vector<TemporalLayers*> temporal_layers_;
105 bool down_scale_requested_; 107 bool down_scale_requested_;
106 uint32_t down_scale_bitrate_; 108 uint32_t down_scale_bitrate_;
107 FrameDropper tl0_frame_dropper_;
108 FrameDropper tl1_frame_dropper_;
109 std::vector<uint16_t> picture_id_; 109 std::vector<uint16_t> picture_id_;
110 std::vector<int> last_key_frame_picture_id_; 110 std::vector<int> last_key_frame_picture_id_;
111 std::vector<bool> key_frame_request_; 111 std::vector<bool> key_frame_request_;
112 std::vector<bool> send_stream_; 112 std::vector<bool> send_stream_;
113 std::vector<int> cpu_speed_; 113 std::vector<int> cpu_speed_;
114 std::vector<vpx_image_t> raw_images_; 114 std::vector<vpx_image_t> raw_images_;
115 std::vector<EncodedImage> encoded_images_; 115 std::vector<EncodedImage> encoded_images_;
116 std::vector<vpx_codec_ctx_t> encoders_; 116 std::vector<vpx_codec_ctx_t> encoders_;
117 std::vector<vpx_codec_enc_cfg_t> configurations_; 117 std::vector<vpx_codec_enc_cfg_t> configurations_;
118 std::vector<vpx_rational_t> downsampling_factors_; 118 std::vector<vpx_rational_t> downsampling_factors_;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 int image_format_; 161 int image_format_;
162 vpx_ref_frame_t* ref_frame_; 162 vpx_ref_frame_t* ref_frame_;
163 int propagation_cnt_; 163 int propagation_cnt_;
164 int last_frame_width_; 164 int last_frame_width_;
165 int last_frame_height_; 165 int last_frame_height_;
166 bool key_frame_required_; 166 bool key_frame_required_;
167 }; // end of VP8DecoderImpl class 167 }; // end of VP8DecoderImpl class
168 } // namespace webrtc 168 } // namespace webrtc
169 169
170 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_VP8_IMPL_H_ 170 #endif // WEBRTC_MODULES_VIDEO_CODING_CODECS_VP8_VP8_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698