← WebRTC 1.0 Spesifikasyonu

RTP Medya API

W3C WebRTC 1.0 Spesifikasyonu — Türkçe Çeviri

5. RTP Medya API

RTP medya API’si, bir web uygulamasının eşler arası bir bağlantı üzerinden MediaStreamTrack’ler göndermesine ve almasına olanak tanır. İzler bir RTCPeerConnection’a eklendiğinde sinyalleşmeye yol açar; bu sinyalleşme uzak bir eşe iletildiğinde, uzak tarafta karşılık gelen izlerin oluşturulmasına neden olur.

Bir RTCPeerConnection tarafından gönderilen izler ile diğeri tarafından alınan izler arasında bire bir (1:1) tam bir eşleşme yoktur. Öncelikle, gönderilen izlerin kimlikleri alınan izlerin kimlikleriyle eşleşmez. Ayrıca, replaceTrack, bir RTCRtpSender tarafından gönderilen izi, alıcı tarafında yeni bir iz oluşturmadan değiştirir; karşılık gelen RTCRtpReceiver yalnızca tek bir ize sahip olur ve bu iz, potansiyel olarak bir araya getirilmiş birden fazla medya kaynağını temsil edebilir. Hem addTransceiver hem de replaceTrack, aynı izin birden fazla kez gönderilmesine neden olacak şekilde kullanılabilir; bu durum alıcı tarafında, her biri kendi ayrı izine sahip birden fazla alıcı olarak gözlemlenir. Bu nedenle, gerekirse RTCRtpTransceiver’ın mid’i kullanılarak göndericiler ve alıcılar eşleştirilmek suretiyle, bir taraftaki bir RTCRtpSender ile diğer taraftaki bir RTCRtpReceiver’ın izi arasında bire bir bir ilişki olduğunu düşünmek daha doğrudur.

Medya gönderilirken, göndericinin; SDP tarafından müzakere edilen zarf, kodlayıcının hizalama kısıtları ya da hatta CPU aşırı kullanım tespiti veya bant genişliği kestirimi gibi çeşitli gereksinimleri karşılamak için medyayı yeniden ölçeklendirmesi veya yeniden örneklemesi gerekebilir.

[RFC9429]’daki kurallara (bölüm 3.6.) uygun olarak, video AZALTILABİLİR. Girdi kaynağında meydana gelmemiş sahte veriler oluşturmak için medya BÜYÜTÜLMEMELİDİR; piksel sayıları üzerindeki kısıtları karşılamak için gerekli olanlar dışında medya KIRPILMAMALIDIR ve en-boy oranı DEĞİŞTİRİLMEMELİDİR.

WebRTC Çalışma Grubu, bu durumun daha karmaşık bir şekilde ele alınmasının gerekliliği ve zamanlaması konusunda uygulama geri bildirimi aramaktadır. Olası bazı tasarımlar GitHub issue 1283 içinde tartışılmıştır.

Video, scaleResolutionDownBy sonucunda yeniden ölçeklendirildiğinde, ortaya çıkan genişlik veya yüksekliğin bir tam sayı olmadığı durumlar meydana gelebilir. Kullanıcı aracısı, bir kodlayıcının asgari çözünürlüğüne uymak dışında, scaleResolutionDownBy’dan elde edilen ölçeklenmiş genişlik ve yüksekliğin tam sayı kısmından daha büyük video GÖNDERMEMELİDİR. Ölçeklenmiş genişlik veya yüksekliğin tam sayı kısmının sıfır olması durumunda neyin gönderileceği uygulamaya bağlıdır.

MediaStreamTrack’lerin gerçek kodlanması ve iletimi RTCRtpSender olarak adlandırılan nesneler aracılığıyla yönetilir. Benzer şekilde, MediaStreamTrack’lerin alınması ve kod çözümü RTCRtpReceiver olarak adlandırılan nesneler aracılığıyla yönetilir. Her RTCRtpSender en fazla bir izle ilişkilidir ve alınacak her iz tam olarak bir RTCRtpReceiver ile ilişkilidir.

Her bir MediaStreamTrack’in kodlanması ve iletimi, özelliklerinin (video izleri için width, height ve frameRate; ses izleri için sampleSize, sampleRate ve channelCount) makul bir ölçüde uzak tarafta oluşturulan iz tarafından korunacak şekilde YAPILMALIDIR. Bunun geçerli olmadığı durumlar vardır; örneğin her iki uçta ya da ağda kaynak kısıtları olabilir veya uygulamanın farklı davranmasını talimatlandıran RTCRtpSender ayarları uygulanmış olabilir.

