§
    Û×jq  ã                   ó’  — g d ¢Z g d¢ZddgZh d£Zd„ eD ¦   «         ZddhZh d£Zd	ed
z  defd„Zded
z  defd„Z	ded
z  defd„Z
d	ed
z  defd„Zded
z  d	ed
z  deeeee         f         fd„Zded
z  d	ed
z  dee         fd„Zded
z  d	ed
z  defd„Zdd
dœded
z  ded
z  ded
z  ded
z  ded
z  dee         d
z  ded
z  fd„Zd
S )))zx265 CRF 28 (Smaller Files)Ú
libx265_28)zx265 CRF 18 (Balanced)Ú
libx265_18)zx264 Level 8 (Balanced)Ú	libx264_8)zx265 CRF 8 (High Quality)Ú	libx265_8)zx264 Level 10 (High Quality)Ú
libx264_10)zx264 LosslessÚlibx264_lossless)zProRes 422 (editing)Ú
prores_422)zDNxHR HQ (editing)Údnxhr_hq))ÚMP4Úmp4)zMOV / QuickTimeÚmov)zMKV / MatroskaÚmkv)zRGBA PNG Frames (ZIP)Úpng_zip)zProRes 4444 (MOV)Úprores_4444>   r   r   r   c                 ó   — h | ]\  }}|’ŒS © r   )Ú.0Ú_Úvalues      úAC:\Users\johnn\OneDrive\Documents\AI\shared\utils\video_codecs.pyú	<setcomp>r      s   € ÐIÐIÐI¡X Q¨˜5ÐIÐIÐIó    r   r	   >   ÚalacÚaac_128Úaac_192Úaac_256Úaac_320Ú	containerNÚreturnc                 óp   — t          | pd¦  «                             ¦   «                              ¦   «         pdS )Nr   ©ÚstrÚstripÚlower©r   s    r   Únormalize_video_containerr%      s2   € ÝˆyÐ!˜EÑ"Ô"×(Ò(Ñ*Ô*×0Ò0Ñ2Ô2Ð;°eÐ;r   Ú	codec_keyc                 óp   — t          | pd¦  «                             ¦   «                              ¦   «         pdS )Nr   r    ©r&   s    r   Únormalize_video_codecr)   !   s2   € ÝˆyÐ'˜KÑ(Ô(×.Ò.Ñ0Ô0×6Ò6Ñ8Ô8ÐG¸KÐGr   c                 óp   — t          | pd¦  «                             ¦   «                              ¦   «         pdS )Nr   r    r(   s    r   Únormalize_video_audio_codecr+   %   s2   € ÝˆyÐ%˜IÑ&Ô&×,Ò,Ñ.Ô.×4Ò4Ñ6Ô6ÐC¸)ÐCr   c                 ó@   — t          | ¦  «        } | t          v rd| › �ndS )Nú.z.mp4)r%   ÚSUPPORTED_VIDEO_CONTAINERSr$   s    r   Úget_video_container_extensionr/   )   s*   € Ý)¨)Ñ4Ô4€IØ'Õ+EÐEÐEˆ?ˆyˆ?ˆ?ˆ?È6ÐQr   c                 óL  — t          | ¦  «        } t          |¦  «        }| dk    rddddgfS | dk    rddddgfS | dk    rd	dg d
¢fS | dk    rd	dg d¢fS | dk    rd	dg d¢fS | dk    r|dk    rddg fS ddddgfS | dk    rddddgfS | dk    rddg d¢fS | dk    rddddgfS ddddgfS )Nr   Úlibx264Úyuv420pú-crfÚ10r   Ú0r   Úlibx265)r3   Ú28ú-x265-paramsúlog-level=noner   )r3   Ú18r8   r9   r   )r3   Ú8r8   r9   r   r   Úffv1Úrgb24Úyuv444pr   Ú	prores_ksÚyuv422p10leú
-profile:vÚ2r   Úyuva444p10le)rA   Ú4z-alpha_bitsÚ16r	   ÚdnxhdÚyuv422p)r)   r%   )r&   r   s     r   Ú_get_video_codec_specrH   .   sP  € Ý% iÑ0Ô0€IÝ)¨)Ñ4Ô4€IØ�KÒÐØ˜) f¨d ^Ð3Ð3Ø�LÒ Ð Ø˜) f¨c ]Ð2Ð2Ø�LÒ Ð Ø˜)Ð%UÐ%UÐ%UÐUÐUØ�LÒ Ð Ø˜)Ð%UÐ%UÐ%UÐUÐUØ�KÒÐØ˜)Ð%TÐ%TÐ%TÐTÐTØÐ&Ò&Ð&Ø˜ÒÐØ˜7 BÐ&Ð&Ø˜) f¨c ]Ð2Ð2Ø�LÒ Ð Ø˜M¨L¸#Ð+>Ð>Ð>Ø�MÒ!Ð!Ø˜NÐ,TÐ,TÐ,TÐTÐTØ�JÒÐØ˜	 L°*Ð#=Ð=Ð=Ø�i &¨$ Ð/Ð/r   c                 ó>   — t          | |¦  «        \  }}}d|g|¢d‘|‘S )Nz-c:vz-pix_fmt©rH   ©r&   r   ÚcodecÚpixel_formatÚoutput_paramss        r   Úget_video_encode_argsrO   H   s2   € Ý)>¸yÈ)Ñ)TÔ)TÑ&€Eˆ<˜Ø�EÐD˜MÐD¨:ÐD°|ÐDÐDr   c                 óF   — t          | |¦  «        \  }}}|d |dg |¢d‘d‘dœS )Né   z-hide_bannerz-nostats)rL   ÚqualityÚpixelformatÚmacro_block_sizerN   rJ   rK   s        r   Úget_imageio_codec_paramsrU   M   sg   € Ý)>¸yÈ)Ñ)TÔ)TÑ&€Eˆ<˜ð  t¸LÐ^_ð  s_ð  uBð  s_ð  DRð  s_ð  T^ð  s_ð  `ð  `ð  `r   )Úallowed_containersÚvideo_codecÚvideo_containerÚaudio_codecÚwidthÚheightrV   c                óŽ  — t          | ¦  «        } t          |¦  «        }t          |¦  «        }|€t          n|}||vrd|› d�S | t          v r|dvrdS |dk    r|dk    rdS |dv r/|t
          vr&|d	k    r|dk    s|                     ¦   «         › d
