-
Notifications
You must be signed in to change notification settings - Fork 12
Description
I am experimenting with a new design for the AV1 code. One that uses Cow<'_, [u8]>
in place of T: AsRef<[u8]>
. This means that we can remove this T: AsRef<[u8]>
noise from a lot of functions and traits, while making it possible to still build Slices
, Frames
and etc out of both borrowed and owned data without copying.
What's more, Cow<'_, [u8]>
dereferences to &[u8]
so nothing fundamentally changes in the code as far as I can see. Not only that, but we de facto do not even support anything other than &[u8]
in the decoders, as introducing T
in our backend traits would make them not object safe. Using Cow<'_, [u8]>
circumvents this problem, as there's no generics involved and lifetimes do not break object safety.
If the current AV1 design proves successful, we should maybe backport these changes to the other codecs as a way to clean up the codebase by a considerable amount.