robust2Extract method

Uint8List? robust2Extract(
  1. Uint8List jpegBytes
)

Implementation

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