Move to generator

This commit is contained in:
Manav Rathi
2024-05-30 14:00:00 +05:30
parent 40d35e157e
commit 34166ecffb
4 changed files with 20 additions and 8 deletions

View File

@@ -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,

View File

@@ -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;
}

View File

@@ -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,

View File

@@ -23,6 +23,7 @@ export interface MlFileData {
height: number;
faceEmbedding: {
version: number;
client: string;
};
mlVersion: number;
errorCount: number;