| Index: content/renderer/media/media_stream_video_source.cc
|
| diff --git a/content/renderer/media/media_stream_video_source.cc b/content/renderer/media/media_stream_video_source.cc
|
| index 6855adef140df2741e1e20096f92b6a480b4a379..c8e0c0c47244a6f35784d3490a9170751e0d867e 100644
|
| --- a/content/renderer/media/media_stream_video_source.cc
|
| +++ b/content/renderer/media/media_stream_video_source.cc
|
| @@ -12,8 +12,10 @@
|
| #include "base/logging.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "content/child/child_process.h"
|
| +#include "content/renderer/render_thread_impl.h"
|
| #include "content/renderer/media/media_stream_constraints_util.h"
|
| #include "content/renderer/media/media_stream_video_track.h"
|
| +#include "content/renderer/media/peer_connection_tracker.h"
|
| #include "content/renderer/media/video_track_adapter.h"
|
|
|
| namespace content {
|
| @@ -458,7 +460,6 @@ void MediaStreamVideoSource::DoStopSource() {
|
| DVLOG(3) << "DoStopSource()";
|
| if (state_ == ENDED)
|
| return;
|
| - track_adapter_->StopFrameMonitoring();
|
| StopSourceImpl();
|
| state_ = ENDED;
|
| SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded);
|
| @@ -529,7 +530,7 @@ void MediaStreamVideoSource::OnStartDone(MediaStreamRequestResult result) {
|
|
|
| track_adapter_->StartFrameMonitoring(
|
| current_format_.frame_rate,
|
| - base::Bind(&MediaStreamVideoSource::SetMutedState,
|
| + base::Bind(&MediaStreamVideoSource::OnFrameRateCallback,
|
| weak_factory_.GetWeakPtr()));
|
|
|
| } else {
|
| @@ -541,6 +542,10 @@ void MediaStreamVideoSource::OnStartDone(MediaStreamRequestResult result) {
|
| FinalizeAddTrack();
|
| }
|
|
|
| +std::string MediaStreamVideoSource::TypeName() const {
|
| + return "";
|
| +}
|
| +
|
| void MediaStreamVideoSource::FinalizeAddTrack() {
|
| DCHECK(CalledOnValidThread());
|
| media::VideoCaptureFormats formats;
|
| @@ -600,13 +605,28 @@ void MediaStreamVideoSource::SetReadyState(
|
| }
|
| }
|
|
|
| -void MediaStreamVideoSource::SetMutedState(bool muted_state) {
|
| - DVLOG(3) << "MediaStreamVideoSource::SetMutedState state=" << muted_state;
|
| +void MediaStreamVideoSource::OnFrameRateCallback(float framerate,
|
| + int dropped_frames) {
|
| DCHECK(CalledOnValidThread());
|
| - if (!owner().isNull()) {
|
| - owner().setReadyState(muted_state
|
| - ? blink::WebMediaStreamSource::ReadyStateMuted
|
| - : blink::WebMediaStreamSource::ReadyStateLive);
|
| + if (owner().isNull())
|
| + return;
|
| + if(owner().readyState() == blink::WebMediaStreamSource::ReadyStateEnded) {
|
| + track_adapter_->StopFrameMonitoring();
|
| + return;
|
| + }
|
| +
|
| + owner().setReadyState(framerate == 0
|
| + ? blink::WebMediaStreamSource::ReadyStateMuted
|
| + : blink::WebMediaStreamSource::ReadyStateLive);
|
| + const std::string id = TypeName() + " " + owner().name().utf8();
|
| + DVLOG(3) << "MediaStreamVideoSource::OnFrameRateCallback "
|
| + << id << " framerate="
|
| + << framerate << " dropped_frames=" << dropped_frames
|
| + << " readyState "<< owner().readyState();
|
| + if (RenderThreadImpl::current()) {
|
| + const std::string id = TypeName() + " " + owner().name().utf8();
|
| + RenderThreadImpl::current()->peer_connection_tracker()->TrackAddVideoStats(
|
| + id, framerate, dropped_frames);
|
| }
|
| }
|
|
|
|
|