| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2  *  Copyright (c) 2015 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 356 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 367   encoded_image_._frameType = ConvertToVideoFrameType(info.eFrameType); | 367   encoded_image_._frameType = ConvertToVideoFrameType(info.eFrameType); | 
| 368 | 368 | 
| 369   // Split encoded image up into fragments. This also updates |encoded_image_|. | 369   // Split encoded image up into fragments. This also updates |encoded_image_|. | 
| 370   RTPFragmentationHeader frag_header; | 370   RTPFragmentationHeader frag_header; | 
| 371   RtpFragmentize(&encoded_image_, &encoded_image_buffer_, *frame_buffer, &info, | 371   RtpFragmentize(&encoded_image_, &encoded_image_buffer_, *frame_buffer, &info, | 
| 372                  &frag_header); | 372                  &frag_header); | 
| 373 | 373 | 
| 374   // Encoder can skip frames to save bandwidth in which case | 374   // Encoder can skip frames to save bandwidth in which case | 
| 375   // |encoded_image_._length| == 0. | 375   // |encoded_image_._length| == 0. | 
| 376   if (encoded_image_._length > 0) { | 376   if (encoded_image_._length > 0) { | 
|  | 377     // Parse and report QP. | 
|  | 378     h264_bitstream_parser_.ParseBitstream(encoded_image_._buffer, | 
|  | 379                                           encoded_image_._length); | 
|  | 380     int qp = -1; | 
|  | 381     if (h264_bitstream_parser_.GetLastSliceQp(&qp)) { | 
|  | 382       quality_scaler_.ReportQP(qp); | 
|  | 383       encoded_image_.qp_ = qp; | 
|  | 384     } | 
|  | 385 | 
| 377     // Deliver encoded image. | 386     // Deliver encoded image. | 
| 378     CodecSpecificInfo codec_specific; | 387     CodecSpecificInfo codec_specific; | 
| 379     codec_specific.codecType = kVideoCodecH264; | 388     codec_specific.codecType = kVideoCodecH264; | 
| 380     encoded_image_callback_->OnEncodedImage(encoded_image_, &codec_specific, | 389     encoded_image_callback_->OnEncodedImage(encoded_image_, &codec_specific, | 
| 381                                             &frag_header); | 390                                             &frag_header); | 
| 382 |  | 
| 383     // Parse and report QP. |  | 
| 384     h264_bitstream_parser_.ParseBitstream(encoded_image_._buffer, |  | 
| 385                                           encoded_image_._length); |  | 
| 386     int qp = -1; |  | 
| 387     if (h264_bitstream_parser_.GetLastSliceQp(&qp)) |  | 
| 388       quality_scaler_.ReportQP(qp); |  | 
| 389   } else { | 391   } else { | 
| 390     quality_scaler_.ReportDroppedFrame(); | 392     quality_scaler_.ReportDroppedFrame(); | 
| 391   } | 393   } | 
| 392   return WEBRTC_VIDEO_CODEC_OK; | 394   return WEBRTC_VIDEO_CODEC_OK; | 
| 393 } | 395 } | 
| 394 | 396 | 
| 395 const char* H264EncoderImpl::ImplementationName() const { | 397 const char* H264EncoderImpl::ImplementationName() const { | 
| 396   return "OpenH264"; | 398   return "OpenH264"; | 
| 397 } | 399 } | 
| 398 | 400 | 
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 486 | 488 | 
| 487 int32_t H264EncoderImpl::SetPeriodicKeyFrames(bool enable) { | 489 int32_t H264EncoderImpl::SetPeriodicKeyFrames(bool enable) { | 
| 488   return WEBRTC_VIDEO_CODEC_OK; | 490   return WEBRTC_VIDEO_CODEC_OK; | 
| 489 } | 491 } | 
| 490 | 492 | 
| 491 void H264EncoderImpl::OnDroppedFrame() { | 493 void H264EncoderImpl::OnDroppedFrame() { | 
| 492   quality_scaler_.ReportDroppedFrame(); | 494   quality_scaler_.ReportDroppedFrame(); | 
| 493 } | 495 } | 
| 494 | 496 | 
| 495 }  // namespace webrtc | 497 }  // namespace webrtc | 
| OLD | NEW | 
|---|