Em Fri, 10 Mar 2017 17:00:59 -0800 Troy Kisky <troy.kisky@xxxxxxxxxxxxxxxxxxx> escreveu: > On 3/10/2017 12:53 PM, Mauro Carvalho Chehab wrote: > > The libv4lconvert part of libv4l was meant to provide a common > > place to handle weird proprietary formats. With time, we also > > added support to other standard formats, in order to help > > V4L2 applications that are not performance sensitive to support > > all V4L2 formats. > > > > Yet, the hole idea is to let userspace to decide to implement > > their own format conversion code when it needs either more > > performance or more quality than what libv4lconvert provides. > > > > In other words, applications should have the right to decide > > between using a libv4lconvert emulated format or to implement > > the decoding themselves for non-proprietary formats, > > as this may have significative performance impact. > > > > At the application side, deciding between them is just a matter > > of looking at the V4L2_FMT_FLAG_EMULATED flag. > > > > Yet, we don't want to have a miriad of format converters > > everywhere for the proprietary formats, like V4L2_PIX_FMT_KONICA420, > > V4L2_PIX_FMT_SPCA501, etc. So, let's offer only the emulated > > variant for those weird stuff. > > > > So, this patch changes the libv4lconvert behavior, for > > all non-proprietary formats, including Bayer, to offer both > > the original format and the emulated ones. > > > > Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx> > > --- > > lib/libv4lconvert/libv4lconvert.c | 17 ++++++++--------- > > 1 file changed, 8 insertions(+), 9 deletions(-) > > > > diff --git a/lib/libv4lconvert/libv4lconvert.c b/lib/libv4lconvert/libv4lconvert.c > > index da718918b030..d87d6b91a838 100644 > > --- a/lib/libv4lconvert/libv4lconvert.c > > +++ b/lib/libv4lconvert/libv4lconvert.c > > @@ -118,10 +118,10 @@ static const struct v4lconvert_pixfmt supported_src_pixfmts[] = { > > { V4L2_PIX_FMT_OV511, 0, 7, 7, 1 }, > > { V4L2_PIX_FMT_OV518, 0, 7, 7, 1 }, > > /* uncompressed bayer */ > > - { V4L2_PIX_FMT_SBGGR8, 8, 8, 8, 1 }, > > - { V4L2_PIX_FMT_SGBRG8, 8, 8, 8, 1 }, > > - { V4L2_PIX_FMT_SGRBG8, 8, 8, 8, 1 }, > > - { V4L2_PIX_FMT_SRGGB8, 8, 8, 8, 1 }, > > + { V4L2_PIX_FMT_SBGGR8, 8, 8, 8, 0 }, > > + { V4L2_PIX_FMT_SGBRG8, 8, 8, 8, 0 }, > > + { V4L2_PIX_FMT_SGRBG8, 8, 8, 8, 0 }, > > + { V4L2_PIX_FMT_SRGGB8, 8, 8, 8, 0 }, > > { V4L2_PIX_FMT_STV0680, 8, 8, 8, 1 }, > > /* compressed bayer */ > > { V4L2_PIX_FMT_SPCA561, 0, 9, 9, 1 }, > > @@ -178,7 +178,7 @@ struct v4lconvert_data *v4lconvert_create_with_dev_ops(int fd, void *dev_ops_pri > > /* This keeps tracks of devices which have only formats for which apps > > most likely will need conversion and we can thus safely add software > > processing controls without a performance impact. */ > > > The bottom part seems unwanted. > Before, if any source format did not need conversion then always_needs_conversion = 0 > else always_needs_conversion = 1 > > Now > if any source format needs conversion then always_needs_conversion = 1 > else always_needs_conversion = 0 Hmm... you're right. I dropped that part at "PATH v2". I also added a patch improving the documentation about this logic, with is not too clear, IMHO. Thanks, Mauro