§
    B#Ëj_8  ã                  óæ   — d Z ddlmZ ddlZddlmZ 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 dd	lmZmZ dd
lmZ  G d„ dej        ¦  «        Zedk    r ej        ¦   «          dS dS )u�   
Unit & Integration Tests for VideoDetection Pipeline.
Kiá»ƒm thá»­ toÃ n bá»™ há»‡ thá»‘ng: Paths, Extractor, Database, Temporal Alignment.
é    )ÚannotationsN)ÚPath)ÚAPP_ROOTÚDATA_DIRÚ
TARGET_DIRÚTEMP_DIRÚclean_temp_dirÚget_ffmpeg_path)ÚCONFIG)ÚVJEPAExtractor)ÚNeuralFPExtractor)ÚOwnerDatabaseÚVideoRecord)ÚTemporalMatcherc                  óV   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dd„ZdS )ÚTestVideoDetectionPipelineÚreturnÚNonec                óv  — |                       t          j        ¦   «         ¦  «         |                       t          j        ¦   «         ¦  «         |                       t	          j        ¦   «         ¦  «         t          ¦   «         }|                       t          |¦  «                             ¦   «         d|› �¦  «         d S )Nu    FFmpeg path khÃ´ng tá»“n táº¡i: )Ú
assertTruer   Úexistsr   r   r
   r   )ÚselfÚffmpeg_ps     ú1C:\Projects\VideoDetection\tests\test_pipeline.pyÚtest_paths_and_binsz.TestVideoDetectionPipeline.test_paths_and_bins   s’   € Ø�Š�
