o
    i                     @   s   d Z ddlmZmZ ddlZddlmZ ddlm	Z	 ddl
mZmZmZmZ ddlmZmZ dd	lmZ dd
lmZ ddlmZmZ G dd deZG dd deZdgZdS )z-
Video processor class for InstructBLIPVideo
    )OptionalUnionN)
functional   )BatchFeature)OPENAI_CLIP_MEANOPENAI_CLIP_STDPILImageResamplingSizeDict)UnpackVideosKwargs)
TensorType)BaseVideoProcessor)group_videos_by_shapereorder_videosc                   @   s   e Zd ZdS ))InstructBlipVideoVideoProcessorInitKwargsN)__name__
__module____qualname__ r   r   |/home/ubuntu/.local/lib/python3.10/site-packages/transformers/models/instructblipvideo/video_processing_instructblipvideo.pyr   !   s    r   c                       s   e Zd ZejZeZeZ	dddZ
dZdZdZdZdZdZeZdgZdee f fddZ		dd
ed dedededed dedededededeeeee f  deeeee f  deeeef  defddZ  Z S )InstructBlipVideoVideoProcessori  )heightwidthTFpixel_valueskwargsc                    s   t  jdi | d S )Nr   )super__init__)selfr   	__class__r   r   r   2   s   z(InstructBlipVideoVideoProcessor.__init__Nvideosztorch.Tensordo_convert_rgb	do_resizesizeinterpolationzF.InterpolationModedo_center_crop	crop_size
do_rescalerescale_factordo_normalize
image_mean	image_stdreturn_tensorsreturnc              	   K   s   t |\}}i }| D ]\}}|r| |}|r!| j|||d}|||< qt||}t |\}}i }| D ]\}}|rC| ||}| |||	|
||}|||< q7t||}|r`tj|ddn|}t	d|i|dS )N)r$   r%   r   )dimr   )datatensor_type)
r   itemsconvert_to_rgbresizer   center_croprescale_and_normalizetorchstackr   )r   r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r   grouped_videosgrouped_videos_indexresized_videos_groupedshapestacked_videosresized_videosprocessed_videos_groupedprocessed_videosr   r   r   _preprocess5   s*   




z+InstructBlipVideoVideoProcessor._preprocess)N)!r   r   r   r	   BICUBICresampler   r+   r   r,   r$   default_to_squarer#   r(   r*   r"   do_sample_framesr   valid_kwargsmodel_input_namesr   r   listboolr
   r   floatr   strr   r   rA   __classcell__r   r   r   r   r   $   sX    
	
r   )__doc__typingr   r   r7   torchvision.transforms.v2r   Fimage_processing_utilsr   image_utilsr   r   r	   r
   processing_utilsr   r   utilsr   video_processing_utilsr   video_utilsr   r   r   r   __all__r   r   r   r   <module>   s   
@