o
    iG                     @   s   d dl mZmZmZ ddlmZmZ ddlmZ	 ddlm
Z ddlmZ er2ddlmZ ddlmZ G d	d
 d
ZG dd deZG dd deZG dd deZG dd deZeeef Zeeef Zeeef Zeeef ZdS )    )TYPE_CHECKINGListUnion   )	FfiHandle	FfiClient)ffi_pb2)	track_pb2)	stats_pb2)AudioSource)VideoSourcec                   @   s   e Zd ZdejfddZedefddZedefddZ	edej
jfd	d
ZedejjfddZedefddZdeej fddZdS )Track
owned_infoc                 C   s   |j | _t|jj| _d S N)info_infor   handleid_ffi_handle)selfr    r   S/var/www/html/livekit_bhavya/venv/lib/python3.10/site-packages/livekit/rtc/track.py__init__   s   zTrack.__init__returnc                 C      | j jS r   )r   sidr   r   r   r   r         z	Track.sidc                 C   r   r   )r   namer   r   r   r   r   #   r   z
Track.namec                 C   r   r   )r   kindr   r   r   r   r   '   r   z
Track.kindc                 C   r   r   )r   stream_stater   r   r   r   r    +   r   zTrack.stream_statec                 C   r   r   )r   mutedr   r   r   r   r!   /   r   zTrack.mutedc              	      s   t  }| jj|j_tjj	 }ztj
| | fddI d H }W tjj| ntjj| w |jjr?t|jjt|jjS )Nc                    s   | j j j jkS r   )	get_statsasync_id)erespr   r   <lambda>;   s    z!Track.get_stats.<locals>.<lambda>)	proto_ffi
FfiRequestr   r   r"   track_handler   instancequeue	subscriberequestwait_forunsubscribeerror	Exceptionliststats)r   reqr,   cbr   r%   r   r"   3   s   
 zTrack.get_statsN)__name__
__module____qualname__proto_track
OwnedTrackr   propertystrr   r   	TrackKind	ValueTyper   StreamStater    boolr!   r   proto_statsRtcStatsr"   r   r   r   r   r      s    r   c                       \   e Zd Zdejf fddZededddd fdd	Zd
d Z	dd Z
defddZ  ZS )LocalAudioTrackr   c                       t  | d S r   superr   r   r   	__class__r   r   r   G      zLocalAudioTrack.__init__r   sourcer   r   c                 C   4   t  }| |j_|jj|j_tj	|}t
|jjS r   )r(   r)   create_audio_trackr   r   r   source_handler   r+   r.   rE   trackr   rM   r5   r&   r   r   r   rO   J   
   z"LocalAudioTrack.create_audio_trackc                 C   4   t  }| jj|j_d|j_tj	| d| j
_d S NTr(   r)   r   r   local_track_muter*   muter   r+   r.   r   r!   r   r5   r   r   r   rX   S   
   zLocalAudioTrack.mutec                 C   rT   NFrV   rY   r   r   r   unmuteZ   rZ   zLocalAudioTrack.unmutec                 C      d| j  d| j dS )Nzrtc.LocalAudioTrack(sid=, name=)r   r   r   r   r   r   __repr__a      zLocalAudioTrack.__repr__)r7   r8   r9   r:   r;   r   staticmethodr=   rO   rX   r\   ra   __classcell__r   r   rJ   r   rE   F       rE   c                       rD   )LocalVideoTrackr   c                    rF   r   rG   rI   rJ   r   r   r   f   rL   zLocalVideoTrack.__init__r   rM   r   r   c                 C   rN   r   )r(   r)   create_video_trackr   r   r   rP   r   r+   r.   rf   rQ   rR   r   r   r   rg   i   rS   z"LocalVideoTrack.create_video_trackc                 C   rT   rU   rV   rY   r   r   r   rX   r   rZ   zLocalVideoTrack.mutec                 C   rT   r[   rV   rY   r   r   r   r\   y   rZ   zLocalVideoTrack.unmutec                 C   r]   )Nzrtc.LocalVideoTrack(sid=r^   r_   r`   r   r   r   r   ra      rb   zLocalVideoTrack.__repr__)r7   r8   r9   r:   r;   r   rc   r=   rg   rX   r\   ra   rd   r   r   rJ   r   rf   e   re   rf   c                       2   e Zd Zdejf fddZdefddZ  ZS )RemoteAudioTrackr   c                    rF   r   rG   rI   rJ   r   r   r      rL   zRemoteAudioTrack.__init__r   c                 C   r]   )Nzrtc.RemoteAudioTrack(sid=r^   r_   r`   r   r   r   r   ra      rb   zRemoteAudioTrack.__repr__	r7   r8   r9   r:   r;   r   r=   ra   rd   r   r   rJ   r   ri          ri   c                       rh   )RemoteVideoTrackr   c                    rF   r   rG   rI   rJ   r   r   r      rL   zRemoteVideoTrack.__init__r   c                 C   r]   )Nzrtc.RemoteVideoTrack(sid=r^   r_   r`   r   r   r   r   ra      rb   zRemoteVideoTrack.__repr__rj   r   r   rJ   r   rl      rk   rl   N)typingr   r   r   _ffi_clientr   r   _protor   r(   r	   r:   r
   rB   audio_sourcer   video_sourcer   r   rE   rf   ri   rl   
LocalTrackRemoteTrack
AudioTrack
VideoTrackr   r   r   r   <module>   s"   ,