
    \j;              
          d dl mZmZ d dlZd dlmc mZ d dlm	Z	 d dl
mZmZ d dlmZ  G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Zej(                  ej*                  dededej.                  dej.                  fd              Zej(                  ej*                  dedej2                  dej2                  fd              Zej(                  d ej6                  ej8                        dej.                  dej.                  fd       Zej<                  ej>                   G d d                    Z y)    )IntEnumIntFlagN)	err_check)VideoFormatget_pix_fmt)alloc_video_framec                   
   e Zd ZU eZded<   eZded<   eZ	ded<   e
Zded<   eZd	ed
<   eZded<   eZded<   eZded<   eZded<   eZded<   eZded<   eZded<   eZded<   eZded<   e Z!ded<   e"Z#ded <   e$Z%d!ed"<   e&Z'd#ed$<   y%)&InterpolationzFast bilinearFAST_BILINEARBilinearBILINEARz2-tap cubic B-splineBICUBICExperimentalXzNearest neighbor / pointPOINTzArea averagingAREAzBicubic luma / Bilinear chromaBICUBLINzGaussian approximationGAUSSzUnwindowed SincSINCz3-tap sinc/sincLANCZOSzUnwindowed natural cubic splineSPLINEz#Emit verbose scaler info to the log
PRINT_INFOzFull chroma interpolationFULL_CHR_H_INTzFull chroma inputFULL_CHR_H_INPz
Direct BGR
DIRECT_BGRzAccurate roundingACCURATE_RNDzBit-exact outputBITEXACTzError diffusion ditherERROR_DIFFUSIONN)(__name__
__module____qualname__SWS_FAST_BILINEARr   __annotations__SWS_BILINEARr   SWS_BICUBICr   SWS_Xr   	SWS_POINTr   SWS_AREAr   SWS_BICUBLINr   	SWS_GAUSSr   SWS_SINCr   SWS_LANCZOSr   
SWS_SPLINEr   SWS_PRINT_INFOr   SWS_FULL_CHR_H_INTr   SWS_FULL_CHR_H_INPr   SWS_DIRECT_BGRr   SWS_ACCURATE_RNDr   SWS_BITEXACTr   SWS_ERROR_DIFFUSIONr        G/root/.hermes/venv/lib/python3.12/site-packages/av/video/reformatter.pyr
   r
   
   s    %6M?6'Hj'&1G#1A~(1E%1%D
%1=H.=&/E#/&D
&!,G,0:F-:8FJ5F2DN/D*<N'<-J-(8L%8#/H /0CO-Cr6   r
   c                   L    e Zd ZeZeZeZe	Z
eZeZeZeZeZeZeZe	ZeZeZeZeZy)
ColorspaceN)r   r    r!   SWS_CS_ITU709ITU709
SWS_CS_FCCFCCSWS_CS_ITU601ITU601SWS_CS_ITU624ITU624SWS_CS_SMPTE170M	SMPTE170MSWS_CS_SMPTE240M	SMPTE240MSWS_CS_DEFAULTDEFAULTSWS_CS_BT2020BT2020itu709fccitu601itu624	smpte170m	smpte240mdefaultbt2020r5   r6   r7   r9   r9      sR    F
CFF I IGFF
CFF I IGFr6   r9   c                       e Zd ZU ej                  Zded<   ej                  Zded<   ej                  Z
ded<   ej                  Zded<   y	)