Bir RTCPeerConnection nesnesi, eşleştirilmiş göndericileri ve alıcıları bazı paylaşılan durumlarla temsil eden bir RTCRtpTransceiver kümesi içerir. Bu küme, RTCPeerConnection nesnesi oluşturulduğunda boş küme olarak başlatılır. RTCRtpSender’lar ve RTCRtpReceiver’lar her zaman bir RTCRtpTransceiver ile aynı anda oluşturulur ve yaşam süreleri boyunca ona bağlı kalırlar. RTCRtpTransceiver’lar, uygulama addTrack() yöntemi aracılığıyla bir MediaStreamTrack’i bir RTCPeerConnection’a bağladığında örtük olarak ya da uygulama addTransceiver yöntemini kullandığında açıkça oluşturulur. Ayrıca, yeni bir medya tanımı içeren bir uzak tanım uygulandığında da oluşturulurlar. Ek olarak, uzak uç noktanın gönderilecek medyası olduğunu belirten bir uzak tanım uygulandığında, ilgili MediaStreamTrack ve RTCRtpReceiver, track olayı aracılığıyla uygulamaya sunulur.

Bir RTCRtpTransceiver’ın başka bir uç nokta ile medya gönderebilmesi ve/veya alabilmesi için, her iki uç noktanın da aynı medya tanımıyla ilişkilendirilmiş bir RTCRtpTransceiver nesnesine sahip olacak şekilde SDP ile müzakere edilmesi gerekir.

Bir teklif oluşturulurken, o uçtaki tüm transceiver’ları kapsayacak kadar medya tanımı üretilecektir. Bu teklif yerel tanım olarak ayarlandığında, ilişkilendirilmemiş tüm transceiver’lar teklifteki medya tanımlarıyla ilişkilendirilir.

Bir teklif uzak tanım olarak ayarlandığında, içindeki ve henüz bir transceiver ile ilişkilendirilmemiş tüm medya tanımları yeni veya mevcut bir transceiver ile ilişkilendirilir. Bu durumda yalnızca addTrack() yöntemiyle oluşturulmuş ve ilişkilendirilmemiş transceiver’lar ilişkilendirilebilir. Buna karşılık, addTransceiver() yöntemiyle oluşturulmuş ve ilişkilendirilmemiş transceiver’lar, uzak teklifte medya tanımları mevcut olsa bile ilişkilendirilmez. Bunun yerine, yeterli sayıda addTrack() ile oluşturulmuş transceiver yoksa, yeni transceiver’lar oluşturulur ve ilişkilendirilir. Bu durum, addTrack() ile oluşturulan ve addTransceiver() ile oluşturulan transceiver’ları, özniteliklerine bakılarak gözlemlenemeyen kritik bir şekilde birbirinden ayırır.

Bir yanıt oluşturulurken, yalnızca teklifte mevcut olan medya tanımları yanıtta listelenebilir. Bunun bir sonucu olarak, uzak teklif ayarlanırken ilişkilendirilmemiş olan tüm transceiver’lar, yerel yanıt ayarlandıktan sonra da ilişkilendirilmemiş olarak kalır. Bu durum, yanıtlayanın bir takip teklifi oluşturmasıyla, başka bir teklif/yanıt değişimini başlatmasıyla ya da addTrack() ile oluşturulmuş transceiver’lar kullanılıyorsa, ilk değişimde yeterli sayıda medya tanımının sunulduğundan emin olunmasıyla giderilebilir.

5.3 RTCRtpReceiver Arayüzü

RTCRtpReceiver arayüzü, bir uygulamanın bir MediaStreamTrack alımını incelemesine olanak tanır.

