| Index: talk/session/media/channel.cc
|
| diff --git a/talk/session/media/channel.cc b/talk/session/media/channel.cc
|
| index 588a03661cf1e84e8d3d75e8cd058abd273c3e73..2358969801f2f57abd22be9ed69856740a874b83 100644
|
| --- a/talk/session/media/channel.cc
|
| +++ b/talk/session/media/channel.cc
|
| @@ -40,9 +40,18 @@
|
| #include "webrtc/p2p/base/transportchannel.h"
|
|
|
| namespace cricket {
|
| -
|
| using rtc::Bind;
|
|
|
| +namespace {
|
| +// See comment below for why we need to use a pointer to a scoped_ptr.
|
| +bool SetRawAudioSink_w(VoiceMediaChannel* channel,
|
| + uint32_t ssrc,
|
| + rtc::scoped_ptr<webrtc::AudioSinkInterface>* sink) {
|
| + channel->SetRawAudioSink(ssrc, std::move(*sink));
|
| + return true;
|
| +}
|
| +} // namespace
|
| +
|
| enum {
|
| MSG_EARLYMEDIATIMEOUT = 1,
|
| MSG_SCREENCASTWINDOWEVENT,
|
| @@ -1376,6 +1385,15 @@ bool VoiceChannel::SetOutputVolume(uint32_t ssrc, double volume) {
|
| media_channel(), ssrc, volume));
|
| }
|
|
|
| +void VoiceChannel::SetRawAudioSink(
|
| + uint32_t ssrc,
|
| + rtc::scoped_ptr<webrtc::AudioSinkInterface> sink) {
|
| + // We need to work around Bind's lack of support for scoped_ptr and ownership
|
| + // passing. So we invoke to our own little routine that gets a pointer to
|
| + // our local variable. This is OK since we're synchronously invoking.
|
| + InvokeOnWorker(Bind(&SetRawAudioSink_w, media_channel(), ssrc, &sink));
|
| +}
|
| +
|
| bool VoiceChannel::GetStats(VoiceMediaInfo* stats) {
|
| return InvokeOnWorker(Bind(&VoiceMediaChannel::GetStats,
|
| media_channel(), stats));
|
|
|