
    %j                     b    d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	Z
d Z G d d      Zy)    N)create_connectionc              #      K   t        |       }	 	 |j                         }t        |t              rt	        d|       n| 2# |j                          w xY ww)Nz<-)r   recv
isinstancestrprintclose)uriwsmsgs      ]/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/uiautomator2/screenrecord.pyiter_image_from_minicapr      sM     	3	B'')C#s#dC 	  	
s   A3A AAc                   n    e Zd Zdej                  fdZd Zd Zd Zd Z	d Z
d Zd	 Zdd
edefdZd Zy)Screenrecorddc                     || _         d| _        t        j                         | _        t        j                         | _        d | _        d| _        y )NF   )_d_running	threadingEvent_stop_event_done_event	_filename_fps)selfr   s     r   __init__zScreenrecord.__init__   s<    $??,$??,	    c                 *     | j                   |i | | S N)_start)r   argskwargss      r   __call__zScreenrecord.__call__&   s    T$V$r   c              #     K   | j                   j                  d      }t        j                  dd|      }t	        |      }	 | j
                  j                         s@|j                         }t        |t              rn| | j
                  j                         s@|j                          y # |j                          w xY ww)Nz/minicapz^httpr   )r   path2urlresubr   r   is_setr   r   r   r	   )r   http_urlws_urlr   r   s        r   _iter_minicapzScreenrecord._iter_minicap*   s     77##J/x0v&		&&--/ggic3'I &&--/ HHJBHHJs   >CAB, C,B>>Cc                 Z   |\  }}|j                   dd \  }}t        j                  ||dft        j                        }||z  }||z  }	||	k  r|t	        ||z        }}nt	        |	|z        |}}||z
  dz  ||z
  dz  }}
t        j                  |||f      ||||z   |
|
|z   ddf<   |S )z5
        framesize: tuple of (height, width)
        N      )dtype)dsize)shapenpzerosuint8intcv2resize)r   im	framesizevhvwhwframeshswlefttops               r   
_resize_tozScreenrecord._resize_to9   s     Bxx|1"b!!xx)!V!V7s26{qArAv;qA!VMBFq=c/2zz"QF/Kc#'k4q=!+,r   c              #      K   t        |      }| |j                  dd \  }}|D ]3  }|j                  |j                  k7  r| j                  |||f      }| 5 yw)z image to same size Nr.   )nextr2   rD   )r   
image_iterfirstimr;   r<   r9   s         r   _pipe_resizezScreenrecord._pipe_resizeK   sa     z"r"B 	Bxx7==(__R"b2H	s   AAc              #   H   K   |D ]  }t        j                  |        y wr    )imageioimread)r   raw_iterraws      r   _pipe_convertzScreenrecord._pipe_convertU   s$      	&C..%%	&s    "c              #      K   d}t        j                          }|D ]J  }t        j                          |z
  }t        || j                  z        }t        ||z
        D ]  }|  |}L y w)Nr   )timer6   r   range)r   rM   findexfstartrN   elapsedfcount_s           r   _pipe_limitzScreenrecord._pipe_limitZ   sj      	CiikF*G499,-F6F?+ 	F	s   A'A)c                 n   | j                   | j                  | j                  g}| j                         }|D ]
  } ||      } t	        j
                  | j                  | j                        5 }|D ]  }|j                  |        	 d d d        | j                  j                          y # 1 sw Y   $xY w)N)fps)rX   rO   rI   r,   rK   
get_writerr   r   append_datar   set)r   	pipelines_iterpwrr9   s         r   _runzScreenrecord._rund   s    %%t'9'94;L;LM	""$ 	AeHE	 DII> 	#" #r"#	# 		# 	#s   .B++B4filenamerZ   c                     | j                   rt        d      t        |t              sJ || _        || _        d| _         t        j                  d| j                        }d|_	        |j                          y )Nzscreenrecord is already startedTimage2video)nametarget)r   RuntimeErrorr   r6   r   r   r   Threadrb   daemonstart)r   rc   rZ   ths       r   r!   zScreenrecord._starto   s`    ==@AA#s###!	=C	

r   c                    | j                   st        d      | j                  j                          | j                  j                  d      }| j                  j                          | j                  j                          d| _         |S )zr
        stop record and finish write video
        Returns:
            bool: whether video is recorded.
        zscreenrecord is not startedg      $@F)r   rh   r   r]   r   waitclear)r   rets     r   stopzScreenrecord.stop|   sq     }}<==##D) 	  
r   N)r   )__name__
__module____qualname__u2Devicer   r$   r,   rD   rI   rO   rX   rb   r   r6   r!   rq    r   r   r   r      sM    ")) $&
	s  r   r   )r'   r   rQ   r7   rK   numpyr3   	websocketr   uiautomator2ru   r   r   rw   r   r   <module>r{      s0    
   
   ' 
n nr   