Bir dize olan kind ile bir RTCRtpReceiver oluşturmak için aşağıdaki adımları izleyin:

  1. receiver yeni bir RTCRtpReceiver nesnesi olsun.
  2. track, [GETUSERMEDIA] tarafından belirtilen yeni bir MediaStreamTrack nesnesi olsun. track’in kaynağı, receiver tarafından sağlanan uzak bir kaynaktır. track.id değerinin kullanıcı aracısı tarafından üretildiğini ve uzak taraftaki herhangi bir iz kimliğiyle eşleşmediğini unutmayın.
  3. track.kind değerini kind olarak başlatın.
  4. track.label değerini, "remote " dizesi ile kind değerinin birleştirilmesi sonucuyla başlatın.
  5. track.readyState değerini live olarak başlatın.
  6. track.muted değerini true olarak başlatın. muted özniteliğinin bir MediaStreamTrack’in medya verisi alıp almadığını nasıl yansıttığına ilişkin MediaStreamTrack bölümüne bakın.
  7. receiver için [[ReceiverTrack]] dahili yuvasını track ile başlatın.
  8. receiver için [[ReceiverTransport]] dahili yuvasını null ile başlatın.
  9. receiver için [[LastStableStateReceiverTransport]] dahili yuvasını null ile başlatın.
  10. receiver için, bu alıcının MediaStreamTrack nesnesinin ilişkilendirildiği MediaStream nesnelerinin bir listesini temsil eden [[AssociatedRemoteMediaStreams]] dahili yuvasını oluşturun ve boş bir liste ile başlatın.
  11. receiver için [[LastStableStateAssociatedRemoteMediaStreams]] dahili yuvasını oluşturun ve boş bir liste ile başlatın.
  12. receiver için, RTCRtpCodecParameters sözlüklerinden oluşan bir listeyi temsil eden [[ReceiveCodecs]] dahili yuvasını oluşturun ve boş bir liste ile başlatın.
  13. receiver için [[LastStableStateReceiveCodecs]] dahili yuvasını oluşturun ve boş bir liste ile başlatın.
  14. receiver için [[JitterBufferTarget]] dahili yuvasını null ile başlatın.
  15. receiver’ı döndürün.
WebIDL[Exposed=Window]
                        interface RTCRtpReceiver {
                          readonly attribute MediaStreamTrack track;
                          readonly attribute RTCDtlsTransport? transport;
                          static RTCRtpCapabilities? getCapabilities(DOMString kind);
                          RTCRtpReceiveParameters getParameters();
                          sequence<RTCRtpContributingSource> getContributingSources();
                          sequence<RTCRtpSynchronizationSource> getSynchronizationSources();
                          Promise<RTCStatsReport> getStats();
                          attribute DOMHighResTimeStamp? jitterBufferTarget;
                        };

Öznitelikler

track türü MediaStreamTrack, salt okunur

track özniteliği, bu RTCRtpReceiver nesnesi receiver ile ilişkilendirilmiş izdir.

track.stop() çağrısının nihai olduğunu, klonların ise etkilenmediğini unutmayın. receiver.track.stop() çağrısı receiver’ı örtük olarak durdurmadığından, Alıcı Raporları gönderilmeye devam eder. Getirildiğinde, öznitelik MUST [[ReceiverTrack]] yuvasının değerini döndürmelidir.

transport türü RTCDtlsTransport, salt okunur, null olabilir

transport özniteliği, alıcının track’i için medyanın RTP paketleri biçiminde alındığı taşıma katmanıdır. RTCDtlsTransport nesnesi oluşturulmadan önce transport özniteliği null olacaktır. Birleştirme (bundling) kullanıldığında, birden fazla RTCRtpReceiver nesnesi tek bir transport paylaşır ve hepsi RTP ve RTCP’yi aynı taşıma üzerinden alır.

Getirildiğinde, öznitelik MUST [[ReceiverTransport]] yuvasının değerini döndürmelidir.

jitterBufferTarget türü DOMHighResTimeStamp, null olabilir

Bu öznitelik, uygulamanın RTCRtpReceiver’ın jitter arabelleğinin tutacağı medya için milisaniye cinsinden hedef bir süre belirtmesine olanak tanır. Bu, kullanıcı aracısı tarafından yapılan arabelleğe alma miktarını etkiler; bu da yeniden iletimleri ve paket kaybı kurtarmasını etkiler. Hedef değerin değiştirilmesi, uygulamaların oynatma gecikmesi ile ağ jitter’ı nedeniyle ses veya video karelerinin tükenmesi riski arasındaki dengeyi kontrol etmesine olanak tanır.

Kullanıcı aracısı, ağ koşulları ve bellek kısıtlamalarına bağlı olarak sağlayabildiği veya sağlamayı tercih ettiği sınırları yansıtan, her an değişebilen, izin verilen bir asgari hedef ve bir azami hedefe MUST sahip olmalıdır.

