
    \bjU$                       d dl mZ d dlZd dlmZ d dlmZ ddlmZm	Z	m
Z
mZ 	 ddlmZ dZn# e$ r d	ZY nw xY wd
Zd Zd&dZd'dZd(dZ G d de
j
                  Zd)dZ	 d*d+d"Z e	j        ej        ee           er\ e	j        ej        e            e	j        ej        e            e	j        ej        d#d$g            e	j        ej        d%           dS dS ),    )annotationsN)BytesIO)IO   )ExifTagsImage	ImageFileImageSequence)_avifTFauto
codec_namestrreturn
str | Nonec                   t          j                    }|                    d          D ]W}|                    d          d         | k    r6|                    d          d                             d          d         c S Xd S )Nz, z [r   : )r   codec_versionssplit)r   versionsversions      G/home/drrone/.local/lib/python3.11/site-packages/PIL/AvifImagePlugin.pyget_codec_versionr      s    #%%H>>$'' 8 8==q!Z//==%%b)//44Q7777 04    prefixbytes
bool | strc                Z    | dd         dk    rdS | dd         }|dv rt           s	 dS dS dS )	N      s   ftypF   )s   avifs   aviss   mif1s   msf1zEimage file could not be identified because AVIF support not installedT)	SUPPORTED)r   major_brands     r   _acceptr%      s\    ac{gu2,K     	W  t5r   intc                     t           rt           S t          t          d          r!t          t          j        d                    S t          j                    pdS )Nsched_getaffinityr   r   )DEFAULT_MAX_THREADShasattroslenr(   	cpu_count r   r   _get_default_max_threadsr/   8   sM     #""r&'' #2'**+++|~~""r   c                  L     e Zd ZdZdZdZddZdd	Zd fdZddZ	ddZ
 xZS )AvifImageFileAVIFz
AVIF imager   r   Nonec                :   t           sd}t          |          t          dk    r*t          j        t                    sd}t          |          | j        J t          j        | j                                        t          t                                | _
        | j
                                        \  | _        | _        | _        }}}}| j        dk    | _        |r
|| j        d<   |r
|| j        d<   |dk    s|rt#          j                    }|r;|                    |           |                    t*          j        j        d          }nd}||k    r(||t*          j        j        <   |                                }|r
|| j        d<   |                     d           d S )	NzAimage file could not be opened because AVIF support not installedr   zInvalid opening codecr   icc_profilexmpexifr   )r#   SyntaxErrorDECODE_CODEC_CHOICEr   decoder_codec_available
ValueErrorfpAvifDecoderreadr/   _decoderget_info_sizen_frames_modeis_animatedinfor   Exifloadgetr   BaseOrientationtobytesseek)selfmsgiccr7   exif_orientationr6   	exif_dataoriginal_orientations           r   _openzAvifImageFile._openF   s    	#UCc"""&((1N2
 2
( *CS//!w""")GLLNN$&&
 
 M""$$ 	P
DM4:sD:JC  =1, 	+'*DIm$ 	#"DIeq  D 
I )t$$$'0}}X]5NPQ'R'R$$'($#7777G	(-34 ((** 	% $DIf		!r   framer&   c                    |                      |          sd S || _        t          j        dd| j        z   d| j                  g| _        d S )Nraw)r   r   r   )_seek_check_AvifImageFile__framer	   _Tilesizemodetile)rM   rT   s     r   rL   zAvifImageFile.seekq   sM    && 	F _UFTY,>49MMN			r   Image.core.PixelAccess | Nonec                   | j         r| j                            | j                  \  }}}}t	          d||z  z            | j        d<   t	          d||z  z            | j        d<   | j        r | j        r| j                                         t          |          | _        t                                                      S )Ni  	timestampduration)r\   r?   	get_framerX   roundrE   r<   _exclusive_fpcloser   superrG   )rM   data	timescalepts_in_timescalesduration_in_timescales	__class__s        r   rG   zAvifImageFile.loady   s    9 
	$ ''55 GD).0F &+43Dy3P+Q%R%RDIk"$)$2H92T*U$V$VDIj!w  4-  dmmDGww||~~r   posc                    d S Nr.   )rM   rk   s     r   	load_seekzAvifImageFile.load_seek   s    r   c                    | j         S rm   )rX   )rM   s    r   tellzAvifImageFile.tell   s
    |r   )r   r3   )rT   r&   r   r3   )r   r]   )rk   r&   r   r3   r   r&   )__name__
