Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Unified Diff: content/renderer/media/video_track_adapter.h

Issue 366243003: VideoTrackAdapter: Add passing frames monitor, notify MSVCS -> MSVTrack(s) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: grunell@ comments and added a UT with 1 source muted pinging two tracks. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/video_track_adapter.h
diff --git a/content/renderer/media/video_track_adapter.h b/content/renderer/media/video_track_adapter.h
index 0df314d279933fcd6bccb8623a051f845dec71b1..c26ca142981f7335469c4af6d2240d3279495208 100644
--- a/content/renderer/media/video_track_adapter.h
+++ b/content/renderer/media/video_track_adapter.h
@@ -27,6 +27,8 @@ namespace content {
class VideoTrackAdapter
: public base::RefCountedThreadSafe<VideoTrackAdapter> {
public:
+ typedef base::Callback<void(bool mute_state)> OnMutedCallback;
+
explicit VideoTrackAdapter(
const scoped_refptr<base::MessageLoopProxy>& io_message_loop);
@@ -34,12 +36,16 @@ class VideoTrackAdapter
// a resolution within the boundaries of the arguments.
// Must be called on the main render thread. |frame_callback| is guaranteed to
// be released on the main render thread.
+ // |source_frame_rate| is used to calculate a prudent interval to check for
+ // passing frames and inform of the result via |on_muted_state_callback|.
void AddTrack(const MediaStreamVideoTrack* track,
VideoCaptureDeliverFrameCB frame_callback,
int max_width, int max_height,
double min_aspect_ratio,
double max_aspect_ratio,
- double max_frame_rate);
+ double max_frame_rate,
+ double source_frame_rate,
+ const OnMutedCallback& on_muted_state_callback);
void RemoveTrack(const MediaStreamVideoTrack* track);
// Delivers |frame| to all tracks that have registered a callback.
@@ -67,6 +73,15 @@ class VideoTrackAdapter
double max_frame_rate);
void RemoveTrackOnIO(const MediaStreamVideoTrack* track);
+ void StartTrackMonitoringOnIO(
+ const OnMutedCallback& on_muted_state_callback,
+ double source_frame_rate);
+
+ // Compare |frame_counter_snapshot| with the current |frame_counter_|, and
+ // inform of the situation (muted, not muted) via |set_muted_state_callback|.
+ void CheckFramesReceivedOnIO(const OnMutedCallback& set_muted_state_callback,
+ uint64 old_frame_counter_snapshot);
+
// |thread_checker_| is bound to the main render thread.
base::ThreadChecker thread_checker_;
@@ -84,6 +99,12 @@ class VideoTrackAdapter
FrameAdapters;
FrameAdapters adapters_;
+ // Running frame counter, accessed on the IO-thread.
+ uint64 frame_counter_;
+
+ // Frame rate configured on the video source, accessed on the IO-thread.
+ float source_frame_rate_;
+
DISALLOW_COPY_AND_ASSIGN(VideoTrackAdapter);
};

Powered by Google App Engine
This is Rietveld 408576698