
    Ej1              
          d dl 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j0                  dej0                  fd              Zej&                  d ej4                  ej6                        dej,                  dej,                  fd       Zej:                  ej<                   G d d                    Zy)    )IntEnumN)	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<   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SPLINEN)__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        J/var/www/html/qr/venv/lib/python3.12/site-packages/av/video/reformatter.pyr	   r	   
   sx    %6M?6'Hj'&1G#1A~(1E%1%D
%1=H.=&/E#/&D
&!,G,0:F-:r'   r	   c                   D    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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itu709fccitu601itu624	smpte170m	smpte240mdefaultr&   r'   r(   r*   r*      sH    F
CFF I IGF
CFF I IGr'   r*   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_UNSPECIFIEDrC   r   AVCOL_RANGE_MPEGrD   AVCOL_RANGE_JPEGrE   AVCOL_RANGE_NBrF   r&   r'   r(   rA   rA   *   sE    !$!<!<K<474H4HD
1H+.+?+?D
(?..B.r'   rA   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BT709rB   rC   zGamma 2.2 (BT.470M)GAMMA22zGamma 2.8 (BT.470BG)GAMMA28z
SMPTE 170Mr4   
SMPTE 240Mr6   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__rG   AVCOL_TRC_BT709rN   r   AVCOL_TRC_UNSPECIFIEDrC   AVCOL_TRC_GAMMA22rO   AVCOL_TRC_GAMMA28rP   AVCOL_TRC_SMPTE170Mr4   AVCOL_TRC_SMPTE240Mr6   AVCOL_TRC_LINEARrS   AVCOL_TRC_LOGrT   AVCOL_TRC_LOG_SQRTrU   AVCOL_TRC_IEC61966_2_4rV   AVCOL_TRC_BT1361_ECGrW   AVCOL_TRC_IEC61966_2_1rX   AVCOL_TRC_BT2020_10rY   AVCOL_TRC_BT2020_12rZ   AVCOL_TRC_SMPTE2084r[   AVCOL_TRC_SMPTE428r\   AVCOL_TRC_ARIB_STD_B67r]   r&   r'   r(   rM   rM   1   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&Cr'   rM   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 / sYCCrN   rB   rC   zBT.470MBT470MzBT.470BG / BT.601-6 625BT470BGzSMPTE 170M / BT.601-6 525r4   rQ   r6   zGeneric film (Illuminant C)FILMzBT.2020 / BT.2100BT2020zSMPTE 428-1 / XYZr\   zSMPTE 431-2 (DCI-P3)SMPTE431zSMPTE 432-1 (Display P3)SMPTE432zEBU 3213-E / JEDEC P22EBU3213N)r   r   r   r^   rG   AVCOL_PRI_BT709rN   r   AVCOL_PRI_UNSPECIFIEDrC   AVCOL_PRI_BT470Mrr   AVCOL_PRI_BT470BGrs   AVCOL_PRI_SMPTE170Mr4   AVCOL_PRI_SMPTE240Mr6   AVCOL_PRI_FILMrt   AVCOL_PRI_BT2020ru   AVCOL_PRI_SMPTE428r\   AVCOL_PRI_SMPTE431rv   AVCOL_PRI_SMPTE432rw   AVCOL_PRI_EBU3213rx   r&   r'   r(   rq   rq   J   s    
 %($7$7E!7!$!:!:K:,,FI,),)>)>G&>-0-D-DI*D!55I|5*-*<*<D
'<"%"6"6F6$'$:$:H!:'*'='=H$=+.+A+AH(A(+(=(=G%=r'   rq   value
enum_classr?   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   r?   s      r(   _resolve_enum_valuer   ^   sk     }%${{%%% &&&
ugT*2E2E1FG
HHr'   formatc                     | |S t        | t              r$t        j                  t        |       j                  S t        |       S N)r   r   cythoncastpix_fmtr   )r   r?   s     r(   _resolve_formatr   o   s:     ~&+&{{;/777vr'   frame
colorspacecolor_rangec                 t   |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y)zCSet AVFrame colorspace/range from SWS_CS_* and AVColorRange values.N)rG   rH   r   r   AVColorRanger   r+   AVCOL_SPC_BT709r   r-   AVCOL_SPC_FCCr/   AVCOL_SPC_SMPTE170Mr5   AVCOL_SPC_SMPTE240M)r   r   r   s      r(   _set_frame_colorspacer   y   s     c111"KK(8(8+F
 ]"..	z	!,,	}	$22	'	'22 
