Skip to content
This repository has been archived by the owner on Aug 25, 2021. It is now read-only.

Implement call quality estimation (#27) #132

Merged
merged 66 commits into from
Sep 1, 2020
Merged

Conversation

evdokimovs
Copy link
Contributor

@evdokimovs evdokimovs commented Aug 27, 2020

Part of #27

Synopsis

We need to measure call quality and provide information about current score to the JS side.

Solution

Quality score will be calculated based on Algorithm::MOS, which is derived from E-model, introduced in ITU-T G.107 with some simplifications and tweaks.

  • Store RTC stats within some period at the server and periodically calculate and send quality score to the Jason
  • Add Room.on_quality_score_update callback to the Jason into which call quality updates will be provided

Checklist

  • Created PR:
    • In draft mode
    • Name contains Draft: prefix
    • Name contains issue reference
    • Has k:: labels applied
    • Has assignee
  • Documentation is updated (if required)
  • Tests are updated (if required)
  • Changes conform code style
  • CHANGELOG entry is added (if required)
  • FCM (final commit message) is posted
    • and approved
  • Review is completed and changes are approved
  • Before merge:
    • Milestone is set
    • PR's name and description are correct and up-to-date
    • Draft: prefix is removed
    • All temporary labels are removed

alexlapa and others added 7 commits August 17, 2020 11:47
# Conflicts:
#	Cargo.lock
#	src/media/peer.rs
#	src/signalling/peers/mod.rs
#	src/signalling/room/command_handler.rs
#	src/signalling/room/peer_events_handler.rs
#	tests/e2e/signalling/track_disable.rs
@evdokimovs evdokimovs added feature New feature or request k::api Related to API (application interface) k::monitoring Related to monitoring capabilities labels Aug 27, 2020
@evdokimovs evdokimovs added this to the 0.2.0 milestone Aug 27, 2020
@evdokimovs evdokimovs self-assigned this Aug 27, 2020
@evdokimovs
Copy link
Contributor Author

evdokimovs commented Aug 27, 2020

FCM

Implement call quality estimation (#132, #27)

- calculate connection quality based on client RTC stats
- add 'ConnectionHandle.on_quality_score_update' callback to Jason

@evdokimovs evdokimovs changed the title Draft: Implement call quality measurement (#27) Implement call quality measurement (#27) Aug 27, 2020
@evdokimovs evdokimovs marked this pull request as ready for review August 27, 2020 13:41
@evdokimovs evdokimovs requested a review from alexlapa August 27, 2020 13:42
@alexlapa alexlapa changed the title Implement call quality measurement (#27) Implement call quality estimation (#27) Aug 31, 2020
@alexlapa alexlapa requested a review from tyranron August 31, 2020 15:51
@tyranron tyranron added the k::design Related to overall design and/or architecture label Sep 1, 2020
Copy link
Member

@tyranron tyranron left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that code quality somehow became worse.

@evdokimovs be more patient to the code/docs quality you're writing. Don't be lazy to make them consistent, rich and understantable even for beginners.

{
break (peer_id, was_flowing_at, media_type, direction);
} else {
continue;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if a == b { return true; } else { return false; }

///
/// Passes [`PeerMetrics::RtcStats`] to [`PeersService`] for further
/// analysis.
#[allow(clippy::single_match)]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not if let then?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tyranron ,

В будущем эта функция должна будет делать матч по всем вариантам, поэтому решил заранее это показать.

@evdokimovs evdokimovs merged commit d75eba1 into master Sep 1, 2020
@evdokimovs evdokimovs deleted the poor-connection-demo branch September 1, 2020 09:49
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
feature New feature or request k::api Related to API (application interface) k::design Related to overall design and/or architecture k::monitoring Related to monitoring capabilities
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants