Clarification on dav1d_send_data
Hello! Myself and a small group have been developing a project using AV1 video, and of course we came to dav1d for a lightweight and fast decoder.
We were having a lot of trouble with dav1d_send_data or dav1d_get_picture returning errors, and it took us quite a while to get a frame out. We fixed this by parsing the AV1 content OBUs and sending them to dav1d one OBU at a time.
Our current understanding is that each send_data needs to consist of any number of complete OBUs.
I've opened this issue to confirm that we are understanding this properly, and because this info could be an addition to the header file / docs to improve usability for folks less experienced with AV1 / video decoding. When I first read the docs I thought bytes could be fed in in arbitrary chunk sizes.
Here's my basic test file I was using to experiment with OBU alignment / misalignment / multiple obus: basic.c
When I run with "OBU_MISALIGNED=1", meaning the two valid OBUs are sent not perfectly aligned with send_data calls, I get
Error parsing OBU data
dav1d_send_data status = Invalid argument
dav1d_send_data status = No error
dav1d_get_picture status = Resource temporarily unavailable
dav1d_get_picture status = Resource temporarily unavailable