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

Side by Side Diff: webrtc/modules/video_coding/qm_select_data.h

Issue 1917323002: Remove remaining quality-analysis (QM). (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: rebase Created 4 years, 7 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
(Empty)
1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_MODULES_VIDEO_CODING_QM_SELECT_DATA_H_
12 #define WEBRTC_MODULES_VIDEO_CODING_QM_SELECT_DATA_H_
13
14 /***************************************************************
15 *QMSelectData.h
16 * This file includes parameters for content-aware media optimization
17 ****************************************************************/
18
19 #include "webrtc/typedefs.h"
20
21 namespace webrtc {
22 //
23 // PARAMETERS FOR RESOLUTION ADAPTATION
24 //
25
26 // Initial level of buffer in secs.
27 const float kInitBufferLevel = 0.5f;
28
29 // Threshold of (max) buffer size below which we consider too low (underflow).
30 const float kPercBufferThr = 0.10f;
31
32 // Threshold on the occurrences of low buffer levels.
33 const float kMaxBufferLow = 0.30f;
34
35 // Threshold on rate mismatch.
36 const float kMaxRateMisMatch = 0.5f;
37
38 // Threshold on amount of under/over encoder shooting.
39 const float kRateOverShoot = 0.75f;
40 const float kRateUnderShoot = 0.75f;
41
42 // Factor to favor weighting the average rates with the current/last data.
43 const float kWeightRate = 0.70f;
44
45 // Factor for transitional rate for going back up in resolution.
46 const float kTransRateScaleUpSpatial = 1.25f;
47 const float kTransRateScaleUpTemp = 1.25f;
48 const float kTransRateScaleUpSpatialTemp = 1.25f;
49
50 // Threshold on packet loss rate, above which favor resolution reduction.
51 const float kPacketLossThr = 0.1f;
52
53 // Factor for reducing transitional bitrate under packet loss.
54 const float kPacketLossRateFac = 1.0f;
55
56 // Maximum possible transitional rate for down-sampling:
57 // (units in kbps), for 30fps.
58 const uint16_t kMaxRateQm[9] = {
59 0, // QCIF
60 50, // kHCIF
61 125, // kQVGA
62 200, // CIF
63 280, // HVGA
64 400, // VGA
65 700, // QFULLHD
66 1000, // WHD
67 1500 // FULLHD
68 };
69
70 // Frame rate scale for maximum transition rate.
71 const float kFrameRateFac[4] = {
72 0.5f, // Low
73 0.7f, // Middle level 1
74 0.85f, // Middle level 2
75 1.0f, // High
76 };
77
78 // Scale for transitional rate: based on content class
79 // motion=L/H/D,spatial==L/H/D: for low, high, middle levels
80 const float kScaleTransRateQm[18] = {
81 // VGA and lower
82 0.40f, // L, L
83 0.50f, // L, H
84 0.40f, // L, D
85 0.60f, // H ,L
86 0.60f, // H, H
87 0.60f, // H, D
88 0.50f, // D, L
89 0.50f, // D, D
90 0.50f, // D, H
91
92 // over VGA
93 0.40f, // L, L
94 0.50f, // L, H
95 0.40f, // L, D
96 0.60f, // H ,L
97 0.60f, // H, H
98 0.60f, // H, D
99 0.50f, // D, L
100 0.50f, // D, D
101 0.50f, // D, H
102 };
103
104 // Threshold on the target rate relative to transitional rate.
105 const float kFacLowRate = 0.5f;
106
107 // Action for down-sampling:
108 // motion=L/H/D,spatial==L/H/D, for low, high, middle levels;
109 // rate = 0/1/2, for target rate state relative to transition rate.
110 const uint8_t kSpatialAction[27] = {
111 // rateClass = 0:
112 1, // L, L
113 1, // L, H
114 1, // L, D
115 4, // H ,L
116 1, // H, H
117 4, // H, D
118 4, // D, L
119 1, // D, H
120 2, // D, D
121
122 // rateClass = 1:
123 1, // L, L
124 1, // L, H
125 1, // L, D
126 2, // H ,L
127 1, // H, H
128 2, // H, D
129 2, // D, L
130 1, // D, H
131 2, // D, D
132
133 // rateClass = 2:
134 1, // L, L
135 1, // L, H
136 1, // L, D
137 2, // H ,L
138 1, // H, H
139 2, // H, D
140 2, // D, L
141 1, // D, H
142 2, // D, D
143 };
144
145 const uint8_t kTemporalAction[27] = {
146 // rateClass = 0:
147 3, // L, L
148 2, // L, H
149 2, // L, D
150 1, // H ,L
151 3, // H, H
152 1, // H, D
153 1, // D, L
154 2, // D, H
155 1, // D, D
156
157 // rateClass = 1:
158 3, // L, L
159 3, // L, H
160 3, // L, D
161 1, // H ,L
162 3, // H, H
163 1, // H, D
164 1, // D, L
165 3, // D, H
166 1, // D, D
167
168 // rateClass = 2:
169 1, // L, L
170 3, // L, H
171 3, // L, D
172 1, // H ,L
173 3, // H, H
174 1, // H, D
175 1, // D, L
176 3, // D, H
177 1, // D, D
178 };
179
180 // Control the total amount of down-sampling allowed.
181 const float kMaxSpatialDown = 8.0f;
182 const float kMaxTempDown = 3.0f;
183 const float kMaxTotalDown = 9.0f;
184
185 // Minimum image size for a spatial down-sampling.
186 const int kMinImageSize = 176 * 144;
187
188 // Minimum frame rate for temporal down-sampling:
189 // no frame rate reduction if incomingFrameRate <= MIN_FRAME_RATE.
190 const int kMinFrameRate = 8;
191
192 //
193 // PARAMETERS FOR FEC ADJUSTMENT: TODO (marpan)
194 //
195
196 //
197 // PARAMETETS FOR SETTING LOW/HIGH STATES OF CONTENT METRICS:
198 //
199
200 // Thresholds for frame rate:
201 const int kLowFrameRate = 10;
202 const int kMiddleFrameRate = 15;
203 const int kHighFrameRate = 25;
204
205 // Thresholds for motion: motion level is from NFD.
206 const float kHighMotionNfd = 0.075f;
207 const float kLowMotionNfd = 0.03f;
208
209 // Thresholds for spatial prediction error:
210 // this is applied on the average of (2x2,1x2,2x1).
211 const float kHighTexture = 0.035f;
212 const float kLowTexture = 0.020f;
213
214 // Used to reduce thresholds for larger/HD scenes: correction factor since
215 // higher correlation in HD scenes means lower spatial prediction error.
216 const float kScaleTexture = 0.9f;
217
218 // Percentage reduction in transitional bitrate for 2x2 selected over 1x2/2x1.
219 const float kRateRedSpatial2X2 = 0.6f;
220
221 const float kSpatialErr2x2VsHoriz = 0.1f; // percentage to favor 2x2 over H
222 const float kSpatialErr2X2VsVert = 0.1f; // percentage to favor 2x2 over V
223 const float kSpatialErrVertVsHoriz = 0.1f; // percentage to favor H over V
224
225 } // namespace webrtc
226
227 #endif // WEBRTC_MODULES_VIDEO_CODING_QM_SELECT_DATA_H_
OLDNEW
« no previous file with comments | « webrtc/modules/video_coding/qm_select.cc ('k') | webrtc/modules/video_coding/qm_select_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698