o
    Æi›
  ã                   @   sÌ   d Z ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ zddlmZmZ eƒ ZW n ey8   i ZY nw ejdejdejd	iZejejgZejgZd
edefdd„ZdededeeB fdd„ZdS )zFInterface for *Pixel Data* encoding, not intended to be used directly.é    )Úcast)ÚEncodeRunner)ÚPhotometricInterpretation)Ú_passes_version_check©Úuid)Úget_pixel_data_encodersÚEncoder)Únumpyúpylibjpeg>=2.0zpylibjpeg-openjpeg>=2.2)r
   r   zpylibjpeg-rle>=2.0r   Úreturnc                 C   s6   t ddƒsdS | tv rt ddƒS | tv rt ddƒS dS )zeReturn ``True`` if a pixel data encoder for `uid` is available for use,
    ``False`` otherwise.
    Ú	pylibjpeg)é   r   FÚopenjpeg)r   r   Úrle)r   Ú_OPENJPEG_SYNTAXESÚ_RLE_SYNTAXESr   © r   úW/mnt/sdb/aimis/docanh/lib/python3.10/site-packages/pydicom/pixels/encoders/pylibjpeg.pyÚis_available   s   


r   ÚsrcÚrunnerc                 C   sò   t tt|j ƒ}|j}|tjkrt t|| fi |j¤ŽƒS t|jƒ}|j	t
jkr+d|d< | d| dd¡¡}| d| dd¡¡}|tjkrW|sH|rLtdƒ‚t t|| fi |¤ŽƒS |s_|s_td	ƒ‚|rg|rgtd
ƒ‚|| fi |¤||dœ¤Ž}t t|ƒS )z&Return `src` as an encoded codestream.FÚuse_mctÚcompression_ratiosÚj2k_crNÚsignal_noise_ratiosÚj2k_psnrz„A lossy configuration option is being used with a transfer syntax of 'JPEG 2000 Lossless' - did you mean to use 'JPEG 2000' instead?zdThe 'JPEG 2000' transfer syntax requires a lossy configuration option such as 'j2k_cr' or 'j2k_psnr'zqMultiple lossy configuration options are being used with the 'JPEG 2000' transfer syntax, please specify only one)r   r   )r   r	   Ú	_ENCODERSÚtransfer_syntaxr   ÚRLELosslessÚbytesÚoptionsÚdictÚphotometric_interpretationÚPIÚRGBÚpopÚgetÚJPEG2000LosslessÚ
ValueError)r   r   ÚencoderÚtsyntaxÚoptsÚcrÚpsnrÚcsr   r   r   Ú_encode_frame,   s2   


ÿÿÿ
r0   N)Ú__doc__Útypingr   Úpydicom.pixels.encoders.baser   Úpydicom.pixels.commonr   r$   Úpydicom.pixels.utilsr   Úpydicomr   Úpylibjpeg.utilsr   r	   r   ÚImportErrorr(   ÚJPEG2000r   ÚENCODER_DEPENDENCIESr   r   ÚstrÚboolr   r    Ú	bytearrayr0   r   r   r   r   Ú<module>   s(   
ÿý