o
    diG                     @   s  U d dl mZmZ ddlmZmZmZmZmZm	Z	m
Z
 ddlmZmZ ddlmZmZmZmZ ddlmZmZ ddlmZmZmZ dd	lmZmZ dd
lmZmZm Z  edddddZ!edddd dZ"edddddZ#eddddde!e"e#gg dZ$e%e&e'e f e(d< e
ddde
dddge
ddde
dddgdZ)e%e&e'e
 f e(d< d.dd Z*d!ed"e+de+fd#d$Z,d%e&defd&d'Z-d!edefd(d)Z.d!edefd*d+Z/d!eeef de0fd,d-Z1e*  dS )/    )OptionalUnion   )ParametersDictRTCRtcpFeedbackRTCRtpCapabilitiesRTCRtpCodecCapabilityRTCRtpCodecParametersRTCRtpHeaderExtensionCapabilityRTCRtpHeaderExtensionParameters   )DecoderEncoder)PcmaDecoderPcmaEncoderPcmuDecoderPcmuEncoder)G722DecoderG722Encoder)H264DecoderH264Encoderh264_depayload)OpusDecoderOpusEncoder)
Vp8Decoder
Vp8Encodervp8_depayloadz
audio/G722i@  	   )mimeType	clockRatechannelspayloadTypez
audio/PCMUz
audio/PCMA   
audio/opusi  `   )audiovideoCODECSz#urn:ietf:params:rtp-hdrext:sdes:mid)iduriz+urn:ietf:params:rtp-hdrext:ssrc-audio-level   z:http://www.webrtc.org/experiments/rtp-hdrext/abs-send-timeHEADER_EXTENSIONSreturnNc                     sN   d 	 ddt dtt dd f fdd} | d dD ]}| d	d
d
|d qd S )Na   r   
parametersr,   c                    sd   d}t d  t| | tddtdddtddg|pi dtd	| d
 d idg7  <  d7  d S )Ni_ r&   nack)typepli)r0   	parameterz	goog-remb)r   r   r!   rtcpFeedbackr.   z	video/rtxr   apt)r   r   r!   r.   r   )r'   r	   r   )r   r.   r   
dynamic_pt J/home/ubuntu/.local/lib/python3.10/site-packages/aiortc/codecs/__init__.pyadd_video_codecD   s(   
z$init_codecs.<locals>.add_video_codecz	video/VP8)42001f42e01fz
video/H2641)zlevel-asymmetry-allowedzpacketization-modezprofile-level-id)N)strr   r   )r9   profile_level_idr7   r5   r8   init_codecsA   s&   r?   codecpayloadc                 C   s(   | j dkr	t|S | j dkrt|S |S )NVP8H264)namer   r   )r@   rA   r7   r7   r8   	depayloadk   s
   

rE   kindc              	   C   s   | t vrtd|  g }d}t |  D ]%}t|s)|t|j|j|j|jd q|s8|t|j|jd d}qg }t	|  D ]}|t
|jd q?t||dS )Nz*cannot get capabilities for unknown media F)r   r   r    r.   )r   r   T)r)   )codecsheaderExtensions)r'   
ValueErroris_rtxappendr   r   r   r    r.   r+   r
   r)   r   )rF   rG   	rtx_addedparamsrH   	extensionr7   r7   r8   get_capabilitiest   s4   rO   c                 C   n   | j  }|dkrt S |dkrt S |dkrt S |dkr!t S |dkr(t S |dkr/t S td| d)	N
audio/g722r#   
audio/pcma
audio/pcmu
video/h264	video/vp8z No decoder found for MIME type ``)	r   lowerr   r   r   r   r   r   rI   r@   r   r7   r7   r8   get_decoder      
rY   c                 C   rP   )	NrQ   r#   rR   rS   rT   rU   z No encoder found for MIME type `rV   )	r   rW   r   r   r   r   r   r   rI   rX   r7   r7   r8   get_encoder   rZ   r[   c                 C   s   | j  dkS )Nrtx)rD   rW   )r@   r7   r7   r8   rJ      s   rJ   )r,   N)2typingr   r   rtcrtpparametersr   r   r   r   r	   r
   r   baser   r   g711r   r   r   r   g722r   r   h264r   r   r   opusr   r   vpxr   r   r   
G722_CODEC
PCMU_CODEC
PCMA_CODECr'   dictr=   list__annotations__r+   r?   bytesrE   rO   rY   r[   boolrJ   r7   r7   r7   r8   <module>   s`    $		
*	 
