robust2Embed method

Uint8List? robust2Embed(
  1. Uint8List jpegBytes,
  2. Uint8List payload
)

Implementation

Uint8List? robust2Embed(Uint8List jpegBytes, Uint8List payload) {
  final jpegPtr = calloc<ffi.Uint8>(jpegBytes.length);
  final payloadPtr = calloc<ffi.Uint8>(payload.length);
  final outJpegPtr = calloc<ffi.Pointer<ffi.Uint8>>();
  final outLenPtr = calloc<ffi.Int32>();
  try {
    jpegPtr.asTypedList(jpegBytes.length).setAll(0, jpegBytes);
    payloadPtr.asTypedList(payload.length).setAll(0, payload);
    final rc = _robust2Embed(
      jpegPtr,
      jpegBytes.length,
      payloadPtr,
      payload.length,
      outJpegPtr,
      outLenPtr,
    );
    if (rc != 0) return null;
    final resultPtr = outJpegPtr.value;
    if (resultPtr == ffi.nullptr) return null;
    try {
      return Uint8List.fromList(resultPtr.asTypedList(outLenPtr.value));
    } finally {
      _robust2Free(resultPtr.cast<ffi.Void>());
    }
  } finally {
    calloc.free(jpegPtr);
    calloc.free(payloadPtr);
    calloc.free(outJpegPtr);
    calloc.free(outLenPtr);
  }
}