ColorRangeUnspecifiedUNSPECIFIEDz%MPEG (limited) YUV range, 219*2^(n-8)MPEGzJPEG (full) YUV range, 2^n-1JPEGzNot part of ABINBN)r   r    r!   libAVCOL_RANGE_UNSPECIFIEDrU   r#   AVCOL_RANGE_MPEGrV   AVCOL_RANGE_JPEGrW   AVCOL_RANGE_NBrX   r5   r6   r7   rS   rS   3   sE    !$!<!<K<474H4HD
1H+.+?+?D
(?..B.r6   rS   c                   T   e Zd ZU dZej
                  Zded<   ej                  Z	ded<   ej                  Zded<   ej                  Zded	<   ej                  Zd
ed<   ej                   Zded<   ej$                  Zded<   ej(                  Zded<   ej,                  Zded<   ej0                  Zded<   ej4                  Zded<   ej8                  Zded<   ej<                  Zded<   ej@                  Z!ded<   ejD                  Z#ded<   ejH                  Z%d ed!<   ejL                  Z'd"ed#<   y$)%ColorTrczuTransfer characteristic (gamma curve) of a video frame.

    Maps to FFmpeg's ``AVColorTransferCharacteristic``.
    zBT.709BT709rT   rU   zGamma 2.2 (BT.470M)GAMMA22zGamma 2.8 (BT.470BG)GAMMA28z
SMPTE 170MrC   
SMPTE 240MrE   LinearLINEARzLogarithmic (100:1 range)LOGz"Logarithmic (100*sqrt(10):1 range)LOG_SQRTzIEC 61966-2-4 (sRGB)IEC61966_2_4zBT.1361 extended colour gamut
BT1361_ECGzIEC 61966-2-1 (sYCC)IEC61966_2_1zBT.2020 10-bit	BT2020_10zBT.2020 12-bit	BT2020_12zSMPTE 2084 (PQ, HDR10)	SMPTE2084zSMPTE 428-1SMPTE428zARIB STD-B67 (HLG)ARIB_STD_B67N)(r   r    r!   __doc__rY   AVCOL_TRC_BT709r`   r#   AVCOL_TRC_UNSPECIFIEDrU   AVCOL_TRC_GAMMA22ra   AVCOL_TRC_GAMMA28rb   AVCOL_TRC_SMPTE170MrC   AVCOL_TRC_SMPTE240MrE   AVCOL_TRC_LINEARre   AVCOL_TRC_LOGrf   AVCOL_TRC_LOG_SQRTrg   AVCOL_TRC_IEC61966_2_4rh   AVCOL_TRC_BT1361_ECGri   AVCOL_TRC_IEC61966_2_1rj   AVCOL_TRC_BT2020_10rk   AVCOL_TRC_BT2020_12rl   AVCOL_TRC_SMPTE2084rm   AVCOL_TRC_SMPTE428rn   AVCOL_TRC_ARIB_STD_B67ro   r5   r6   r7   r_   r_   :   s$   
 ))E8)!$!:!:K:%(%:%:G":&)&;&;G#;!55I|5!55I|5++FH+'*'8'8C	$8585K5KH2K+.+E+EL(E252J2JJ/J+.+E+EL(E"%"9"9I9"%"9"9I9*-*A*AI'A!44Hm4),)C)CL&Cr6   r_   c                      e Zd ZU dZej
                  Zded<   ej                  Z	ded<   ej                  Zded<   ej                  Zded	<   ej                  Zd
ed<   ej                   Zded<   ej$                  Zded<   ej(                  Zded<   ej,                  Zded<   ej0                  Zded<   ej4                  Zded<   ej8                  Zded<   y)ColorPrimarieszRColor primaries of a video frame.

    Maps to FFmpeg's ``AVColorPrimaries``.
    zBT.709 / sRGB / sYCCr`   rT   rU   zBT.470MBT470MzBT.470BG / BT.601-6 625BT470BGzSMPTE 170M / BT.601-6 525rC   rc   rE   zGeneric film (Illuminant C)FILMzBT.2020 / BT.2100rI   zSMPTE 428-1 / XYZrn   zSMPTE 431-2 (DCI-P3)SMPTE431zSMPTE 432-1 (Display P3)SMPTE432zEBU 3213-E / JEDEC P22EBU3213N)r   r    r!   rp   rY   AVCOL_PRI_BT709r`   r#   AVCOL_PRI_UNSPECIFIEDrU   AVCOL_PRI_BT470Mr   AVCOL_PRI_BT470BGr   AVCOL_PRI_SMPTE170MrC   AVCOL_PRI_SMPTE240MrE   AVCOL_PRI_FILMr   AVCOL_PRI_BT2020rI   AVCOL_PRI_SMPTE428rn   AVCOL_PRI_SMPTE431r   AVCOL_PRI_SMPTE432r   AVCOL_PRI_EBU3213r   r5   r6   r7   r   r   S   s    
 %($7$7E!7!$!:!:K:,,FI,),)>)>G&>-0-D-DI*D!55I|5*-*<*<D
'<"%"6"6F6$'$:$:H!:'*'='=H$=+.+A+AH(A(+(=(=G%=r6   r   value
enum_classrP   returnc                     | |S t        | |      r| j                  S t        | t              r| S t        | t              r||    j                  S t	        d|  d|j
                         )NzCannot convert z to )
isinstancer   intstr
ValueErrorr   )r   r   rP   s      r7   _resolve_enum_valuer   g   sk     }%${{%%% &&&
ugT*2E2E1FG
HHr6   formatc                     | |S t        | t              r$t        j                  t        |       j                  S t        |       S N)r   r   cythoncastpix_fmtr   )r   rP   s     r7   _resolve_formatr   x   s:     ~&+&{{;/777vr6   frame
colorspacecolor_rangec                    |t         j                  k7  r)t        j                  t         j                  |      | _        |t        k(  rt         j                  | _        y|t        k(  rt         j                  | _        y|t        k(  rt         j                  | _        y|t        k(  rt         j                  | _        y|t        k(  rt         j                   | _        yy)zCSet AVFrame colorspace/range from SWS_CS_* and AVColorRange values.N)rY   rZ   r   r   AVColorRanger   r:   AVCOL_SPC_BT709r   r<   AVCOL_SPC_FCCr>   AVCOL_SPC_SMPTE170MrD   AVCOL_SPC_SMPTE240MrH   AVCOL_SPC_BT2020_NCL)r   r   r   s      r7   _set_frame_colorspacer      s     c111"KK(8(8+F
 ]"..	z	!,,	}	$22	'	'22	}	$33 
%r6   c                   l   e Zd ZdZd Z	 	 	 	 	 	 	 	 	 	 	 ddefdZej                  dedej                  dej                  de
j                  d	ej                  d
ej                  dej                  dej                  dej                  dej                  dej                  dej                  fd       Zy)VideoReformatterzAn object for reformatting size and pixel format of :class:`.VideoFrame`.

    It is most efficient to have a reformatter object for each set of parameters
    you will use as calling :meth:`reformat` will reconfigure the internal object.

    c                     t         j                  5  t        t        j                  | j                               d d d        y # 1 sw Y   y xY wr   )r   nogilsws_free_contextaddressptr)selfs    r7   __dealloc__zVideoReformatter.__dealloc__   s3    \\ 	7V^^DHH56	7 	7 	7s   )AANr   c                 l   t        ||j                  j                        }t        |t        |j
                  j                        }t        |t        |j
                  j                        }t        |t        t              }t        |t        d      }t        |	t        d      }t        |
t        t        j                        }t        |t        t        j                        }||nd}||n|j
                  j                  }||n|j
                  j                   }| j#                  ||||||||||||      S )a0  Create a new :class:`VideoFrame` with the given width/height/format/colorspace.

        Returns the same frame untouched if nothing needs to be done to it.

        :param int width: New width, or ``None`` for the same width.
        :param int height: New height, or ``None`` for the same height.
        :param format: New format, or ``None`` for the same format.
        :type  format: :class:`.VideoFormat` or ``str``
        :param src_colorspace: Current colorspace, or ``None`` for the frame colorspace.
        :type  src_colorspace: :class:`Colorspace` or ``str``
        :param dst_colorspace: Desired colorspace, or ``None`` for the frame colorspace.
        :type  dst_colorspace: :class:`Colorspace` or ``str``
        :param interpolation: The scaling algorithm to use, or ``None`` for ``BILINEAR``.
            Option flags such as ``ACCURATE_RND`` or ``BITEXACT`` may be combined with
            the algorithm using ``|``, e.g. ``Interpolation.BILINEAR | Interpolation.ACCURATE_RND``.
        :type  interpolation: :class:`Interpolation` or ``str``
        :param src_color_range: Current color range, or ``None`` for the ``UNSPECIFIED``.
        :type  src_color_range: :class:`ColorRange` or ``str``
        :param dst_color_range: Desired color range, or ``None`` for the ``UNSPECIFIED``.
        :type  dst_color_range: :class:`ColorRange` or ``str``
        :param dst_color_trc: Desired transfer characteristic to tag on the output frame,
            or ``None`` to preserve the source frame's value. This sets frame metadata only;
            it does not perform a pixel-level transfer function conversion.
        :type  dst_color_trc: :class:`ColorTrc` or ``int``
        :param dst_color_primaries: Desired color primaries to tag on the output frame,
            or ``None`` to preserve the source frame's value.
        :type  dst_color_primaries: :class:`ColorPrimaries` or ``int``
        :param int threads: How many threads to use for scaling, or ``0`` for automatic
            selection based on the number of available CPUs. Defaults to ``0`` (auto).

        r   )r   r   r   r   r9   r   r   r
   r$   rS   r_   rY   rr   r   r   widthheight	_reformat)r   r   r   r   r   src_colorspacedst_colorspaceinterpolationsrc_color_rangedst_color_rangedst_color_trcdst_color_primariesthreadsc_dst_formatc_src_colorspacec_dst_colorspacec_interpolationc_src_color_rangec_dst_color_rangec_dst_color_trcc_dst_color_primaries	c_threadsc_widthc_heights                           r7   reformatzVideoReformatter.reformat   s(   \ 'vu||/C/CD.J		(<(<
 /J		(<(<
 .=,
 0QO/QO .8S%>%>
 !41J1J!
 ,3+>A	','8eeiioo)/);vAQAQ~~!
 	
r6   r   r   
dst_formatr   r   r   r   r   r   r   r   c                 v   |j                   j                  rct               }t        t	        j
                  |j                   |j                   d             |j                  |d       |j                          |}t               }|j                  |d       ||j                   _        ||j                   _	        ||j                   _
        |
t        j                  k7  }|t        j                  k7  }|j                   j                  }|j                   j                  }|r4t        j                   t        j"                  |
      |j                   _        n>t        j                  |j                   _        t        j                  |j                   _        |r4t        j                   t        j$                  |      |j                   _        n>t        j                  |j                   _        t        j                  |j                   _        |j                   j&                  }|j                   j(                  }t+        |j                   ||       t+        |j                   ||	       t-        |j                   |j                         dk7  }|rF||j                   _        ||j                   _        ||j                   _        ||j                   _        |S | j                   t        j.                  k(  r7t1               | _         | j                   t        j.                  k(  rt3        d      || j                   _        t        j                   t        j6                  |      | j                   _        |j;                  |||       t        j<                  5  t?        | j                   |j                   |j                         }d d d        ||j                   _        ||j                   _        ||j                   _        ||j                   _        |s||j                   _        |s||j                   _        t               |S # 1 sw Y   xY w)Nr   F)data_layoutzCould not allocate SwsContext) r   hw_frames_ctxr   r   rY   av_hwframe_transfer_data_copy_internal_attributes_init_user_attributesr   r   r   rr   r   	color_trccolor_primariesr   r   AVColorTransferCharacteristicAVColorPrimariesr   r   r   sws_is_noopNULLsws_alloc_contextMemoryErrorr   uintflags_initr   sws_scale_frame)r   r   r   r   r   r   r   r   r   r   r   r   r   frame_sw	new_frameconvert_trcconvert_primariesframe_src_color_trcframe_src_color_primariesframe_src_colorspaceframe_src_color_rangeis_nooprets                          r7   r   zVideoReformatter._reformat   s     99""(*Hc228<<ANO..u%.H**,E 1 3	++Eu+E)	#	%	 $1C4M4M#M3#<#<< 	 BGATAT:?)):S:S!&,kk11='IMM# #&";";EII&)&?&?IMM#,2KK$$&9-IMM) ),(A(AEII%,/,E,EIMM) 271E1E27))2G2GeiiIimm^_M  +9==%))DI#7EII $9EII!"5EII(AEII%L88v{{"(*DHxx6;;&!"ABB"V[[-@ 	
E62\\ 	F!$((IMM599EC	F  4		 5		1		$=		! &9IMM# ,EIMM)#%	F 	Fs   ,P//P8)NNNNNNNNNNN)r   r    r!   rp   r   
VideoFramer   r   cfuncr   rY   AVPixelFormatr   r5   r6   r7   r   r      s	   7  T
T
l \\gg zzg 

	g
 %%g 

g 

g zzg  g  g zzg $ZZg g gr6   r   )!enumr   r   r   cython.cimports.libavcimportslibavrY   cython.cimports.av.errorr   cython.cimports.av.video.formatr   r   cython.cimports.av.video.framer   r
   r9   rS   r_   r   r   inlineobjectr   r   r   r   pointerAVFramer   finalcclassr   r5   r6   r7   <module>r      sf   !  # # . D <DG D* (/ /Dw D2>W >( II%I06

IZZI  I F S->-> 3CTCT    46>>#++&4

4 4 40 J J  Jr6   