Pass the encoder's internal source property through to video_sender to request a keyframe from the external encoder

BUG=

Review URL: https://codereview.webrtc.org/1263663005

Cr-Commit-Position: refs/heads/master@{#9853}
This commit is contained in:
sophiechang 2015-09-03 18:24:44 -07:00 committed by Commit bot
parent dfbe679ded
commit 47d78cc8ad
3 changed files with 11 additions and 2 deletions

View File

@ -2025,6 +2025,11 @@ void WebRtcVideoChannel2::WebRtcVideoSendStream::SetCodecAndOptions(
parameters_.config.encoder_settings.encoder = new_encoder.encoder;
parameters_.config.encoder_settings.payload_name = codec_settings.codec.name;
parameters_.config.encoder_settings.payload_type = codec_settings.codec.id;
if (new_encoder.external) {
webrtc::VideoCodecType type = CodecTypeFromName(codec_settings.codec.name);
parameters_.config.encoder_settings.internal_source =
external_encoder_factory_->EncoderTypeHasInternalSource(type);
}
parameters_.config.rtp.fec = codec_settings.fec;
// Set RTX payload type if RTX is enabled.

View File

@ -171,10 +171,10 @@ VideoSendStream::VideoSendStream(
DCHECK(config.encoder_settings.encoder != nullptr);
DCHECK_GE(config.encoder_settings.payload_type, 0);
DCHECK_LE(config.encoder_settings.payload_type, 127);
// TODO(pbos): Wire up codec internal-source setting or remove setting.
CHECK_EQ(0, vie_encoder_->RegisterExternalEncoder(
config.encoder_settings.encoder,
config.encoder_settings.payload_type, false));
config.encoder_settings.payload_type,
config.encoder_settings.internal_source));
CHECK(ReconfigureVideoEncoder(encoder_config));

View File

@ -77,6 +77,10 @@ class VideoSendStream : public SendStream {
std::string payload_name;
int payload_type = -1;
// TODO(sophiechang): Delete this field when no one is using internal
// sources anymore.
bool internal_source = false;
// Uninitialized VideoEncoder instance to be used for encoding. Will be
// initialized from inside the VideoSendStream.
VideoEncoder* encoder = nullptr;