|› d�S | dk    r,|�*|�(t          |¦  «        dk     st          |¦  «        dk     rdS d S )NzUnsupported video container: r-   >   r   r   zEProRes 422 and DNxHR HQ require the MOV / QuickTime or MKV container.r   Úflacz@FLAC soundtracks require MP4 or MKV; choose AAC or ALAC for MOV.>   r   r   r   z. output does not support audio codec setting 'z'.r	   é   éx   z:DNxHR HQ output requires a resolution of at least 256x120.)r)   r%   r+   ÚCONFIG_VIDEO_CONTAINERSÚPROFESSIONAL_VIDEO_CODECSÚQUICKTIME_AUDIO_CODEC_KEYSÚupperÚint)rW   rX   rY   rZ   r[   rV   Úalloweds          r   Úvalidate_video_output_settingsrf   T   s9  € Ý'¨Ñ4Ô4€KÝ/°Ñ@Ô@€OÝ-¨kÑ:Ô:€KØ);Ð)CÕ%Ð%ÐI[€GØ˜gÐ%Ð%ØA¨ÐAÐAÐAÐAØÕ/Ð/Ð/°OÈ>Ð4YÐ4YØVÐVØ˜%ÒÐ K°6Ò$9Ð$9ØQÐQØ˜.Ð(Ð(¨[Õ@ZÐ-ZÐ-ZÐdsÐw|Òd|Ðd|ð  BMð  QWò  BWð  BWØ!×'Ò'Ñ)Ô)ÐhÐhÐYdÐhÐhÐhÐhØ�jÒ Ð  UÐ%6¸6Ð;MÕSVÐW\ÑS]ÔS]Ð`cÒScÐScÕgjÐkqÑgrÔgrÐuxÒgxÐgxØKÐKØˆ4r   )NNN)ÚSDR_VIDEO_CODEC_CHOICESÚVIDEO_CONTAINER_CHOICESÚRGBA_VIDEO_OUTPUT_CHOICESr.   r`   ra   rb   r!   r%   r)   r+   r/   ÚtupleÚlistrH   rO   ÚdictrU   rd   Úsetrf   r   r   r   ú<module>rn      s§  ðð	ð 	ð 	Ð ðð ð Ð ð )Ø(ðÐ ð
 3Ð2Ð2Ð ØIÐIÐ1HÐIÑIÔIÐ Ø)¨:Ð6Ð ØQÐQÐQÐ ð<¨¨t©ð <¸ð <ð <ð <ð <ðH S¨4¡Zð H°Cð Hð Hð Hð HðD¨3°©:ð D¸#ð Dð Dð Dð DðR¨S°4©Zð R¸Cð Rð Rð Rð Rð
0 S¨4¡Zð 0¸CÀ$¹Jð 0È5ÐQTÐVYÐ[_Ð`cÔ[dÐQdÔKeð 0ð 0ð 0ð 0ð4E S¨4¡Zð E¸CÀ$¹Jð EÈ4ÐPSÌ9ð Eð Eð Eð Eð
`¨¨d©
ð `¸sÀT¹zð `Èdð `ð `ð `ð `ðð  X\ð ð ð °°d±
ð ÈSÐSWÉZð ÐfiÐlpÑfpð ð  ADð  GKñ  AKð ð  \_ð  bfñ  \fð ð  FIð  JMô  FNð  QUñ  FUð ð  adð  gkñ  akð ð ð ð ð ð r   