Ô)Ñ+Ô+Ñ,Ô,Ð,Ø�Š�œÑ)Ô)Ñ*Ô*Ð*Ø�Š�œÑ)Ô)Ñ*Ô*Ð*Ý"Ñ$Ô$ˆØ�Š�˜X™œ×-Ò-Ñ/Ô/Ð1^ÐT\Ð1^Ð1^Ñ_Ô_Ð_Ð_Ð_ó    c                óº  — t           dz  }|                     dd¬¦  «         |                      |                     ¦   «         ¦  «         t	          ¦   «         }|                      |d¦  «         |                      |                     ¦   «         ¦  «         t           dz  }|                     ¦   «         r)|                      |                     ¦   «         ¦  «         d S d S )Nzdummy_frame.tmpÚtest_contentzutf-8)Úencodingé   z.gitkeep)r   Ú
write_textr   r   r	   ÚassertGreaterEqualÚassertFalse)r   Ú
dummy_fileÚremovedÚgitkeeps       r   Útest_clean_tempz*TestVideoDetectionPipeline.test_clean_temp   sÍ   € åÐ 1Ñ1ˆ
Ø×Ò˜n°wÐÑ?Ô?Ð?Ø�Š˜
×)Ò)Ñ+Ô+Ñ,Ô,Ð,å Ñ"Ô"ˆØ×Ò ¨Ñ+Ô+Ð+Ø×Ò˜×*Ò*Ñ,Ô,Ñ-Ô-Ð-å˜ZÑ'ˆØ�>Š>ÑÔð 	.Ø�OŠO˜GŸNšNÑ,Ô,Ñ-Ô-Ð-Ð-Ð-ð	.ð 	.r   c                óÆ   — |                       dt          j        ¦  «         |                       dt          j        ¦  «         |                       dt          j        ¦  «         d S )NÚsimilarity_thresholdÚmin_match_duration_sec)ÚassertInr   ÚvisualÚaudioÚ	alignment)r   s    r   Útest_config_loadingz.TestVideoDetectionPipeline.test_config_loading)   sN   € Ø�ŠÐ,­f¬mÑ<Ô<Ð<Ø�ŠÐ,­f¬lÑ;Ô;Ð;Ø�ŠÐ.µÔ0@ÑAÔAÐAÐAÐAr   c                ó4  — t          d¬¦  «        }t          j        dt          j        ¬¦  «        }|                     |¦  «        }|                      |j        d¦  «         t          j                             |¦  «        }|  	                    |dd¬¦  «         d S )	Né   )Úembedding_dim)é   éà   r4   é   ©Údtype)r1   ç      ð?r5   ©Úplaces)
r   ÚnpÚzerosÚuint8ÚextractÚassertEqualÚshapeÚlinalgÚnormÚassertAlmostEqual)r   Ú	extractorÚ
dummy_clipÚembrB   s        r   Útest_vjepa_extractorz/TestVideoDetectionPipeline.test_vjepa_extractor.   sˆ   € Ý"°Ð6Ñ6Ô6ˆ	å”XÐ/µr´xÐ@Ñ@Ô@ˆ
Ø×Ò 
Ñ+Ô+ˆà×Ò˜œ GÑ,Ô,Ð,åŒy�~Š~˜cÑ"Ô"ˆØ×Ò˜t S°ÐÑ3Ô3Ð3Ð3Ð3r   c                ól  — t          d¬¦  «        }t          j                             d¦  «                             t          j        ¦  «        }|                     |¦  «        }|                      |j        d¦  «         t          j	         
                    |¦  «        }|                      |dd¬¦  «         d S )Né€   )Úfingerprint_dimi€>  )rI   r8   r5   r9   )r   r;   ÚrandomÚrandnÚastypeÚfloat32r>   r?   r@   rA   rB   rC   )r   rD   Údummy_chunkÚfprB   s        r   Útest_neuralfp_extractorz2TestVideoDetectionPipeline.test_neuralfp_extractor9   s”   € Ý%°cÐ:Ñ:Ô:ˆ	å”i—o’o eÑ,Ô,×3Ò3µB´JÑ?Ô?ˆØ×Ò˜{Ñ+Ô+ˆà×Ò˜œ 6Ñ*Ô*Ð*ÝŒy�~Š~˜bÑ!Ô!ˆØ×Ò˜t S°ÐÑ3Ô3Ð3Ð3Ð3r   c           	     óÄ  — t           dz  }|                     dd¬¦  «         t          |¬¦  «        }g }g }t          j                             d¦  «         t          d¦  «        D �]}t          j                             d¦  «                             t          j	        ¦  «        }|t          j
                             |¦  «        z  }|                     t          |¦  «        |f¦  «         t          j                             d¦  «                             t          j	        ¦  «        }|t          j
                             |¦  «        z  }|                     t          |¦  «        |f¦  «         �Œ	t          d	d
d
dddd¬¦  «        }|                     |||¦  «         g }	g }
t          j                             d¦  «                             t          j	        ¦  «        }|t          j
                             |¦  «        z  }|	                     d|f¦  «         t          j                             d¦  «                             t          j	        ¦  «        }|t          j
                             |¦  «        z  }|
                     d|f¦  «         t          dd¦  «        D ]g}|dz   }|	                     t          |¦  «        ||         d         f¦  «         |
                     t          |¦  «        ||         d         f¦  «         Œht!          |ddd¬¦  «        }|                     |	|
¦  «        }|                      t'          |¦  «        dd¦  «         |d         }|                      |j        d	¦  «         |                      |j        dd¬¦  «         |                      |j        dd¬¦  «         |                      |j        d¦  «         |                      |j        d¦  «         dS )uÐ   
        Kiá»ƒm thá»­ end-to-end: Náº¡p video gá»‘c (10s), táº¡o target video copy 5s tá»« Ä‘oáº¡n [2s - 7s],
        vÃ  kiá»ƒm chá»©ng TemporalMatcher phÃ¡t hiá»‡n chÃ­nh xÃ¡c Ä‘oáº¡n trÃ¹ng láº·p.
        Útest_dbT)ÚparentsÚexist_ok©Údata_diré*   é
   r1   rI   Úgoc_video_01zgoc_video_01.mp4ç      $@z2026-10-11 12:00:00)Úvideo_idÚfilenameÚrel_pathÚduration_secÚvisual_clips_countÚaudio_chunks_countÚ
