From e6004b7729710ea60bdcce10e551508a5a855a1f Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Tue, 10 Jan 2017 22:54:53 +0100 Subject: [PATCH] MediaClient: Move WIP min/max functions into BMediaConnection --- headers/private/media/MediaClient.h | 14 -------------- headers/private/media/MediaConnection.h | 14 ++++++++++++++ src/kits/media/MediaClient.cpp | 20 -------------------- src/kits/media/MediaClientNode.cpp | 4 ++-- src/kits/media/MediaConnection.cpp | 24 +++++++++++++++++++++++- 5 files changed, 39 insertions(+), 37 deletions(-) diff --git a/headers/private/media/MediaClient.h b/headers/private/media/MediaClient.h index b5d04b5d4d..ce37b1a1f5 100755 --- a/headers/private/media/MediaClient.h +++ b/headers/private/media/MediaClient.h @@ -124,17 +124,6 @@ public: BMediaNode::run_mode RunMode() const; status_t SetRunMode(BMediaNode::run_mode mode); - // Specify a latency range to allow the node behave correctly. - // Ideally the minimum latency should be the algorithmic latency you expect - // from the node and will be used as starting point. The max latency is the - // maximum acceptable by you, over that point the node will adjust it's - // performance time to recover if a big delay happen. - void SetLatencyRange(bigtime_t min, - bigtime_t max); - - void GetLatencyRange(bigtime_t* min, - bigtime_t* max) const; - // Return the current performance time handled by the object when // run_mode != B_OFFLINE. Otherwise returns the current offline time. bigtime_t CurrentTime() const; @@ -191,9 +180,6 @@ private: bigtime_t fCurrentTime; - bigtime_t fMinLatency; - bigtime_t fMaxLatency; - BObjectList fInputs; BObjectList fOutputs; diff --git a/headers/private/media/MediaConnection.h b/headers/private/media/MediaConnection.h index cce9a24c1a..97694a15d3 100644 --- a/headers/private/media/MediaConnection.h +++ b/headers/private/media/MediaConnection.h @@ -72,6 +72,17 @@ protected: virtual void Connected(const media_format& format); virtual void Disconnected(); + // Specify a latency range to allow the connection behave correctly. + // Ideally the minimum latency should be the algorithmic latency you expect + // from the node and will be used as starting point. The max latency is the + // maximum acceptable by you, over that point the node will adjust it's + // performance time to recover if a big delay happen. + void SetLatencyRange(bigtime_t min, + bigtime_t max); + + void GetLatencyRange(bigtime_t* min, + bigtime_t* max) const; + private: void ConnectionRegistered(BMediaClient* owner, media_connection_id id); @@ -95,6 +106,9 @@ private: bool fConnected; + bigtime_t fMinLatency; + bigtime_t fMaxLatency; + virtual void _ReservedMediaConnection0(); virtual void _ReservedMediaConnection1(); virtual void _ReservedMediaConnection2(); diff --git a/src/kits/media/MediaClient.cpp b/src/kits/media/MediaClient.cpp index 4ad3a974b3..9d5e832012 100755 --- a/src/kits/media/MediaClient.cpp +++ b/src/kits/media/MediaClient.cpp @@ -379,26 +379,6 @@ BMediaClient::SetTimeSource(const media_client& timesource) } -void -BMediaClient::GetLatencyRange(bigtime_t* min, bigtime_t* max) const -{ - CALLED(); - - *min = fMinLatency; - *max = fMaxLatency; -} - - -void -BMediaClient::SetLatencyRange(bigtime_t min, bigtime_t max) -{ - CALLED(); - - fMinLatency = min; - fMaxLatency = max; -} - - bigtime_t BMediaClient::CurrentTime() const { diff --git a/src/kits/media/MediaClientNode.cpp b/src/kits/media/MediaClientNode.cpp index 15bd140313..563a9ace1a 100755 --- a/src/kits/media/MediaClientNode.cpp +++ b/src/kits/media/MediaClientNode.cpp @@ -213,7 +213,7 @@ BMediaClientNode::GetLatencyFor(const media_destination& dest, if (conn == NULL) return B_MEDIA_BAD_DESTINATION; - *latency = fOwner->fMaxLatency; + *latency = conn->fMaxLatency; *timesource = TimeSource()->ID(); return B_OK; } @@ -494,7 +494,7 @@ BMediaClientNode::GetLatency(bigtime_t* outLatency) CALLED(); // TODO: finish latency handling - *outLatency = fOwner->fMinLatency; + *outLatency = 0; return B_OK; } diff --git a/src/kits/media/MediaConnection.cpp b/src/kits/media/MediaConnection.cpp index e40277fdad..f9c8ea8a4f 100644 --- a/src/kits/media/MediaConnection.cpp +++ b/src/kits/media/MediaConnection.cpp @@ -12,7 +12,9 @@ BMediaConnection::BMediaConnection(media_connection_kinds kinds) : fOwner(NULL), fBind(NULL), - fBufferGroup(NULL) + fBufferGroup(NULL), + fMinLatency(0), + fMaxLatency(0) { CALLED(); @@ -136,6 +138,26 @@ BMediaConnection::Disconnected() } +void +BMediaConnection::GetLatencyRange(bigtime_t* min, bigtime_t* max) const +{ + CALLED(); + + *min = fMinLatency; + *max = fMaxLatency; +} + + +void +BMediaConnection::SetLatencyRange(bigtime_t min, bigtime_t max) +{ + CALLED(); + + fMinLatency = min; + fMaxLatency = max; +} + + void BMediaConnection::ConnectionRegistered(BMediaClient* owner, media_connection_id id)