
    ePi                         d dl Z d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZmZ e j         G d	 d
e                      ZdS )    N)libav)
ByteSource
bytesource)	err_check)Packet)SubtitleProxySubtitleSet)PyBytes_FromStringAndSize)memcpystrlenc                       e Zd Zededz  fd            Zej        dedz  ddfd            ZddZdede	fdZ
ej        d	e	dz  fd
            Zej        d	e	fd            ZdS )SubtitleCodecContextreturnNc                     | j         j        t          j        k    s| j         j        dk    rdS t          t          j        t          j        | j         j                  | j         j                  S )zAGet the subtitle header data (ASS/SSA format for text subtitles).r   N)ptrsubtitle_headercythonNULLsubtitle_header_sizer
   castp_charselfs    m/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/av/subtitles/codeccontext.pyr   z$SubtitleCodecContext.subtitle_header   s[     H$33x,114(Ktx'?@@H)
 
 	
    datac                    |=t          j        t          j        | j        j                             d| j        _        nt          |          }t          j        t          j	        t          j
        | j        j        |j        t           j        z                       | j        _        | j        j        st          d          t          | j        j        |j        |j                   |j        | j        _        d| _        dS )zSet the subtitle header data.Nr   zCannot allocate subtitle_headerT)libav_freepr   addressr   r   r   r   r   p_uchar
av_realloclengthAV_INPUT_BUFFER_PADDING_SIZEMemoryErrorr   subtitle_header_set)r   r   sources      r   r   z$SubtitleCodecContext.subtitle_header   s     <L(@AABBB,-DH))%%F'-{H,MC$DD ( (DH$ 8+ E!"CDDD48+VZGGG,2MDH)#'   r   c                     | j         r9| j        r4t          j        t	          j        | j         j                             d S d S d S )N)r   r&   r   r   r   r    r   r   s    r   __dealloc__z SubtitleCodecContext.__dealloc__0   sU    8 	C0 	CL(@AABBBBB	C 	C 	C 	Cr   subtitlec                 <   | j         j        st          d          |                     d           d}t	          |j        j        j                  D ]q}|j        j        j        |         }|j	        t          j        k    r|t          |j	                  z  }|j        t          j        k    r|t          |j                  z  }r|dz  }t          j        t          j        t!          j        |                    }|t          j        k    rt%          d          t!          j        | j        ||t          j        |j        j                            }|dk     r$t!          j        |           t-          |d           t/          |          }t1          |j        j        ||           t!          j        |           |j        j        j        |j        _        |j        j        j        |j        _        |j        j        j        |j        j        j        z
  |j        _        |S )z
        Encode a SubtitleSet into a Packet.

        Args:
            subtitle: The SubtitleSet to encode

        Returns:
            A Packet containing the encoded subtitle data
        z Cannot encode with unknown codecFstrictr   i   z)Failed to allocate subtitle encode bufferzavcodec_encode_subtitle())codecr   
ValueErroropenrangeproxystruct	num_rectsrectsassr   r   r   textr   r!   r   	av_mallocr%   avcodec_encode_subtitler    av_freer   r   r   r   ptsdtsend_display_timestart_display_timeduration)r   r*   buf_sizeirectbufretpackets           r   encode_subtitlez$SubtitleCodecContext.encode_subtitle4   s    z~ 	A?@@@			 #$x~,677 	. 	.A>(.q1Dx6;&&F48,,,yFK''F49---D$k&.#-:Q:QRR&+IJJJ5HN8>011	
 
 77Kc6777vzS)))C!.2
!.2
N!2n#67 	

 r   rE   c           	         |t          d          t                      }d}t          t          j        | j        t          j        |j                  t          j        |          |j                             |rt          |          S g S )Nzpacket cannot be Noner   )
RuntimeErrorr   r   r   avcodec_decode_subtitle2r   r   r    r3   r	   r   rE   r2   	got_frames       r   _send_packet_and_recvz*SubtitleCodecContext._send_packet_and_recvj   s    >6777, !	(u|,,y))
	 	
 	
 	
  	&u%%%	r   c           	      X   | j         j        st          d          |                     d           t	                      }d}t          t          j        | j        t          j	        |j
                  t          j	        |          |j                             |rt          |          S dS )z<
        Returns SubtitleSet if you really need it.
        zcannot decode unknown codecFr,   r   N)r.   r   r/   r0   r   r   r   rI   r   r    r3   r	   rJ   s       r   decode2zSubtitleCodecContext.decode2   s    
 z~ 	<:;;;			, !	(u|,,y))
	 	
 	
 	
  	&u%%%tr   )r   N)__name__
__module____qualname__propertybytesr   setterr)   r	   r   rF   r   cfuncrL   ccallrN    r   r   r   r      s       

 

 

 

 X

 (EDL (T ( ( ( (*C C C C4 4 4 4 4 4l \FTM    \( \f    \  r   r   )r   cython.cimportsr   r   cython.cimports.av.bytesourcer   r   cython.cimports.av.errorr   cython.cimports.av.packetr   %cython.cimports.av.subtitles.subtitler   r	   cython.cimports.cpython.bytesr
   cython.cimports.libc.stringr   r   cclassCodecContextr   rW   r   r   <module>ra      s     ( ( ( ( ( ( @ @ @ @ @ @ @ @ . . . . . . , , , , , , L L L L L L L L C C C C C C 6 6 6 6 6 6 6 6 K K K K K< K K K K Kr   