Ë
    ÿÍ:j,  ã                   ó   — d dl Z d dlZd dlZd dlmZmZmZmZ d dlZd dl	Z	ddl
mZ ddlmZ eeee j                  f   Z	 d'dedee   ded	efd
„Z	 	 	 d(dededed	ee   fd„Z	 	 d)dddee   ded	ej*                  fd„Z	 	 	 	 	 	 d*dedededededee   ded	eej*                  ef   fd„Zdej0                  d	efd„Zd	efd„Zdeded	efd„Zd„ Zdee   dee   dee   dee   fd„Z	 	 	 	 	 	 d+dedej*                  d ededee   dee   dee   ded!ee	j<                  j>                     d	dfd"„Z ded	efd#„Z!deded	efd$„Z" G d%„ d&e«      Z#y),é    N)ÚBinaryIOÚOptionalÚTupleÚUnioné   )ÚBackend)ÚAudioMetaDataÚsrcÚformatÚbuffer_sizeÚreturnc                 óˆ  — t         j                  j                  | |d |«      }|j                  |j                  «      }|j
                  dk(  rt        |«      }|j                  d«      }n|j
                  }t        t        |j                  «      ||j                  |j                  |j                  j                  «       «      S )Nr   r   )Ú
torchaudioÚioÚStreamReaderÚget_src_stream_infoÚdefault_audio_streamÚ
num_framesÚ_load_audioÚsizer	   ÚintÚsample_rateÚnum_channelsÚbits_per_sampleÚcodecÚupper)r
   r   r   ÚsÚsinfoÚwaveformr   s          úo/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchaudio/_backend/ffmpeg.pyÚ
info_audior!      s¤   € ô
 	�‰×"Ñ" 3¨°°kÓB€AØ×!Ñ! !×"8Ñ"8Ó9€EØ×Ñ˜1ÒÜ˜q“>ˆØ—]‘] 1Ó%‰
à×%Ñ%ˆ
ÜÜˆE×ÑÓØØ×ÑØ×ÑØ�‰×ÑÓóð ó    Úframe_offsetr   Úconvertc                 óF  — | dk  rt        dj                  | «      «      ‚|dk(  s|dk  rt        dj                  |«      «      ‚| dk(  r|dk(  r|sy d}| dk(  r	|dk(  r|r|S |dkD  rdj                  | | |z   «      }ndj                  | «      }|s|S dj                  ||«      S )	Nr   z>Invalid argument: frame_offset must be non-negative. Found: {}éÿÿÿÿzDInvalid argument: num_frames must be -1 or greater than 0. Found: {}zaformat=sample_fmts=fltpz#atrim=start_sample={}:end_sample={}zatrim=start_sample={}z{},{})ÚRuntimeErrorr   )r#   r   r$   ÚaformatÚatrims        r    Ú_get_load_filterr*   $   sÂ   € ð
 �aÒÜÐ[×bÑbÐcoÓpÓqÐqØ�Q‚˜* rš/ÜÐa×hÑhÐisÓtÓuÐuð �qÒ˜Z¨2Ò-±gØà(€GØ�qÒ˜Z¨2Ò-±'Øˆà�A‚~Ø5×<Ñ<¸\È<ÐZdÑKdÓe‰à'×.Ñ.¨|Ó<ˆÙØˆØ�>‰>˜% Ó)Ð)r"   r   ztorchaudio.io.StreamReaderÚfilterÚchannels_firstc                 óÂ   — | j                  dd|¬«       | j                  «        | j                  «       d   }|€t        d«      ‚|j                  }|r|j
                  S |S )Nr&   )Úfilter_descr   zFailed to decode audio.)Úadd_audio_streamÚprocess_all_packetsÚ
pop_chunksr'   Ú_elemÚT)r   r+   r,   Úchunkr   s        r    r   r   ?   s`   € ð
 ×Ñ�r˜2¨6ÐÔ2Ø×ÑÔØ�L‰L‹N˜1Ñ€EØ€}ÜÐ4Ó5Ð5Ø�{‰{€HÙ'ˆ8�:‰:Ð5¨XÐ5r"   c                 ó  — t        | d«      r|dk(  rd}t        j                  j                  | |d |«      }t	        |j                  |j                  «      j                  «      }t        |||«      }	t        ||	|«      }
|
|fS )NÚreadÚvorbisÚogg)
Úhasattrr   r   r   r   r   r   r   r*   r   )r
   r#   r   r$   r,   r   r   r   r   r+   r   s              r    Ú
