
    -`i              	          d dl mZ d dlmZ d dlmZmZmZ d dlZ	d dl
mZ d dlmZ d dlmZ d dlmZ dd	lmZ 	 d dlZn# e$ r  ed
          ZY nw xY wededefd            Zddededej        fdZddededeej                 fdZddededeeef         fdZed         Z ed           G d d                      Z dS )    )	dataclass)	lru_cache)AnyClassVarLiteralN)hf_hub_download)Image)PlaceholderModule   )get_cache_dirlibrosafilenamereturnc                     t                      dz  }|                    dd           || z  }t          |          }|                                st	          d| d|          }|S )z^
    Download and open an image from huggingface
    repo: raushan-testing-hf/videos-test
    zvideo-example-dataT)parentsexist_okzraushan-testing-hf/videos-testdataset)repo_idr   	repo_type	cache_dir)r   mkdirstrexistsr   )r   video_directory
video_pathvideo_path_strs       e/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/assets/video.pydownload_video_assetr      s}     $oo(<<O$666 8+J__N 
(4%	
 
 
     path
num_framesc           
         dd l }|                    |           }|                                st          d|            t	          |                    |j                            }g }|dk    r|n|}t          j        d|dz
  |t                    }t          |          D ]e}|
                                }|s nL||v rG|                                \  }	}
|	r.|                    |                    |
|j                             ft          j        |          }t!          |          |k     r&t          d|  d| dt!          |           d          |S )	Nr   Could not open video file r   )dtypez-Could not read enough frames from video file z (expected z frames, got ))cv2VideoCaptureisOpened
ValueErrorintgetCAP_PROP_FRAME_COUNTnplinspacerangegrabretrieveappendcvtColorCOLOR_BGR2RGBstacklen)r!   r"   r'   captotal_framesframesframe_indicesidxokretframes              r   video_to_ndarraysr@   ,   s   JJJ


4
 
 C<<>> ><d<<===swws78899LF)A~~<JK<!#3ZsKKKM\"" 	F 	FXXZZ 	E-JC F cll5#2CDDEEEXfF
6{{ZBD B B$B B36v;;B B B
 
 	
 Mr   c                 :    t          | |          }d |D             S )Nc                 6    g | ]}t          j        |          S  )r	   	fromarray).0r?   s     r   
<listcomp>z,video_to_pil_images_list.<locals>.<listcomp>N   s"    777uEOE""777r   )r@   )r!   r"   r:   s      r   video_to_pil_images_listrG   L   s%    tZ00F777777r   c           	         dd l }|                    |           }|                                st          d|            t	          |                    |j                            }|                    |j                  }|dk    r||z  nd}|dk    s||k    r|}|||z  |dt          t          |                    ||k    d}|S )Nr   r$   r    opencv)total_num_framesfpsdurationvideo_backendframes_indicesdo_sample_frames)
r'   r(   r)   r*   r+   r,   r-   CAP_PROP_FPSlistr0   )r!   r"   r'   r8   r9   rK   rL   metadatas           r   video_get_metadatarS   Q   s    JJJ


4
 
 C<<>> ><d<<===swws78899L
''#"
#
#C%(1WW|c!!!HR:44!
 '*$!uZ0011 ',6	 	H Or   baby_readingT)frozenc                   4   e Zd ZU eed<   dZeed<   ddiZee	ee
f                  ed<   ede
fd            Zede
fd	            Zedeej                 fd
            Zedej        fd            Zede	e
ef         fd            Zddedz  dej        fdZdS )
VideoAssetnamer    r"   rT   zsample_demo_1.mp4_NAME_TO_FILEr   c                 &    | j         | j                 S N)rY   rX   selfs    r   r   zVideoAsset.filenamex   s    !$),,r   c                 *    t          | j                  S r[   )r   r   r\   s    r   r   zVideoAsset.video_path|   s    #DM222r   c                 :    t          | j        | j                  }|S r[   )rG   r   r"   r]   r>   s     r   
pil_imageszVideoAsset.pil_images   s    &tHH
r   c                 :    t          | j        | j                  }|S r[   )r@   r   r"   r`   s     r   np_ndarrayszVideoAsset.np_ndarrays   s    AA
r   c                 :    t          | j        | j                  }|S r[   )rS   r   r"   r`   s     r   rR   zVideoAsset.metadata   s     $/BB
r   Nsampling_ratec                 D    t          j        | j        |          d         S )z
        Read audio data from the video asset, used in Qwen2.5-Omni examples.

        See also: examples/offline_inference/qwen2_5_omni/only_thinker.py
        )srr   )r   loadr   )r]   re   s     r   	get_audiozVideoAsset.get_audio   s      |DO>>>qAAr   r[   )__name__
__module____qualname__VideoAssetName__annotations__r"   r+   rY   r   dictr   propertyr   r   rQ   r	   ra   nptNDArrayrc   r   rR   floatri   rC   r   r   rW   rW   o   sk        
J 	+:M8D!456    -# - - - X- 3C 3 3 3 X3 D-    X S[    X $sCx.    XB But| Bs{ B B B B B Br   rW   )r    )!dataclassesr   	functoolsr   typingr   r   r   numpyr.   numpy.typingrq   huggingface_hubr   PILr	   vllm.utils.import_utilsr
   baser   r   ImportErrorr   r   r+   rr   r@   rQ   rG   ro   rS   rm   rW   rC   r   r   <module>r~      s   " ! ! ! ! !       ) ) ) ) ) ) ) ) ) )           + + + + + +       5 5 5 5 5 5      +NNNN + + +	**GGG+ 3 3    ( C S #+    @8 83 8C 8ekAR 8 8 8 8
 S c 4S>    6 ( $%B %B %B %B %B %B %B %B %B %Bs   ? AA