indexed_atç        r    é   g      è?ç      @©ÚdbÚvisual_thresholdÚaudio_thresholdr*   r   u0   Matcher khÃ´ng tÃ¬m tháº¥y Ä‘oáº¡n trÃ¹ng láº·p!r8   ç      à?©Údeltaç       @gÍÌÌÌÌÌì?N)r   Úmkdirr   r;   rK   ÚseedÚrangerL   rM   rN   rA   rB   ÚappendÚfloatr   Úadd_referencer   ÚmatchÚassertGreaterÚlenr?   Úreference_video_idrC   Útarget_start_secÚref_start_secr"   r_   Úconfidence_score)r   Útest_db_dirrg   Úref_visual_featsÚref_audio_featsÚsecÚv_vecÚa_vecÚrecÚ	query_visÚ	query_audÚnoise_vÚnoise_aÚt_targetÚt_refÚmatcherÚmatchesÚ	top_matchs                     r   Ú$test_database_and_temporal_alignmentz?TestVideoDetectionPipeline.test_database_and_temporal_alignmentC   s„  € õ  Ñ*ˆØ×Ò $°ÐÑ6Ô6Ð6Ý KÐ0Ñ0Ô0ˆð ÐØˆÝ
Œ	�Š�rÑÔÐå˜‘9”9ð 	8ñ 	8ˆCå”I—O’O DÑ)Ô)×0Ò0µ´Ñ<Ô<ˆEØ•R”Y—^’^ EÑ*Ô*Ñ*ˆEØ×#Ò#¥U¨3¡Z¤Z°Ð$7Ñ8Ô8Ð8å”I—O’O CÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆEØ•R”Y—^’^ EÑ*Ô*Ñ*ˆEØ×"Ò"¥E¨#¡J¤J°Ð#6Ñ7Ô7Ð7Ñ7åØ#Ø'Ø'ØØ!Ø!Ø,ð
ñ 
ô 
ˆð 	×Ò˜Ð.°Ñ@Ô@Ð@ð
 ˆ	Øˆ	õ ”)—/’/ $Ñ'Ô'×.Ò.­r¬zÑ:Ô:ˆØ•2”9—>’> 'Ñ*Ô*Ñ*ˆØ×Ò˜#˜w˜Ñ(Ô(Ð(å”)—/’/ #Ñ&Ô&×-Ò-­b¬jÑ9Ô9ˆØ•2”9—>’> 'Ñ*Ô*Ñ*ˆØ×Ò˜#˜w˜Ñ(Ô(Ð(õ ˜a ™œð 	Kð 	KˆHØ˜q‘LˆEØ×Ò�e H™oœoÐ/?ÀÔ/FÀqÔ/IÐJÑKÔKÐKØ×Ò�e H™oœo¨¸uÔ/EÀaÔ/HÐIÑJÔJÐJÐJõ "ØØ!Ø Ø#&ð	
ñ 
ô 
ˆð —-’- 	¨9Ñ5Ô5ˆð 	×Ò�3˜w™<œ<¨Ð,^Ñ_Ô_Ð_Ø˜A”Jˆ	à×Ò˜Ô5°~ÑFÔFÐFØ×Ò˜yÔ9¸3ÀcÐÑJÔJÐJØ×Ò˜yÔ6¸À3ÐÑGÔGÐGØ×Ò 	Ô 6¸Ñ<Ô<Ð<Ø×Ò 	Ô :¸CÑ@Ô@Ð@Ð@Ð@r   c                ó€	  — ddl m} t          j                             d¦  «         t          j                             dd¦  «                             t          j        ¦  «        }|t          j         	                    |dd¬¦  «        z  }t          j                             dd	¦  «                             t          j        ¦  «        }|t          j         	                    |dd¬¦  «        z  }t          j
        dt          j        ¬
¦  «        } |dddddd||||¬¦
  «
        }t          j                             dd¦  «                             t          j        ¦  «        }|t          j         	                    |dd¬¦  «        z  }t          j                             dd	¦  «                             t          j        ¦  «        }|t          j         	                    |dd¬¦  «        z  }t          j
        dt          j        ¬