Bu bir hedef değerdir. Gecikmedeki ortaya çıkan değişim zaman içinde kademeli olarak gözlemlenebilir. Alıcının ortalama jitter arabellek gecikmesi, jitterBufferDelay deltası bölü jitterBufferEmittedCount deltası olarak ölçülebilir.

DTX kullanılsa bile ortalama bir gecikme beklenir. Örneğin, DTX kullanılıyorsa ve sessizlikten sonra paketler akmaya başlarsa, daha büyük hedefler kullanıcı aracısının bu paketleri çalmak yerine arabelleğe almasını etkileyebilir.

Alınırken, bu öznitelik [[JitterBufferTarget]] iç yuvasının değerini MUST döndürmelidir.

Ayarlanırken, kullanıcı aracısı aşağıdaki adımları MUST çalıştırmalıdır:

  1. receiver, ayarlayıcının çağrıldığı RTCRtpReceiver nesnesi olsun.
  2. target, ayarlayıcıya verilen argüman olsun.
  3. target negatifse veya 4000 milisaniyeden büyükse, bir RangeError fırlatın.
  4. receiver nesnesinin [[JitterBufferTarget]] değerini target olarak ayarlayın.
  5. track, receiver nesnesinin [[ReceiverTrack]] değeri olsun.
  6. paralel olarak, aşağıdaki adımları yürütmeye başlayın:
  7. Alttaki sistemi yeni target hakkında veya target null ise bir uygulama tercihi olmadığı konusunda güncelleyin.

Eğer track, ses/görüntü senkronizasyonu için başka bir RTCRtpReceiver nesnesinin parçası ile senkronize ise, kullanıcı aracısı her iki alıcı için de iki alıcının [[JitterBufferTarget]] değerlerinden daha büyük olanını SHOULD kullanmalıdır.

Alttaki sistem bir jitter arabellek hedefi uygularken, gerçek jitter arabellek hedefinin izin verilen en düşük hedef ile izin verilen en yüksek hedef arasında sınırlandırıldığından sürekli olarak emin olacaktır.

Kullanıcı aracısı istenenden farklı bir hedef kullanmak durumunda kalırsa (örneğin ağ koşulları veya fiziksel bellek kısıtlamaları nedeniyle), bu durum [[JitterBufferTarget]] iç yuvasına yansıtılmaz.
  1. Alttaki sistemin jitter arabellek hedefinin değiştirilmesi, kullanıcı deneyimine zarar vermemek için dahili ses veya video arabelleğe almayı kademeli olarak etkilemelidir. Ses örnekleri veya video kareleri, ses/görüntü senkronizasyonu için yapıldığı gibi veya tıkanıklık denetimine yanıt olarak, oynatım öncesinde SHOULD hızlandırılmalı ya da yavaşlatılmalıdır.

Hızlandırma veya yavaşlatma oranı, ağ koşullarına veya alınan sesin türüne (örneğin konuşma veya arka plan gürültüsü) bağlı olarak değişebilir. Paketlerin alındığı varsayıldığında, 1 saniyelik arabelleğe alma elde etmek birkaç saniye MAY sürebilir ancak 30 saniyeden fazla SHOULD sürmemelidir. Hız, ses ve video için farklı MAY olabilir.

Ses için hızlandırma ve yavaşlatma, insertedSamplesForDeceleration ve removedSamplesForAcceleration ile ölçülebilir. Video için bu durum aynı karenin birden fazla kez oluşturulmasına veya karelerin düşürülmesine yol açabilir.

Yöntemler

getCapabilities · static

Statik RTCRtpReceiver.getCapabilities() yöntemi, herhangi bir kaynak, port veya başka bir durum ayırmadan, kullanıcı aracısının verilen türde ortam almaya yönelik desteklediği yetenek türlerini keşfetmenin bir yolunu sağlar.

getCapabilities yöntemi çağrıldığında, kullanıcı aracısı aşağıdaki adımları MUST çalıştırmalıdır:

  1. kind, yöntemin ilk argümanı olsun.
  2. kind ne "video" ne de "audio" ise null döndürün.
  3. codecs üyesi kind için uygulanmış alma codec’leri listesiyle, headerExtensions üyesi ise kind için alma amacıyla uygulanmış başlık uzantıları listesiyle başlatılmış yeni bir RTCRtpCapabilities sözlüğü döndürün.

Verilen kind için uygulanmış alma codec’leri listesi, kullanıcı aracısının verilen türde (video veya ses) ortam almaya yönelik desteklediği codec’lerin en iyimser görünümünü temsil eden, uygulamaya özgü bir RTCRtpCodec sözlükleri listesidir.

