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

# 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()