
    qi                         d dl mZmZmZ d dlZddlmZmZ ddlm	Z
 ddlmZ ddlmZ ddlmZmZmZ  G d	 d
      Z G d de      Z G d de      Zy)    )ListOptionalcastN   )	FfiHandle	FfiClient)e2ee_pb2)ffi_pb2)	track_pb2)Track
LocalTrackRemoteTrackc                      e Zd Zdej                  fdZedee   fd       Z	ede
fd       Zede
fd       Zedej                  j                  fd       Zedej                   j                  fd       Zedefd	       Zedefd
       Zedefd       Zede
fd       Zedefd       Zedej4                  j                  fd       Zedeej:                  j                     fd       Zy)TrackPublication
owned_infoc                 |    |j                   | _        d | _        t        |j                  j
                        | _        y N)info_info_trackr   handleid_ffi_handle)selfr   s     O/opt/pipecat/venv/lib/python3.12/site-packages/livekit/rtc/track_publication.py__init__zTrackPublication.__init__   s-    __
'+$Z%6%6%9%9:    returnc                     | j                   S r   )r   r   s    r   trackzTrackPublication.track   s    {{r   c                 .    | j                   j                  S r   )r   sidr    s    r   r#   zTrackPublication.sid#   s    zz~~r   c                 .    | j                   j                  S r   )r   namer    s    r   r%   zTrackPublication.name'       zzr   c                 .    | j                   j                  S r   )r   kindr    s    r   r(   zTrackPublication.kind+   r&   r   c                 .    | j                   j                  S r   )r   sourcer    s    r   r*   zTrackPublication.source/       zz   r   c                 .    | j                   j                  S r   )r   simulcastedr    s    r   r-   zTrackPublication.simulcasted3   s    zz%%%r   c                 .    | j                   j                  S r   )r   widthr    s    r   r/   zTrackPublication.width7       zzr   c                 .    | j                   j                  S r   )r   heightr    s    r   r2   zTrackPublication.height;   r+   r   c                 .    | j                   j                  S r   )r   	mime_typer    s    r   r4   zTrackPublication.mime_type?   s    zz###r   c                 .    | j                   j                  S r   )r   mutedr    s    r   r6   zTrackPublication.mutedC   r0   r   c                 .    | j                   j                  S r   )r   encryption_typer    s    r   r8   z TrackPublication.encryption_typeG   s    zz)))r   c                 @    t        | j                  j                        S r   )listr   audio_featuresr    s    r   r;   zTrackPublication.audio_featuresK   s    DJJ--..r   N)__name__
__module____qualname__proto_trackOwnedTrackPublicationr   propertyr   r   r!   strr#   r%   	TrackKind	ValueTyper(   TrackSourcer*   boolr-   intr/   r2   r4   r6   
proto_e2eeEncryptionTyper8   r   AudioTrackFeaturer;    r   r   r   r      s   ;;#D#D ;
 x   S   c   k++55   !//99 ! ! &T & &  s     ! ! ! $3 $ $  t     *!:!:!D!D * * /[%B%B%L%L M / /r   r   c                   h     e Zd Zdej                  f fdZedee   fd       Z	ddZ
defdZ xZS )LocalTrackPublicationr   c                 V    t         |   |       t        j                         | _        y r   )superr   asyncioFuture_first_subscriptionr   r   	__class__s     r   r   zLocalTrackPublication.__init__Q   s    $9@9I r   r   c                 D    t        t        t           | j                        S r   )r   r   r   r   r    s    r   r!   zLocalTrackPublication.trackU   s    HZ($++66r   c                 ^   K   t        j                  | j                         d {    y 7 wr   )rP   shieldrR   r    s    r   wait_for_subscriptionz+LocalTrackPublication.wait_for_subscriptionY   s     nnT55666s   #-+-c           	      p    d| j                    d| j                   d| j                   d| j                   d	S )Nzrtc.LocalTrackPublication(sid=, name=, kind=	, source=)r#   r%   r(   r*   r    s    r   __repr__zLocalTrackPublication.__repr__\   s=    /z7SWS\S\R]]fgkgrgrfsstuur   )r   N)r<   r=   r>   r?   r@   r   rA   r   r   r!   rX   rB   r_   __classcell__rT   s   @r   rM   rM   P   sJ    J;#D#D J 7x
+ 7 77v# vr   rM   c                        e Zd Zdej                  f fdZedee   fd       Z	ede
fd       Zde
fdZdefdZ xZS )	RemoteTrackPublicationr   c                 2    t         |   |       d| _        y )NF)rO   r   _subscribedrS   s     r   r   zRemoteTrackPublication.__init__a   s    $ r   r   c                 D    t        t        t           | j                        S r   )r   r   r   r   r    s    r   r!   zRemoteTrackPublication.tracke   s    H[)4;;77r   c                     | j                   S r   )re   r    s    r   
subscribedz!RemoteTrackPublication.subscribedi   s    r   rh   c                     t        j                         }||j                  _        | j                  j
                  |j                  _        t        j                  j                  |       y r   )
	proto_ffi
FfiRequestset_subscribed	subscriber   r   publication_handler   instancerequest)r   rh   reqs      r   rl   z%RemoteTrackPublication.set_subscribedm   sL    ""$'1$040@0@0G0G-""3'r   c           	      p    d| j                    d| j                   d| j                   d| j                   d	S )Nzrtc.RemoteTrackPublication(sid=rZ   r[   r\   r]   r^   r    s    r   r_   zRemoteTrackPublication.__repr__s   s=    0
'$))GTXT]T]S^^ghlhshsgttuvvr   )r<   r=   r>   r?   r@   r   rA   r   r   r!   rF   rh   rl   rB   r_   r`   ra   s   @r   rc   rc   `   sj    !;#D#D ! 8x, 8 8  D    ( (w# wr   rc   )typingr   r   r   rP   _ffi_clientr   r   _protor	   rH   r
   rj   r   r?   r!   r   r   r   r   rM   rc   rK   r   r   <module>rv      sK    ( '  - * ( , 1 14/ 4/nv, v w- wr   