OLD | NEW |
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 | 10 |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
225 size_t VideoProcessorImpl::EncodedFrameSize(int frame_number) { | 225 size_t VideoProcessorImpl::EncodedFrameSize(int frame_number) { |
226 RTC_DCHECK_LT(frame_number, frame_infos_.size()); | 226 RTC_DCHECK_LT(frame_number, frame_infos_.size()); |
227 return frame_infos_[frame_number].encoded_frame_size; | 227 return frame_infos_[frame_number].encoded_frame_size; |
228 } | 228 } |
229 | 229 |
230 FrameType VideoProcessorImpl::EncodedFrameType(int frame_number) { | 230 FrameType VideoProcessorImpl::EncodedFrameType(int frame_number) { |
231 RTC_DCHECK_LT(frame_number, frame_infos_.size()); | 231 RTC_DCHECK_LT(frame_number, frame_infos_.size()); |
232 return frame_infos_[frame_number].encoded_frame_type; | 232 return frame_infos_[frame_number].encoded_frame_type; |
233 } | 233 } |
234 | 234 |
| 235 int VideoProcessorImpl::GetQpFromEncoder(int frame_number) { |
| 236 RTC_DCHECK_LT(frame_number, frame_infos_.size()); |
| 237 return frame_infos_[frame_number].qp_encoder; |
| 238 } |
| 239 |
| 240 int VideoProcessorImpl::GetQpFromBitstream(int frame_number) { |
| 241 RTC_DCHECK_LT(frame_number, frame_infos_.size()); |
| 242 return frame_infos_[frame_number].qp_bitstream; |
| 243 } |
| 244 |
235 int VideoProcessorImpl::NumberDroppedFrames() { | 245 int VideoProcessorImpl::NumberDroppedFrames() { |
236 return num_dropped_frames_; | 246 return num_dropped_frames_; |
237 } | 247 } |
238 | 248 |
239 int VideoProcessorImpl::NumberSpatialResizes() { | 249 int VideoProcessorImpl::NumberSpatialResizes() { |
240 return num_spatial_resizes_; | 250 return num_spatial_resizes_; |
241 } | 251 } |
242 | 252 |
243 bool VideoProcessorImpl::ProcessFrame(int frame_number) { | 253 bool VideoProcessorImpl::ProcessFrame(int frame_number) { |
244 RTC_DCHECK_GE(frame_number, 0); | 254 RTC_DCHECK_GE(frame_number, 0); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 } | 350 } |
341 // Ensure strict monotonicity. | 351 // Ensure strict monotonicity. |
342 RTC_CHECK_GT(frame_number, last_encoded_frame_num_); | 352 RTC_CHECK_GT(frame_number, last_encoded_frame_num_); |
343 last_encoded_frame_num_ = frame_number; | 353 last_encoded_frame_num_ = frame_number; |
344 | 354 |
345 // Frame is not dropped, so update frame information and statistics. | 355 // Frame is not dropped, so update frame information and statistics. |
346 RTC_DCHECK_LT(frame_number, frame_infos_.size()); | 356 RTC_DCHECK_LT(frame_number, frame_infos_.size()); |
347 FrameInfo* frame_info = &frame_infos_[frame_number]; | 357 FrameInfo* frame_info = &frame_infos_[frame_number]; |
348 frame_info->encoded_frame_size = encoded_image._length; | 358 frame_info->encoded_frame_size = encoded_image._length; |
349 frame_info->encoded_frame_type = encoded_image._frameType; | 359 frame_info->encoded_frame_type = encoded_image._frameType; |
| 360 frame_info->qp_encoder = encoded_image.qp_; |
| 361 if (codec == kVideoCodecVP8) { |
| 362 vp8::GetQp(encoded_image._buffer, encoded_image._length, |
| 363 &frame_info->qp_bitstream); |
| 364 } else if (codec == kVideoCodecVP9) { |
| 365 vp9::GetQp(encoded_image._buffer, encoded_image._length, |
| 366 &frame_info->qp_bitstream); |
| 367 } |
350 FrameStatistic* frame_stat = &stats_->stats_[frame_number]; | 368 FrameStatistic* frame_stat = &stats_->stats_[frame_number]; |
351 frame_stat->encode_time_in_us = | 369 frame_stat->encode_time_in_us = |
352 GetElapsedTimeMicroseconds(frame_info->encode_start_ns, encode_stop_ns); | 370 GetElapsedTimeMicroseconds(frame_info->encode_start_ns, encode_stop_ns); |
353 frame_stat->encoding_successful = true; | 371 frame_stat->encoding_successful = true; |
354 frame_stat->encoded_frame_length_in_bytes = encoded_image._length; | 372 frame_stat->encoded_frame_length_in_bytes = encoded_image._length; |
355 frame_stat->frame_number = frame_number; | 373 frame_stat->frame_number = frame_number; |
356 frame_stat->frame_type = encoded_image._frameType; | 374 frame_stat->frame_type = encoded_image._frameType; |
357 frame_stat->qp = encoded_image.qp_; | 375 frame_stat->qp = encoded_image.qp_; |
358 frame_stat->bit_rate_in_kbps = encoded_image._length * bit_rate_factor_; | 376 frame_stat->bit_rate_in_kbps = encoded_image._length * bit_rate_factor_; |
359 frame_stat->total_packets = | 377 frame_stat->total_packets = |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 if (decoded_frame_writer_) { | 515 if (decoded_frame_writer_) { |
498 RTC_DCHECK_EQ(extracted_length, decoded_frame_writer_->FrameLength()); | 516 RTC_DCHECK_EQ(extracted_length, decoded_frame_writer_->FrameLength()); |
499 RTC_CHECK(decoded_frame_writer_->WriteFrame(extracted_buffer.data())); | 517 RTC_CHECK(decoded_frame_writer_->WriteFrame(extracted_buffer.data())); |
500 } | 518 } |
501 | 519 |
502 last_decoded_frame_buffer_ = std::move(extracted_buffer); | 520 last_decoded_frame_buffer_ = std::move(extracted_buffer); |
503 } | 521 } |
504 | 522 |
505 } // namespace test | 523 } // namespace test |
506 } // namespace webrtc | 524 } // namespace webrtc |
OLD | NEW |