(Auto)update libjingle 76169599-> 76176062

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7280 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
buildbot@webrtc.org
2014-09-23 17:41:48 +00:00
parent 94ff92ceec
commit 1b7dcc1647
2 changed files with 35 additions and 15 deletions

View File

@ -1775,6 +1775,35 @@ bool WebRtcVideoMediaChannel::SetSendCodecs(
return true;
}
bool WebRtcVideoMediaChannel::MaybeRegisterExternalEncoder(
WebRtcVideoChannelSendInfo* send_channel,
const webrtc::VideoCodec& codec) {
// Codec type not supported or encoder already registered, so
// nothing to do.
if (!engine()->IsExternalEncoderCodecType(codec.codecType)
|| send_channel->IsEncoderRegistered(codec.plType)) {
return true;
}
webrtc::VideoEncoder* encoder =
engine()->CreateExternalEncoder(codec.codecType);
if (!encoder) {
// No encoder factor, so nothing to do.
return true;
}
const int channel_id = send_channel->channel_id();
if (engine()->vie()->ext_codec()->RegisterExternalSendCodec(
channel_id, codec.plType, encoder, false) != 0) {
LOG_RTCERR2(RegisterExternalSendCodec, channel_id, codec.plName);
engine()->DestroyExternalEncoder(encoder);
return false;
}
send_channel->RegisterEncoder(codec.plType, encoder);
return true;
}
bool WebRtcVideoMediaChannel::GetSendCodec(VideoCodec* send_codec) {
if (!send_codec_) {
return false;
@ -3633,21 +3662,7 @@ bool WebRtcVideoMediaChannel::SetSendCodec(
target_codec.codecSpecific.VP8.denoisingOn = enable_denoising;
}
// Register external encoder if codec type is supported by encoder factory.
if (engine()->IsExternalEncoderCodecType(codec.codecType) &&
!send_channel->IsEncoderRegistered(target_codec.plType)) {
webrtc::VideoEncoder* encoder =
engine()->CreateExternalEncoder(codec.codecType);
if (encoder) {
if (engine()->vie()->ext_codec()->RegisterExternalSendCodec(
channel_id, target_codec.plType, encoder, false) == 0) {
send_channel->RegisterEncoder(target_codec.plType, encoder);
} else {
LOG_RTCERR2(RegisterExternalSendCodec, channel_id, target_codec.plName);
engine()->DestroyExternalEncoder(encoder);
}
}
}
MaybeRegisterExternalEncoder(send_channel, target_codec);
// Resolution and framerate may vary for different send channels.
const VideoFormat& video_format = send_channel->video_format();

View File

@ -359,6 +359,11 @@ class WebRtcVideoMediaChannel : public rtc::MessageHandler,
// Returns the channel ID that receives the stream with SSRC |ssrc|.
int GetRecvChannelId(uint32 ssrc);
bool MaybeSetRtxSsrc(const StreamParams& sp, int channel_id);
// Create and register an external endcoder if it's possible to do
// so and one isn't already registered.
bool MaybeRegisterExternalEncoder(
WebRtcVideoChannelSendInfo* send_channel,
const webrtc::VideoCodec& codec);
// Given captured video frame size, checks if we need to reset vie send codec.
// |reset| is set to whether resetting has happened on vie or not.
// Returns false on error.