__module____qualname__formatformat_descriptionrX   rS   rL   rG   rn   rp   __classcell__)rj   s   @r   r1   r1   A   s        F%G) ) ) )VO O O O               r   r1   imImage.Imager<   	IO[bytes]filenamestr | bytesr3   c                ,    t          | ||d           d S )NT)save_all)_save)rx   r<   r{   s      r   	_save_allr      s    	"b(T******r   r~   boolc                
  # | j                                         }|r$t          |                    dg                     }ng }h d#t	          #fd| g|z   D                       }|                    dd          }t          |t                    r|dk     s|dk    rd}t          |          |                    d	d          }	|                    d
|rdnd          }
|                    dd          }|                    dt                                }|                    dd          }|dk    r%t          j
        |          sd}t          |          |                    dd          }|                    dd          }|                    dd          }t          |                    dd                    }t          |                    d||cxk    odk    nc                     }|                    d| j                            d                    }d}|                    d          x}rt          |t          j                  r|}n(t          j                    }|                    |           t           j        j        |v r=|                    t           j        j                  }|r|                                nd}n.t          |t          j                  r|                                }|                    d          }t          |t*                    r|                    d          }|                    d           }|xt          |t.                    r|                                }	 t3          |          }t5          d! |D                       }n# t6          $ r d"}Y nw xY w|rd#}t          |          t          j        | j        |
||||||||||pd|pd||pd|          }d}d}|                                 }| ot?          | d$d           }	 | g|z   D ]}tA          j!        |          D ]} | j"        }!|j"        d%vr-|j#        rd&}!n|j"        #v rd'}!nd(}!| $                    |!          } t          |	t          t2          f          r	|	|         }n|	}|%                    |                     d)|!          || j        |!|           |dz  }|s n	 | &                    |           n# | &                    |           w xY w|'                                }"|"d*}tQ          |          |)                    |"           d S )+Nappend_images>   I;16I;16BI;16LI;16N1FILc              3  X   K   | ]$}t          j        |          D ]}|j        v V  %d S rm   )r
   Iteratorr[   ).0imsrT   grayscale_modess      r   	<genexpr>z_save.<locals>.<genexpr>   s`        "+C00   	
o%      r   qualityK   r   d   zInvalid quality settingr`   subsamplingz4:0:0z4:2:0speed   max_threadscodecr   zInvalid saving codecrangefull	tile_rows	tile_colsalpha_premultipliedF
autotilingr5   r   r7   r   r6   zutf-8advancedc              3  h   K   | ]-}t          |t                     pt          |          d k    V  .dS )   N)
isinstancetupler,   )r   vs     r   r   z_save.<locals>.<genexpr>   s>      TTajE222Ac!ffkTTTTTTr   Tzcadvanced codec options must be a dict of key-value string pairs or a series of key-value two-tuplesrD   >   r   RGBRGBAr   r   r   rV   z1cannot write file as AVIF (encoder returned None))*encoderinfocopylistrH   allr   r&   r;   r/   r   encoder_codec_availabler   rE   r   rF   rG   r   rI   rJ   poprK   r   encodedictitemsr   any	TypeErrorAvifEncoderrZ   rp   getattrr
   r   r[   has_transparency_dataconvertaddrL   finishOSErrorwrite)$rx   r<   r{   r~   rE   r   	grayscaler   rN   r`   r   r   r   r   range_tile_rows_log2tile_cols_log2r   r   r5   rP   r7   rQ   r6   r   invalidenc	frame_idxframe_durationcur_idxis_single_framer   rT   rawmoderf   r   s$                                      @r   r   r      s    >  D TXXor::;;MMMO    4-'    I hhy"%%Ggs## w{{gmm'ooxx
A&&H((=Y*K''GLLKHHWa  E((=*B*D*DEEKHHWf%%Eu<UCC$ooXXgv&&FXXk1--NXXk1--Ntxx(=uEEFFdhh|^~-R-R-R-RQR-R-R-R-RSSTTJ((="'++m*D*DEEKxxt 
'dEJ'' 	!II
INN4   =$	11(}}X]-FGG*3<9$$&&&DDej)) 	'$$&&D
((5//C#s "jj!!xx
##Hh%% 	(~~''H	UXH TT8TTTTTGG  	 	 	GGG	  	"<  S//! 

s
s! C( INggiiG''QM50Q0Q,QO$4-'  	  	C&/44  *8#7770 ("(_44"%"'!MM'22E hu66 .%-i%8NN%-N MM%11"J#   Q	 E? 	F 	 ::<<D|AcllHHTNNNNNs   7N   N/.N/!B?S7 7Tz.avifz.avifsz
image/avif)r   r   r   r   )r   r   r   r   rq   )rx   ry   r<   rz   r{   r|   r   r3   )F)
rx   ry   r<   rz   r{   r|   r~   r   r   r3   )
__future__r   r+   ior   typingr    r   r   r	   r
   r   r#   ImportErrorr9   r)   r   r%   r/   r1   r   r   register_openru   register_saveregister_save_allregister_extensionsregister_mimer.   r   r   <module>r      s   " " " " " " 				             7 7 7 7 7 7 7 7 7 7 7 7II   III
         4# # # #K K K K KI' K K K\+ + + +
 MRL L L L L^  M(- A A A <E,e444EM0)<<<Em2Wh4GHHHE,l;;;;;	< <s   - 77