[Bug 796519] Add AV1 codec parser
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Tue Jul 10 20:03:53 UTC 2018
https://bugzilla.gnome.org/show_bug.cgi?id=796519
--- Comment #14 from Georg Ottinger <g.ottinger at gmx.at> ---
> Please Correct me if I'm wrong,
> IIUC AV1 is it always packetized (one full frame in a buffer with all
> necessary OBUs in it). right? If so, why can't we do it similar to vp9? Only
> one API which accepts the input raw data and parse+fill all the necessary
> structures (sequece, frame etc) if the corresponding obus are present?
>
> Or do you think it is possible to have the container formats to send only
> OBUs to the decoder instead of the whole frame (similar to H264 and HEVC)?
hmm, I am not 100% sure and I must admit that I don't fully understand the
packetized concept - but I can sum up what I think AV1 does:
AV1 is structured in
1.) temporal units
2.) frame units
3.) OBUs
A temporal unit for example might look like this:
*Temporal Delimiter OBU
*Sequence Header OBU
*Frame OBU
it is marked by a "Temporal Delimiter OBU" and lasts before the next "Temporal
Delimiter OBU" starts.
but it can also look like this (for subsequent frames):
* Temporal Delimiter OBU
* Frame OBU
Note: all subsequent temporal units need the original Sequence Header
information in order to be decodeable.
A Frame OBU is basically the SUM of a Frame Header OBU and a Tile Group OBU
(minus one OBU header) and it is on its own a "frame unit"
But a frame unit might also look like this:
* Frame Header OBU
* 1st Tile Group OBU
* ...
* Xth Tile Group OBU
-> so there are a number of ways how temporal units and/or frame units might be
structured.
It might also be possible that within a temporal unit multiple frame units
reside.
Annex B for example additionally stores the information how much bytes the
actual temporal unit and also the frame unit(s) occupy. (in this case the size
of the "packet" is known) - but this is only for Annex B - in low overhead
bitstream format (the standard) this is not the case.
For example the output of dump_obu:
-----
$ ./dump_obu ~/SourceCode/aom_testdata/av1-1-b8-01-size-16x16.ivf
Temporal unit 0
OBU type: OBU_TEMPORAL_DELIMITER
extension: no
length: 2
OBU type: OBU_SEQUENCE_HEADER
extension: no
length: 12
OBU type: OBU_FRAME
extension: no
length: 169
TU size: 183
OBU overhead: 3
Temporal unit 1
OBU type: OBU_TEMPORAL_DELIMITER
extension: no
length: 2
OBU type: OBU_FRAME
extension: no
length: 77
TU size: 79
OBU overhead: 2
File total OBU overhead: 5
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list