dctEmbed method

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

Implementation

Uint8List? dctEmbed(Uint8List jpegBytes, Uint8List payload) {
  final jpegPtr = calloc<ffi.Uint8>(jpegBytes.length);
  final payloadPtr = calloc<ffi.Uint8>(payload.length);
  final outLenPtr = calloc<ffi.Size>();
  try {
    jpegPtr.asTypedList(jpegBytes.length).setAll(0, jpegBytes);
    payloadPtr.asTypedList(payload.length).setAll(0, payload);
    final resultPtr = _dctEmbed(
      jpegPtr,
      jpegBytes.length,
      payloadPtr,
      payload.length,
      outLenPtr,
    );
    if (resultPtr == ffi.nullptr) return null;
    try {
      final len = outLenPtr.value;
      return Uint8List.fromList(resultPtr.asTypedList(len));
    } finally {
      _dctFree(resultPtr);
    }
  } finally {
    calloc.free(jpegPtr);
    calloc.free(payloadPtr);
    calloc.free(outLenPtr);
  }
}