On 10/28/19 11:04 PM, Daniel Gomez wrote:
Hi Hans,
On Mon, 28 Oct 2019 at 19:55, Stanimir Varbanov
<stanimir.varbanov@xxxxxxxxxx> wrote:
Hi Hans,
On 10/17/19 1:25 PM, Hans Verkuil wrote:
Hi all,
Since we have three separate half-day sessions for different topics I decided
to split the announcement for this in three emails as well, so these things
can be discussed in separate threads.
All sessions are in room Terreaux VIP Lounge - Level 0.
There is a maximum of 15 people.
The first session deals with the codec API and is on Tuesday morning from
8:30 to 12:00 (we have to vacate the room at that time). Note that 8:30
start time!
Confirmed attendees for this session:
Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>
Alexandre Courbot <acourbot@xxxxxxxxxxxx>
Nicolas Dufresne <nicolas@xxxxxxxxxxxx>
Tomasz Figa <tfiga@xxxxxxxxxxxx>
Ezequiel Garcia <ezequiel@xxxxxxxxxxxxx>
Dafna Hirschfeld <dafna.hirschfeld@xxxxxxxxxxxxx>
Paul Kocialkowski <paul.kocialkowski@xxxxxxxxxxx>
Maxime Ripard <mripard@xxxxxxxxxx>
Dave Stevenson <dave.stevenson@xxxxxxxxxxxxxxx>
Michael Tretter <m.tretter@xxxxxxxxxxxxxx>
Stanimir Varbanov <stanimir.varbanov@xxxxxxxxxx>
Hans Verkuil <hverkuil@xxxxxxxxx>
Please let me know asap if I missed someone, or if you are listed, but
can't join for some reason.
I'll late for this session for unforeseen reasons (I stuck at Frankfurt
airport), please feel free to reallocate my seat for someone who
interested. Sorry for inconvenience.
There are three seats left, and I have five on the 'just interested'
list:
Daniel Gomez <daniel@xxxxxxxx>
Eugen Hristev <Eugen.Hristev@xxxxxxxxxxxxx>
Helen Koike <helen.koike@xxxxxxxxxxxxx>
Jacopo Mondi <jacopo@xxxxxxxxxx>
Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
If you still want to join, please mail me. First come, first served :-)
Agenda:
Note: I didn't assign start times, we'll just go through these items one-by-one.
- Status of any pending patches related to codec support.
I'll provide a list of those patches by the end of next week so we
can go through them.
- Requirements of moving codec drivers out of staging.
- Finalize the stateful encoder API. There are two pieces that need
to be defined:
1) Setting the frame rate so bitrate control can make sense, since
they need to know this information. This is also relevant for the
stateless codec (and this may have to change on a per-frame basis
for stateless codecs!).
This can either be implemented via ENUM_FRAMEINTERVALS for the coded
pixelformats plus S_PARM support, or we just add a new control for this.
E.g. V4L2_CID_MPEG_VIDEO_FRAME_INTERVAL using struct v4l2_fract.
I am inclined to go with a control, since the semantics don't really
match ENUM_FRAMEINTERVALS/S_PARM. These ioctls still need to be supported
for legacy drivers. Open question: some drivers (mediatek, hva, coda)
require S_PARM(OUTPUT), some (venus) allow both S_PARM(CAPTURE) and
S_PARM(OUTPUT). I am inclined to allow both since this is not a CAPTURE
vs OUTPUT thing, it is global to both queues.
2) Interactions between OUTPUT and CAPTURE formats.
The main problem is what to do if the capture sizeimage is too small
for the OUTPUT resolution when streaming starts.
Proposal: width and height of S_FMT(OUTPUT) plus max-bitrate plus frame
interval plus key frame interval info are used to calculate a minimum
CAPTURE sizeimage (app may request more). This is codec-specific, I think,
so it should be possible to provide helper functions for this.
However, it may be quite difficult to make a good calculation. I just
don't know enough to determine this.
V4L2_FMT_FLAG_DYN_RESOLUTION is always cleared for codec formats
for the encoder (i.e. we don't support mid-stream resolution
changes for now) and V4L2_EVENT_SOURCE_CHANGE is not
supported.
Of course, if we start to support mid-stream resolution
changes (or other changes that require a source change event),
then this flag should be set by the encoder driver and
documentation on how to handle the source change event should
be documented in the encoder spec. I prefer to postpone this
until we have an encoder than can actually do mid-stream
resolution changes.
If sizeimage of the OUTPUT is too small for the CAPTURE
resolution and V4L2_EVENT_SOURCE_CHANGE is not supported,
then the second STREAMON (either CAPTURE or OUTPUT) will
return -ENOMEM since there is not enough memory to do the
encode.
If V4L2_FMT_FLAG_DYN_RESOLUTION is cleared (i.e. that is
the case for all current encoders), then any bitrate controls
will be limited in range to what the current state (CAPTURE and
OUTPUT formats and frame interval) supports.
- Stateless encoder support
Overall goals:
- Find out if there is a common set of per frame encoding parameters
- Find out if bitrate control can be reused for multiple HW
- Decide if we do in-kernel bitrate control or not
- Decide if we keep bitstream header crafting external (unlike Hantro
JPEG encoder, but like VAAPI)
- Decide if we provide (and maintain) a libv4l2 plugin like ChromeOS
folks opted for.
I hope Nicolas and Tomasz can prepare for this.
The one requirement that Cisco would have for these devices is that
we must be able to do per-frame bitrate control from userspace.
Regards,
Hans
--
regards,
Stan
Same here, I would like to know if there is more people you plan to
add to the attendee's list.
If not, I would like to be there.
No problem, there is a seat left. I'll see you tomorrow!
Regards,
Hans
Thanks,
Daniel