Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add full simulcast support to recordings #1127

Merged
merged 5 commits into from
Jan 22, 2018

Conversation

jcague
Copy link
Contributor

@jcague jcague commented Jan 15, 2018

Description

It adds a new worker + pipeline to ExternalOutput, so that we can handle simulcast layers and filter them. Now we record the higher available layer, but we might want to create an API in the future to record the lower or any intermediate layers instead.

[] It needs and includes Unit Tests

Changes in Client or Server public APIs

Not needed.

[] It includes documentation for these changes in /doc.

@jcague jcague changed the title [Do not merge] Add full simulcast support to recordings Add full simulcast support to recordings Jan 22, 2018
Copy link
Contributor

@lodoyun lodoyun left a comment

Choose a reason for hiding this comment

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

LGTM! Just a couple of minor comments and a possible problem when closing ExternalOutput

@@ -22,6 +23,9 @@ class AsyncCloser : public Nan::AsyncWorker {
~AsyncCloser() {}
void Execute() {
external_output_->close();
while (external_output_->isRecording()) {
Copy link
Contributor

Choose a reason for hiding this comment

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

isRecording being false does not imply the ExternalOutput has finished closing. Consider moving the switch of recording_ to false at the end of syncClose

Copy link
Contributor Author

Choose a reason for hiding this comment

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

good catch!

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2016, Facebook, Inc.
Copy link
Contributor

Choose a reason for hiding this comment

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

Correct me if I'm wrong, but didn't you come up with this class? We don't need to put the license here in that case

Copy link
Contributor Author

Choose a reason for hiding this comment

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

you got it

@@ -93,7 +109,7 @@ class ExternalOutput : public MediaSink, public RawDataReceiver, public Feedback
// Note: VP8 purportedly has two packetization schemes; per-frame and per-partition. A frame is
// composed of one or more partitions. However, we don't seem to be sent anything but partition 0
// so the second scheme seems not applicable. Too bad.
vp8SearchState video_search_state_;
// vp8SearchState video_search_state_;
Copy link
Contributor

Choose a reason for hiding this comment

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

Consider just removing this. It's a leftover from a previous PR.

@jcague jcague merged commit bc4e67c into lynckia:master Jan 22, 2018
@jcague jcague deleted the add/pipeline_to_external_output branch January 22, 2018 16:57
Arri98 pushed a commit to Arri98/licode that referenced this pull request Apr 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants