
    W|h                         S SK r S SKrS SKrS SKrS SKJr  S SKrSSKJ	r	J
r
  \ R                  " S5      rS r\" 5       S 5       rS rSS	 jrS
 rS rg)    N)	lru_cache   )FNAME_PER_PLATFORMget_platformimageio_ffmpegc                  ~    [         R                  " SS5      n U (       a  U $ [        5       n U (       a  U $ [        S5      e)a%  
Get the ffmpeg executable file. This can be the binary defined by
the IMAGEIO_FFMPEG_EXE environment variable, the binary distributed
with imageio-ffmpeg, an ffmpeg binary installed with conda, or the
system ffmpeg (in that order). A RuntimeError is raised if no valid
ffmpeg could be found.
IMAGEIO_FFMPEG_EXENzpNo ffmpeg exe could be found. Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.)osgetenv_get_ffmpeg_exeRuntimeError)exes    O/home/james-whalen/.local/lib/python3.13/site-packages/imageio_ffmpeg/_utils.pyget_ffmpeg_exer      sC     ))($
/C

 
C

 	>     c                     [        5       n [        R                  R                  [	        5       [
        R                  " U S5      5      nU(       a6  [        R                  R                  U5      (       a  [        U5      (       a  U$ U R                  S5      (       a1  [        R                  R                  [        R                  SSS5      nO/[        R                  R                  [        R                  SS5      nU(       a6  [        R                  R                  U5      (       a  [        U5      (       a  U$ Sn[        U5      (       a  U$ g )N winLibrarybinz
ffmpeg.exeffmpeg)r   r
   pathjoin_get_bin_dirr   getisfile_is_valid_exe
startswithsysprefix)platr   s     r   r   r   '   s    >D '',,|~'9'='=dB'G
HC
rww~~c""}S'9'9
 uggll3::y%Fggll3::uh7
rww~~c""}S'9'9
 CS
r   c                  R   [         R                  S:  a!  [        R                  R	                  SS5      n OA[        R                  R                  S5      S-  n[        R                  R                  U5      n U  n S S S 5        [        WR                  5      $ ! , (       d  f       N#= f)N)   	   zimageio_ffmpeg.binariesz__init__.py)	r   version_info	importlib	resourcesr   filesas_filestrparent)contextrefr   s      r   r   r   A   s    
& %%**+DmT!!''(AB]R%%--c2	D 
 t{{ 
s   9B
B&c                    S nS nSn[         R                  R                  S5      (       a8  [        R                  " 5       nU=R
                  [        R                  -  sl        U (       a7  [         R                  R                  S5      (       a  SnO[        R                  nSn[        R                  " SS5      R                  5       U;  a  S nUUUS.$ )Nr   r   i   )r   0falseno IMAGEIO_FFMPEG_NO_PREVENT_SIGINTr   )startupinfocreationflags
preexec_fn)r   platformr   
subprocessSTARTUPINFOdwFlagsSTARTF_USESHOWWINDOWr
   setpgrpr   lower)prevent_sigintr3   r5   r4   falsys        r   _popen_kwargsr?   M   s    KJM
||u%% ,,.z>>> <<""5))&MJ$E	yy3R8>>@M
 #&  r   c                     U S/n [        [        R                  S5       n[        R                  " U4U[        R
                  S.[        5       D6  S S S 5        g! , (       d  f       g= f! [        [        [        R                  4 a     gf = f)N-versionw)stdoutstderrTF)
openr
   devnullr7   
check_callSTDOUTr?   OSError
ValueErrorCalledProcessError)r   cmdnulls      r   r   r   i   s    

C"**c"d!! ):):>Ko # 	 #" Z!>!>? s.   A+ 1AA+ 
A($A+ (A+ +BBc                  D   [        5       n [        R                  " U S/40 [        5       D6R	                  SS5      S   nUR                  SS9R                  5       nUR	                  SS5      S   R                  5       R	                  S	S5      S   R                  5       nU$ )
z>
Get the version of the used ffmpeg executable (as a string).
rA      
r   r   ignore)errorsversion )r   r7   check_outputr?   splitdecodestriplstrip)r   linerR   s      r   get_ffmpeg_versionr[   u   s     
C""C#4HHNNq	D ;;h;'--/DjjA&r*11399#qA!DJJLGNr   )F)loggingr
   r7   r   	functoolsr   importlib.resourcesr&   _definitionsr   r   	getLoggerloggerr   r   r   r?   r   r[    r   r   <module>rc      sZ     	  
   :			+	,4  2	8	
r   