¦  «        } |dddddd||||¬¦
  «
        }	t          j                             dd¦  «                             t          j        ¦  «        }
|
t          j         	                    |
dd¬¦  «        z  }
t          j                             dd	¦  «                             t          j        ¦  «        }|t          j         	                    |dd¬¦  «        z  }t          dd¦  «        D ]}|dz   }||         |
|<   ||         ||<   Œ |ddddd dt          j
        dt          j        ¬
¦  «        |
t          j
        dt          j        ¬
¦  «        |¬¦
  «
        }t          t          d!z  ¬"¦  «        }t          |d#d#d$¬%¦  «        }|                     |||	g¦  «        }|                      t#          |¦  «        d¦  «         |                      |d         j        d¦  «         |                      |d         j        d&d'¬(¦  «         |                      |d         j        d)d'¬(¦  «         |                     ||	g¦  «        }|                      t#          |¦  «        d¦  «         |                      |d         j        d¦  «         |                     ||g¦  «        }|                      t#          |¦  «        dd*¦  «         d+S ),uÝ   
        Kiá»ƒm thá»­ cÃ¡c ká»‹ch báº£n so sÃ¡nh linh hoáº¡t:
        - 1 Target vs Cáº£ kho [Ref A, Ref B]
        - 1 Target vs 1 Video chá»�n lá»�c [Ref B]
        - 1 Target vs Video khÃ´ng liÃªn quan [Ref A]
        r   ©ÚCachedVideoFeatureséd   rY   r1   r    T©ÚaxisÚkeepdimsrI   r6   Úref_movie_Azref_movie_A.mp4zData/ref_movie_A.mp4r[   iè  r8   ©
r\   r]   Ú
video_pathr_   Úfile_size_bytesÚ
file_mtimeÚvisual_timesÚvisual_embsÚaudio_timesÚ	audio_fpsé   Úref_movie_Bzref_movie_B.mp4zData/ref_movie_B.mp4g      .@iÜ  é   é   é   r5   Útarget_clip_Xztarget_clip_X.mp4zTarget/target_clip_X.mp4g       @i   Údummy_dbrV   gš™™™™™é?re   rf   rm   rj   rk   ç      @u-   KhÃ´ng Ä‘Æ°á»£c cÃ³ trÃ¹ng láº·p vá»›i Ref A!N)Úsrc.indexing.feature_storerŽ   r;   rK   ro   rL   rM   rN   rA   rB   Úarangerp   r   r   r   Úmatch_cachedr?   rv   rw   rC   rx   ry   )r   rŽ   Ú	ref_a_visÚ	ref_a_audÚtimes_10Úref_aÚ	ref_b_visÚ	ref_b_audÚtimes_15Úref_bÚ
target_visÚ
target_audÚiÚref_idxÚtarget_featÚdb_mockrˆ   Úmatches_allÚ	matches_bÚ	matches_as                       r   Ú#test_feature_store_and_match_cachedz>TestVideoDetectionPipeline.test_feature_store_and_match_cached�   sO  € ð 	CÐBÐBÐBÐBÐBå
Œ	�Š�sÑÔÐõ ”I—O’O B¨Ñ-Ô-×4Ò4µR´ZÑ@Ô@ˆ	Ø•R”Y—^’^ I°AÀ�^ÑEÔEÑEˆ	Ý”I—O’O B¨Ñ,Ô,×3Ò3µB´JÑ?Ô?ˆ	Ø•R”Y—^’^ I°AÀ�^ÑEÔEÑEˆ	Ý”9˜R¥r¤zÐ2Ñ2Ô2ˆà#Ð#Ø"Ø&Ø-ØØ ØØ!Ø!Ø Øð
ñ 
ô 
ˆõ ”I—O’O B¨Ñ-Ô-×4Ò4µR´ZÑ@Ô@ˆ	Ø•R”Y—^’^ I°AÀ�^ÑEÔEÑEˆ	Ý”I—O’O B¨Ñ,Ô,×3Ò3µB´JÑ?Ô?ˆ	Ø•R”Y—^’^ I°AÀ�^ÑEÔEÑEˆ	Ý”9˜R¥r¤zÐ2Ñ2Ô2ˆà#Ð#Ø"Ø&Ø-ØØ ØØ!Ø!Ø Øð
ñ 
ô 
ˆõ ”Y—_’_ Q¨Ñ-Ô-×4Ò4µR´ZÑ@Ô@ˆ
Ø•b”i—n’n Z°aÀ$�nÑGÔGÑGˆ
Ý”Y—_’_ Q¨Ñ,Ô,×3Ò3µB´JÑ?Ô?ˆ
Ø•b”i—n’n Z°aÀ$�nÑGÔGÑGˆ
å�q˜!‘”ð 	/ð 	/ˆAØ˜!‘eˆGØ% gÔ.ˆJ�q‰MØ% gÔ.ˆJ�q‰MˆMà)Ð)Ø$Ø(Ø1ØØØÝœ 1­B¬JÐ7Ñ7Ô7Ø"Ýœ	 !­2¬:Ð6Ñ6Ô6Ø ð
ñ 
ô 
ˆõ  ­°JÑ)>Ð?Ñ?Ô?ˆÝ!ØØ ØØ#&ð	
ñ 
ô 
ˆð ×*Ò*¨;¸À¸ÑGÔGˆØ×Ò�˜[Ñ)Ô)¨1Ñ-Ô-Ð-Ø×Ò˜ QœÔ:¸MÑJÔJÐJØ×Ò˜{¨1œ~Ô>ÀÈ3ÐÑOÔOÐOØ×Ò˜{¨1œ~Ô;¸SÈÐÑLÔLÐLð ×(Ò(¨°u°gÑ>Ô>ˆ	Ø×Ò�˜Y™œ¨Ñ+Ô+Ð+Ø×Ò˜ 1œÔ8¸-ÑHÔHÐHð ×(Ò(¨°u°gÑ>Ô>ˆ	Ø×Ò�˜Y™œ¨Ð,[Ñ\Ô\Ð\Ð\Ð\r   c                óÐ  — ddl m} ddlm} ddlm} t          dz  }|                     ¦   «         r|                     ¦   «           ||¦  «        }t          dz  }| 	                    d¦  «         t          j        dt          j        ¬	¦  «        }t          j        d
t          j        ¬	¦  «        }t          j        dt          j        ¬	¦  «        }	 |ddt          |¦  «        dd|                     ¦   «         j        |	||	|¬¦
  «
        }
