@@ -318,8 +318,104 @@ The <dfn method for="SFrameTransform">setEncryptionKey(|key|, |keyID|)</dfn> met
318
318
# RTCRtpScriptTransform # {#scriptTransform}
319
319
320
320
In this section, the capture system refers to the system where media is sourced from and the sender system
321
- refers to the system that is sending RTP and RTCP packets to the receiver system where {{RTCEncodedVideoFrameMetadata}} data
322
- or {{RTCEncodedAudioFrameMetadata}} data is populated.
321
+ refers to the system that is sending RTP and RTCP packets to the receiver system where {{RTCEncodedFrameMetadata}} data is populated.
322
+
323
+ ## <dfn dictionary>RTCEncodedFrameMetadata</dfn> dictionary ## {#RTCEncodedFrameMetadata}
324
+ <pre class="idl">
325
+ dictionary RTCEncodedFrameMetadata {
326
+ unsigned long synchronizationSource;
327
+ octet payloadType;
328
+ sequence<unsigned long> contributingSources;
329
+ unsigned long rtpTimestamp;
330
+ DOMHighResTimeStamp receiveTime;
331
+ DOMHighResTimeStamp captureTime;
332
+ DOMHighResTimeStamp senderCaptureTimeOffset;
333
+ DOMString mimeType;
334
+ };
335
+ </pre>
336
+
337
+ ### Members ### {#RTCEncodedFrameMetadata-members}
338
+
339
+ <dl dfn-for="RTCEncodedFrameMetadata" class="dictionary-members">
340
+ <dt>
341
+ <dfn dict-member>synchronizationSource</dfn> <span class="idlMemberType"> unsigned long</span>
342
+ </dt>
343
+ <dd>
344
+ <p>
345
+ The synchronization source (ssrc) identifier is an unsigned integer value per [[RFC3550]]
346
+ used to identify the stream of RTP packets that the encoded frame object is describing.
347
+ </p>
348
+ </dd>
349
+ <dt>
350
+ <dfn dict-member>payloadType</dfn> <span class="idlMemberType"> octet</span>
351
+ </dt>
352
+ <dd>
353
+ <p>
354
+ The payload type is an unsigned integer value in the range from 0 to 127 per [[RFC3550]]
355
+ that is used to describe the format of the RTP payload.
356
+ </p>
357
+ </dd>
358
+ <dt>
359
+ <dfn dict-member>contributingSources</dfn> <span class=
360
+ "idlMemberType"> sequence<unsigned long></span>
361
+ </dt>
362
+ <dd>
363
+ <p>
364
+ The list of contribution sources (csrc list) as defined in [[RFC3550]] .
365
+ </p>
366
+ </dd>
367
+ <dt>
368
+ <dfn dict-member>rtpTimestamp</dfn> <span class=
369
+ "idlMemberType"> unsigned long</span>
370
+ </dt>
371
+ <dd>
372
+ <p>
373
+ The RTP timestamp identifier is an unsigned integer value per [[RFC3550]]
374
+ that reflects the sampling instant of the first octet in the RTP data packet.
375
+ </p>
376
+ </dd>
377
+ <dt>
378
+ <dfn dict-member>receiveTime</dfn> <span class=
379
+ "idlMemberType"> DOMHighResTimeStamp</span>
380
+ </dt>
381
+ <dd>
382
+ <p>
383
+ For frames coming from an RTCRtpReceiver, represents the timestamp
384
+ of the last received packet used to produce this media frame. This
385
+ timestamp is relative to {{Performance}} .{{Performance/timeOrigin}} .
386
+ </p>
387
+ </dd>
388
+ <dt>
389
+ <dfn dict-member>captureTime</dfn> <span class="idlMemberType"> DOMHighResTimeStamp</span>
390
+ </dt>
391
+ <dd>
392
+ <p>
393
+ The capture time of this frame in the capture system's clock.
394
+ On populating this member, the user agent MUST return the value of the frame's `[[captureTime]] ` slot,
395
+ shifted to be relative to {{Performance}} .{{Performance/timeOrigin}} .
396
+ </p>
397
+ </dd>
398
+ <dt>
399
+ <dfn dict-member>senderCaptureTimeOffset</dfn> <span class="idlMemberType"> DOMHighResTimeStamp</span>
400
+ </dt>
401
+ <dd>
402
+ <p>
403
+ The {{RTCEncodedFrameMetadata/senderCaptureTimeOffset}} is the sender system's estimate of the offset
404
+ between its own NTP clock and the capture system's NTP clock, for the same frame that the
405
+ {{RTCEncodedFrameMetadata/captureTime}} was originated from.
406
+ On populating this member, the user agent MUST return the value of the frame's `[[senderCaptureTimeOffset]] ` slot.
407
+ </p>
408
+ </dd>
409
+ <dt>
410
+ <dfn dict-member>mimeType</dfn> <span class="idlMemberType"> DOMString</span>
411
+ </dt>
412
+ <dd>
413
+ <p>
414
+ The codec MIME media type/subtype defined in the IANA media types registry
415
+ [[!IANA-MEDIA-TYPES]] , e.g. audio/opus or video/VP8.
416
+ </p>
417
+ </dd>
418
+ </dl>
323
419
324
420
## <dfn enum>RTCEncodedVideoFrameType</dfn> dictionary ## {#RTCEncodedVideoFrameType}
325
421
<pre class="idl">
@@ -374,22 +470,14 @@ enum RTCEncodedVideoFrameType {
374
470
375
471
## <dfn dictionary>RTCEncodedVideoFrameMetadata</dfn> dictionary ## {#RTCEncodedVideoFrameMetadata}
376
472
<pre class="idl">
377
- dictionary RTCEncodedVideoFrameMetadata {
473
+ dictionary RTCEncodedVideoFrameMetadata : RTCEncodedFrameMetadata {
378
474
unsigned long long frameId;
379
475
sequence<unsigned long long> dependencies;
380
476
unsigned short width;
381
477
unsigned short height;
382
478
unsigned long spatialIndex;
383
479
unsigned long temporalIndex;
384
- unsigned long synchronizationSource;
385
- octet payloadType;
386
- sequence<unsigned long> contributingSources;
387
480
long long timestamp; // microseconds
388
- unsigned long rtpTimestamp;
389
- DOMHighResTimeStamp receiveTime;
390
- DOMHighResTimeStamp captureTime;
391
- DOMHighResTimeStamp senderCaptureTimeOffset;
392
- DOMString mimeType;
393
481
};
394
482
</pre>
395
483
@@ -415,33 +503,6 @@ dictionary RTCEncodedVideoFrameMetadata {
415
503
Only present for received frames if the AV1 Dependency Descriptor Header Extension defined in Appendix A of [[AV1-RTP-SPEC]] is present.
416
504
</p>
417
505
</dd>
418
- <dt>
419
- <dfn dict-member>synchronizationSource</dfn> <span class="idlMemberType"> unsigned long</span>
420
- </dt>
421
- <dd>
422
- <p>
423
- The synchronization source (ssrc) identifier is an unsigned integer value per [[RFC3550]]
424
- used to identify the stream of RTP packets that the encoded frame object is describing.
425
- </p>
426
- </dd>
427
- <dt>
428
- <dfn dict-member>payloadType</dfn> <span class="idlMemberType"> octet</span>
429
- </dt>
430
- <dd>
431
- <p>
432
- The payload type is an unsigned integer value in the range from 0 to 127 per [[RFC3550]]
433
- that is used to describe the format of the RTP payload.
434
- </p>
435
- </dd>
436
- <dt>
437
- <dfn dict-member>contributingSources</dfn> <span class=
438
- "idlMemberType"> sequence<unsigned long></span>
439
- </dt>
440
- <dd>
441
- <p>
442
- The list of contribution sources (csrc list) as defined in [[RFC3550]] .
443
- </p>
444
- </dd>
445
506
<dt>
446
507
<dfn dict-member>timestamp</dfn> <span class=
447
508
"idlMemberType"> long long</span>
@@ -452,58 +513,6 @@ dictionary RTCEncodedVideoFrameMetadata {
452
513
{{VideoFrame/timestamp}} for raw frames which correspond to this frame.
453
514
</p>
454
515
</dd>
455
- <dt>
456
- <dfn dict-member>rtpTimestamp</dfn> <span class=
457
- "idlMemberType"> unsigned long</span>
458
- </dt>
459
- <dd>
460
- <p>
461
- The RTP timestamp identifier is an unsigned integer value per [[RFC3550]]
462
- that reflects the sampling instant of the first octet in the RTP data packet.
463
- </p>
464
- </dd>
465
- <dt>
466
- <dfn dict-member>receiveTime</dfn> <span class=
467
- "idlMemberType"> DOMHighResTimeStamp</span>
468
- </dt>
469
- <dd>
470
- <p>
471
- For frames coming from an RTCRtpReceiver, represents the timestamp
472
- of the last received packet used to produce this video frame. This
473
- timestamp is relative to {{Performance}} .{{Performance/timeOrigin}} .
474
- Only exists for incoming video frames.
475
- </p>
476
- </dd>
477
- <dt>
478
- <dfn dict-member>captureTime</dfn> <span class="idlMemberType"> DOMHighResTimeStamp</span>
479
- </dt>
480
- <dd>
481
- <p>
482
- The capture time of this frame in the capture system's clock.
483
- On populating this member, the user agent MUST return the value of the frame's `[[captureTime]] ` slot,
484
- shifted to be relative to {{Performance}} .{{Performance/timeOrigin}} .
485
- </p>
486
- </dd>
487
- <dt>
488
- <dfn dict-member>senderCaptureTimeOffset</dfn> <span class="idlMemberType"> DOMHighResTimeStamp</span>
489
- </dt>
490
- <dd>
491
- <p>
492
- The {{RTCEncodedVideoFrameMetadata/senderCaptureTimeOffset}} is the sender system's estimate of the offset
493
- between its own NTP clock and the capture system's NTP clock, for the same frame that the
494
- {{RTCEncodedVideoFrameMetadata/captureTime}} was originated from.
495
- On populating this member, the user agent MUST return the value of the frame's `[[senderCaptureTimeOffset]] ` slot.
496
- </p>
497
- </dd>
498
- <dt>
499
- <dfn dict-member>mimeType</dfn> <span class="idlMemberType"> DOMString</span>
500
- </dt>
501
- <dd>
502
- <p>
503
- The codec MIME media type/subtype defined in the IANA media types registry
504
- [[!IANA-MEDIA-TYPES]] , e.g. video/VP8.
505
- </p>
506
- </dd>
507
516
</dl>
508
517
509
518
@@ -567,7 +576,7 @@ interface RTCEncodedVideoFrame {
567
576
<p>
568
577
The encoded frame data. The format of the data depends on the video codec that is
569
578
used to encode/decode the frame which can be determined by looking at the
570
- {{RTCEncodedVideoFrameMetadata /mimeType}} .
579
+ {{RTCEncodedFrameMetadata /mimeType}} .
571
580
For <a href="https://w3c.github.io/webrtc-svc/">SVC</a> , each spatial layer
572
581
is transformed separately.
573
582
</p>
@@ -672,48 +681,13 @@ An implementation is therefore free to choose whatever method works best.
672
681
673
682
## <dfn dictionary>RTCEncodedAudioFrameMetadata</dfn> dictionary ## {#RTCEncodedAudioFrameMetadata}
674
683
<pre class="idl">
675
- dictionary RTCEncodedAudioFrameMetadata {
676
- unsigned long synchronizationSource;
677
- octet payloadType;
678
- sequence<unsigned long> contributingSources;
684
+ dictionary RTCEncodedAudioFrameMetadata : RTCEncodedFrameMetadata {
679
685
short sequenceNumber;
680
- unsigned long rtpTimestamp;
681
- DOMHighResTimeStamp receiveTime;
682
- DOMHighResTimeStamp captureTime;
683
- DOMHighResTimeStamp senderCaptureTimeOffset;
684
- DOMString mimeType;
685
686
double audioLevel;
686
687
};
687
688
</pre>
688
689
### Members ### {#RTCEncodedAudioFrameMetadata-members}
689
690
<dl dfn-for="RTCEncodedAudioFrameMetadata" class="dictionary-members">
690
- <dt>
691
- <dfn dict-member>synchronizationSource</dfn> <span class="idlMemberType"> unsigned long</span>
692
- </dt>
693
- <dd>
694
- <p>
695
- The synchronization source (ssrc) identifier is an unsigned integer value per [[RFC3550]]
696
- used to identify the stream of RTP packets that the encoded frame object is describing.
697
- </p>
698
- </dd>
699
- <dt>
700
- <dfn dict-member>payloadType</dfn> <span class="idlMemberType"> octet</span>
701
- </dt>
702
- <dd>
703
- <p>
704
- The payload type is an unsigned integer value in the range from 0 to 127 per [[RFC3550]]
705
- that is used to describe the format of the RTP payload.
706
- </p>
707
- </dd>
708
- <dt>
709
- <dfn dict-member>contributingSources</dfn> <span class=
710
- "idlMemberType"> sequence<unsigned long></span>
711
- </dt>
712
- <dd>
713
- <p>
714
- The list of contribution sources (csrc list) as defined in [[RFC3550]] .
715
- </p>
716
- </dd>
717
691
<dt>
718
692
<dfn dict-member>sequenceNumber</dfn> <span class=
719
693
"idlMemberType"> short</span>
@@ -726,57 +700,6 @@ dictionary RTCEncodedAudioFrameMetadata {
726
700
Comparing two sequence numbers requires serial number arithmetic described in [[RFC1982]] .
727
701
</p>
728
702
</dd>
729
- <dt>
730
- <dfn dict-member>rtpTimestamp</dfn> <span class="idlMemberType"> unsigned long</span>
731
- </dt>
732
- <dd>
733
- <p>
734
- The RTP timestamp identifier is an unsigned integer value per [[RFC3550]]
735
- that reflects the sampling instant of the first octet in the RTP data packet.
736
- </p>
737
- </dd>
738
- <dt>
739
- <dfn dict-member>receiveTime</dfn> <span class=
740
- "idlMemberType"> DOMHighResTimeStamp</span>
741
- </dt>
742
- <dd>
743
- <p>
744
- For frames coming from an RTCRtpReceiver, represents the timestamp
745
- of the last received packet used to produce this audio frame. This
746
- timestamp is relative to {{Performance}} .{{Performance/timeOrigin}} .
747
- Only exists for incoming audio frames.
748
- </p>
749
- </dd>
750
- <dt>
751
- <dfn dict-member>captureTime</dfn> <span class="idlMemberType"> DOMHighResTimeStamp</span>
752
- </dt>
753
- <dd>
754
- <p>
755
- The capture time of this frame in the capture system's clock.
756
- On populating this member, the user agent MUST return the value of the frame's `[[captureTime]] ` slot,
757
- shifted to be relative to {{Performance}} .{{Performance/timeOrigin}} .
758
- </p>
759
- </dd>
760
- <dt>
761
- <dfn dict-member>senderCaptureTimeOffset</dfn> <span class="idlMemberType"> DOMHighResTimeStamp</span>
762
- </dt>
763
- <dd>
764
- <p>
765
- The {{RTCEncodedAudioFrameMetadata/senderCaptureTimeOffset}} is the sender system's estimate of the offset
766
- between its own NTP clock and the capture system's NTP clock, for the same frame that the
767
- {{RTCEncodedAudioFrameMetadata/captureTime}} was originated from.
768
- On populating this member, the user agent MUST return the value of the frame's `[[senderCaptureTimeOffset]] ` slot.
769
- </p>
770
- </dd>
771
- <dt>
772
- <dfn dict-member>mimeType</dfn> <span class="idlMemberType"> DOMString</span>
773
- </dt>
774
- <dd>
775
- <p>
776
- The codec MIME media type/subtype defined in the IANA media types registry
777
- [[!IANA-MEDIA-TYPES]] , e.g. audio/opus.
778
- </p>
779
- </dd>
780
703
<dt>
781
704
<dfn dict-member>audioLevel</dfn> <span class="idlMemberType"> double</span>
782
705
</dt>
@@ -836,7 +759,7 @@ interface RTCEncodedAudioFrame {
836
759
<p>
837
760
The encoded frame data. The format of the data depends on the audio codec that is
838
761
used to encode/decode the frame which can be determined by looking at the
839
- {{RTCEncodedAudioFrameMetadata /mimeType}} .
762
+ {{RTCEncodedFrameMetadata /mimeType}} .
840
763
The following table gives a number of examples:
841
764
</p>
842
765
<table class="simple">
0 commit comments