
    Cc2                         d Z g dZddlmZ ddlmZmZmZ ddlm	Z	m
Z
  G d de      Zg dZ G d	 d
e      Z G d de      Z G d de      ZeZy)zWavPack reading and writing.

WavPack is a lossless format that uses APEv2 tags. Read

* http://www.wavpack.com/
* http://www.wavpack.com/file_format.txt

for more information.
)WavPackOpendelete    )
StreamInfo)	APEv2Fileerrorr   )cdataconvert_errorc                       e Zd Zy)WavPackHeaderErrorN)__name__
__module____qualname__     1/usr/lib/python3/dist-packages/mutagen/wavpack.pyr   r      s    r   r   )ip  i@  i%  i+  i.  i>  i"V  i]  i }  iD  i  i   iX i w i  c                   :    e Zd Zd Ze eee      d               Zy)_WavPackHeaderc
                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        y )N)	
block_sizeversiontrack_noindex_nototal_samplesblock_indexblock_samplesflagscrc)
selfr   r   r   r   r   r   r   r   r   s
             r   __init__z_WavPackHeader.__init__#   sF     %  *&*
r   c                 :   |j                  d      }t        |      dk7  s|j                  d      st        d|z        t	        j
                  |dd       }t	        j                  |dd       }t        |dd       }t        |dd       }t	        j
                  |dd	       }|d
k(  rd}t	        j
                  |d	d       }t	        j
                  |dd       }	t	        j
                  |dd       }
t	        j
                  |dd       }t        |||||||	|
|	      S )z1A new _WavPackHeader or raises WavPackHeaderError       wvpkznot a WavPack header: %r      
            l             )	readlen
startswithr   r	   uint_le	ushort_leordr   )clsfileobjheaderr   r   r   r   samplesr   r   r   r   s               r   from_fileobjz_WavPackHeader.from_fileobj0   s   
 b!v;"F$5$5g$>$%?&%HII]]6!A;/
//&2,/vb}%vb}%--r".k!GmmF2bM2fRm4fRm,mmF2bM*j'8X%{M5#O 	Or   N)	r   r   r   r    classmethodr
   IOErrorr   r8   r   r   r   r   r   !   s-     7./O 0 Or   r   c                       e Zd ZdZd Zd Zy)WavPackInfoa:  WavPack stream information.

    Attributes:
        channels (int): number of audio channels (1 or 2)
        length (float): file length in seconds, as a float
        sample_rate (int): audio sampling rate in Hz
        bits_per_sample (int): audio sample size
        version (int): WavPack stream version
    c                    	 t         j                  |      }|j                  | _        t	        |j
                  dz        xs d| _        t        |j
                  dz	  dz     | _        |j
                  dz  dz   dz  | _	        |j
                  d	z	  dz  r| xj                  dz  c_        d| _	        |j                  d
k(  s|j                  dk7  rU|j                  }	 |j                  |j                  dz
  dz   d       	 t         j                  |      }||j                  z  }H|j                  }t        |      | j                  z  | _        y # t        $ r t        d      w xY w# t        $ r Y Aw xY w)Nznot a WavPack filer$                  r%      r*   r   r"   )r   r8   r   r   boolr   channelsRATESsample_ratebits_per_sampler   r   r   seekr   floatlength)r   r5   r6   r7   s       r   r    zWavPackInfo.__init__T   sh   	;#009F ~~V\\A-.3! &,,""4!;<!'!1Q 6!; LLB!#!#$D 2%););q)@ **GV..3a7;+88AF 6///  **GGnt'7'779 " 	;$%9::	;, * s   E =E$ E!$	E0/E0c                 8    d| j                   | j                  fz  S )NzWavPack, %.2f seconds, %d Hz)rK   rG   )r   s    r   pprintzWavPackInfo.pprintu   s&    .$++262B2B2D D 	Dr   N)r   r   r   __doc__r    rM   r   r   r   r<   r<   I   s    8BDr   r<   c                   *    e Zd ZdZeZdgZed        Zy)r   zsWavPack(filething)

    Arguments:
        filething (filething)

    Attributes:
        info (`WavPackInfo`)
    zaudio/x-wavpackc                 *    |j                  d      dz  S )Nr#   r>   )r0   )filenamer5   r6   s      r   scorezWavPack.score   s      )A--r   N)	r   r   r   rN   r<   _Info_mimesstaticmethodrR   r   r   r   r   r   z   s(     E F. .r   r   N)rN   __all__mutagenr   mutagen.apev2r   r   r   mutagen._utilr	   r
   r   rF   objectr   r<   r   r   r   r   r   <module>r[      sa    (  2 2 .	 		-%OV %OP.D* .Db.i .$ r   