Move to generator
This commit is contained in:
@@ -46,10 +46,14 @@ import type { Face, FaceDetection, MlFileData } from "./types-old";
|
||||
* @param file The contents of {@link enteFile} as a web {@link File}, if
|
||||
* available. These are used when they are provided, otherwise the file is
|
||||
* downloaded and decrypted from remote.
|
||||
*
|
||||
* @param userAgent The UA of the current client (the client that is generating
|
||||
* the embedding).
|
||||
*/
|
||||
export const indexFaces = async (
|
||||
enteFile: EnteFile,
|
||||
file: File | undefined,
|
||||
userAgent: string,
|
||||
) => {
|
||||
const startTime = Date.now();
|
||||
|
||||
@@ -58,7 +62,7 @@ export const indexFaces = async (
|
||||
);
|
||||
let mlFile: MlFileData;
|
||||
try {
|
||||
mlFile = await indexFaces_(enteFile, imageBitmap);
|
||||
mlFile = await indexFaces_(enteFile, imageBitmap, userAgent);
|
||||
} finally {
|
||||
imageBitmap.close();
|
||||
}
|
||||
@@ -98,7 +102,11 @@ const fetchRenderableBlob = async (enteFile: EnteFile) => {
|
||||
}
|
||||
};
|
||||
|
||||
const indexFaces_ = async (enteFile: EnteFile, imageBitmap: ImageBitmap) => {
|
||||
const indexFaces_ = async (
|
||||
enteFile: EnteFile,
|
||||
imageBitmap: ImageBitmap,
|
||||
userAgent: string,
|
||||
) => {
|
||||
const fileID = enteFile.id;
|
||||
const { width, height } = imageBitmap;
|
||||
const imageDimensions = { width, height };
|
||||
@@ -108,6 +116,7 @@ const indexFaces_ = async (enteFile: EnteFile, imageBitmap: ImageBitmap) => {
|
||||
height,
|
||||
faceEmbedding: {
|
||||
version: 1,
|
||||
client: userAgent,
|
||||
},
|
||||
mlVersion: defaultMLVersion,
|
||||
errorCount: 0,
|
||||
|
||||
@@ -33,7 +33,7 @@ export class FaceIndexerWorker {
|
||||
|
||||
let faceIndex: MlFileData;
|
||||
try {
|
||||
faceIndex = await indexFaces(enteFile, file);
|
||||
faceIndex = await indexFaces(enteFile, file, userAgent);
|
||||
log.debug(() => ({ f, faceIndex }));
|
||||
} catch (e) {
|
||||
// Mark indexing as having failed only if the indexing itself
|
||||
@@ -44,7 +44,7 @@ export class FaceIndexerWorker {
|
||||
throw e;
|
||||
}
|
||||
|
||||
await putFaceEmbedding(enteFile, faceIndex, userAgent);
|
||||
await putFaceEmbedding(enteFile, faceIndex);
|
||||
return faceIndex;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,8 @@ import type { Face, FaceDetection, MlFileData } from "./types-old";
|
||||
export const putFaceEmbedding = async (
|
||||
enteFile: EnteFile,
|
||||
mlFileData: MlFileData,
|
||||
userAgent: string,
|
||||
) => {
|
||||
const serverMl = LocalFileMlDataToServerFileMl(mlFileData, userAgent);
|
||||
const serverMl = LocalFileMlDataToServerFileMl(mlFileData);
|
||||
log.debug(() => ({ t: "Local ML file data", mlFileData }));
|
||||
log.debug(() => ({
|
||||
t: "Uploaded ML file data",
|
||||
@@ -111,7 +110,6 @@ class ServerFaceBox {
|
||||
|
||||
function LocalFileMlDataToServerFileMl(
|
||||
localFileMlData: MlFileData,
|
||||
userAgent: string,
|
||||
): ServerFileMl {
|
||||
if (localFileMlData.errorCount > 0) {
|
||||
return null;
|
||||
@@ -138,7 +136,11 @@ function LocalFileMlDataToServerFileMl(
|
||||
);
|
||||
faces.push(newFaceObject);
|
||||
}
|
||||
const faceEmbedding = new ServerFaceEmbedding(faces, userAgent, 1);
|
||||
const faceEmbedding = new ServerFaceEmbedding(
|
||||
faces,
|
||||
localFileMlData.faceEmbedding.client,
|
||||
localFileMlData.faceEmbedding.version,
|
||||
);
|
||||
return new ServerFileMl(
|
||||
localFileMlData.fileID,
|
||||
faceEmbedding,
|
||||
|
||||
@@ -23,6 +23,7 @@ export interface MlFileData {
|
||||
height: number;
|
||||
faceEmbedding: {
|
||||
version: number;
|
||||
client: string;
|
||||
};
|
||||
mlVersion: number;
|
||||
errorCount: number;
|
||||
|
||||
Reference in New Issue
Block a user