xaac-rs 0.2.0

High-level Rust AAC/xHE-AAC encoder and decoder bindings built on libxaac
Documentation
�

iY�i@����ddlmZddlZddlmZddlZddlmZd
d�Zdd�Z	e
dk(r	ee	ej���y#e
$r!Zeeej ��ed	��dZ[wwxYw)�)�annotationsN)�Path)�WavFilec��	y)NzVusage: python examples/python/convert_wav_to_aac.py <input.wav> <output.aac> [bitrate]�r��%examples/python/convert_wav_to_aac.py�usager
s��	-�rc�.�t|�dvrtt���t|d�}t|d�}t|�dk(rt	|d�nd}tj|j��}tj�}tjj|_|j|_
|j|_|j|_|j xsd|_||_|j$|_tj(j*|_tj.|�}|j1�}|j3d�5}d}	|	|zt|j4�kr]|j7|j4|	|	|z�}
|j9|
j:�|	|z
}	|	|zt|j4�kr�]|	t|j4�krC|j=|j4|	d�}|j9|j>j:�ddd�tAd	|j�d
|j�d|j$�d|�d
�	tBjD��y#1swY�PxYw)N)����r
ri�r�wbzencoded z Hz, z channels, z-bit PCM to ADTS AAC at z bps��file)#�len�
ValueErrorr
r�intr�parse�
read_bytes�xaac_rs�
EncoderConfig�Profile�AacLc�profile�sample_rate�native_sample_rate�channels�channel_mask�bitrate�bits_per_sample�
pcm_word_size�OutputFormat�Adts�
output_format�Encoder�input_frame_bytes�open�pcm_data�encode_pcm_bytes�write�data�encode_pcm_bytes_with_padding�packet�print�sys�stderr)�argv�
input_path�output_pathr!�wav�config�encoder�frame_bytes�output_file�offsetr/�frames            r	�mainr=s"��
�4�y������!�!��d�1�g��J��t�A�w�-�K�!�$�i�1�n�c�$�q�'�l�'�G�
�-�-�
�-�-�/�
0�C�
�
"�
"�
$�F��_�_�*�*�F�N����F�� #���F���l�l�F�O��*�*�/�a�F���F�N��.�.�F��"�/�/�4�4�F���o�o�f�%�G��+�+�-�K�	�	�	�$�	�	1�;����{�"�c�#�,�,�&7�7��-�-�c�l�l�6�F�[�DX�.Y�Z�F����f�k�k�*��k�!�F��{�"�c�#�,�,�&7�7�
�C����%�%��9�9�#�,�,�v�w�:O�P�E����e�l�l�/�/�0�	1�
�
�3�?�?�#�5�����k����
�7��y��	F�
�Z�Z��

�!	1�	1�s�&A:J�!AJ�J�__main__rr)�return�str)r3z	list[str]r?r)�
__future__rr1�pathlibrr�_wavrr
r=�__name__�
SystemExitr3�	Exception�excr0r2rrr	�<module>rHsp��"�
�����'
�T�z�����c�h�h��(�(�����
�c��
�
�#���m����s�A�A(�A#�#A(