(r'   c                      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                  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    r(   __dealloc__zVideoReformatter.__dealloc__   s3    \\ 	7V^^DHH56	7 	7 	7s   )AANr   c                 H   t        ||j                  j                        }t        |t        |j
                  j                        }t        |t        |j
                  j                        }t        |t        t              }t        |t        d      }t        |	t        d      }t        |
t        d      }t        |t        d      }||nd}||n|j
                  j                  }||n|j
                  j                  }|
du}|du}| j                  ||||||||||||||      S )aw  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 interpolation method to use, or ``None`` for ``BILINEAR``.
        :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   N)r   r   r   r   r*   r   r   r	   r   rA   rM   rq   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_heightset_dst_color_trcset_dst_color_primariess                             r(   reformatzVideoReformatter.reformat   s3   X 'vu||/C/CD.J		(<(<
 /J		(<(<
 .=,
 0QO/QO-mXqI 3!
 ,3+>A	','8eeiioo)/);vAQAQ *7d)B/B$/N~~!#
 	
r'   r   r   
dst_formatr   r   r   r   r   r   r   r   r   r   c                    |j                   j                  dk  rt        d      t        j                  t
        j                  |j                   j                        }||k(  rB||j                   j                  k(  r)||j                   j                  k(  r||k(  r||	k(  r|s|s|S |j                   j                  rt               }t        t        j                  |j                   |j                   d             |j                  |_        |j                          |}t        j                  t
        j                  |j                   j                        }| j                   t        j                  k(  r7t!               | _         | j                   t        j                  k(  rt#        d      || j                   _        t        j                  t        j&                  |      | j                   _        t               }|j+                  |       |j-                  |||       |j                   j.                  }|j                   j0                  }t3        |j                   ||       t3        |j                   ||	       t        j4                  5  t7        | j                   |j                   |j                         }d d d        ||j                   _        ||j                   _        t               |r3t        j                  t
        j8                  |
      |j                   _        |r3t        j                  t
        j<                  |      |j                   _        |S # 1 sw Y   xY w)Nr   zFrame does not have format set.zCould not allocate SwsContext) r   r   r   r   r   rG   AVPixelFormatr   r   hw_frames_ctxr   r   av_hwframe_transfer_datapts_init_user_attributesNULLsws_alloc_contextMemoryErrorr   uintflags_copy_internal_attributes_initr   r   r   r   sws_scale_frameAVColorTransferCharacteristic	color_trcAVColorPrimariescolor_primaries)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
src_formatframe_sw	new_frameframe_src_colorspaceframe_src_color_rangerets                        r(   r   zVideoReformatter._reformat   sk   $ 99a>??[[!2!2EII4D4DE
 *$(%))***.0?2%+L99""(*Hc228<<ANO 99HL**,ES%6%6		8H8HIJ88v{{"(*DHxx6;;&!"ABB"V[[-@ 1 3	++E2
E62 271E1E27))2G2GeiiIimm^_M\\ 	F!$((IMM599EC	F  4		 5		# &,kk11='IMM# #,2KK$$&9-IMM) '	F 	Fs   ,MM)NNNNNNNNNNN)r   r   r   r^   r   
VideoFramer   r   cfuncr   rG   r   bintr   r&   r'   r(   r   r      s'   7  S
S
j \\NN zzN 

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

N 

N zzN  N  N zzN $ZZN ";;N "(N N Nr'   r   ) enumr   r   cython.cimports.libavcimportslibavrG   cython.cimports.av.errorr   cython.cimports.av.video.formatr   r   cython.cimports.av.video.framer   r	   r*   rA   rM   rq   r   inlineobjectr   r   r   r   pointerAVFramer   finalcclassr   r&   r'   r(   <module>r      sd     # # . D <;G ; $/ /Dw D2>W >( II%I06

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

3 3 3, p p  pr'   