o
    2j?                     @   s   d dl mZ d dlmZ d dlZd dlmZmZ d dlm	Z	 d dl
mZ eee ZG dd deZejd	ed
ejdefddZejd	edejfddZejG dd deZejG dd dZG dd deeZdS )    )Mapping)EnumN)int32_t	uintptr_t)VideoEncParams)MotionVectorsc                   @   s   e Zd ZdZejZejZej	Z
ejZejZejZejZejZejZejZejZejZejZejZ ej!Z"ej#Z$ej%Z&ej'Z(ej)Z*ej+Z,ej-Z.ej/Z0ej1Z2ej3Z4ej5Z6ej7Z8ej9Z:ej;Z<dS )Typez
    Enum class representing different types of frame data in audio/video processing.
    Values are mapped to corresponding AV_FRAME_DATA constants from FFmpeg.

    From: https://github.com/FFmpeg/FFmpeg/blob/master/libavutil/frame.h
    N)=__name__
__module____qualname____doc__libAV_FRAME_DATA_PANSCANPANSCANAV_FRAME_DATA_A53_CCA53_CCAV_FRAME_DATA_STEREO3DSTEREO3DAV_FRAME_DATA_MATRIXENCODINGMATRIXENCODINGAV_FRAME_DATA_DOWNMIX_INFODOWNMIX_INFOAV_FRAME_DATA_REPLAYGAIN
REPLAYGAINAV_FRAME_DATA_DISPLAYMATRIXDISPLAYMATRIXAV_FRAME_DATA_AFDAFDAV_FRAME_DATA_MOTION_VECTORSMOTION_VECTORSAV_FRAME_DATA_SKIP_SAMPLESSKIP_SAMPLES AV_FRAME_DATA_AUDIO_SERVICE_TYPEAUDIO_SERVICE_TYPE(AV_FRAME_DATA_MASTERING_DISPLAY_METADATAMASTERING_DISPLAY_METADATAAV_FRAME_DATA_GOP_TIMECODEGOP_TIMECODEAV_FRAME_DATA_SPHERICAL	SPHERICAL!AV_FRAME_DATA_CONTENT_LIGHT_LEVELCONTENT_LIGHT_LEVELAV_FRAME_DATA_ICC_PROFILEICC_PROFILEAV_FRAME_DATA_S12M_TIMECODES12M_TIMECODEAV_FRAME_DATA_DYNAMIC_HDR_PLUSDYNAMIC_HDR_PLUS!AV_FRAME_DATA_REGIONS_OF_INTERESTREGIONS_OF_INTERESTAV_FRAME_DATA_VIDEO_ENC_PARAMSVIDEO_ENC_PARAMSAV_FRAME_DATA_SEI_UNREGISTEREDSEI_UNREGISTEREDAV_FRAME_DATA_FILM_GRAIN_PARAMSFILM_GRAIN_PARAMSAV_FRAME_DATA_DETECTION_BBOXESDETECTION_BBOXESAV_FRAME_DATA_DOVI_RPU_BUFFERDOVI_RPU_BUFFERAV_FRAME_DATA_DOVI_METADATADOVI_METADATAAV_FRAME_DATA_DYNAMIC_HDR_VIVIDDYNAMIC_HDR_VIVID)AV_FRAME_DATA_AMBIENT_VIEWING_ENVIRONMENTAMBIENT_VIEWING_ENVIRONMENTAV_FRAME_DATA_VIDEO_HINT
VIDEO_HINT rF   rF   O/var/www/html/whisper/venv/lib/python3.10/site-packages/av/sidedata/sidedata.pyr      s<    
r   frameindexreturnc                 C   sL   | j j| jtjkrtt| |S | j j| jtjkr tt| |S t	t| |S N)
ptr	side_datatyper   r   r   _cinit_bypass_sentinelr4   r   SideData)rH   rI   rF   rF   rG   wrap_side_data3   s
   rQ   c              	   C   sZ   t | jjD ]$}| jj| jtjkr*ttt	
t	jt	jt  | jj| j  S qdS )Nr   )rangerL   nb_side_datarM   rN   r   r   intav_display_rotation_getcythoncastpointerconstr   data)rH   irF   rF   rG   get_display_rotation=   s   	r\   c                   @   sv   e Zd ZdedejfddZejdejfddZ	ejdej
fdd	Zejdejfd
dZdd Zedd ZdS )rP   rH   rI   c                 C   s6   |t urtd|| _|jj| | _t| jj| _d S )Nz#cannot manually instatiate SideData)rO   RuntimeErrorrH   rL   rM   wrap_dictionarymetadata)selfsentinelrH   rI   rF   rF   rG   __init__N   s
   zSideData.__init__rJ   c                 C      | j jS rK   )rL   sizer`   rF   rF   rG   _buffer_sizeU      zSideData._buffer_sizec                 C   rc   rK   )rL   rZ   re   rF   rF   rG   _buffer_ptrY   rg   zSideData._buffer_ptrc                 C   s   dS )NFrF   re   rF   rF   rG   _buffer_writable]   s   zSideData._buffer_writablec                 C   s6   d| j j d| jj d| j dtt| jjdd	S )Nz<av.sidedata. z
 bytes of z at 0x0x>)		__class__r	   rL   rd   rN   rV   rW   r   rZ   re   rF   rF   rG   __repr__a   s   6zSideData.__repr__c                 C   s   t | jjS rK   )r   rL   rN   re   rF   rF   rG   rN   d   s   zSideData.typeN)r	   r
   r   FramerV   rT   rb   cfuncsize_trf   p_voidrh   bintri   rn   propertyrN   rF   rF   rF   rG   rP   L   s    rP   c                   @   s2   e Zd ZdefddZdd Zdd Zdd	 Zd
S )_SideDataContainerrH   c                 C   sL   || _ g | _i | _t| j jjD ]}t||}| j| || j|j< qd S rK   )	rH   	_by_index_by_typerR   rL   rS   rQ   appendrN   )r`   rH   r[   rZ   rF   rF   rG   rb   k   s   
z_SideDataContainer.__init__c                 C   
   t | jS rK   )lenrv   re   rF   rF   rG   __len__x      
z_SideDataContainer.__len__c                 C   ry   rK   )iterrv   re   rF   rF   rG   __iter__{   r|   z_SideDataContainer.__iter__c                 C   s6   t |tr
| j| S t |tr| jt|  S | j| S rK   )
isinstancerT   rv   strrw   r   )r`   keyrF   rF   rG   __getitem__~   s
   



z_SideDataContainer.__getitem__N)r	   r
   r   ro   rb   r{   r~   r   rF   rF   rF   rG   ru   i   s
    ru   c                   @   s   e Zd ZdS )SideDataContainerN)r	   r
   r   rF   rF   rF   rG   r      s    r   )collections.abcr   enumr   rV   cython.cimports.libc.stdintr   r   av.sidedata.encparamsr   av.sidedata.motionvectorsr   declareobjectrO   r   rp   ro   rT   rP   rQ   r\   cclassBufferru   r   rF   rF   rF   rG   <module>   s"    &	