| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
|
|\
| |
| | |
Add CREDITS file
|
| |
| |
| |
| |
| |
| |
| |
| | |
As promised by Bootlin's Kickstarter campaign, all contributors above
16 EUR would get their name in the CREDITS file. This commit
implements the promised CREDITS file.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
|\ \
| |/
|/| |
Minor doc updates
|
| |
| |
| |
| | |
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
|/
|
|
| |
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
|
|
|
|
|
|
| |
Some features are missing, such as scaling lists (quantization) and
10-bit output.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
|
| |
Since our use of the v4l2 API has some assumptions on the available
userspace APIs, check the capabilities reported by the driver to make
sure they are supported.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
|
| |
This adds a helper function to query v4l2 capabilities, returning
either the device caps when available or the general device caps
otherwise.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
|
| |
This adds support for MPEG2 quantization matrices, which are optional
given that fallback default matrices are used (on the kernel side) when
no such matrix is provided.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Because there might be more than a single call to CreateSurfaces,
we cannot assume that the index relative to the number of surfaces
requested in a single call matches the v4l2 index.
Grab the base index (as returned by the kernel) when allocating
buffers and use it for memory mapping and addressing them in v4l2.
This avoids memory-mapping the first (index 0) buffer multiple times
in that scenario instead of the n-th allocated buffer (in the n-th
call in the sequence).
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The V4L2 API does not currently provide a way to liberate allocated
buffers one by one (which would fit well with DestroySurfaces in
VAAPI). Moreover, streaming needs to be off before liberating
buffers is allowed.
As a result, output an capture buffers can only be liberated when
destroying the decoding context, all at once, such as implemented
in this patch.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
|
|
|
| |
Although this is not needed when using the combination of CREATE_BUFS and
QUERYBUF V4L2 ioctls (as currently done) to allocate and prepare buffers,
the REQBUF ioctl is useful to liberate the buffers after use.
This introduces a helper for this purpose.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
| |
Since the V4L2 ioctl is called QUERYBUF, it makes more sense to
call the associated function with the same name.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
| |
This removes a duplicate conditional close of the request fd.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
| |
This is the latest version of dma-buf export, that does support
specifying DRM modifiers.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
| |
|
| |
|
|
|
|
|
|
|
| |
This is the first version of dma-buf export, that does not support
specifying a DRM modifier.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
|
| |
The IMAGE macro takes an implicit driver_data argument. In order to make
it obvious that we need it, let's put it as an explicit parameter.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
| |
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
|
|
|
|
|
|
| |
The vendor string needs to be updated to match the new name. Do so.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
| |
Change the environment variables for the media and video path to match the
libva name.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
| |
Convert the README to the new name for the libva.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
| |
Change the autotools files, and with them the name of the libva.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
| |
That function isn't defined anywhere, remove its prototype.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
| |
void * can be assigned from and stored to any pointer type without any
warning. Remove the explicit casts.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
| |
The cedrus_data structure carries the old name. In order to migrate to the
new name, let's rename it to request_data.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
|
|
|
| |
The sunxi_cedrus.h header contains a bunch of defines prefixed with
SUNXI_CEDRUS.
As part as the ongoing migration to a more generic name, change that prefix
for V4L2_REQUEST, and the header file to request.h
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
| |
As part of our renaming effort, Rename the libva hooks names to mention
request instead of SunxiCedrus
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
| |
As part of the ongoing switch to a generic name, let's start with log
function.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
|
|
|
| |
The num_slices parameter was improperly set to the number of reference
frames, which is incorrect.
Add a counter for the number of slices per surface, and set num_slices to
that value.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
| |
The pic_init_qp_minus26 must be set but was not until now. Fix this.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current code sets the prediction weight table by doing a memcpy of the
libva structure to the v4l2's structure.
However, for the offset and weight parameters, libva's structure uses
16-bits integer, while v4l2 uses 8-bits, which obviously doesn't work well
with memcpy.
Create a function to copy those arrays and matrices instead that follows
the algorithm defined in the H264 spec, and use it so that it works
properly.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The libva only provides the reference images needed to decode the current
picture, but not the full DPB. However, some codecs need that whole DPB in
order to decode a picture.
For example, the Allwinner hardware codec has an internal SRAM, with each
picture getting a slot in that SRAM, and during each decoding process, some
metadata will then be generated from that SRAM content to a separate
buffer. Therefore, each frames must be located at the same SRAM position
each time so that the metadata are then re-used properly.
However, since libva will only pass a few reference images, we can end up
in a situation where multiple, subsequent, frames will have the same
reference images set, but might all be used as reference later on and
cannot therefore be located at the same position.
And from a more theorical point of view, Linux expects a full blown DPB in
its H264 control.
In order to work around this, we can create a shadow of the DPB by simply
maintaining a list of 16 decoded images, each associated with their
VAPictureH264 and an age. This age is the last time we used that frame as
reference. When a new picture is decoded, either we assign it to a free
slot, or we reuse the slot from the frame that hasn't been used as a
reference for the longest time.
This is a much simpler approach than the one documented in the H264 spec,
but this shouldn't really be a problem since we don't handle the reference
frames ourselves, but just re-use the one from the libva, and taken from
the bitstream before. As such, frames that are not supposed to be used for
reference will not be anymore, their age will not increase, and therefore
after a while we will garbage-collect their slot to store a much newer
frame.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
| |
Some functions setting the controls in the H264 code will need the context
in order to access the DPB. Make sure that we pass it as an argument.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
| |
Some functions setting the controls will need the context in the future.
Make sure that we provide it as an argument.
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
|
|
|
|
|
|
|
|
| |
The coding style has been a bit erratic. Enforce the linux kernel coding
style by reusing their .clang-format file, running clang-format on the
source, and ignoring the few shortcomings that clang-format has at the
moment (especially on aligning the define values).
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
|