You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.9 KiB
90 lines
2.9 KiB
2 months ago
|
# License: Apache 2.0. See LICENSE file in root directory.
|
||
|
# Copyright(c) 2021 Intel Corporation. All Rights Reserved.
|
||
|
|
||
|
import pyrealsense2 as rs
|
||
|
from rspy import log, test
|
||
|
import sw
|
||
|
|
||
|
|
||
|
# The timestamp jumps are closely correlated to the FPS passed to the video streams:
|
||
|
# syncer expects frames to arrive every 1000/FPS milliseconds!
|
||
|
sw.fps_c = sw.fps_d = 30
|
||
|
sw.init( syncer_matcher = rs.matchers.dic_c )
|
||
|
sw.start()
|
||
|
|
||
|
#############################################################################################
|
||
|
#
|
||
|
test.start( "Init" )
|
||
|
|
||
|
# It can take a few frames for the syncer to actually produce a matched frameset (it doesn't
|
||
|
# know what to match to in the beginning)
|
||
|
|
||
|
# D C @timestamp comment
|
||
|
# -- -- ----------- ----------------
|
||
|
# 0 @0 so next expected frame timestamp is at 0+16.67
|
||
|
# 0 @0
|
||
|
#
|
||
|
sw.generate_depth_and_color( frame_number = 0, timestamp = 0 )
|
||
|
sw.expect( depth_frame = 0 ) # syncer doesn't know about C yet, so releases right away
|
||
|
sw.expect( color_frame = 0, nothing_else = True ) # no hope for a match: D@0 is already out, so it's released
|
||
|
#
|
||
|
# The syncer now knows about both streams, and is empty -- that was what we wanted
|
||
|
|
||
|
test.finish()
|
||
|
#
|
||
|
#############################################################################################
|
||
|
#
|
||
|
test.start( "Go past Color's Next Expected; get a lone Depth frame" )
|
||
|
|
||
|
# 1 @7952 -> NE=7985; it's released because WAY past C.NE
|
||
|
#
|
||
|
sw.generate_depth_frame( 1, 7952 )
|
||
|
sw.expect( depth_frame = 1, nothing_else = True )
|
||
|
|
||
|
test.finish()
|
||
|
#
|
||
|
#############################################################################################
|
||
|
#
|
||
|
test.start( "Generate a Color frame which will wait for Depth" )
|
||
|
|
||
|
# 2 @7978 will wait, as it's ~= D.NE
|
||
|
#
|
||
|
sw.generate_color_frame( 2, 7978 )
|
||
|
sw.expect_nothing()
|
||
|
|
||
|
test.finish()
|
||
|
#
|
||
|
#############################################################################################
|
||
|
#
|
||
|
test.start( "Generate Depth for release BEFORE the waiting Color" )
|
||
|
|
||
|
# 3 @7952 -> needs to be released BEFORE C2!!
|
||
|
#
|
||
|
# NOTE: the timestamp is the SAME AS BEFORE! Imagine that, instead of a Depth frame, this was
|
||
|
# an Infrared: the matcher would be (TS: (TS: Depth Infra Confidence) Color). But we have no
|
||
|
# Infra or Confidence mechanism (in sw) so we just generate another D -- it should have the
|
||
|
# same effect:
|
||
|
#
|
||
|
# NOTE: this used to crash (see LRS-289)!
|
||
|
#
|
||
|
sw.generate_depth_frame( 3, 7952 )
|
||
|
sw.expect( depth_frame = 3 )
|
||
|
|
||
|
test.finish()
|
||
|
#
|
||
|
#############################################################################################
|
||
|
#
|
||
|
test.start( "And only then get the Color when we generate a matching Depth" )
|
||
|
|
||
|
sw.expect_nothing() # C is still waiting for D.NE!
|
||
|
|
||
|
# 4 @7986
|
||
|
#
|
||
|
sw.generate_depth_frame( 4, 7986 )
|
||
|
sw.expect( depth_frame = 4, color_frame = 2, nothing_else = True )
|
||
|
|
||
|
test.finish()
|
||
|
#
|
||
|
#############################################################################################
|
||
|
test.print_results_and_exit()
|