Index: webrtc/modules/video_coding/generic_encoder.cc |
diff --git a/webrtc/modules/video_coding/generic_encoder.cc b/webrtc/modules/video_coding/generic_encoder.cc |
index c8180f35a29663267fcb7e41fcbc5f2595be010c..ae5284b9a54b4557a90625383680dfefc1469ae8 100644 |
--- a/webrtc/modules/video_coding/generic_encoder.cc |
+++ b/webrtc/modules/video_coding/generic_encoder.cc |
@@ -150,6 +150,12 @@ int32_t VCMGenericEncoder::Encode(const VideoFrame& inputFrame, |
vcm_encoded_frame_callback_->SetRotation(rotation_); |
int32_t result = encoder_->Encode(inputFrame, codecSpecificInfo, &frameTypes); |
+ |
+ if (vcm_encoded_frame_callback_) { |
+ vcm_encoded_frame_callback_->SignalLastEncoderImplementationUsed( |
+ encoder_->ImplementationName()); |
+ } |
+ |
if (is_screenshare_ && |
result == WEBRTC_VIDEO_CODEC_TARGET_BITRATE_OVERSHOOT) { |
// Target bitrate exceeded, encoder state has been reset - try again. |
@@ -224,7 +230,7 @@ int VCMGenericEncoder::GetTargetFramerate() { |
***************************/ |
VCMEncodedFrameCallback::VCMEncodedFrameCallback( |
EncodedImageCallback* post_encode_callback) |
- : _sendCallback(), |
+ : send_callback_(), |
_mediaOpt(NULL), |
_payloadType(0), |
_internalSource(false), |
@@ -250,27 +256,25 @@ VCMEncodedFrameCallback::~VCMEncodedFrameCallback() |
int32_t |
VCMEncodedFrameCallback::SetTransportCallback(VCMPacketizationCallback* transport) |
{ |
- _sendCallback = transport; |
+ send_callback_ = transport; |
return VCM_OK; |
} |
int32_t VCMEncodedFrameCallback::Encoded( |
- const EncodedImage& encodedImage, |
+ const EncodedImage& encoded_image, |
const CodecSpecificInfo* codecSpecificInfo, |
const RTPFragmentationHeader* fragmentationHeader) { |
TRACE_EVENT_INSTANT1("webrtc", "VCMEncodedFrameCallback::Encoded", |
- "timestamp", encodedImage._timeStamp); |
- RTC_DCHECK(encodedImage._frameType == kVideoFrameKey || |
- encodedImage._frameType == kVideoFrameDelta); |
- post_encode_callback_->Encoded(encodedImage, NULL, NULL); |
+ "timestamp", encoded_image._timeStamp); |
+ post_encode_callback_->Encoded(encoded_image, NULL, NULL); |
- if (_sendCallback == NULL) { |
+ if (send_callback_ == NULL) { |
return VCM_UNINITIALIZED; |
} |
#ifdef DEBUG_ENCODER_BIT_STREAM |
if (_bitStreamAfterEncoder != NULL) { |
- fwrite(encodedImage._buffer, 1, encodedImage._length, |
+ fwrite(encoded_image._buffer, 1, encoded_image._length, |
_bitStreamAfterEncoder); |
} |
#endif |
@@ -283,25 +287,29 @@ int32_t VCMEncodedFrameCallback::Encoded( |
} |
rtpVideoHeader.rotation = _rotation; |
- int32_t callbackReturn = _sendCallback->SendData( |
- _payloadType, encodedImage, *fragmentationHeader, rtpVideoHeaderPtr); |
+ int32_t callbackReturn = send_callback_->SendData( |
+ _payloadType, encoded_image, *fragmentationHeader, rtpVideoHeaderPtr); |
if (callbackReturn < 0) { |
return callbackReturn; |
} |
if (_mediaOpt != NULL) { |
- _mediaOpt->UpdateWithEncodedData(encodedImage); |
+ _mediaOpt->UpdateWithEncodedData(encoded_image); |
if (_internalSource) |
return _mediaOpt->DropFrame(); // Signal to encoder to drop next frame. |
} |
return VCM_OK; |
} |
-void |
-VCMEncodedFrameCallback::SetMediaOpt( |
- media_optimization::MediaOptimization *mediaOpt) |
-{ |
- _mediaOpt = mediaOpt; |
+void VCMEncodedFrameCallback::SetMediaOpt( |
+ media_optimization::MediaOptimization* mediaOpt) { |
+ _mediaOpt = mediaOpt; |
+} |
+ |
+void VCMEncodedFrameCallback::SignalLastEncoderImplementationUsed( |
+ const char* implementation_name) { |
+ if (send_callback_) |
+ send_callback_->OnEncoderImplementationName(implementation_name); |
} |
} // namespace webrtc |