mediasoup 3.9.13 → 3.9.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node/lib/ActiveSpeakerObserver.d.ts +1 -1
- package/node/lib/ActiveSpeakerObserver.d.ts.map +1 -1
- package/node/lib/AudioLevelObserver.d.ts +1 -1
- package/node/lib/AudioLevelObserver.d.ts.map +1 -1
- package/node/lib/Consumer.d.ts +4 -4
- package/node/lib/Consumer.d.ts.map +1 -1
- package/node/lib/Consumer.js +1 -1
- package/node/lib/DataConsumer.d.ts +4 -4
- package/node/lib/DataConsumer.d.ts.map +1 -1
- package/node/lib/DataConsumer.js +1 -1
- package/node/lib/DataProducer.d.ts +4 -4
- package/node/lib/DataProducer.d.ts.map +1 -1
- package/node/lib/DataProducer.js +1 -1
- package/node/lib/DirectTransport.d.ts +1 -1
- package/node/lib/DirectTransport.d.ts.map +1 -1
- package/node/lib/PipeTransport.d.ts +2 -2
- package/node/lib/PipeTransport.d.ts.map +1 -1
- package/node/lib/PipeTransport.js +1 -1
- package/node/lib/PlainTransport.d.ts +1 -1
- package/node/lib/PlainTransport.d.ts.map +1 -1
- package/node/lib/Producer.d.ts +4 -4
- package/node/lib/Producer.d.ts.map +1 -1
- package/node/lib/Producer.js +1 -1
- package/node/lib/Router.d.ts +4 -4
- package/node/lib/Router.d.ts.map +1 -1
- package/node/lib/Router.js +7 -7
- package/node/lib/RtpObserver.d.ts +3 -3
- package/node/lib/RtpObserver.d.ts.map +1 -1
- package/node/lib/RtpObserver.js +1 -1
- package/node/lib/Transport.d.ts +3 -3
- package/node/lib/Transport.d.ts.map +1 -1
- package/node/lib/Transport.js +5 -5
- package/node/lib/WebRtcTransport.d.ts +1 -1
- package/node/lib/WebRtcTransport.d.ts.map +1 -1
- package/node/lib/Worker.d.ts +3 -3
- package/node/lib/Worker.d.ts.map +1 -1
- package/node/lib/Worker.js +3 -3
- package/node/lib/index.d.ts +1 -1
- package/node/lib/index.d.ts.map +1 -1
- package/node/lib/index.js +2 -2
- package/node/lib/ortc.js +1 -0
- package/node/lib/supportedRtpCapabilities.d.ts.map +1 -1
- package/node/lib/supportedRtpCapabilities.js +15 -0
- package/package.json +6 -6
- package/worker/include/RTC/Codecs/H264_SVC.hpp +115 -0
- package/worker/include/RTC/Codecs/Tools.hpp +11 -0
- package/worker/include/RTC/Consumer.hpp +5 -4
- package/worker/include/RTC/DirectTransport.hpp +4 -0
- package/worker/include/RTC/NackGenerator.hpp +5 -2
- package/worker/include/RTC/PipeConsumer.hpp +1 -0
- package/worker/include/RTC/RTCP/CompoundPacket.hpp +2 -0
- package/worker/include/RTC/RtpDictionaries.hpp +1 -0
- package/worker/include/RTC/RtpStream.hpp +2 -0
- package/worker/include/RTC/RtpStreamRecv.hpp +7 -1
- package/worker/include/RTC/RtpStreamSend.hpp +7 -0
- package/worker/include/RTC/SimpleConsumer.hpp +1 -0
- package/worker/include/RTC/SimulcastConsumer.hpp +4 -0
- package/worker/include/RTC/SvcConsumer.hpp +1 -0
- package/worker/meson.build +4 -0
- package/worker/src/RTC/Codecs/H264_SVC.cpp +428 -0
- package/worker/src/RTC/DirectTransport.cpp +10 -1
- package/worker/src/RTC/NackGenerator.cpp +27 -9
- package/worker/src/RTC/PipeConsumer.cpp +20 -0
- package/worker/src/RTC/Producer.cpp +5 -1
- package/worker/src/RTC/RTCP/CompoundPacket.cpp +7 -0
- package/worker/src/RTC/RtpDictionaries/RtpCodecMimeType.cpp +2 -0
- package/worker/src/RTC/RtpStreamRecv.cpp +4 -3
- package/worker/src/RTC/RtpStreamSend.cpp +32 -0
- package/worker/src/RTC/SimpleConsumer.cpp +17 -0
- package/worker/src/RTC/SimulcastConsumer.cpp +45 -4
- package/worker/src/RTC/SvcConsumer.cpp +17 -0
- package/worker/src/RTC/Transport.cpp +14 -0
- package/worker/src/RTC/TransportCongestionControlClient.cpp +0 -3
- package/worker/test/include/helpers.hpp +119 -0
- package/worker/test/src/RTC/Codecs/TestH264.cpp +30 -0
- package/worker/test/src/RTC/Codecs/TestH264_SVC.cpp +181 -0
- package/worker/test/src/RTC/TestNackGenerator.cpp +3 -1
- package/worker/test/src/RTC/TestRtpPacketH264Svc.cpp +455 -0
- package/worker/test/src/RTC/TestRtpStreamRecv.cpp +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebRtcTransport.d.ts","sourceRoot":"","sources":["../src/WebRtcTransport.ts"],"names":[],"mappings":"AACA,OAAO,EACN,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EAEd,eAAe,EACf,uBAAuB,EACvB,SAAS,EACT,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElE,oBAAY,sBAAsB,GAClC;IACC;;;OAGG;IACH,SAAS,EAAE,CAAC,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC;IAE1C;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;IAEzC;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"WebRtcTransport.d.ts","sourceRoot":"","sources":["../src/WebRtcTransport.ts"],"names":[],"mappings":"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"}
|
package/node/lib/Worker.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export declare type WorkerSettings = {
|
|
|
35
35
|
/**
|
|
36
36
|
* Custom application data.
|
|
37
37
|
*/
|
|
38
|
-
appData?:
|
|
38
|
+
appData?: Record<string, unknown>;
|
|
39
39
|
};
|
|
40
40
|
export declare type WorkerUpdateableSettings = Pick<WorkerSettings, 'logLevel' | 'logTags'>;
|
|
41
41
|
/**
|
|
@@ -141,11 +141,11 @@ export declare class Worker extends EnhancedEventEmitter<WorkerEvents> {
|
|
|
141
141
|
/**
|
|
142
142
|
* App custom data.
|
|
143
143
|
*/
|
|
144
|
-
get appData():
|
|
144
|
+
get appData(): Record<string, unknown>;
|
|
145
145
|
/**
|
|
146
146
|
* Invalid setter.
|
|
147
147
|
*/
|
|
148
|
-
set appData(appData:
|
|
148
|
+
set appData(appData: Record<string, unknown>);
|
|
149
149
|
/**
|
|
150
150
|
* Observer.
|
|
151
151
|
*
|
package/node/lib/Worker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../src/Worker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,oBAAY,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjE,oBAAY,YAAY,GACpB,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,KAAK,GACL,OAAO,GACP,WAAW,GACX,KAAK,GACL,MAAM,GACN,SAAS,CAAA;AAEb,oBAAY,cAAc,GAC1B;IACC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IAEzB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"Worker.d.ts","sourceRoot":"","sources":["../src/Worker.ts"],"names":[],"mappings":"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"}
|
package/node/lib/Worker.js
CHANGED
|
@@ -81,7 +81,7 @@ class Worker extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
81
81
|
// options
|
|
82
82
|
{
|
|
83
83
|
env: {
|
|
84
|
-
MEDIASOUP_VERSION: '3.9.
|
|
84
|
+
MEDIASOUP_VERSION: '3.9.16',
|
|
85
85
|
// Let the worker process inherit all environment variables, useful
|
|
86
86
|
// if a custom and not in the path GCC is used so the user can set
|
|
87
87
|
// LD_LIBRARY_PATH environment variable for runtime.
|
|
@@ -111,7 +111,7 @@ class Worker extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
111
111
|
// @ts-ignore
|
|
112
112
|
consumerSocket: this.#child.stdio[6]
|
|
113
113
|
});
|
|
114
|
-
this.#appData = appData;
|
|
114
|
+
this.#appData = appData || {};
|
|
115
115
|
let spawnDone = false;
|
|
116
116
|
// Listen for 'running' notification.
|
|
117
117
|
this.#channel.once(String(this.#pid), (event) => {
|
|
@@ -270,7 +270,7 @@ class Worker extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
270
270
|
/**
|
|
271
271
|
* Create a Router.
|
|
272
272
|
*/
|
|
273
|
-
async createRouter({ mediaCodecs, appData
|
|
273
|
+
async createRouter({ mediaCodecs, appData } = {}) {
|
|
274
274
|
logger.debug('createRouter()');
|
|
275
275
|
if (appData && typeof appData !== 'object')
|
|
276
276
|
throw new TypeError('if given, appData must be an object');
|
package/node/lib/index.d.ts
CHANGED
package/node/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,OAAO,0BAA0B,CAAC;AAE/C;;GAEG;AACH,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,QAAA,MAAM,QAAQ;;;;;;EAA6B,CAAC;AAE5C;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB;;GAEG;AACH,wBAAsB,YAAY,CACjC,EACC,QAAkB,EAClB,OAAO,EACP,UAAkB,EAClB,UAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGlD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC;;GAEG;AACH,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB;;GAEG;AACH,eAAO,MAAM,OAAO,0BAA0B,CAAC;AAE/C;;GAEG;AACH,OAAO,EAAE,KAAK,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGnE,QAAA,MAAM,QAAQ;;;;;;EAA6B,CAAC;AAE5C;;;;GAIG;AACH,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB;;GAEG;AACH,wBAAsB,YAAY,CACjC,EACC,QAAkB,EAClB,OAAO,EACP,UAAkB,EAClB,UAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,OAAO,EACP,GAAE,cAAmB,GACpB,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,eAAe,CAG7D"}
|
package/node/lib/index.js
CHANGED
|
@@ -11,7 +11,7 @@ exports.types = types;
|
|
|
11
11
|
/**
|
|
12
12
|
* Expose mediasoup version.
|
|
13
13
|
*/
|
|
14
|
-
exports.version = '3.9.
|
|
14
|
+
exports.version = '3.9.16';
|
|
15
15
|
/**
|
|
16
16
|
* Expose parseScalabilityMode() function.
|
|
17
17
|
*/
|
|
@@ -23,7 +23,7 @@ exports.observer = observer;
|
|
|
23
23
|
/**
|
|
24
24
|
* Create a Worker.
|
|
25
25
|
*/
|
|
26
|
-
async function createWorker({ logLevel = 'error', logTags, rtcMinPort = 10000, rtcMaxPort = 59999, dtlsCertificateFile, dtlsPrivateKeyFile, appData
|
|
26
|
+
async function createWorker({ logLevel = 'error', logTags, rtcMinPort = 10000, rtcMaxPort = 59999, dtlsCertificateFile, dtlsPrivateKeyFile, appData } = {}) {
|
|
27
27
|
logger.debug('createWorker()');
|
|
28
28
|
if (appData && typeof appData !== 'object')
|
|
29
29
|
throw new TypeError('if given, appData must be an object');
|
package/node/lib/ortc.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supportedRtpCapabilities.d.ts","sourceRoot":"","sources":["../src/supportedRtpCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,QAAA,MAAM,wBAAwB,EAAE,
|
|
1
|
+
{"version":3,"file":"supportedRtpCapabilities.d.ts","sourceRoot":"","sources":["../src/supportedRtpCapabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,QAAA,MAAM,wBAAwB,EAAE,eA+X/B,CAAC;AAEF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -217,6 +217,21 @@ const supportedRtpCapabilities = {
|
|
|
217
217
|
{ type: 'transport-cc' }
|
|
218
218
|
]
|
|
219
219
|
},
|
|
220
|
+
{
|
|
221
|
+
kind: 'video',
|
|
222
|
+
mimeType: 'video/H264-SVC',
|
|
223
|
+
clockRate: 90000,
|
|
224
|
+
parameters: {
|
|
225
|
+
'level-asymmetry-allowed': 1
|
|
226
|
+
},
|
|
227
|
+
rtcpFeedback: [
|
|
228
|
+
{ type: 'nack' },
|
|
229
|
+
{ type: 'nack', parameter: 'pli' },
|
|
230
|
+
{ type: 'ccm', parameter: 'fir' },
|
|
231
|
+
{ type: 'goog-remb' },
|
|
232
|
+
{ type: 'transport-cc' }
|
|
233
|
+
]
|
|
234
|
+
},
|
|
220
235
|
{
|
|
221
236
|
kind: 'video',
|
|
222
237
|
mimeType: 'video/H265',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mediasoup",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.16",
|
|
4
4
|
"description": "Cutting Edge WebRTC Video Conferencing",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)",
|
|
@@ -77,16 +77,16 @@
|
|
|
77
77
|
"devDependencies": {
|
|
78
78
|
"@types/debug": "^4.1.7",
|
|
79
79
|
"@types/uuid": "^8.3.4",
|
|
80
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
81
|
-
"@typescript-eslint/parser": "^5.
|
|
82
|
-
"eslint": "^8.
|
|
83
|
-
"eslint-plugin-jest": "^26.
|
|
80
|
+
"@typescript-eslint/eslint-plugin": "^5.27.0",
|
|
81
|
+
"@typescript-eslint/parser": "^5.27.0",
|
|
82
|
+
"eslint": "^8.16.0",
|
|
83
|
+
"eslint-plugin-jest": "^26.4.6",
|
|
84
84
|
"jest": "^27.5.1",
|
|
85
85
|
"jest-tobetype": "^1.2.3",
|
|
86
86
|
"open-cli": "^7.0.1",
|
|
87
87
|
"pick-port": "^1.0.0",
|
|
88
88
|
"sctp": "^1.0.0",
|
|
89
89
|
"tsc-watch": "^5.0.3",
|
|
90
|
-
"typescript": "^4.
|
|
90
|
+
"typescript": "^4.7.2"
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#ifndef MS_RTC_CODECS_H264_SVC_HPP
|
|
2
|
+
#define MS_RTC_CODECS_H264_SVC_HPP
|
|
3
|
+
|
|
4
|
+
#include "common.hpp"
|
|
5
|
+
#include "RTC/Codecs/PayloadDescriptorHandler.hpp"
|
|
6
|
+
#include "RTC/RtpPacket.hpp"
|
|
7
|
+
#include "RTC/SeqManager.hpp"
|
|
8
|
+
|
|
9
|
+
namespace RTC
|
|
10
|
+
{
|
|
11
|
+
namespace Codecs
|
|
12
|
+
{
|
|
13
|
+
class H264_SVC
|
|
14
|
+
{
|
|
15
|
+
public:
|
|
16
|
+
struct PayloadDescriptor : public RTC::Codecs::PayloadDescriptor
|
|
17
|
+
{
|
|
18
|
+
~PayloadDescriptor() = default;
|
|
19
|
+
|
|
20
|
+
void Dump() const override;
|
|
21
|
+
|
|
22
|
+
// Fields in frame-marking extension.
|
|
23
|
+
uint8_t s : 1; // Start of Frame.
|
|
24
|
+
uint8_t e : 1; // End of Frame.
|
|
25
|
+
uint8_t i : 1; // Independent Frame.
|
|
26
|
+
uint8_t d : 1; // Discardable Frame.
|
|
27
|
+
uint8_t b : 1; // Base Layer Sync.
|
|
28
|
+
uint8_t slIndex{ 0 }; // Temporal layer id.
|
|
29
|
+
uint8_t tlIndex{ 0 }; // Spatial layer id.
|
|
30
|
+
uint8_t tl0picidx{ 0 }; // TL0PICIDX
|
|
31
|
+
|
|
32
|
+
// Parsed values.
|
|
33
|
+
bool hasSlIndex{ false };
|
|
34
|
+
bool hasTlIndex{ false };
|
|
35
|
+
bool hasTl0picidx{ false };
|
|
36
|
+
bool isKeyFrame{ false };
|
|
37
|
+
|
|
38
|
+
// Extension fields.
|
|
39
|
+
uint8_t idr{ 0 };
|
|
40
|
+
uint8_t priorityId{ 0 };
|
|
41
|
+
uint8_t noIntLayerPredFlag{ true };
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
public:
|
|
45
|
+
static H264_SVC::PayloadDescriptor* Parse(
|
|
46
|
+
const uint8_t* data,
|
|
47
|
+
size_t len,
|
|
48
|
+
RTC::RtpPacket::FrameMarking* frameMarking = nullptr,
|
|
49
|
+
uint8_t frameMarkingLen = 0);
|
|
50
|
+
static std::unique_ptr<H264_SVC::PayloadDescriptor> ParseSingleNalu(
|
|
51
|
+
const uint8_t* data,
|
|
52
|
+
size_t len,
|
|
53
|
+
std::unique_ptr<H264_SVC::PayloadDescriptor> payloadDescriptor,
|
|
54
|
+
bool isStartBit); // useful in FU packet to indicate first packet. Set to true for other packets
|
|
55
|
+
static void ProcessRtpPacket(RTC::RtpPacket* packet);
|
|
56
|
+
|
|
57
|
+
public:
|
|
58
|
+
class EncodingContext : public RTC::Codecs::EncodingContext
|
|
59
|
+
{
|
|
60
|
+
public:
|
|
61
|
+
explicit EncodingContext(RTC::Codecs::EncodingContext::Params& params)
|
|
62
|
+
: RTC::Codecs::EncodingContext(params)
|
|
63
|
+
{
|
|
64
|
+
}
|
|
65
|
+
~EncodingContext() = default;
|
|
66
|
+
|
|
67
|
+
/* Pure virtual methods inherited from RTC::Codecs::EncodingContext. */
|
|
68
|
+
public:
|
|
69
|
+
void SyncRequired() override
|
|
70
|
+
{
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public:
|
|
74
|
+
RTC::SeqManager<uint16_t> pictureIdManager;
|
|
75
|
+
bool syncRequired{ false };
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
public:
|
|
79
|
+
class PayloadDescriptorHandler : public RTC::Codecs::PayloadDescriptorHandler
|
|
80
|
+
{
|
|
81
|
+
public:
|
|
82
|
+
explicit PayloadDescriptorHandler(PayloadDescriptor* payloadDescriptor);
|
|
83
|
+
~PayloadDescriptorHandler() = default;
|
|
84
|
+
|
|
85
|
+
public:
|
|
86
|
+
void Dump() const override
|
|
87
|
+
{
|
|
88
|
+
this->payloadDescriptor->Dump();
|
|
89
|
+
}
|
|
90
|
+
bool Process(RTC::Codecs::EncodingContext* encodingContext, uint8_t* data, bool& marker) override;
|
|
91
|
+
void Restore(uint8_t* data) override;
|
|
92
|
+
uint8_t GetSpatialLayer() const override
|
|
93
|
+
{
|
|
94
|
+
// return 0u;
|
|
95
|
+
return this->payloadDescriptor->hasSlIndex ? this->payloadDescriptor->slIndex : 0u;
|
|
96
|
+
}
|
|
97
|
+
uint8_t GetTemporalLayer() const override
|
|
98
|
+
{
|
|
99
|
+
// return this->payloadDescriptor->tid;
|
|
100
|
+
return this->payloadDescriptor->hasTlIndex ? this->payloadDescriptor->tlIndex : 0u;
|
|
101
|
+
}
|
|
102
|
+
bool IsKeyFrame() const override
|
|
103
|
+
{
|
|
104
|
+
return this->payloadDescriptor->isKeyFrame;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private:
|
|
108
|
+
std::unique_ptr<PayloadDescriptor> payloadDescriptor;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
} // namespace Codecs
|
|
112
|
+
|
|
113
|
+
} // namespace RTC
|
|
114
|
+
|
|
115
|
+
#endif
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
#include "common.hpp"
|
|
5
5
|
#include "RTC/Codecs/H264.hpp"
|
|
6
|
+
#include "RTC/Codecs/H264_SVC.hpp"
|
|
6
7
|
#include "RTC/Codecs/PayloadDescriptorHandler.hpp"
|
|
7
8
|
#include "RTC/Codecs/VP8.hpp"
|
|
8
9
|
#include "RTC/Codecs/VP9.hpp"
|
|
@@ -29,6 +30,7 @@ namespace RTC
|
|
|
29
30
|
case RTC::RtpCodecMimeType::Subtype::VP8:
|
|
30
31
|
case RTC::RtpCodecMimeType::Subtype::VP9:
|
|
31
32
|
case RTC::RtpCodecMimeType::Subtype::H264:
|
|
33
|
+
case RTC::RtpCodecMimeType::Subtype::H264_SVC:
|
|
32
34
|
return true;
|
|
33
35
|
default:
|
|
34
36
|
return false;
|
|
@@ -70,6 +72,12 @@ namespace RTC
|
|
|
70
72
|
|
|
71
73
|
break;
|
|
72
74
|
}
|
|
75
|
+
case RTC::RtpCodecMimeType::Subtype::H264_SVC:
|
|
76
|
+
{
|
|
77
|
+
RTC::Codecs::H264_SVC::ProcessRtpPacket(packet);
|
|
78
|
+
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
73
81
|
|
|
74
82
|
default:;
|
|
75
83
|
}
|
|
@@ -125,6 +133,7 @@ namespace RTC
|
|
|
125
133
|
switch (mimeType.subtype)
|
|
126
134
|
{
|
|
127
135
|
case RTC::RtpCodecMimeType::Subtype::VP9:
|
|
136
|
+
case RTC::RtpCodecMimeType::Subtype::H264_SVC:
|
|
128
137
|
return true;
|
|
129
138
|
default:
|
|
130
139
|
return false;
|
|
@@ -165,6 +174,8 @@ namespace RTC
|
|
|
165
174
|
return new RTC::Codecs::VP9::EncodingContext(params);
|
|
166
175
|
case RTC::RtpCodecMimeType::Subtype::H264:
|
|
167
176
|
return new RTC::Codecs::H264::EncodingContext(params);
|
|
177
|
+
case RTC::RtpCodecMimeType::Subtype::H264_SVC:
|
|
178
|
+
return new RTC::Codecs::H264_SVC::EncodingContext(params);
|
|
168
179
|
default:
|
|
169
180
|
return nullptr;
|
|
170
181
|
}
|
|
@@ -149,10 +149,11 @@ namespace RTC
|
|
|
149
149
|
virtual void NeedWorstRemoteFractionLost(uint32_t mappedSsrc, uint8_t& worstRemoteFractionLost) = 0;
|
|
150
150
|
virtual void ReceiveNack(RTC::RTCP::FeedbackRtpNackPacket* nackPacket) = 0;
|
|
151
151
|
virtual void ReceiveKeyFrameRequest(
|
|
152
|
-
RTC::RTCP::FeedbackPs::MessageType messageType, uint32_t ssrc)
|
|
153
|
-
virtual void ReceiveRtcpReceiverReport(RTC::RTCP::ReceiverReport* report)
|
|
154
|
-
virtual
|
|
155
|
-
virtual
|
|
152
|
+
RTC::RTCP::FeedbackPs::MessageType messageType, uint32_t ssrc) = 0;
|
|
153
|
+
virtual void ReceiveRtcpReceiverReport(RTC::RTCP::ReceiverReport* report) = 0;
|
|
154
|
+
virtual void ReceiveRtcpXrReceiverReferenceTime(RTC::RTCP::ReceiverReferenceTime* report) = 0;
|
|
155
|
+
virtual uint32_t GetTransmissionRate(uint64_t nowMs) = 0;
|
|
156
|
+
virtual float GetRtt() const = 0;
|
|
156
157
|
|
|
157
158
|
protected:
|
|
158
159
|
void EmitTraceEventRtpAndKeyFrameTypes(RTC::RtpPacket* packet, bool isRtx = false) const;
|
|
@@ -34,6 +34,10 @@ namespace RTC
|
|
|
34
34
|
void SendSctpData(const uint8_t* data, size_t len) override;
|
|
35
35
|
void RecvStreamClosed(uint32_t ssrc) override;
|
|
36
36
|
void SendStreamClosed(uint32_t ssrc) override;
|
|
37
|
+
|
|
38
|
+
private:
|
|
39
|
+
// Allocated by this.
|
|
40
|
+
uint8_t* buffer{ nullptr };
|
|
37
41
|
};
|
|
38
42
|
} // namespace RTC
|
|
39
43
|
|
|
@@ -30,10 +30,12 @@ namespace RTC
|
|
|
30
30
|
struct NackInfo
|
|
31
31
|
{
|
|
32
32
|
NackInfo() = default;
|
|
33
|
-
explicit NackInfo(
|
|
33
|
+
explicit NackInfo(uint64_t createdAtMs, uint16_t seq, uint16_t sendAtSeq)
|
|
34
|
+
: createdAtMs(createdAtMs), seq(seq), sendAtSeq(sendAtSeq)
|
|
34
35
|
{
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
uint64_t createdAtMs{ 0u };
|
|
37
39
|
uint16_t seq{ 0u };
|
|
38
40
|
uint16_t sendAtSeq{ 0u };
|
|
39
41
|
uint64_t sentAtMs{ 0u };
|
|
@@ -47,7 +49,7 @@ namespace RTC
|
|
|
47
49
|
};
|
|
48
50
|
|
|
49
51
|
public:
|
|
50
|
-
explicit NackGenerator(Listener* listener);
|
|
52
|
+
explicit NackGenerator(Listener* listener, unsigned int sendNackDelayMs);
|
|
51
53
|
~NackGenerator() override;
|
|
52
54
|
|
|
53
55
|
bool ReceivePacket(RTC::RtpPacket* packet, bool isRecovered);
|
|
@@ -74,6 +76,7 @@ namespace RTC
|
|
|
74
76
|
private:
|
|
75
77
|
// Passed by argument.
|
|
76
78
|
Listener* listener{ nullptr };
|
|
79
|
+
unsigned int sendNackDelayMs{ 0u };
|
|
77
80
|
// Allocated by this.
|
|
78
81
|
Timer* timer{ nullptr };
|
|
79
82
|
// Others.
|
|
@@ -40,6 +40,7 @@ namespace RTC
|
|
|
40
40
|
void ReceiveNack(RTC::RTCP::FeedbackRtpNackPacket* nackPacket) override;
|
|
41
41
|
void ReceiveKeyFrameRequest(RTC::RTCP::FeedbackPs::MessageType messageType, uint32_t ssrc) override;
|
|
42
42
|
void ReceiveRtcpReceiverReport(RTC::RTCP::ReceiverReport* report) override;
|
|
43
|
+
void ReceiveRtcpXrReceiverReferenceTime(RTC::RTCP::ReceiverReferenceTime* report) override;
|
|
43
44
|
uint32_t GetTransmissionRate(uint64_t nowMs) override;
|
|
44
45
|
float GetRtt() const override;
|
|
45
46
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#include "RTC/RTCP/ReceiverReport.hpp"
|
|
6
6
|
#include "RTC/RTCP/Sdes.hpp"
|
|
7
7
|
#include "RTC/RTCP/SenderReport.hpp"
|
|
8
|
+
#include "RTC/RTCP/XrDelaySinceLastRr.hpp"
|
|
8
9
|
#include "RTC/RTCP/XrReceiverReferenceTime.hpp"
|
|
9
10
|
#include <vector>
|
|
10
11
|
|
|
@@ -39,6 +40,7 @@ namespace RTC
|
|
|
39
40
|
void AddReceiverReport(ReceiverReport* report);
|
|
40
41
|
void AddSdesChunk(SdesChunk* chunk);
|
|
41
42
|
void AddReceiverReferenceTime(ReceiverReferenceTime* report);
|
|
43
|
+
void AddDelaySinceLastRr(DelaySinceLastRr* report);
|
|
42
44
|
bool HasSenderReport()
|
|
43
45
|
{
|
|
44
46
|
return this->senderReportPacket.Begin() != this->senderReportPacket.End();
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
#include "RTC/RTCP/ReceiverReport.hpp"
|
|
11
11
|
#include "RTC/RTCP/Sdes.hpp"
|
|
12
12
|
#include "RTC/RTCP/SenderReport.hpp"
|
|
13
|
+
#include "RTC/RTCP/XrDelaySinceLastRr.hpp"
|
|
14
|
+
#include "RTC/RTCP/XrReceiverReferenceTime.hpp"
|
|
13
15
|
#include "RTC/RtpDictionaries.hpp"
|
|
14
16
|
#include "RTC/RtxStream.hpp"
|
|
15
17
|
#include <nlohmann/json.hpp>
|
|
@@ -42,7 +42,10 @@ namespace RTC
|
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
public:
|
|
45
|
-
RtpStreamRecv(
|
|
45
|
+
RtpStreamRecv(
|
|
46
|
+
RTC::RtpStreamRecv::Listener* listener,
|
|
47
|
+
RTC::RtpStream::Params& params,
|
|
48
|
+
unsigned int sendNackDelayMs);
|
|
46
49
|
~RtpStreamRecv();
|
|
47
50
|
|
|
48
51
|
void FillJsonStats(json& jsonObject) override;
|
|
@@ -87,6 +90,9 @@ namespace RTC
|
|
|
87
90
|
void OnNackGeneratorKeyFrameRequired() override;
|
|
88
91
|
|
|
89
92
|
private:
|
|
93
|
+
// Passed by argument.
|
|
94
|
+
unsigned int sendNackDelayMs{ 0u };
|
|
95
|
+
// Others.
|
|
90
96
|
uint32_t expectedPrior{ 0u }; // Packets expected at last interval.
|
|
91
97
|
uint32_t expectedPriorScore{ 0u }; // Packets expected at last interval for score calculation.
|
|
92
98
|
uint32_t receivedPrior{ 0u }; // Packets received at last interval.
|
|
@@ -43,7 +43,9 @@ namespace RTC
|
|
|
43
43
|
void ReceiveNack(RTC::RTCP::FeedbackRtpNackPacket* nackPacket);
|
|
44
44
|
void ReceiveKeyFrameRequest(RTC::RTCP::FeedbackPs::MessageType messageType);
|
|
45
45
|
void ReceiveRtcpReceiverReport(RTC::RTCP::ReceiverReport* report);
|
|
46
|
+
void ReceiveRtcpXrReceiverReferenceTime(RTC::RTCP::ReceiverReferenceTime* report);
|
|
46
47
|
RTC::RTCP::SenderReport* GetRtcpSenderReport(uint64_t nowMs);
|
|
48
|
+
RTC::RTCP::DelaySinceLastRr::SsrcInfo* GetRtcpXrDelaySinceLastRr(uint64_t nowMs);
|
|
47
49
|
RTC::RTCP::SdesChunk* GetRtcpSdesChunk();
|
|
48
50
|
void Pause() override;
|
|
49
51
|
void Resume() override;
|
|
@@ -71,6 +73,11 @@ namespace RTC
|
|
|
71
73
|
std::vector<StorageItem> storage;
|
|
72
74
|
uint16_t rtxSeq{ 0u };
|
|
73
75
|
RTC::RtpDataCounter transmissionCounter;
|
|
76
|
+
uint32_t lastRrTimestamp{ 0u }; // The middle 32 bits out of 64 in the NTP
|
|
77
|
+
// timestamp received in the most recent
|
|
78
|
+
// receiver reference timestamp.
|
|
79
|
+
uint64_t lastRrReceivedMs{ 0u }; // Wallclock time representing the most recent
|
|
80
|
+
// receiver reference timestamp arrival.
|
|
74
81
|
};
|
|
75
82
|
} // namespace RTC
|
|
76
83
|
|
|
@@ -50,6 +50,7 @@ namespace RTC
|
|
|
50
50
|
void ReceiveNack(RTC::RTCP::FeedbackRtpNackPacket* nackPacket) override;
|
|
51
51
|
void ReceiveKeyFrameRequest(RTC::RTCP::FeedbackPs::MessageType messageType, uint32_t ssrc) override;
|
|
52
52
|
void ReceiveRtcpReceiverReport(RTC::RTCP::ReceiverReport* report) override;
|
|
53
|
+
void ReceiveRtcpXrReceiverReferenceTime(RTC::RTCP::ReceiverReferenceTime* report) override;
|
|
53
54
|
uint32_t GetTransmissionRate(uint64_t nowMs) override;
|
|
54
55
|
float GetRtt() const override;
|
|
55
56
|
|
|
@@ -66,6 +66,7 @@ namespace RTC
|
|
|
66
66
|
void ReceiveNack(RTC::RTCP::FeedbackRtpNackPacket* nackPacket) override;
|
|
67
67
|
void ReceiveKeyFrameRequest(RTC::RTCP::FeedbackPs::MessageType messageType, uint32_t ssrc) override;
|
|
68
68
|
void ReceiveRtcpReceiverReport(RTC::RTCP::ReceiverReport* report) override;
|
|
69
|
+
void ReceiveRtcpXrReceiverReferenceTime(RTC::RTCP::ReceiverReferenceTime* report) override;
|
|
69
70
|
uint32_t GetTransmissionRate(uint64_t nowMs) override;
|
|
70
71
|
float GetRtt() const override;
|
|
71
72
|
|
|
@@ -101,6 +102,7 @@ namespace RTC
|
|
|
101
102
|
std::vector<RTC::RtpStreamSend*> rtpStreams;
|
|
102
103
|
std::vector<RTC::RtpStream*> producerRtpStreams; // Indexed by spatial layer.
|
|
103
104
|
bool syncRequired{ false };
|
|
105
|
+
int16_t spatialLayerToSync{ -1 };
|
|
104
106
|
bool lastSentPacketHasMarker{ false };
|
|
105
107
|
RTC::SeqManager<uint16_t> rtpSeqManager;
|
|
106
108
|
int16_t preferredSpatialLayer{ -1 };
|
|
@@ -111,6 +113,8 @@ namespace RTC
|
|
|
111
113
|
int16_t targetTemporalLayer{ -1 };
|
|
112
114
|
int16_t currentSpatialLayer{ -1 };
|
|
113
115
|
int16_t tsReferenceSpatialLayer{ -1 }; // Used for RTP TS sync.
|
|
116
|
+
uint16_t snReferenceSpatialLayer{ 0 };
|
|
117
|
+
bool checkingForOldPacketsInSpatialLayer{ false };
|
|
114
118
|
std::unique_ptr<RTC::Codecs::EncodingContext> encodingContext;
|
|
115
119
|
uint32_t tsOffset{ 0u }; // RTP Timestamp offset.
|
|
116
120
|
bool keyFrameForTsOffsetRequested{ false };
|
|
@@ -61,6 +61,7 @@ namespace RTC
|
|
|
61
61
|
void ReceiveNack(RTC::RTCP::FeedbackRtpNackPacket* nackPacket) override;
|
|
62
62
|
void ReceiveKeyFrameRequest(RTC::RTCP::FeedbackPs::MessageType messageType, uint32_t ssrc) override;
|
|
63
63
|
void ReceiveRtcpReceiverReport(RTC::RTCP::ReceiverReport* report) override;
|
|
64
|
+
void ReceiveRtcpXrReceiverReferenceTime(RTC::RTCP::ReceiverReferenceTime* report) override;
|
|
64
65
|
uint32_t GetTransmissionRate(uint64_t nowMs) override;
|
|
65
66
|
float GetRtt() const override;
|
|
66
67
|
|
package/worker/meson.build
CHANGED
|
@@ -99,6 +99,7 @@ common_sources = [
|
|
|
99
99
|
'src/RTC/UdpSocket.cpp',
|
|
100
100
|
'src/RTC/WebRtcTransport.cpp',
|
|
101
101
|
'src/RTC/Codecs/H264.cpp',
|
|
102
|
+
'src/RTC/Codecs/H264_SVC.cpp',
|
|
102
103
|
'src/RTC/Codecs/VP8.cpp',
|
|
103
104
|
'src/RTC/Codecs/VP9.cpp',
|
|
104
105
|
'src/RTC/RtpDictionaries/Media.cpp',
|
|
@@ -269,12 +270,15 @@ mediasoup_worker_test = executable(
|
|
|
269
270
|
'test/src/RTC/TestNackGenerator.cpp',
|
|
270
271
|
'test/src/RTC/TestRateCalculator.cpp',
|
|
271
272
|
'test/src/RTC/TestRtpPacket.cpp',
|
|
273
|
+
'test/src/RTC/TestRtpPacketH264Svc.cpp',
|
|
272
274
|
'test/src/RTC/TestRtpStreamSend.cpp',
|
|
273
275
|
'test/src/RTC/TestRtpStreamRecv.cpp',
|
|
274
276
|
'test/src/RTC/TestSeqManager.cpp',
|
|
275
277
|
'test/src/RTC/TestTrendCalculator.cpp',
|
|
276
278
|
'test/src/RTC/TestRtpEncodingParameters.cpp',
|
|
277
279
|
'test/src/RTC/Codecs/TestVP8.cpp',
|
|
280
|
+
'test/src/RTC/Codecs/TestH264.cpp',
|
|
281
|
+
'test/src/RTC/Codecs/TestH264_SVC.cpp',
|
|
278
282
|
'test/src/RTC/RTCP/TestFeedbackPsAfb.cpp',
|
|
279
283
|
'test/src/RTC/RTCP/TestFeedbackPsFir.cpp',
|
|
280
284
|
'test/src/RTC/RTCP/TestFeedbackPsLei.cpp',
|