load_audior:   M   s|   € ô ˆs�FÔ ¨(Ò 2ØˆÜ�‰×"Ñ" 3¨°°kÓB€AÜ�a×+Ñ+¨A×,BÑ,BÓC×OÑOÓP€KÜ˜l¨J¸Ó@€FÜ˜1˜f nÓ5€HØ�[Ð Ð r"   Údtypec                 óB  — t         j                  dt         j                  dt         j                  dt         j                  dt         j
                  dt         j                  di}|j                  | «      }|€)t        d| › dt        |j                  «       «      › d	�«      ‚|S )
NÚu8Ús16Ús32Ús64ÚfltÚdblzNo format found for dtype z; dtype must be one of ú.)ÚtorchÚuint8Úint16Úint32Úint64Úfloat32Úfloat64ÚgetÚ
ValueErrorÚlistÚkeys)r;   Údtype_to_formatr   s      r    Ú_get_sample_formatrP   _   s‰   € ä�‰�TÜ�‰�UÜ�‰�UÜ�‰�UÜ�‰�uÜ�‰�uð€Oð × Ñ  Ó'€FØ€~ÜÐ5°e°WÐ<SÔTXÐYh×YmÑYmÓYoÓTpÐSqÐqrÐsÓtÐtØ€Mr"   c                  ó,   — t         j                  dk(  ryy)NÚlittleÚleÚbe)ÚsysÚ	byteorder© r"   r    Ú_native_endiannessrX   n   s   € Ü
‡}�}˜Ò Øàr"   Úencodingr   c                 ó‚  — |dvrt        d|› d�«      ‚t        «       }| s|sd|› �S |dk(  ryd|› |› �S | dk(  r|sd	}|dk(  rt        d
«      ‚d|› |› �S | dk(  r|dv ryt        d«      ‚| dk(  r|sd}|dv rd|› |› �S t        d«      ‚| dk(  r|dv ryt        d«      ‚| dk(  r|dv ryt        d«      ‚t        d| › d�«      ‚)N>   Né   é   é   é    é@   zInvalid bits_per_sample z for WAV encoding.Úpcm_s16r[   Úpcm_u8Úpcm_sÚPCM_Sr\   z4For WAV signed PCM, 8-bit encoding is not supported.ÚPCM_U)Nr[   z7For WAV unsigned PCM, only 8-bit encoding is supported.ÚPCM_Fr^   )r^   r_   Úpcm_fz?For WAV float PCM, only 32- and 64-bit encodings are supported.ÚULAWÚ	pcm_mulawz5For WAV PCM mu-law, only 8-bit encoding is supported.ÚALAWÚpcm_alawz4For WAV PCM A-law, only 8-bit encoding is supported.zWAV encoding z is not supported.)rL   rX   )rY   r   Ú
endiannesss      r    Ú_get_encoder_for_wavrl   u   s8  € ØÐ7Ñ7ÜÐ3°OÐ3DÐDVÐWÓXÐXÜ#Ó%€JÙÙà˜Z˜LÐ)Ð)Ø˜aÒØØ�Ð'¨
 |Ð4Ð4Ø�7ÒÙØ ˆOØ˜aÒÜÐSÓTÐTØ�Ð'¨
 |Ð4Ð4Ø�7ÒØ˜iÑ'ØÜÐRÓSÐSØ�7ÒÙØ ˆOØ˜hÑ&Ø˜?Ð+¨J¨<Ð8Ð8ÜÐZÓ[Ð[Ø�6ÒØ˜iÑ'ØÜÐPÓQÐQØ�6ÒØ˜iÑ'ØÜÐOÓPÐPÜ
