
    z%i                        	 d dl Z  e j                  ed       ddgZd dlmZ  edd      Zd	ej                  _        d
ej                  _        dej                  _        dej                  _        dej                  _        d Zd Zg Zd Zej#                  e       d Zej#                  e       d Zej#                  e       d Zej#                  e       d Zej#                  e       d Zej#                  e       d Zej#                  e       d Zej#                  e       d Zd Zd Zd Zd Zd Zedk(  r e        yy)    N)      )removewhatwhathdr)
namedtuple
SndHeadersz.filetype framerate nchannels nframes sampwidthzThe value for type indicates the data type
and will be one of the strings 'aifc', 'aiff', 'au','hcom',
'sndr', 'sndt', 'voc', 'wav', '8svx', 'sb', 'ub', or 'ul'.zYThe sampling_rate will be either the actual
value or 0 if unknown or difficult to decode.z^The number of channels or 0 if it cannot be
determined or if the value is difficult to decode.z?The value for frames will be either the number
of frames or -1.zAEither the sample size in bits or
'A' for A-LAW or 'U' for u-LAW.c                     	 t        |       }|S )N)r   )filenameress     :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/sndhdr.pyr   r   8   s    )
(
CJ    c                     	 t        | d      5 }|j                  d      }t        D ]   } |||      }|st        | c cd d d        S  	 d d d        y # 1 sw Y   y xY w)Nrbi   )openreadtestsr	   )r   fhtfr   s        r   r   r   >   sj    "	h	 FF3K 	(BQ(C!3'' 	(   s   &A	AAAc                    	 t        j                         5  t        j                  dt               dd l}d d d        | j                  d      sy | dd dk(  rd}n| dd d	k(  rd
}ny |j                  d       	 j                  |d      }||j                         |j                         |j                         d|j                         z  fS # 1 sw Y   xY w# t        j                  f$ r Y y w xY w)Nignore)categoryr      FORM      s   AIFCaifcs   AIFFaiffr)warningscatch_warningssimplefilterDeprecationWarningr   
startswithseekr   EOFErrorErrorgetframerategetnchannels
getnframesgetsampwidth)r   r   r   fmtas        r   	test_aifcr.   O   s    		 	 	" h1CD << 2w'	
1RG	FF1IIIa !1>>#3LLNA 002 2!  djj! s    C9C CC10C1c                 ,   	 | j                  d      rt        }n| d d dv rt        }ny d} || dd       } || dd       } || dd       } || dd       } || dd	       }d
}	|d
k(  rd}
n|dk(  rd}
n|dk(  rd}
d}	nd}
|	|z  }|r||z  }nd}|||||
fS )Ns   .snd   )s    ds.s   dns.aur   r               U   r   ?)r$   get_long_beget_long_le)r   r   funcfiletypehdr_size	data_sizeencodingrate	nchannelssample_sizesample_bits
frame_sizenframes                r   test_aurG   g   s    ||G	
2A%	%HAaF|HQqWIAbH~H"R>DQr"XIK1}	Q	Qy(JZ'T9fk99r   c                 d    	 | dd dk7  s| dd dk7  ry t        | dd       }|rd	|z  }nd
}d|dddfS )NA   E   s   FSSD      s   HCOM      i"V  r   hcomr5   r9   r   )r:   )r   r   divisorrA   s       r   	test_hcomrQ      sU    Bx7aCjG3!C*%Gw4B!!r   c                     	 | j                  d      sy t        | dd       }d}d|cxk  rdk  r&n n#| |   dk(  rd| |dz      z
  }|rt        d	|z        }d
|dddfS )Ns   Creative Voice Filer3      r   i  r5      r0   g    .Avocr9   r   )r$   get_short_leint)r   r   sbseekrA   ratecodes        r   test_vocrZ      sv    <<23!Br(#FDFSQvY!^6!8$y8+,D$2q  r   c                 R   	 dd l }| j                  d      r| dd dk7  s| dd dk7  ry |j                  d       	 |j                  |d      }d	|j                         |j                         |j                         d|j                         z  fS # t        |j
                  f$ r Y y w xY w)
Nr   s   RIFFr   r   s   WAVEr2   s   fmt r   wav)
waver$   r%   r   r&   r'   r(   r)   r*   r+   )r   r   r]   ws       r   test_wavr_      s    << AaGw$6!Br(g:MFF1IIIa 1>>#Q^^%5<<>1Q^^%5#57 7 djj! s   B B&%B&c                 :    	 | j                  d      r| dd dk7  ry y)Nr   r   r   s   8SVX)8svxr   r5   r   r   )r$   )r   r   s     r   	test_8svxrb      s$    << AaGw$6r   c                 n    	 | j                  d      r#t        | dd       }t        | dd       }d|d|dfS y )Ns   SOUNDr   r   r3   rS   sndtr5   )r$   r;   rV   )r   r   nsamplesrA   s       r   	test_sndtrf      sG    ||Hq2w'AbH%tQ!++ r   c                 p    	 | j                  d      r$t        | dd       }d|cxk  rdk  r
n y d|ddd	fS y y )
Ns     r7   r0   i  ia  sndrr5   r9   r   )r$   rV   )r   r   rA   s      r   	test_sndrri      sI    ||GAaF#4 5 4B)) ! r   c                 B    | d   dz  | d   dz  z  | d   dz  z  | d   z  S )Nr   r4   r5   r2   r7   r   r    bs    r   r:   r:      3    aDBJ1Q42:&!A$!)4qt;;r   c                 B    | d   dz  | d   dz  z  | d   dz  z  | d   z  S )Nr   r4   r7   r2   r5   r   r   rk   rl   s    r   r;   r;      rn   r   c                     | d   dz  | d   z  S )Nr   r   r5   rk   rl   s    r   get_short_berq          aDAI1r   c                     | d   dz  | d   z  S )Nr5   r   r   rk   rl   s    r   rV   rV      rr   r   c                  \   dd l } d}| j                  dd  r#| j                  d   dk(  r| j                  dd= d}	 | j                  dd  rt        | j                  dd  |d       y t        dg|d       y # t        $ r/ | j                  j                  d       | j                  d       Y y w xY w)Nr   r5   z-rr7   .z
[Interrupted]
)sysargvtestallKeyboardInterruptstderrwriteexit)rv   	recursives     r   testr~      s    I
xx|t+HHQqSM	88AB<CHHQRL)Q/SE9a( 

,-s   )A3 $A3 35B+*B+c                    dd l }dd l}| D ]  }|j                  j                  |      rwt	        |dz   d       |s|rWt	        d       dd l}|j                  |j                  j                  |j                  |      d            }t        ||d       t	        d       t	        |dz   d       |j                  j                          	 t	        t        |              y # t        $ r t	        d	       Y w xY w)
Nr   z/: )endzrecursing down:*z*** directory (use -r) ***:z*** not found ***)rv   ospathisdirprintglobjoinescaperx   stdoutflushr   OSError)listr}   toplevelrv   r   r   r   namess           r   rx   rx      s     +77=="(T/s+H'(		"'',,t{{8/Dc"JKy!,23(S.c*JJ+d8n%+  +)*+s   C""C98C9__main__)r    _deprecated__name____all__collectionsr   r	   r=   __doc__	frameraterB   nframes	sampwidthr   r   r   r.   appendrG   rQ   rZ   r_   rb   rf   ri   r:   r;   rq   rV   r~   rx   rk   r   r   <module>r      sk  :    Xg .
 9
 "HJ
 >
   !1
   !6
   
   !#
    	2* Y :> W 	" Y 
! X 7 X  Y , Y * Y <<+* zF r   