|                     |d|
¬¦  «         |                      |                     |¦  «        ¦  «         |                     d¦  «        }|                      |¦  «         |                      |j        d¦  «         |                      |j        j        d¦  «         |                      |j        j        d
¦  «         t          j                             |j        |¦  «          |ddddddddd¬¦	  «	        }|                     d|g¦  «         |                     d¬¦  «        }|                      t?          |¦  «        d¦  «         |                      |d         d         d¦  «         |                      |d         d          d¦  «         |                      ¦   «         }|                      |d!         d¦  «         |                      |d"         d¦  «         d#S )$uk   Kiá»ƒm thá»­ CSDL SQLite nhÃºng: cáº¥u trÃºc báº£ng, lÆ°u trá»¯ blob vector vÃ  truy váº¥n theo tÃªn video.r   )ÚVideoDatabaser�   )ÚMatchSegmentztest_videodetection.dbzsample_video.mp4s   0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)é   r1   r6   )r¼   rI   r¼   Úsample_videor£   r1   r”   Ú	reference)ÚcategoryÚfeaturesr8   g      @rc   re   gffffffî?g¸…ëQ¸î?g®Gázî?Ú
multimodal)	rx   Útarget_end_secrw   ry   Úref_end_secrz   Úvisual_scoreÚaudio_scoreÚ
match_typeztarget_test.mp4rY   )Úlimitr    Útarget_video_nameÚreference_video_nameÚtotal_reference_videosÚtotal_match_historyN)!Úsrc.indexing.sqlite_dbrº   r¤   rŽ   Úsrc.alignment.matcherr»   r   r   ÚunlinkÚwrite_bytesr;   ÚonesrN   r¥   ÚstrÚstatÚst_mtimeÚupsert_videor   Úis_video_up_to_dateÚget_features_by_nameÚassertIsNotNoner?   r]   r™   r@   r›   ÚtestingÚassert_array_almost_equalÚlog_match_historyÚget_comparison_historyrv   Úget_database_stats)r   rº   rŽ   r»   Útest_db_filerg   Údummy_pÚvis_vecsÚaud_vecsÚtimesÚfeatÚloadedÚsegÚhistoryÚstatss                  r   Útest_sqlite_databasez/TestVideoDetectionPipeline.test_sqlite_databaseô   s  € à8Ð8Ð8Ð8Ð8Ð8ØBÐBÐBÐBÐBÐBØ6Ð6Ð6Ð6Ð6Ð6åÐ":Ñ:ˆØ×ÒÑ Ô ð 	"Ø×ÒÑ!Ô!Ð!àˆ]˜<Ñ(Ô(ˆõ Ð/Ñ/ˆØ×Ò˜KÑ(Ô(Ð(å”7˜9­B¬JÐ7Ñ7Ô7ˆÝ”7˜8­2¬:Ð6Ñ6Ô6ˆÝ”	˜!¥2¤:Ð.Ñ.Ô.ˆà"Ð"Ø#Ø'Ý˜7‘|”|ØØ Ø—|’|‘~”~Ô.ØØ ØØð
ñ 
ô 
ˆð 	�Š˜¨+ÀˆÑEÔEÐEØ�Š˜×.Ò.¨wÑ7Ô7Ñ8Ô8Ð8ð ×(Ò(Ð);Ñ<Ô<ˆØ×Ò˜VÑ$Ô$Ð$Ø×Ò˜œÐ*<Ñ=Ô=Ð=Ø×Ò˜Ô+Ô1°9Ñ=Ô=Ð=Ø×Ò˜Ô)Ô/°Ñ:Ô:Ð:Ý
Œ
×,Ò,¨VÔ-?ÀÑJÔJÐJð ˆlØ ØØ-ØØØ!ØØØ#ð

ñ 

ô 

ˆð 	×ÒÐ.°°Ñ6Ô6Ð6à×+Ò+°"Ð+Ñ5Ô5ˆØ×Ò�˜W™œ qÑ)Ô)Ð)Ø×Ò˜ œÐ$7Ô8Ð:KÑLÔLÐLØ×Ò˜ œÐ$:Ô;¸^ÑLÔLÐLð ×%Ò%Ñ'Ô'ˆØ×Ò˜Ð7Ô8¸!Ñ<Ô<Ð<Ø×Ò˜Ð4Ô5°qÑ9Ô9Ð9Ð9Ð9r   c           	     ó  — ddl m}m}m} t          j                             d¦  «                             t          j        ¦  «        } ||¦  «        }|  	                    |j
        d¦  «         |  	                    |j        t          j        ¦  «          ||ddd…f         |ddd…f         ¦  «        }|                      t          |d         ¦  «        dd¬	¦  «         |                     ¦   «         }|dxx         d
z  cc<    ||ddd…f         |ddd…f         ¦  «        }|                      t          |d         ¦  «        d¦  «          |ddd¬¦  «        }	t          j                             dd¦  «                             t          j        ¦  «        }
|
t          j                             |
dd¬¦  «        z  }
|	                     |
¦  «        }|  	                    |j
        d¦  «         |  	                    |j        t          j        ¦  «         |	                     |
