From 2911f65db3cbc9702f080837061ec1ced6dafa45 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sat, 3 Feb 2024 19:23:00 +0100 Subject: [PATCH] load metadata for one image --- src/kds_s2000w_handler.c | 11 ++++++----- src/kds_s2000w_net.c | 5 ++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index ded8c3d..897ac08 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -459,9 +459,9 @@ void kds_s2000w_handler_stop_scan() metadata kds_s2000w_handler_get_parameters(int image_number) { metadata mdata; + json_object* metadataResp = NULL; json_object* metadata = NULL; json_object* mdata_value = NULL; - int width = 0; int channels = 1; resp = kds_s2000w_client_response_init(); kds_s2000w_client_status_session(state->sessionid, resp); @@ -477,7 +477,8 @@ metadata kds_s2000w_handler_get_parameters(int image_number) } mdata.valid = 1; - metadata = json_tokener_parse(resp->data); + metadataResp = json_tokener_parse(resp->data); + metadata = json_object_object_get(metadataResp, "Metadata"); mdata_value = json_object_object_get(metadata, "BitDepth"); mdata.depth = json_object_get_int(mdata_value); mdata_value = NULL; @@ -494,7 +495,7 @@ metadata kds_s2000w_handler_get_parameters(int image_number) mdata.lines = json_object_get_int(mdata_value); mdata_value = NULL; - json_object_put(metadata); + json_object_put(metadataResp); metadata = NULL; metadata = json_object_object_get(config, "ColorMode"); const char* color_value = json_object_get_string(metadata); @@ -513,9 +514,9 @@ metadata kds_s2000w_handler_get_parameters(int image_number) channels = 3; if (mdata.depth == 1) - mdata.bytes_per_line = channels * ((width + 7) / 8); + mdata.bytes_per_line = channels * ((mdata.pixels_per_line + 7) / 8); else - mdata.bytes_per_line = channels * width * mdata.depth / 8; + mdata.bytes_per_line = channels * mdata.pixels_per_line * mdata.depth / 8; metadata = NULL; kds_s2000w_client_response_free(resp); diff --git a/src/kds_s2000w_net.c b/src/kds_s2000w_net.c index def8c84..ed27c4e 100644 --- a/src/kds_s2000w_net.c +++ b/src/kds_s2000w_net.c @@ -179,6 +179,9 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle, sleep(1); } + if (!mdata.valid) + return SANE_STATUS_UNSUPPORTED; + params->format = mdata.format; params->last_frame = mdata.is_last; params->bytes_per_line = mdata.bytes_per_line; @@ -186,7 +189,7 @@ SANE_Status _sane_kds_s2000w_net_get_parameters(SANE_Handle handle, params->lines = mdata.lines; params->depth = mdata.depth; - return SANE_STATUS_UNSUPPORTED; + return SANE_STATUS_GOOD; } SANE_Status _sane_kds_s2000w_net_start(SANE_Handle handle) -- 2.39.5