Verilen kind için uygulanmış alma başlık uzantıları listesi, kullanıcı aracısının verilen türde (video veya ses) ortam almaya yönelik desteklediği başlık uzantılarının iyimser bir görünümünü temsil eden, uygulamaya özgü bir RTCRtpHeaderExtensionCapability sözlükleri listesidir.

Bu yetenekler, cihaz hakkında genellikle kalıcı ve çapraz-kökenli bilgiler sağlar ve dolayısıyla uygulamanın parmak izi çıkarma yüzeyini artırır. Gizliliğe duyarlı bağlamlarda, kullanıcı aracılarının yalnızca yeteneklerin ortak bir alt kümesini raporlamak gibi azaltıcı önlemleri MAY değerlendirmesi mümkündür. !(Bu bir parmak izi vektörüdür.){width="15" height="21"}

Döndürülen codec yetenekleri, setCodecPreferences() algoritmasını ve hangi girdilerde InvalidModificationError fırlattığını etkiler ve gizlilik azaltmalarının etkili olmasını sağlamak için, alım için müzakere edilen codec’ler hakkında createOffer() ve createAnswer() tarafından ortaya çıkarılan bilgilerle de tutarlı olmalıdır.

getParameters

getParameters() yöntemi, RTCRtpReceiver nesnesinin track öğesinin nasıl çözüldüğüne ilişkin geçerli parametrelerini döndürür.

getParameters çağrıldığında, RTCRtpReceiveParameters sözlüğü aşağıdaki şekilde oluşturulur:

  • headerExtensions dizisi, alıcının şu anda almaya hazır olduğu başlık uzantılarına göre doldurulur.
  • codecs, [[ReceiveCodecs]] iç yuvasının değerine ayarlanır.
Hem yerel hem de uzak açıklama bu codec listesine etki edebilir. Örneğin, üç codec teklif edilirse, alıcı her birini almaya hazır olacaktır ve getParameters çağrısından hepsini döndürecektir. Ancak uzak uç yalnızca iki codec ile yanıt verirse, eksik olan codec artık alıcının onu almaya hazır olması gerekmediğinden getParameters tarafından döndürülmez.
  • rtcp.reducedSize, alıcı şu anda küçültülmüş boyutlu RTCP paketlerini almaya hazırsa true, aksi halde false olarak ayarlanır. rtcp.cname dışarıda bırakılır.

getContributingSources

Bu RTCRtpReceiver tarafından son 10 saniye içinde alınan her benzersiz CSRC tanımlayıcısı için, azalan timestamp sırasına göre bir RTCRtpContributingSource döndürür.

getSynchronizationSources

Bu RTCRtpReceiver tarafından son 10 saniye içinde alınan her benzersiz SSRC tanımlayıcısı için, azalan timestamp sırasına göre bir RTCRtpSynchronizationSource döndürür.

getStats

Yalnızca bu alıcı için istatistikleri toplar ve sonucu eşzamansız olarak raporlar.

getStats() yöntemi çağrıldığında, kullanıcı aracısı aşağıdaki adımları MUST çalıştırmalıdır:

  1. selector, yöntemin çağrıldığı RTCRtpReceiver nesnesi olsun.
  2. p, yeni bir promise olsun ve aşağıdaki adımları paralel olarak çalıştırın:
  3. İstatistik seçim algoritmasına göre selector tarafından belirtilen istatistikleri toplayın.
  4. Toplanan istatistikleri içeren RTCStatsReport nesnesiyle p sözünü çözmek için, geçerli realm’in küresel nesnesi global olarak verilmiş ağ görev kaynağı üzerinde küresel bir görev kuyruğa alın.
  5. p değerini döndürün.

