Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tiff-json storage device not working #104

Open
dgmccart opened this issue Nov 2, 2023 · 1 comment
Open

Tiff-json storage device not working #104

dgmccart opened this issue Nov 2, 2023 · 1 comment

Comments

@dgmccart
Copy link
Collaborator

dgmccart commented Nov 2, 2023

Specifying "tiff-json" storage device causes a acquire api status check error. The code is below. The same code runs fine when "tiff" is used as the storage device.

import acquire
import json

# Instantiate a Runtime object
runtime = acquire.Runtime()

# Initialize the device manager
dm = runtime.device_manager()

# Grab the current configuration
config = runtime.get_configuration() 

# Select the uniform random simulated camera as the video source (using regular expressions)
config.video[0].camera.identifier = dm.select(acquire.DeviceKind.Camera, ".*random.*")

# Select the tiff storage device
config.video[0].storage.identifier = dm.select(acquire.DeviceKind.Storage, "tiff-json")

# Set the data filename to out.tif in your current directory (provide the whole filetree to save to a different directory)
config.video[0].storage.settings.filename = "out.tif" 

# Set the time for collecting data for a each frame
config.video[0].camera.settings.exposure_time_us = 5e4  # 500 ms

# Set the shape of the image ROI 
config.video[0].camera.settings.shape = (300, 200) # (width, height)

# Set the max frame count to 2**(64-1) the largest number supported by Uint64 for essentially infinite acquisition
config.video[0].max_frame_count = 3

#config.video[0].storage.settings.external_metadata_json = json.dumps({"hello": "world"})

# Update the configuration with the chosen parameters 
config = runtime.set_configuration(config)

runtime.start()
print(runtime.get_state())
print(config.video[0].storage.settings.dict())
runtime.stop()
print(runtime.get_state())

Error:

ERROR acquire.runtime 2023-11-02 15:46:31,989 runtime.rs:40 C:\actions-runner\_work\acquire-driver-hdcam\acquire-driver-hdcam\src\acquire-core-libs\src\acquire-device-hal\device\hal\loader.c:114 - driver_load(): Failed to load driver at "acquire-driver-hdcam".
ERROR acquire.runtime 2023-11-02 15:46:31,994 runtime.rs:40 C:\actions-runner\_work\acquire-driver-egrabber\acquire-driver-egrabber\src\euresys.egrabber.cpp:934 - acquire_driver_init_v0(): Exception: EURESYS_COAXLINK_GENTL64_CTI is not set

ERROR acquire.runtime 2023-11-02 15:46:31,994 runtime.rs:40 C:\actions-runner\_work\acquire-driver-hdcam\acquire-driver-hdcam\src\acquire-core-libs\src\acquire-device-hal\device\hal\loader.c:125 - driver_load(): Failed to initialize driver at "acquire-driver-egrabber"
ERROR acquire.runtime 2023-11-02 15:46:34,180 runtime.rs:40 D:\a\acquire-driver-common\acquire-driver-common\src\storage\side-by-side-tiff.cpp:78 - `anonymous-namespace'::validate_json(): nbytes (1) is too small. Expected a null-terminated json string.
ERROR acquire.runtime 2023-11-02 15:46:34,187 runtime.rs:40 D:\a\acquire-driver-common\acquire-driver-common\src\storage\side-by-side-tiff.cpp:116 - `anonymous-namespace'::side_by_side_tiff_set(): Exception: Expression was false: nbytes >= 3

ERROR acquire.runtime 2023-11-02 15:46:34,187 runtime.rs:40 C:\actions-runner\_work\acquire-driver-hdcam\acquire-driver-hdcam\src\acquire-core-libs\src\acquire-device-hal\device\hal\storage.c:64 - storage_validate(): self->state == DeviceState_Armed
ERROR acquire.runtime 2023-11-02 15:46:34,189 runtime.rs:40 D:\a\acquire-python\acquire-python\acquire-video-runtime\src\runtime\sink.c:168 - video_sink_configure(): Storage properties failed to validate.
ERROR acquire.runtime 2023-11-02 15:46:34,189 runtime.rs:40 D:\a\acquire-python\acquire-python\acquire-video-runtime\src\acquire.c:288 - configure_video_stream(): Failed to configure video stream.
ERROR acquire.runtime 2023-11-02 15:46:34,189 runtime.rs:40 D:\a\acquire-python\acquire-python\acquire-video-runtime\src\acquire.c:499 - acquire_start(): At least one video stream must be marked valid
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
Cell In[9], line 36
     31 #config.video[0].storage.settings.external_metadata_json = json.dumps({"hello": "world"})
     32 
     33 # Update the configuration with the chosen parameters 
     34 config = runtime.set_configuration(config)
---> 36 runtime.start()
     37 print(runtime.get_state())
     38 print(config.video[0].storage.settings.dict())

RuntimeError: Failed acquire api status check

When "tiff" is the storage device, the output is as expected:

ERROR acquire.runtime 2023-11-02 15:50:08,751 runtime.rs:40 C:\actions-runner\_work\acquire-driver-hdcam\acquire-driver-hdcam\src\acquire-core-libs\src\acquire-device-hal\device\hal\loader.c:114 - driver_load(): Failed to load driver at "acquire-driver-hdcam".
ERROR acquire.runtime 2023-11-02 15:50:08,756 runtime.rs:40 C:\actions-runner\_work\acquire-driver-egrabber\acquire-driver-egrabber\src\euresys.egrabber.cpp:934 - acquire_driver_init_v0(): Exception: EURESYS_COAXLINK_GENTL64_CTI is not set

ERROR acquire.runtime 2023-11-02 15:50:08,756 runtime.rs:40 C:\actions-runner\_work\acquire-driver-hdcam\acquire-driver-hdcam\src\acquire-core-libs\src\acquire-device-hal\device\hal\loader.c:125 - driver_load(): Failed to initialize driver at "acquire-driver-egrabber"
DeviceState.Running
{'filename': 'out.tif', 'external_metadata_json': '', 'first_frame_id': 0, 'pixel_scale_um': (0.0, 0.0), 'chunking': {'max_bytes_per_chunk': 16777216, 'tile': {'width': 0, 'height': 0, 'planes': 0}}, 'enable_multiscale': False}
DeviceState.Armed
@dgmccart
Copy link
Collaborator Author

Even if I uncomment config.video[0].storage.settings.external_metadata_json = json.dumps({"hello": "world"}) I get the same error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Backlog
Development

No branches or pull requests

1 participant