o
    bi@                     @   sv   d dl Z d dlmZmZmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ er,d dlZe eZG dd deZdS )    N)TYPE_CHECKINGAnyDictListOptionalUnion)DelegatingBlockBuilder)_check_import)FileBasedDatasourcec                       s^   e Zd Zg dZ		ddeeee f deeee	f  f fddZ
dd	d
efddZ  ZS )VideoDatasource)mp4mkvmovaviwmvflvwebmm4v3gpmpegmpgtsogvrmrmvbvobasff4vm2tsmtsdivxxvidmxfFNpathsdecord_load_argsc                    sD   t  j|fi | t| ddd || _|d u ri | _d S || _d S )Ndecord)modulepackage)super__init__r	   include_timestampsr$   )selfr#   r*   r$   file_based_datasource_kwargs	__class__ b/home/ubuntu/.local/lib/python3.10/site-packages/ray/data/_internal/datasource/video_datasource.pyr)   )   s   

zVideoDatasource.__init__fzpyarrow.NativeFilepathc           	      c   sv    ddl m} ||fi | j}t|D ]$\}}| |d}| jdu r+|||d< t }|| |	 V  qd S )Nr   )VideoReader)frameframe_indexTframe_timestamp)
r%   r3   r$   	enumerateasnumpyr*   get_frame_timestampr   addbuild)	r+   r1   r2   r3   readerr5   r4   itembuilderr/   r/   r0   _read_stream:   s   

zVideoDatasource._read_stream)FN)__name__
__module____qualname___FILE_EXTENSIONSr   strr   r   r   r   r)   r?   __classcell__r/   r/   r-   r0   r      s    r   )loggingtypingr   r   r   r   r   r   +ray.data._internal.delegating_block_builderr   ray.data._internal.utilr	   )ray.data.datasource.file_based_datasourcer
   pyarrow	getLoggerr@   loggerr   r/   r/   r/   r0   <module>   s     
