Bytes
Bytes already in memory.
On Android, Apple and ffmpeg the buffer is written to a file in a temporary directory, because that is what the platform readers open. Every read of one buffer lands on the one file, so a buffer costs its size on disk as well as in memory. The file stays until a later process first uses a buffer, so a process reading many distinct buffers grows disk use with no bound. In a browser it stays in memory.
Equality reads the whole of bytes, so treat the array as owned by this source once you hand it over. Writing into it afterwards is unsupported, because the hash is only computed once.