Re: [PATCHv5 0/8] vb2/cedrus: use timestamps to identify buffers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Wed, 2018-12-12 at 13:38 +0100, hverkuil-cisco@xxxxxxxxx wrote:
> From: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>
> 
> As was discussed here (among other places):
> 
> https://lkml.org/lkml/2018/10/19/440
> 
> using capture queue buffer indices to refer to reference frames is
> not a good idea. 
> 
> Instead, after a long irc discussion:
> 
> https://linuxtv.org/irc/irclogger_log/v4l?date=2018-12-12,Wed
> 
> it was decided to use the timestamp in v4l2_buffer for this.
> 
> However, struct timeval cannot be used in a compound control since
> the size of struct timeval differs between 32 and 64 bit architectures,
> and there are also changes upcoming for y2038 support.
> 
> But internally the kernel converts the timeval to a u64 (nsecs since
> boot). So we provide a helper function in videodev2.h that converts
> the timeval to a u64, and that u64 can be used inside compound controls.
> 
> In the not too distant future we want to create a new struct v4l2_buffer,
> and then we'll use u64 from the start, so in that case the helper function
> would no longer be needed.
> 
> The first three patches add a new m2m helper function to correctly copy
> the relevant data from an output buffer to a capture buffer. This will
> simplify m2m drivers (in fact, many m2m drivers do not do this quite
> right, so a helper function was really needed).
> 
> The fourth patch clears up messy timecode documentation that I came
> across while working on this.
> 
> Patch 5 adds the new v4l2_timeval_to_ns helper function to videodev2.h.
> The next patch adds the vb2_find_timestamp() function to find buffers
> with a specific u64 timestamp.
> 
> Finally the cedrus driver and documentation are updated to use a
> timestamp as buffer identifier.
> 
> I also removed the 'pad' fields from the mpeg2 control structs (it
> should never been added in the first place) and aligned the structs
> to a u32 boundary.
> 
> Please note that this patch series will have to be updated one more
> time when pending 4.20 fixes are merged back into our master since
> those patches will move the cedrus mpeg controls to a different header.

I hit the same build issue that Jonas reported already. With the 
appropriate fix, this works fine with the cedrus driver.

So with the related fix included, this is:
Tested-by: Paul Kocialkowski <paul.kocialkowski@xxxxxxxxxxx>

Cheers,

Paul

> Regards,
> 
>         Hans
> 
> Hans Verkuil (8):
>   v4l2-mem2mem: add v4l2_m2m_buf_copy_data helper function
>   vim2m: use v4l2_m2m_buf_copy_data
>   vicodec: use v4l2_m2m_buf_copy_data
>   buffer.rst: clean up timecode documentation
>   videodev2.h: add v4l2_timeval_to_ns inline function
>   vb2: add vb2_find_timestamp()
>   cedrus: identify buffers by timestamp
>   extended-controls.rst: update the mpeg2 compound controls
> 
>  Documentation/media/uapi/v4l/buffer.rst       | 11 ++++----
>  .../media/uapi/v4l/extended-controls.rst      | 28 +++++++++++--------
>  .../media/common/videobuf2/videobuf2-v4l2.c   | 22 +++++++++++++--
>  drivers/media/platform/vicodec/vicodec-core.c | 12 +-------
>  drivers/media/platform/vim2m.c                | 12 +-------
>  drivers/media/v4l2-core/v4l2-ctrls.c          |  9 ------
>  drivers/media/v4l2-core/v4l2-mem2mem.c        | 20 +++++++++++++
>  drivers/staging/media/sunxi/cedrus/cedrus.h   |  9 ++++--
>  .../staging/media/sunxi/cedrus/cedrus_dec.c   |  2 ++
>  .../staging/media/sunxi/cedrus/cedrus_mpeg2.c | 21 ++++++--------
>  include/media/v4l2-mem2mem.h                  | 20 +++++++++++++
>  include/media/videobuf2-v4l2.h                | 19 ++++++++++++-
>  include/uapi/linux/v4l2-controls.h            | 14 ++++------
>  include/uapi/linux/videodev2.h                | 12 ++++++++
>  14 files changed, 136 insertions(+), 75 deletions(-)
> 
-- 
Paul Kocialkowski, Bootlin (formerly Free Electrons)
Embedded Linux and kernel engineering
https://bootlin.com




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux