
    ^j                    
   d dl mZ d dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZ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" d dlm#Z# d d	l$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d d
l,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9  e9d          Z:	 dZ;dZ< ej=                    d          dk    rp ej>                    ?                    d          rNej@        A                    ejB        d         dd          Z;ej@        A                    ejB        d         dd          Z< ejC        e;          ZD ejC        e<          ZEn# eF$ r  eGd          w xY wdZHdZIdZJdZKdZLdZM e#jN        ddd d!d"d#d$d$d%d&d'          ZO e#jN        d(d)d*d+d,d-d.d/d0d1d2          ZP e#jN        d3d4d5d6d7d8d9d:d;d<d=          ZQ e#jN        d>d?d@dAdBdCdDdEdFdGd          ZR e#jN        dHdIdJdKddLdMdNdOdPdQ          ZS e#jN        dRdSdTdUd'dVdWdXdYdZd[          ZT e#jN        d\d]d^d_d`dad7dBdUdZdb          ZU e#jN        dcdddedfdgdhdidjdkdldm          ZV e#jN        dndodpdqdrdsdtd#dudvd<          ZW e#jN        dwdxdydzd{d|d}d~ddd          ZX e#jN        ddddzddddddd          ZY e#jN        dddddddddPdjdZ          ZZ e#jN        ddddldddddLdd          Z[ e#jN        ddddQddNddKd0dd          Z\ e#jN        ddddddd_dddd!          Z] e#jN        ddddddd[ddddg          Z^ e#jN        ddddWd8dddddbd          Z_ e#jN        dddd+d~ddddXddæ          Z` e#jN        dd ddd d dd ddUdǦ          Za e#jN        dd ddd d dd ddUdǦ          Zb e#jN        dddddddddddV          Zc e#jN        ddddAdd d6ddddz          Zd e#jN        ddddAdd d6ddddz          Ze e#jN        ddddqdddddddG          ZfdZgdZhdZi e#jN        egd ddd d dd ddUdǦ          Zj e#jN        ehd ddd d dd ddUdǦ          Zk e#jN        eid ddd d dd ddUdǦ          ZldZm e#jN        ddddd#dddddd          Zn e#jN        dddddidd}dddd          Zo e#jN        ddddd<drdddYdd6          Zp e#jN        ddddddddddUd          Zq e#jN        dd dddddvd%ddqd          Zr e#jN        dddd6dCdd	d7d
dd          ZsdZtd}Zu e#jN        etd ddd d dd ddUdǦ          Zv e#jN        eud ddd d dd ddUdǦ          Zw e#jN        dd ddd d dd ddUdǦ          Zx e#jN        dddd%ddddddd          Zy e#jN        dddddddVdddd6          Zz e#jN        ddddddddddd          Z{ e#jN        ddd d%dd!d"dǐd#d$dZ          Z| e#jN        d%d&d'd(dd'd)d*d'd-d          Z} e#jN        d+d,d-dd#dDd.ddEd/d          Z~d0Zd1Zd2Zd3ZdZd4 Zd5 Z G d6 d7e#j                  Z G d8 d9e#j                  Z G d: d;ee#j                  Z G d< d=ee#j                  Z G d> d?e#j                  Z G d@ dAe#j                  Z G dB dCe          ZdDZdDZdEZdFZdGZe)rdZndZdHZedz  ez  ZeEj        Zee_        eege_        eEj        Zee_        g e_        eEj        Zee_         ee          ege_        eDj        Zee_        ee ee          ge_        eDj        Zee_        ee ee          ge_        e)r eEj        Zee_        e ee          ge_        eEj        Zee_        eee ee          ge_        eEj        Zee_         ee          ge_        eEj        Zee_        e e ee                     ee          ege_         G dI dJe0          Z G dK dLe4          ZdM ZdN ZdS (O      )annotationsN)HRESULTPOINTER	Structurebyrefc_int32
c_longlongc_uint32c_uint64c_ulonglongc_void_pcastmemmove	string_atwindll)BOOLDWORDLONGLPCWSTRUINTULONGWORD)image)	_kernel32)_ole32)com)GMEM_MOVEABLEMF_ACCESSMODE_READWRITEMF_FILEFLAGS_NONEMF_OPENMODE_DELETE_IF_EXISTWINDOWS_7_OR_GREATER(WINDOWS_10_ANNIVERSARY_UPDATE_OR_GREATERWINDOWS_VISTA_OR_GREATER)BYTEPROPVARIANT)Source)	AudioDataAudioFormatMediaDecoderStaticSourceVideoFormat)DecodeExceptiondebug_printdebug_mediamfreadwritemfplat32bit64WINDIRSysWOW64zmfreadwrite.dllz
mfplat.dllzCould not load WMF library.                   l   	O8 iz  i@           '      $      l   97. iV^  iF        F         \      _   l   oq i  iN           g   u      2      l   x+5 i  i@              s         i:i  iK           P   .         i#{?Mi/  ilN           ,   l   i   ]   i7i^d  i[L           j   i_i  i1L           4               l   Jrvv i  iC        n   B   @   a   iui  iE              K         1   i0-2i  iC  z      A   "   Q   T      l   5e i@  idG     3      O   -   l   j3 i0  i|K     o            l   ZbU i:  iI     h   w   ieWUiJd  iL     y               i3li  izG                    iHi  iF  
   t            l   Lo iB  iG     )      5      iauds   8   q   ividsioK{i  iD        ~         v      i#ri[  i  *         i$rl   5M iP  ieN     &   U      l   KD iv  iH              L      i=Ri  i@     r   I      }   l   " i,=  iDN     {   l   jn i
  i'@  E   m            l   #s iZ5  iL  x   H      iHNKdi  iE              iibV  iO  X   W   l   )iL i+  iA        M   d   6      l   =Orv i  iB     l   -Y i  i)K  V   <      R   iWi  imH     |      i,ځi7  irF        i6i6l   6  iRc                &    t          |           dz  S Ni )float	timestamps    R/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/media/codecs/wmf.pytimestamp_from_wmfr      s    h&&    c                &    t          | dz            S r   )intr   s    r   timestamp_to_wmfr      s    y8#$$$r   c            !      |   e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fd ej        ej         ee                    fd ej        ej         ee                    fd ej                    fd ej        ej         eej	                            fd	 ej                    fd
 ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej        ej        e          fd ej                    fd ej                    fd ej        ej        ej                  fd ej                    fd ej                    fd ej        ej        ej
                  fd ej                    fd ej                    fd ej                    fd ej                    fd ej        e          fgZdS ) IMFAttributesGetItemGetItemTypeCompareItemCompare	GetUINT32	GetUINT64	GetDoubleGetGUIDGetStringLength	GetStringGetAllocatedStringGetBlobSizeGetBlobGetAllocatedBlob
GetUnknownSetItem
DeleteItemDeleteAllItems	SetUINT32	SetUINT64	SetDoubleSetGUID	SetStringSetBlob
SetUnknown	LockStoreUnlockStoreGetCountGetItemByIndexCopyAllItemsN)__name__
__module____qualname__r   	STDMETHODREFIIDr   r
   r   GUID	pIUnknownr   	_methods_ r   r   r   r      s       														sz778#4#4	5	5	7		sz778#4#4	5	5	7					sz7738#4#4	5	5	7																																sz8	,	,	.								sz3:	.	.	0								sz3=	1	1	3														x	 	 	"w=IIIr   r   c            
      *   e Zd Zd ej         e ee                     ee           ee                    fd ej                    fd ej         ee                    fd ej        e          fd ej         ee                    fgZdS )IMFMediaBufferLockUnlockGetCurrentLengthSetCurrentLengthGetMaxLengthN)	r  r  r  r   r  r   r$   r   r  r  r   r   r  r     s        		wwwwt}}--wwu~~wwu~~	N	N	P					wwu~~	&	&	(		u					wwu~~	&	&	(IIIr   r  c                  >   e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fd ej         ee                    fd ej        ee          fd ej         ee                    fd ej        ee          fd	 ej         ee                    fd
 ej         ee                    fd ej                    fd ej                    fd ej         ee                    fd ej                    fgZ	dS )	IMFSampleGetSampleFlagsSetSampleFlagsGetSampleTimeSetSampleTimeGetSampleDurationSetSampleDurationGetBufferCountGetBufferByIndexConvertToContiguousBuffer	AddBufferRemoveBufferByIndexRemoveAllBuffersGetTotalLengthCopyToBufferN)
r  r  r  r   r  r   r   r   r  r  r  r   r   r#  r#     sk       														ww{++	,	,	.		un	-	-	/		wwu~~	&	&	(		un	-	-	/	$	ww~..	/	/	1		wwu~~	&	&	(								wwu~~	&	&	(			7IIIr   r#  c                      e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fgZdS )IMFMediaTypeGetMajorTypeIsCompressedFormatIsEqualGetRepresentationFreeRepresentationN)r  r  r  r   r  r  r  r   r   r3  r3    st        															IIIr   r3  c                     e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fd ej        e          fd ej                    fd ej                    fd ej                    fd	 ej                    fd
 ej         ee          e ee                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fgZ	dS )IMFByteStreamGetCapabilities	GetLength	SetLengthGetCurrentPositionSetCurrentPositionIsEndOfStreamRead	BeginReadEndReadWrite
BeginWriteEndWriteSeekFlushCloseN)
r  r  r  r   r  r   r   r$   r   r  r  r   r   r:  r:    sN       														{	#	#	%														wwt}}eWWU^^	<	<	>															;IIIr   r:  c                  J   e Zd Zd ej        e ee                    fd ej        ee          fd ej        ee ee                    fd ej        e ee                    fd ej        e ee          e          fd ej        ej	         ee
                    fd ej        ee ee           ee           ee           ee                    fd ej        e          fd	 ej                    fd
 ej        eej	         ee
                    fg
ZdS )IMFSourceReaderGetStreamSelectionSetStreamSelectionGetNativeMediaTypeGetCurrentMediaTypeSetCurrentMediaTyper?  
ReadSamplerH  GetServiceForStreamGetPresentationAttributeN)r  r  r  r   r  r   r   r   r3  r  r%   r	   r#  r  r  r   r   rK  rK  @  sz       		uggdmm	,	,	.		ud	#	#	%		ueWW\%:%:	;	;	=		uggl33	4	4	6		uggennl	;	;	=		sz77;#7#7	8	8	:		ueWWU^^WWU^^WWZEXEXZaZabkZlZl	m	m	o		u							#	ucj''+*>*>	?	?	A'IIIr   rK  c                  B    e Zd ZdefdefdefdefdefdefdefgZd Zd	S )
WAVEFORMATEX
wFormatTag	nChannelsnSamplesPerSecnAvgBytesPerSecnBlockAlignwBitsPerSamplecbSizec                x    d| j          d| j         d| j         d| j         d| j         d| j         d| j         dS )	NzWAVEFORMATEX(wFormatTag=z, nChannels=z, nSamplesPerSec=z, nAvgBytesPersec=z, nBlockAlign=z, wBitsPerSample=z	, cbSize=))rV  rW  rX  rY  rZ  r[  r\  selfs    r   __repr__zWAVEFORMATEX.__repr__d  s    p$/ p pt~ p phlh{ p p  PT  Pd p p $ 0p pCGCVp paealp p p 	pr   N)r  r  r  r   r   _fields_ra  r  r   r   rU  rU  Y  sg        	t	d	5!	E"		4 	4Hp p p p pr   rU  l    l    l    l    p   c                  z    e Zd ZdZdZdZddZefdZd Z	e
fdZddZdd	Zd
 Zd Zed             Zd Zd ZdS )	WMFSourceTNc                   t          | j        | j        g          s
J d            d | _        d | _        d| _        d | _        d | _        d | _        d | _	        d | _
        |                                  t                      | _        |	|                                }t                      | _        t!          |          }t"          rt%          j        t(          |          }t%          j        |          }t-          |||           t%          j        |           t1          j                    | _        t5          j        |dt9          | j                             t;          | j        t9          | j                             nt=          t>          t@          tB          t9          | j                             tE                      }tG          |tI          tJ                              }| j        &                    ||t9          |                     | j        '                    d           |j(        |k    rtS          d          	 tU          | j        | j        t9          | j                             nn# tV          $ r}	tS          |	          d d }	~	ww xY w	 tY          || j        t9          | j                             n"# tV          $ r}	tS          |	          d d }	~	ww xY w| j        r| -                                 | j        r| .                                 | j/        s| j0        s
J d            	 tc                      }
| j        2                    tf          t9          th                    t9          |
                     tk          |
j6                  | _7        t5          j8        t9          |
                     d S # tV          $ r ts          j:        d| d           Y d S w xY w)Nz3Source must decode audio, video, or both, not none.r   Tz7Could not write all of the data to the bytestream file.z=Source was decoded, but no video or audio streams were found.z-Could not determine duration of media file: 'z'.);anydecode_audiodecode_video_current_video_sample_current_video_buffer
_timestamp_attributes_stream_obj_imf_bytestream_wfx_strideset_config_attributesrK  _source_readerreadr:  lenr!   kernel32GlobalAllocr   
GlobalLockr   GlobalUnlockr   r  ole32CreateStreamOnHGlobalr   MFCreateMFByteStreamOnStreamMFCreateTempFiler   r    r   r   r   r   r$   rD  r?  valuer,   "MFCreateSourceReaderFromByteStreamOSErrorMFCreateSourceReaderFromURL_load_audio_load_videoaudio_formatvideo_formatr%   rS  MF_SOURCE_READER_MEDIASOURCEMF_PD_DURATIONr   llVal	_durationPropVariantClearwarningswarn)r`  filenamefiledatadata_lenhglobptrwrote_lengthdata_ptrerrprops              r   __init__zWMFSource.__init__  s   D%t'89::qq<qqq:%)"%)"#	""$$$ .// 99;;D#0??D 4yyH# e ,]HEE)%00T8,,,%e,,, $'=?? +E4t?O9P9PQQQ -T-=uTEY?Z?Z[[[[
 !!8!<!2!&t';!<!<> > >
  %wwgdmm44$**8Xu\?R?RSSS$77:::%11)*cddd5243GIY[`aeat[u[uvvvv 5 5 5%c**455+Hd6FdNaHbHbcccc 5 5 5%c**45  	 	 vD$5vv7vvv5		X==D889U9>~9N9N9>tF F F 0
;;DN"5;;///// 	X 	X 	XMV(VVVWWWWWW	XsC   -I/ /
J9J		J(J; ;
KKK,BN6 6"OOc                	   || _         t                      }	 | j                            | j         dt	          |                     n9# t
          $ r,}|j        t          k    rt          d          sJ Y d}~dS d}~ww xY wt          j
        ddddddddddd          }|                    t          t	          |                     |t          k    rt          d          sJ | j        s | j                            t           d           | j                            t"          d           t          j
        ddddddddddd          }t%                      }t%                      }|                    t&          t	          |                     	 |                    t*          t	          |                     n# t
          $ r
 d|_        Y nw xY w|                    t.          t	          |                     |t0          k    r(|j        dv r|j        dv rt          d	|           sJ nt          d
| d|j         d|j         d          sJ t%                      }|                    t2          t	          |                     t5          d|j                  }	t                      }
t7          t	          |
                     |
                    t          t                     |
                    t&          t0                     |
                    t.          |	           |
                    t*          d           |
                    t2          |j                   |
                    t<          |	dz             |
                    t>          |j        |	z  dz             |
                    t@          d           	 | j        !                    | j         d|
           n"# t
          $ r}tE          |          dd}~ww xY wt                      }| j        #                    | j         t	          |                     t%                      } tI          tJ                                }tM          |t	          |          t	          |          d           |j'        | _(        tS          | j(        j*        | j(        j+        | j(        j,                  | _-        dS t          d          sJ dS )zPrepares the audio stream for playback by detecting if it's compressed and attempting to decompress to PCM.
        Default: Only get the first available audio stream.
        r   z'WMFAudioDecoder: No audio stream found.Nz$WMFAudioDecoder: Found Audio Stream.FT)r   r8   )r5   r6   z5WMFAudioDecoder: Found compatible Integer PCM Audio: z+WMFAudioDecoder: Found incompatible Audio: z, sample size=z, channel count=z.Attempting to decode/resample.r6   r8   r5   )channelssample_sizesample_ratez'WMFAudioDecoder: Audio stream not found)._audio_stream_indexr3  rs  rN  r   r  winerrorMF_E_INVALIDSTREAMNUMBER_debugr   r  r   MF_MT_MAJOR_TYPEMFMediaType_Audiori  rM  MF_SOURCE_READER_ANY_STREAM#MF_SOURCE_READER_FIRST_AUDIO_STREAMr
   MF_MT_SUBTYPEr   MF_MT_AUDIO_BITS_PER_SAMPLEr~  MF_MT_AUDIO_NUM_CHANNELSMFAudioFormat_PCMMF_MT_AUDIO_SAMPLES_PER_SECONDminMFCreateMediaTyper	  r  MF_MT_AUDIO_BLOCK_ALIGNMENT MF_MT_AUDIO_AVG_BYTES_PER_SECONDMF_MT_ALL_SAMPLES_INDEPENDENTrP  r,   rO  r   rU  #MFCreateWaveFormatExFromMFMediaTypecontentsrp  r(   rW  r[  rX  r  )r`  streamimfmediar  guid_audio_typesource_subtype_guidsource_sample_sizesource_channel_countsamples_per_secchannels_outmf_mediatypedecoded_media_type
wfx_lengthwfxs                 r   r  zWMFSource._load_audio  s   
 $*   >>	2243KQPUV^P_P_```` 	 	 	|777GHHHHHFFFFF	 (1aAq!Q1aCC)5+A+ABBB///@AAAAA $ [#667RTYZZZ 223VX\]]] #&(1aAq!Q1a"K"K!)#+:: ]E2E,F,FGGG-""#>FX@Y@YZZZZ - - -+,"(((-7?S9T9TUUU $'888"(G33$*f44kVikkllllll @L_ @ @-?-E@ @WkWq@ @ @ A A A A A
 #+**""#A5CYCYZZZ"1&:&@AA+~~!%"5"5666$$%57HIII$$]4EFFF&&'?NNN&&'BBGGG&&'EG\]]]&&'BLSTDTUUU&&'GI^amImpqIqrrr&&'DaHHH9';;D<TVZ\hiiii 9 9 9)#..D89 ".33D4LeTfNgNghhh!J'',''))C/0B05c

05j0A0A013 3 3
 DI +TY5H8<	8P8<	8P!R !R !RD CDDDDDDDsA   .A 
A<!A77A<(F5 5G	G	7!O 
O8#O33O8c                    | j         S )zJReturns the WAVEFORMATEX data which has more information thah audio_format)rp  r_  s    r   
get_formatzWMFSource.get_format^  s
    yr   c                <   || _         t                      }	 | j                            | j         t	          |                     n9# t
          $ r,}|j        t          k    rt          d          sJ Y d }~d S d }~ww xY wt          d          sJ t                      }t          t	          |                     |
                    |           |                                 |                    t          t                     |                    t           t"                     |                    t$          d           	 | j                            | j         d |           n"# t
          $ r}t)          |          d d }~ww xY w|                     |t,                    \  }}t/          ||          | _        t          d| d|           sJ |                     |t2                    \  }}||z  | j        _        t          d| d| d	| j        j                   sJ | j        j        d
k     rd| j        _        t          d          sJ |                     |t6                    \  }}||z  | j        _        t          d| d| d	| j        j                   sJ d S )Nz'WMFVideoDecoder: No video stream found.z#WMFVideoDecoder: Found Video Streamr5   )widthheightzWMFVideoDecoder: Frame width: z	 height: zWMFVideoDecoder: Frame Rate: z / z = r   g(kUS=@zSWARNING: Negative frame rate, attempting to use default, but may experience issues.zWMFVideoDecoder: Pixel Ratio: )_video_stream_indexr3  rs  rO  r   r  r  r  r  r  r  Releaser	  r  MFVideoFormat_ARGB32r  MF_MT_INTERLACE_MODEMFVideoInterlace_Progressiver  rP  r,   _get_attribute_sizeMF_MT_FRAME_SIZEr+   r  MF_MT_FRAME_RATE
frame_rateMF_MT_PIXEL_ASPECT_RATIOsample_aspect)	r`  r  r  r  uncompressed_mtr  r  dennums	            r   r  zWMFSource._load_videob  s   #)   >>	33D4LeT\oo^^^^ 	 	 	|777GHHHHHFFFFF	
 ;<<<<< '..%00111o.../CDDD!!"68TUUU!!"?CCC	133D4LdTcdddd 	1 	1 	1!#&&D0	1 00BRSS'eFCCCOuOOvOOPPPPP ++O=MNNS'*Sy$dcddcdddFWFbddeeeee '!+++7D(oppppp ++O=UVVS*-)'hshhshhtGXGfhhiiiiiiis/   -A 
A;!A66A;>!E   
E?*E::E?        c           
        t                      }t                      }t                      }t                      }	 | j                            | j        dd t          |          t          |          t          |                     |j        t          z  rt          d          sJ n@|j        t          z  rt          d          sJ n|st          d          sJ |                    t          |                      t          t                                }t                      }|                    t          |          d t          |                     t!          ||j                  }	|                                 |                                 |                                 t'          |	|j        t)          |j                  |j        | j        j        z  g           S d S )NTr   z)WMFAudioDecoder: Data is no longer valid.z0WMFAudioDecoder: End of data from stream source.zWMFAudioDecoder: No sample.)r   r	   r#  r  rs  rQ  r  r   r~  )MF_SOURCE_READERF_CURRENTMEDIATYPECHANGEDr  MF_SOURCE_READERF_ENDOFSTREAMr,  r   r$   r  r   r  r  r'   r   r  r  )
r`  	num_bytescompensation_timeflagsr   
imf_sample
imf_bufferaudio_data_ptraudio_data_length
audio_datas
             r   get_audio_datazWMFSource.get_audio_data  s   LL	[[
#%%
"	!**4+CQeTYll+0+;+;U:=N=NP P P {FF IJJJJJ{:: PQQQQQ ;<<<<< 00z1B1BCCC*WT]]__N %OOE.114?P9Q9QRRR">3D3JKKJ      Z.4/	@@.4t7H7TT	! ! ! tr   c           
        t                      }t                      }t                      }| j        r2| j                                         | j                                         t                      | _        t                      | _        	 | j                            | j	        dd t          |          t          |          t          | j                             |j        t          z  rt          d          sJ t                      }| j                            | j	        t          |                     t!                      }|                    t$          t          |                     |                                 |j        | _        |j        t(          z  rd | _        t          d          sJ n| j        st          d          sJ Et                      | _        | j                            t          | j                              t/          t0                                }| j                            t          |          d t          |                     | j        j        }| j        j        }	t;          |j                  | _        | j                                         t?          j         ||	d|| j                  S d S )NTr   z)WMFVideoDecoder: Data is no longer valid.z0WMFVideoDecoder: End of data from stream source.zWMFVideoDecoder: No sample.BGRA)!r   r	   rj  rk  r  r#  r  rs  rQ  r  r   r~  r  r  r3  rO  r
   r   MF_MT_DEFAULT_STRIDErq  r  rl  r,  r   r$   r  r  r  r  r   r  r   	ImageData)
r`  skip_empty_framevideo_data_lengthr  r   newstride
video_datar  r  s
             r   get_next_video_framezWMFSource.get_next_video_frame  so   !GGLL	% 	1&..000&..000%.[["%3%5%5"/	T**4+CQeTYll+0+;+;U4C]=^=^` ` ` {FF ,IJJJJJ #nn#778PRWX[R\R\]]] "2E&MMBBB%|{:: "&PQQQQQ- ;<<<<<)7)9)9D& &@@tGaAbAbccc&J&++E*,=,=tUK\E]E]^^^%+E&-F 1AADO&--/// ?5&&*dlSSStr   c                    | j         S N)rl  r_  s    r   get_next_video_timestampz"WMFSource.get_next_video_timestamp  
    r   c                   | j         rt          || j                   n|}t                      }t          |_        t          |          |_        t          j        ddddddddddd          }	 | j	        
                    ||           n8# t          $ r+}t          j        t          |                     Y d }~nd }~ww xY wt          j        t#          |                     d S )Nr   )r  r  r%   VT_I8vtr   r  r   r  rs  r?  r  r  r  strrz  r  r   )r`  r   r  pos_comr  s        r   seekzWMFSource.seek  s    6:nSC	4>222)	}}%i00
(1aAq!Q1a;;	$227DAAAA 	$ 	$ 	$M#c((########	$ 	uT{{+++++s   ,B 
B=!B88B=c                    t                      }|                     ||           |j        }t          |          j        }t          |dz	            j        }||fS )z!Convert int64 attributes to int32r9   )r   r   r~  r   )
attributesguidKeysizelParamxys         r   r  zWMFSource._get_attribute_size  sU     zzWd+++FOO!FbL!!'!tr   c                   | j         s| j        r5t                      | _        t	          t          | j                  d           | j         rEt          r>| j                            t          t                    d           t          d          sJ | j        rk| j                            t          t                    d           | j                            t          t                    d           t          d          sJ dS dS )zYHere we set user specified attributes, by default we try to set low latency mode. (Win7+)r|   r5   z2WMFAudioDecoder: Setting configuration attributes.z2WMFVideoDecoder: Setting configuration attributes.N)low_latencyri  r   rm  MFCreateAttributesr   r!   r  MF_LOW_LATENCYr  'MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS(MF_SOURCE_READER_ENABLE_VIDEO_PROCESSINGr_  s    r   rr  zWMFSource.set_config_attributes  s    	;t0 	;,DuT%566::: 	P 4 	P&&u^'<'<a@@@NOOOOO  	P&&u-T'U'UWXYYY&&u-U'V'VXYZZZNOOOOO		P 	P POr   c                <   | j         r| j                                          | j        r| j                                         | j        r| j                                         | j        r4| j                                         | j                                         d S d S r  )rs  r  rn  ro  rj  rk  r_  s    r   __del__zWMFSource.__del__2  s     	*''))) 	'$$&&& 	+ ((***% 	1&..000&..00000	1 	1r   r  )r  T)r  r  r  r  rh  ri  r  r  r  r  #MF_SOURCE_READER_FIRST_VIDEO_STREAMr  r  r  r  r  staticmethodr  rr  r  r  r   r   re  re    s       KLLTX TX TX TXl "E `E `E `E `ED   "E 2j 2j 2j 2jh+ + + +Z= = = =~  , , ,   \P P P&1 1 1 1 1r   re  c                  >    e Zd Zd Zed             Zd ZddZd ZdS )	
WMFDecoderc                    d | _         	 t          t          d           n'# t          $ r}t	          d|j                  d }~ww xY w|                                 | _        t           | _         t          d          sJ d S )Nr   zWMF could not startup:z&Windows Media Foundation: Initialized.)	
MFShutdown	MFStartup
MF_VERSIONr  ImportErrorstrerror_build_decoder_extensions
extensionsr  )r`  r  s     r   r  zWMFDecoder.__init__F  s    	Fj!$$$$ 	F 	F 	F6EEE	F 88::$>???????s    
A>Ac                     g } t           r|                     g d           t          r|                     g d           t          r|                     dg           | S )z1Extension support varies depending on OS version.)z.asfz.wmaz.wmvz.mp3z.samiz.smi)	z.3g2.3gpz.3gp2r  z.aacz.adtsz.aviz.m4az.m4vz.flac)r#   extendr!   r"   r  s    r   r
  z$WMFDecoder._build_decoder_extensionsT  s     
# 	" ! ! ! " " "
   	" ! ! ! " " " 4 	)wi(((r   c                    | j         S r  r  r_  s    r   get_file_extensionszWMFDecoder.get_file_extensionsk  r  r   Tc                `    |rt          ||          S t          t          ||                    S r  )re  r*   )r`  r  r  	streamings       r   decodezWMFDecoder.decoden  s2     	-Xt,,,Ih55666r   c                @    | j         |                                   d S d S r  )r  r_  s    r   r  zWMFDecoder.__del__s  s(    ?&OO '&r   Nr  )	r  r  r  r  r  r
  r  r  r  r  r   r   r  r  E  ss        @ @ @   \,  7 7 7 7
    r   r  c                      t                      gS r  )r  r  r   r   get_decodersr  x  s    LL>r   c                     g S r  r  r  r   r   get_encodersr  |  s    Ir   )
__future__r   osplatformr  ctypesr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   ctypes.wintypesr   r   r   r   r   r   r   pygletr   pyglet.libs.win32r   rv  r   rz  r   pyglet.libs.win32.constantsr   r   r   r    r!   r"   r#   pyglet.libs.win32.typesr$   r%   pyglet.mediar&   pyglet.media.codecsr'   r(   r)   r*   r+   pyglet.utilr,   r-   r  r/   r0   architecturemachineendswithpathjoinenvironLoadLibrarymfreadwrite_lib
mfplat_libr  r  MF_SOURCE_READERF_ERRORr  MF_SOURCE_READERF_NEWSTREAM(MF_SOURCE_READERF_NATIVEMEDIATYPECHANGEDr  MF_SOURCE_READERF_STREAMTICKr  r  r  MF_MT_FIXED_SIZE_SAMPLESMF_MT_SAMPLE_SIZEMF_MT_COMPRESSEDMF_MT_WRAPPED_TYPEr  r  $MF_MT_AUDIO_FLOAT_SAMPLES_PER_SECONDr  r  r  !MF_MT_AUDIO_VALID_BITS_PER_SAMPLEMF_MT_AUDIO_SAMPLES_PER_BLOCKMF_MT_AUDIO_CHANNEL_MASKr  r  r  r  MFMediaType_VideoMFMediaType_ProtectedMFMediaType_ImageMFMediaType_HTMLMFMediaType_SubtitleD3DFMT_X8R8G8B8	D3DFMT_P8D3DFMT_A8R8G8B8MFVideoFormat_RGB32MFVideoFormat_RGB8r  r  r  r  r  r  MF_MT_DRM_FLAGSr  WAVE_FORMAT_PCMWAVE_FORMAT_IEEE_FLOATr  MFAudioFormat_FloatMFImageFormat_RGB32MFImageFormat_JPEGr  r  MF_SOURCE_READER_D3D_MANAGERMF_MEDIA_ENGINE_DXGI_MANAGER1MF_SOURCE_READER_ENABLE_ADVANCED_VIDEO_PROCESSINGr   MF_E_UNSUPPORTED_BYTESTREAM_TYPEMF_E_NO_MORE_TYPESMF_E_TOPO_CODEC_NOT_FOUNDr  r   r   r  r   r  r#  r3  r:  rK  rU  MF_SOURCE_READER_ALL_STREAMSr  r  r   r  MF_SDK_VERSIONMF_API_VERSIONr  r  restypeargtypesr  r  r  r  r|  r}  r  r  re  r  r  r  r  r   r   <module>rV     sD   " " " " " " 				                                   J I I I I I I I I I I I I I I I I I       3 3 3 3 3 3 - - - - - - ! ! ! ! ! !                  6 5 5 5 5 5 5 5       _ _ _ _ _ _ _ _ _ _ _ _ _ _ 4 4 4 4 4 4 4 4	]	#	#5KF
 xq!W,,1A1A1C1C1L1LT1R1R,gll2:h#7EVWWbj2JMM(f(55O##F++JJ 5 5 5
+3
4
445 %  * ( +5 (,6 ))  *ffdD$dTXZ^`dee !)VVT4QUW[]acgimos t t #38JdDRVX\^bdhjnoo CHZtT4QUW[]acghh 38JdD$PTVZ\`bfgg SXj&&$dDRVX\^bdhii #38JdDRVX\^bdhjnoo !)*ffdDRVX\^bdhjnpt!u!u '/sx
FFDRVX\^bdhjnptvz'{'{ $#+38JdTXZ^`dfjlprv#w#w  &chz664tUY[_aegkmqrr &chz664tUY[_aegkmqrr $,CHZtUY[_aegkmqsw$x$x ! (VVT4QUW[]acgimos t t #38JdDRVX\^bdhjnoo *ffdD#tTSWY]_cdd 38JdD$PTVZ\`bfgg VVT4tTSWY]_cdd CHZtT4QUW[]acghh CHZtT4QUW[]acghh  VVT4tUY[_aegkll CHZtT4QUW[]acghh 38JdD$PTVZ\`bfgg sx
FFD$dTXZ^`dfjkk  	chdDRVX\^bdhjnoo SXitT4QUW[]acghh sxtTSWY]_ceikopp   sx
FFD$dTXZ^`dfjkk 38JdD$PTVZ\`bfgg 38JdD$PTVZ\`bfgg #38JdDRVX\^bdhjnoo #(:vvtT4tUY[_aeffsx
FFD$dTXZ^`dfjkk   CH_ffdD$PTVZ\`bfhlmm ch5vvtTSWY]_ceikoquvv  chz664tTSWY]_ceijj SXj&&$dDRVX\^bdhii  +3#(:vvtUY[_aegkmqsw37+9 +9 ' ,438JPTVZ\`bfhlnr48$,@ ,@ ('sx
FFD$PTVZ\`bfhlnrss 'sx
FFD$PTVZ\`bfhlnrss 4<CHYPVX\^bdhjnpt=A35N 5N 1 ' #.   '  	' ' '% % %> > > > >CM > > >B    S]       s}   B    =#-            CM      F    cm   2p p p p p9 p p p"  * ( &0 #&0 #)   NNN"^3
 		 E]	 "

 
 2 $  &w}55x@  -I &-  #(/@X@X'Y  $%4%W "-4 " */<mWWUdMeMe.f " + O#-#J +2 (-5ww}7M7M,N ). "  !4ww}/E/EF  0 #  %gl334  &0&T #.5 # +0<gggglF[F[>\>\^e^efn^o^oqy/z # ,^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1J0 0 0 0 0 0 0 0f      s   B-E E