|¦  «        }|  	                    |j
        d¦  «         t+          d¦  «        D ]=}|  	                    t-          t	          j        ||         ¦  «        ¦  «        |¦  «         Œ>dS )uF   Kiá»ƒm thá»­ PQ64 Product Quantization vÃ  128-bit Hamming Bit-Vector.r   )ÚProductQuantizer64Úbinarize_audio_fingerprintÚcompute_hamming_similarityrI   )r3   N)r   r   r8   é   r9   r5   g\�Âõ(\ï?r1   é@   rž   )ÚdÚmÚnbitsr¼   r    Tr�   )r¼   rí   )r¼   r¼   )Úsrc.indexing.quantizerré   rê   rë   r;   rK   rL   rM   rN   r?   r@   r7   r=   rC   rr   Úcopyr"   rA   rB   ÚencodeÚcompute_asymmetric_distancesrp   ÚintÚargmax)r   ré   rê   rë   Úfloat_fpÚbit_fpÚsim_selfÚnoisy_bit_fpÚ	sim_noisyÚpqÚvecsÚcodesÚadc_simr±   s                 r   Útest_quantizer_and_hammingz5TestVideoDetectionPipeline.test_quantizer_and_hamming9  s}  € ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ ”9—?’? 3Ñ'Ô'×.Ò.­r¬zÑ:Ô:ˆØ+Ð+¨HÑ5Ô5ˆØ×Ò˜œ uÑ-Ô-Ð-Ø×Ò˜œ¥r¤xÑ0Ô0Ð0ð .Ð-¨f°T¸1¸1¸1°W¬o¸vÀdÈAÈAÈAÀg¼ÑOÔOˆØ×Ò�u X¨d¤^Ñ4Ô4°cÀ!ÐÑDÔDÐDð —{’{‘}”}ˆØ�QˆˆŒ˜:Ñ%ˆˆ‰Ø.Ð.¨v°d¸A¸A¸A°g¬ÀÈTÐSTÐSTÐSTÈWÔ@UÑVÔVˆ	à×Ò¥ i°¤oÑ 6Ô 6¸Ñ=Ô=Ð=ð  Ð $¨"°AÐ6Ñ6Ô6ˆÝŒy�Š˜q $Ñ'Ô'×.Ò.­r¬zÑ:Ô:ˆØ•”	—’˜t¨!°d�Ñ;Ô;Ñ;ˆà—	’	˜$‘”ˆØ×Ò˜œ gÑ.Ô.Ð.Ø×Ò˜œ¥b¤hÑ/Ô/Ð/ð ×1Ò1°$¸Ñ>Ô>ˆØ×Ò˜œ¨Ñ/Ô/Ð/å�q‘”ð 	<ð 	<ˆAØ×Ò�S¥¤¨7°1¬:Ñ!6Ô!6Ñ7Ô7¸Ñ;Ô;Ð;Ð;ð	<ð 	<r   N)r   r   )Ú__name__Ú
__module__Ú__qualname__r   r'   r/   rG   rQ   r‹   r¸   rç   r   © r   r   r   r      sç   € € € € € ð`ð `ð `ð `ð.ð .ð .ð .ðBð Bð Bð Bð
	4ð 	4ð 	4ð 	4ð4ð 4ð 4ð 4ðKAð KAð KAð KAðZb]ð b]ð b]ð b]ðHC:ð C:ð C:ð C:ðJ'<ð '<ð '<ð '<ð '<ð '<r   r   Ú__main__)Ú__doc__Ú
__future__r   ÚunittestÚpathlibr   Únumpyr;   Úsrc.core.pathsr   r   r   r   r	   r
   Úsrc.core.configr   Úsrc.visual.vjepa_extractorr   Úsrc.audio.neuralfp_extractorr   Úsrc.indexing.databaser   r   rÍ   r   ÚTestCaser   r  Úmainr  r   r   ú<module>r     s6  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð à dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dÐ dØ "Ð "Ð "Ð "Ð "Ð "Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø :Ð :Ð :Ð :Ð :Ð :Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðM<ð M<ð M<ð M<ð M< Ô!2ñ M<ô M<ð M<ð`
 ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   