From 3010ee3657932091599b9af88c1d61eefc4c073e Mon Sep 17 00:00:00 2001 From: Fam Zheng Date: Sat, 15 Feb 2025 21:43:20 +0000 Subject: [PATCH] scanner: More adaptive frame upload --- scanner/pages/camera/camera.js | 27 ++++++++++++++++++++++----- scanner/pages/camera/camera.wxml | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/scanner/pages/camera/camera.js b/scanner/pages/camera/camera.js index db665ad..8a3ff97 100644 --- a/scanner/pages/camera/camera.js +++ b/scanner/pages/camera/camera.js @@ -48,6 +48,9 @@ Page({ frame_upload_seq_num: 0, qrarc_class: "sm", qrmarkers_class: "hidden", + frame_upload_in_flight: 0, + frame_upload_time_cost: 0, + frame_upload_interval_ms: 2000, }, make_hint_text(r) { @@ -365,15 +368,18 @@ Page({ } }, handle_image_data_url(data_url) { - return; const now = Date.now(); - const interval_ms = 2000; - if (now - this.data.last_frame_upload_time < interval_ms) { + if ( + now - this.data.last_frame_upload_time < this.data.frame_upload_interval_ms || + this.data.frame_upload_in_flight > 0 + ) { return; } + var begin = Date.now(); this.setData({ last_frame_upload_time: now, frame_upload_seq_num: this.data.frame_upload_seq_num + 1, + frame_upload_in_flight: this.data.frame_upload_in_flight + 1, }); var seq_num = this.data.frame_upload_seq_num.toString().padStart(3, '0'); var fd = { @@ -383,16 +389,27 @@ Page({ image_data_url: data_url, } wx.request({ - url: getApp().globalData.server_url + '/api/v1/camera-frame/', + url: "https://research.themblem.com/event/camera-frame", method: "POST", - data: fd, + data: JSON.stringify(fd), + header: { + "Content-Type": "application/json", + }, success: (res) => { this.setData({ frame_uploaded: this.data.frame_uploaded + 1, + frame_upload_in_flight: this.data.frame_upload_in_flight - 1, + frame_upload_time_cost: Date.now() - begin, + frame_upload_interval_ms: this.data.frame_upload_interval_ms * 2, }); }, fail: (e) => { this.log("frame upload failed", e); + this.setData({ + frame_upload_in_flight: this.data.frame_upload_in_flight - 1, + frame_upload_time_cost: Date.now() - begin, + frame_upload_interval_ms: this.data.frame_upload_interval_ms * 2, + }); }, }); }, diff --git a/scanner/pages/camera/camera.wxml b/scanner/pages/camera/camera.wxml index 54ea186..6d835d5 100644 --- a/scanner/pages/camera/camera.wxml +++ b/scanner/pages/camera/camera.wxml @@ -33,7 +33,7 @@ model: {{ phone_model }} zoom: {{ zoom }} sensitivity: {{ camera_sensitivity }} - frame uploaded: {{ frame_uploaded }} + frame uploaded: {{ frame_uploaded }} (upload cost {{ frame_upload_time_cost }}ms) max zoom: {{ max_zoom }} result: {{ result }}