On 11/09/18 10:56, Hans Verkuil wrote: > 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. A better idea is to use 'cookies' (a better name is > welcome!) where the application can assign a u64 cookie to an output > buffer, which is then copied to the capture buffer(s) derived from the > output buffer. > > A u64 is chosen since this allows userspace to also use pointers to > internal structures as 'cookie'. > > The first two patches add core cookie support, the next two patches > add cookie support to vim2m and vicodec, and the final patch (compile > tested only!) adds support to the cedrus driver. I forgot to mention that I tested the core cookie support with vim2m and a hacked v4l2-compliance. Regards, Hans > > 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 (u64 for the cookie values). > > The cedrus code now also copies the timestamps (didn't happen before) > but the sequence counter is still not set, that's something that should > still be added. > > Note: if no buffer is found for a certain cookie, then the dma address > is just set to 0. That happened before as well with invalid buffer > indices. This should be checked in the driver! > > Also missing in this series are documentation updates, which is why > it is marked RFC. > > I would very much appreciate it if someone can test the cedrus driver > with these changes. If it works, then I can prepare a real patch series > for 4.20. It would be really good if the API is as stable as we can make > it before 4.20 is released. > > Regards, > > Hans > > Hans Verkuil (5): > videodev2.h: add cookie support > vb2: add cookie support > vim2m: add cookie support > vicodec: add cookie support > cedrus: add cookie support > > .../media/common/videobuf2/videobuf2-v4l2.c | 41 ++++++++++++++++--- > drivers/media/platform/vicodec/vicodec-core.c | 3 ++ > drivers/media/platform/vim2m.c | 3 ++ > drivers/media/v4l2-core/v4l2-ctrls.c | 9 ---- > drivers/staging/media/sunxi/cedrus/cedrus.h | 8 ++-- > .../staging/media/sunxi/cedrus/cedrus_dec.c | 10 +++++ > .../staging/media/sunxi/cedrus/cedrus_mpeg2.c | 23 +++++------ > include/media/videobuf2-v4l2.h | 18 ++++++++ > include/uapi/linux/v4l2-controls.h | 14 +++---- > include/uapi/linux/videodev2.h | 36 +++++++++++++++- > 10 files changed, 126 insertions(+), 39 deletions(-) >