RTCRtpContributingSource ve RTCRtpSynchronizationSource sözlükleri, sırasıyla belirli bir katkı kaynağı (CSRC) veya senkronizasyon kaynağı (SSRC) hakkında bilgi içerir. Bir veya daha fazla RTP paketinden gelen bir ses veya video karesi RTCRtpReceiver nesnesinin MediaStreamTrack öğesine iletildiğinde, kullanıcı aracısı bu paketlerin içeriğine dayanarak RTCRtpContributingSource ve RTCRtpSynchronizationSource sözlükleri için ilgili bilgileri güncellemek üzere bir görev MUST kuyruğa almalıdır. SSRC tanımlayıcısına karşılık gelen RTCRtpSynchronizationSource sözlüğü için ilgili bilgiler her seferinde güncellenir ve bir RTP paketi CSRC tanımlayıcıları içeriyorsa, bu CSRC tanımlayıcılarına karşılık gelen RTCRtpContributingSource sözlükleri için ilgili bilgiler de güncellenir. Kullanıcı aracısı RTP paketlerini artan RTP zaman damgası sırasına göre MUST işlemelidir. Kullanıcı aracısı, önceki 10 saniye içinde RTCRtpReceiver nesnesinin MediaStreamTrack öğesine iletilen RTP paketlerinden gelen bilgileri MUST saklamalıdır.

MediaStreamTrack herhangi bir oynatım hedefinə bağlı olmasa bile, parça sona ermediği sürece getSynchronizationSources ve getContributingSources güncel bilgileri döndürür; RTP paketlerinin çözülmesi için hedefler bir ön koşul değildir.
Uygunluk bölümünde belirtildiği gibi, algoritma şeklinde ifade edilen gereksinimler, sonuç eşdeğer olduğu sürece herhangi bir şekilde uygulanabilir. Dolayısıyla, bir uygulamanın her kare için kelimenin tam anlamıyla bir görev kuyruğa alması gerekmez; önemli olan, tek bir olay döngüsü görevi yürütmesi içinde, belirli bir RTCRtpReceiver için döndürülen tüm RTCRtpSynchronizationSource ve RTCRtpContributingSource sözlüklerinin RTP akışındaki tek bir noktadan gelen bilgileri içermesidir.
WebIDLdictionary RTCRtpContributingSource {
                          required DOMHighResTimeStamp timestamp;
                          required unsigned long source;
                          double audioLevel;
                          required unsigned long rtpTimestamp;
                        };

Sözlük RTCRtpContributingSource Üyeleri

timestamp türü DOMHighResTimeStamp, gerekli

Bu kaynaktan gelen bir RTP paketinden bir karenin en son ne zaman RTCRtpReceiver nesnesinin MediaStreamTrack öğesine iletildiğini gösteren timestamp. timestamp, o andaki Performance.timeOrigin + Performance.now() olarak tanımlanır.

source türü unsigned long, gerekli

Katkı veya senkronizasyon kaynağının CSRC veya SSRC tanımlayıcısı.

audioLevel türü double

Yalnızca ses alıcıları için mevcuttur. Bu, 0..1 (doğrusal) aralığında bir değerdir; 1.0, 0 dBov’u, 0 sessizliği ve 0.5, 0 dBov’dan ses basınç seviyesinde yaklaşık 6 dBSPL değişimini temsil eder.

CSRC’ler için, RFC 6465 başlık uzantısı mevcutsa bu değer [RFC6465]’te tanımlanan seviye değerinden MUST dönüştürülmelidir; aksi halde bu üye MUST bulunmamalıdır.

SSRC’ler için, bu değer [RFC6464]’te tanımlanan seviye değerinden MUST dönüştürülmelidir. Alınan paketlerde RFC 6464 başlık uzantısı mevcut değilse (örneğin karşı uç bir kullanıcı aracısı değilse veya eski bir uç nokta ise), bu değer SHOULD bulunmamalıdır.

Her iki RFC de seviyeyi, sistemin olası olarak kodlayabileceği en yüksek sinyale göre negatif desibel cinsinden ses seviyesini temsil eden, 0 ile 127 arasında tam sayı bir değer olarak tanımlar. Buna göre 0, sistemin kodlayabileceği en yüksek sinyali, 127 ise sessizliği temsil eder.

Bu değerleri doğrusal 0..1 aralığına dönüştürmek için, 127 değeri 0’a dönüştürülür ve diğer tüm değerler şu denklem kullanılarak dönüştürülür: 10^(-rfc_level/20).

rtpTimestamp türü unsigned long, gerekli

timestamp anında oynatılan ortamın, [RFC3550] Bölüm 5.1’de tanımlandığı şekliyle RTP zaman damgası.
WebIDLdictionary RTCRtpSynchronizationSource : RTCRtpContributingSource {};

RTCRtpSynchronizationSource sözlüğünün, yalnızca SSRC’lerde mevcut olan verileri ortaya çıkarmak için belirtim açısından bir genişletme noktası olarak hizmet etmesi beklenmektedir.