�} X JÐ.@ÐAÓ
BÐBr"   c                 ó<   — | �| dk(  ry| dk(  ryt        d| › d�«      ‚)Nr\   r>   r]   r?   z8FLAC only supports bits_per_sample values of 16 and 24 (z specified).)rL   )Úbpss    r    Ú_get_flac_sample_fmtro   ›   s1   € Ø
€{�c˜R’iØØ
ˆb‚yØÜ
ÐOÐPSÈuÐT`ÐaÓ
bÐbr"   Úextrn   c                 óÔ   ‡ ‡— ˆ ˆfd„} |d«      s |d«      rd}t        ||«      }d }n; |d«      rd}d}d }n,‰}d }d } |d«      rt        |«      } |d«      rt        |«      }|||fS )Nc                 ó(   •— ‰| k(  xs ‰d u xr ‰| k(  S ©NrW   )Úspecrp   r   s    €€r    Ú_typez_parse_save_args.<locals>._typeº   s!   ø€ ð ˜‰~ÒA &¨D .Ò"@°S¸D±[ÐAr"   ÚwavÚambr7   r8   Úflac)rl   ro   )rp   r   rY   rn   ru   ÚmuxerÚencoderÚ
sample_fmts   ``      r    Ú_parse_save_argsr|   £   s†   ù€ õ.Bñ
 ˆU„|‘u˜U”|ð ˆÜ& x°Ó5ˆØ‰
Ù	ˆxŒð ˆØˆØ‰
àˆØˆØˆ
Ù�Œ=Ü-¨cÓ2ˆJÙ�Œ<Ü-¨cÓ2ˆJØ�'˜:Ð%Ð%r"   Úurir   Úcompressionc	                 ó@  — d }	t        | d«      r|€\t        d«      ‚t        j                  j	                  | «      } t        | «      j                  d«      dd  x}
r|
d   j                  «       }	t        |	|||«      \  }}}|r|j                  }t        j                  j                  | ||¬«      }|j                  ||j                  d«      t        |j                   «      |||¬«       |j#                  «       5  |j%                  d|«       d d d «       y # 1 sw Y   y xY w)	NÚwritez0'format' is required when saving to file object.rC   r   r&   )r   r   )r   r   rz   Úencoder_formatÚcodec_configr   )r9   r'   ÚosÚpathÚnormpathÚstrÚsplitÚlowerr|   r3   r   r   ÚStreamWriterr/   r   rP   r;   ÚopenÚwrite_audio_chunk)r}   r
   r   r,   r   rY   r   r   r~   rp   Útokensry   rz   Úenc_fmtr   s                  r    Ú
save_audiorŽ   Þ   s  € ð €CÜˆs�GÔØˆ>ÜÐQÓRÐRä�g‰g×Ñ˜sÓ#ˆÜ˜“X—^‘^ CÓ(¨¨Ð,Ð,ˆ6Ð,Ø˜‘*×"Ñ"Ó$ˆCä.¨s°F¸HÀoÓVÑ€Eˆ7�GáØ�e‰eˆä�‰×"Ñ" 3¨uÀ+Ð"ÓN€AØ×ÑØØ—X‘X˜b“\Ü! #§)¡)Ó,ØØØ ð ô ð 
�‰‹ñ $Ø	×Ñ˜A˜sÔ#÷$÷ $ñ $ús   Ã8DÄDc                 ó<   — dD ]
  }|| v sŒ|c S  | dk(  ry| dk(  ry| S )N)rc   rd   re   Ú	PCM_MULAWrg   ÚPCM_ALAWri   rW   )rY   Údsts     r    Ú_map_encodingr“     s:   € Ø*ò ˆØ�(Š?ØŠJðð �;ÒØØ	�ZÒ	ØØ€Or"   c                 ót   — t        j                  d| «      x}rt        |j                  d«      «      S | dv ry|S )NzPCM_\w(\d+)\w*r   )r‘   r�   r[   )ÚreÚsearchr   Úgroup)rY   r   Úms      r    Ú_get_bits_per_sampler™     s=   € Ü�I‰IÐ'¨Ó2Ð2€qÐ2Ü�1—7‘7˜1“:‹ÐØ	Ð.Ñ	.ØØÐr"   c                   óŠ  — e Zd Zeddedee   dedefd„«       Z	e	 	 	 	 	 	 ddededed	e
d
e
dee   dedeej                  ef   fd„«       Ze	 	 	 	 	 	 ddedej                  ded
e
dee   dee   dee   dedeeej"                  j$                  eef      ddfd„«       Zededee   de
fd„«       Zededee   de
fd„«       Zy)ÚFFmpegBackendr}   r   r   r   c                 óž   — t        | ||«      }t        |j                  |j                  «      |_        t	        |j                  «      |_        |S rs   )r!   r™   rY   r   r“   )r}   r   r   Úmetadatas       r    ÚinfozFFmpegBackend.info  sC   € ä˜c 6¨;Ó7ˆÜ#7¸×8IÑ8IÈ8×KcÑKcÓ#dˆÔ Ü)¨(×*;Ñ*;Ó<ˆÔØˆr"   Nr#   r   Ú	normalizer,   c                 ó"   — t        | |||||«      S rs   )r:   )r}   r#   r   rŸ   r,   r   r   s          r    ÚloadzFFmpegBackend.load  s   € ô ˜#˜|¨Z¸ÀNÐTZÓ[Ð[r"   r
   r   rY   r   r~   c	                 ó¸   — t        |t        j                  j                  t	        d «      f«      st        ddt	        |«      › �«      ‚t        | ||||||||«	       y )NzLFFmpeg backend expects non-`None` value for argument `compression` to be of z=type `torchaudio.io.CodecConfig`, but received value of type )Ú
isinstancer   r   ÚCodecConfigÚtyperL   rŽ   )	r}   r
   r   r,   r   rY   r   r   r~   s	            r    ÚsavezFFmpegBackend.save+  sh   € ô ˜+¬
¯©×(AÑ(AÄ4ÈÃ:Ð'NÔOÜØ^ØOÔPTÐU`ÓPaÐObÐcóð ô 	ØØØØØØØØØõ
	
r"   c                  ó   — y©NTrW   ©r}   r   s     r    Ú
can_decodezFFmpegBackend.can_decodeH  ó   € àr"   c                  ó   — yr¨   rW   r©   s     r    Ú
can_encodezFFmpegBackend.can_encodeL  r«   r"   ©é   ©r   r&   TTNr¯   ©TNNNr¯   N)Ú__name__Ú
__module__Ú__qualname__ÚstaticmethodÚ	InputTyper   r†   r   r	   rž   Úboolr   rD   ÚTensorr¡   r   r   r   r¤   Úfloatr¦   rª   r­   rW   r"   r    r›   r›     sÒ  „ Øñ�)ð  X¨c¡]ð Àð ÐP]ò ó ðð ð ØØØ#Ø $Øñ	\Øð	\àð	\ð ð	\ð ð		\ð
 ð	\ð ˜‘ð	\ð ð	\ð 
ˆu�|‰|˜SÐ Ñ	!ò	\ó ð	\ð ð
  $Ø $Ø"&Ø)-ØØNRñ
Øð
à�\‰\ð
ð ð
ð ð	
ð
 ˜‘ð
ð ˜3‘-ð
ð " #™ð
ð ð
ð ˜e J§M¡M×$=Ñ$=¸uÀcÐ$IÑJÑKð
ð 
ò
ó ð
ð8 ð˜	ð ¨8°C©=ð ¸Tò ó ðð ð˜	ð ¨8°C©=ð ¸Tò ó ñr"   r›   r®   )r   r&   Tr¨   r°   r±   )$rƒ   r•   rU   Útypingr   r   r   r   rD   r   Úbackendr   Úcommonr	   r†   ÚPathLiker¶   r   r!   r·   r*   r¸   r   r:   r;   rP   rX   rl   ro   r|   r   r¤   rŽ   r“   r™   r›   rW   r"   r    ú<module>r¾      s£  ðÛ 	Û 	Û 
ß 3Ó 3ã Û å Ý !à�(˜C §¡Ð,Ñ-€	ð ñØ	ðà�S‰Mðð ðð ó	ð, ØØñ*Øð*àð*ð ð*ð ˆc�]ó	*ð: !Øñ6Ø#ð6à�S‰Mð6ð ð6ð ‡\�\ó	6ð  ØØØØ Øñ!Ø	ð!àð!ð ð!ð ð	!ð
 ð!ð �S‰Mð!ð ð!ð ˆ5�<‰<˜ÐÑó!ð$˜eŸk™kð ¨có ð˜Có ð#C 3ð #C¸ð #CÀó #CòLcð8&Ø	�#‰ð8&à�S‰Mð8&ð �s‰mð8&ð 
�#‰ó	8&ð~  Ø Ø"Ø%)ØØ7;ñ#$Ø	ð#$à	�‰ð#$ð ð#$ð ð	#$ð
 �S‰Mð#$ð �s‰mð#$ð ˜c‘]ð#$ð ð#$ð ˜*Ÿ-™-×3Ñ3Ñ4ð#$ð 
ó#$ðL˜Cð  Có ð 3ð ¸ð Àó ô7�Gõ 7r"   