summaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/vivid/vivid-tpg.c
Commit message (Collapse)AuthorAgeFilesLines
* [media] tpg: Export the tpg code from vivid as a moduleHelen Mae Koike Fornazier2016-04-201-2314/+0
| | | | | | | | | | The test pattern generator will be used by other drivers as the virtual media controller (vimc) Signed-off-by: Helen Mae Koike Fornazier <helen.koike@collabora.co.uk> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: support new multiplanar YUV formatsHans Verkuil2016-03-031-0/+32
| | | | | | | | Add support for the new YUV422M, YVU422M, YUV444M and YVU444M formats. This allows applications to check their support for these formats. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add 10 and 12 bit Bayer formatsHans Verkuil2015-10-011-0/+91
| | | | | | | | Add support for 10 and 12 bit Bayer formats to the test pattern generator and the vivid driver. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: improve Y16 color setupHans Verkuil2015-06-061-2/+9
| | | | | | | | | | | | Currently the colors for the Y16 and Y16_BE pixelformats are in the range 0x0000-0xff00. So pure white (0xffff) is never created. Improve this by making white really white. For other colors the lsb remains 0 so vivid can be used to detect endian problems. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Reviewed-by: Ricardo Ribalda <ricardo.ribalda@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: move PRINTSTR to separate functionsHans Verkuil2015-06-051-47/+81
| | | | | | | | | | | | | | | | | | | Commit 84cb7be43cec12868e94163c99fdc34c0297c3b8 broke vivid-tpg (uninitialized variable p). This patch takes a different approach: four different functions are created, one for each PRINTSTR version. In order to avoid the 'the frame size of 1308 bytes is larger than 1024 bytes' warning I had to mark those functions with 'noinline'. For whatever reason gcc seems to inline this aggressively and it is doing weird things with the stack. I tried to read the assembly code, but I couldn't see what exactly it was doing on the stack. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: precalculate colorspace/xfer_func combinationsHans Verkuil2015-06-051-3/+3
| | | | | | | | Precalculate all the colorspace/transfer function combinations in order to easily generate the correct colors. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add xfer_func supportHans Verkuil2015-06-051-0/+7
| | | | | | | | Add support for the transfer function: create a new control for it, and support it for both capture and output sides. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: don't use more than 1024 bytes of stackMauro Carvalho Chehab2015-06-051-16/+17
| | | | | | | | | | | | | | | | | | | Remove the following compilation warnings: drivers/media/platform/vivid/vivid-tpg.c: In function 'tpg_gen_text': drivers/media/platform/vivid/vivid-tpg.c:1562:1: warning: the frame size of 1308 bytes is larger than 1024 bytes [-Wframe-larger-than=] } ^ This seems to be due to some bad optimization done by gcc. Moving the for() loop to happen inside the macro solves the issue. While here, fix CodingStyle at the switch(). Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com> Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
* [media] vivid: use new V4L2_MAP_*_DEFAULT definesHans Verkuil2015-05-301-42/+9
| | | | | | | Use these defines instead of hardcoding this in any driver that needs it. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] media/vivid: Add support for Y16_BE formatRicardo Ribalda2015-05-301-1/+8
| | | | | | | | Support for V4L2_PIX_FMT_Y16_BE, a 16 bit big endian greyscale format. Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] media/vivid: Code cleanoutRicardo Ribalda2015-05-181-3/+1
| | | | | | | | Remove code duplication by merging two cases in a switch. Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] media/vivid: Add support for Y16 formatRicardo Ribalda2015-05-181-1/+8
| | | | | | | | Support for V4L2_PIX_FMT_Y16, a 16 bit greyscale format. Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: fix XV601/709 Y'CbCr encodingHans Verkuil2015-04-281-4/+20
| | | | | | | | For these encodings the quantization range should be ignored, since there is only one possible Y'CbCr encoding. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add full range BT.2020C supportHans Verkuil2015-04-281-11/+29
| | | | | | | | In order to be consistent with the other Y'CbCr encodings add support for full range V4L2_YCBCR_ENC_BT2020_CONST_LUM. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add full range BT.2020 supportHans Verkuil2015-04-281-2/+13
| | | | | | | | In order to be consistent with the other Y'CbCr encodings add support for full range V4L2_YCBCR_ENC_BT2020. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add full range SMPTE 240M supportHans Verkuil2015-04-281-2/+12
| | | | | | | | In order to be consistent with the other Y'CbCr encodings add support for full range V4L2_YCBCR_ENC_SMPTE240M. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add tpg_log_status()Hans Verkuil2015-04-281-0/+16
| | | | | | | | Add a log_status function to the test pattern generator and use that in vivid. This simplifies debugging complex colorspace problems. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg.c: fix wrong Bt.2020 coefficientsHans Verkuil2015-04-021-2/+2
| | | | | | | | Mistyping 0.2627 as 0.2726 I can understand, but -0.4598 as -0.4629? No idea how I managed that. Anyway, these coefficients are now correct again. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add support for 8-bit Bayer formatsHans Verkuil2015-04-021-4/+53
| | | | | | | Add support for: PIX_FMT_SBGGR8, SGBRG8, SGRBG8 and SRGGB8. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add support for packed YUV formatsHans Verkuil2015-04-021-3/+37
| | | | | | | Add support for the packed YUV formats YUV444, YUV555, YUV565 and YUV32. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add support for BGR666Hans Verkuil2015-04-021-0/+13
| | | | | | | Add support for the four byte BGR666 format. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add support for PIX_FMT_RGB332Hans Verkuil2015-04-021-0/+12
| | | | | | | Add support for the one-byte-per-pixel RGB332 format. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add support for NV24 and NV42Hans Verkuil2015-04-021-2/+26
| | | | | | | Add support for the YUV 4:4:4 formats NV24 and NV42. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add support for [A|X]RGB555XHans Verkuil2015-04-021-0/+10
| | | | | | | Only RGB555X was supported, add support for the other two variants. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add RGB444 supportHans Verkuil2015-04-021-0/+21
| | | | | | | Add support for (A/X)RGB444 formats. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: split off the pattern drawing codeHans Verkuil2015-04-021-158/+162
| | | | | | | | | The last part of the vivid-tpg refactoring: split off the pattern drawing code into a function of its own. This greatly improves the readability and maintainability of this code. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: move the 'extras' drawing to a separate functionHans Verkuil2015-04-021-112/+104
| | | | | | | | This moves the drawing code for the extras (border, square, etc) to a function of its own instead of having this in the main for loop. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: move 'extras' parameters to tpg_draw_paramsHans Verkuil2015-04-021-42/+58
| | | | | | | | Any parameters related to drawing 'extras' like the border, the square, etc. are moved to struct tpg_draw_params. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: move pattern-related fields to struct tpg_draw_paramsHans Verkuil2015-04-021-6/+24
| | | | | | | | Add a new function that fills in pattern-related fields in struct tpg_draw_params. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: move common parameters to tpg_draw_paramsHans Verkuil2015-04-021-12/+22
| | | | | | | Replace local variables by fields in the tpg_draw_params struct. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add a new tpg_draw_params structureHans Verkuil2015-04-021-0/+29
| | | | | | | This is needed to refactor the drawing function which is much too big. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add const where appropriateHans Verkuil2015-04-021-4/+4
| | | | | | | Added 'const' to several functions where that is possible to do. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add helper functions to simplify common calculationsHans Verkuil2015-04-021-73/+57
| | | | | | | | Add helper functions to handle horizontal downscaling and horizontal scaling. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add support for V4L2_PIX_FMT_GREYHans Verkuil2015-04-021-1/+8
| | | | | | | Add monochrome support to the TPG. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add support for more planar formatsHans Verkuil2015-04-021-1/+89
| | | | | | | | | | | | | | | | | | | | | | Now that the support for hor/vert downsampled planar formats is in place we can add support for such formats to the TPG. This patch adds support for: V4L2_PIX_FMT_YUV420M V4L2_PIX_FMT_YVU420M V4L2_PIX_FMT_YUV420 V4L2_PIX_FMT_YVU420 V4L2_PIX_FMT_YUV422P V4L2_PIX_FMT_NV16 V4L2_PIX_FMT_NV61 V4L2_PIX_FMT_NV12 V4L2_PIX_FMT_NV21 V4L2_PIX_FMT_NV12P V4L2_PIX_FMT_NV21P Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: finish hor/vert downsampling supportHans Verkuil2015-04-021-18/+110
| | | | | | | | Implement horizontal and vertical downsampling when filling in the plane. The TPG is now ready to support such formats. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add hor/vert downsampling support to tpg_gen_textHans Verkuil2015-04-021-7/+20
| | | | | | | | This will just skip lines/pixels since color fidelity is not quite as important here as it is with the test patterns themselves. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: correctly average the two pixels in gen_twopix()Hans Verkuil2015-04-021-6/+42
| | | | | | | | | | | gen_twopix() is always called twice: once for the first and once for the second pixel. Improve the code to properly average the two if the format requires horizontal downsampling. This is necessary for patterns like 1x1 red/blue checkers. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: precalculate downsampled linesHans Verkuil2015-04-021-2/+38
| | | | | | | | | | | | | | | | | When dealing with vertical downsampling two successive lines have to be averaged. In the case of the test pattern generator that only happens if the two lines are using different patterns. So precalculate the average between two pattern lines: one of pattern P and one of pattern P + 1. That way there is no need to do any on-the-fly downsampling: it's all done in the precalculate phase. This patch also implements horizontal downsampling in the precalculate phase. The only thing that needs to be done is to half the width since the actual downsampling happens when two pixels at a time are generated. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add hor/vert downsampling fieldsHans Verkuil2015-04-021-1/+6
| | | | | | | | | | | | This is step one of supporting horizontal and vertical downsampling. This just adds support for the h/vdownsampling fields and it increases the maximum number of planes to 3. Currently none of the planar formats need horizontal or vertical downsampling, so this change has no effect at the moment. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: add helper functions for single buffer planar formatsHans Verkuil2015-04-021-1/+17
| | | | | | | | Add helpers functions to determine the line widths and image sizes for planar formats that are stores in a single buffer. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: separate planes and buffersHans Verkuil2015-04-021-0/+3
| | | | | | | | | Add a new field that contains the number of buffers. This may be less than the number of planes in case multiple planes are combined into one buffer. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: don't add offset when switching to monochromeHans Verkuil2015-04-021-1/+1
| | | | | | | | The grayscale values are still full range sRGB, so don't add the limited range offset. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: add new checkboard patternsHans Verkuil2015-04-021-3/+23
| | | | | | | | | Add a 2x2 checker patterns and 1x1 and 2x2 red/blue checker patterns. Useful for testing 4:2:2 and 4:2:0 formats. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: fix test pattern movement for V4L2_FIELD_ALTERNATEHans Verkuil2015-04-021-1/+3
| | | | | | | | | | | | | | The successive TOP/BOTTOM fields did not move as they should: only every other field actually changed position. The cause was that the tpg needs to know if it is dealing with a FIELD_ALTERNATE case since that requires slightly different handling. So tell the TPG whether or not the field setting is for the ALTERNATE case or not. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: BT.2020 R'G'B' is limited rangeHans Verkuil2015-04-021-0/+4
| | | | | | | | According to the standard the R'G'B' BT.2020 colorspace is limited range, not full range. Fix this. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: Y offset should depend on quant. rangeHans Verkuil2015-01-291-4/+6
| | | | | | | | | | When converting to or from Y'CbCr and R'G'B' the Y offset depends on the quantization range: it's 0 for full and 16 for limited range. But in the code it was hardcoded to 16. This messed up the brightness of the generated pattern. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid-tpg: improve colorspace supportHans Verkuil2014-12-021-107/+220
| | | | | | | | Add support for the new AdobeRGB and BT.2020 colorspaces. Also support explicit Y'CbCr and quantization settings. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: fix buffer overrunHans Verkuil2014-10-211-1/+1
| | | | | | | | | | | The random_line buffer must be twice the maximum width, but it only allocated the maximum width, so it was only half the size it needed to be. Surprisingly I never saw the kernel fail on this, but the same TPG code used in qv4l2 crashed and valgrind helped me track this bug down. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] vivid: tpg_reset_source prototype mismatchHans Verkuil2014-09-081-1/+1
| | | | | | | | Replaced enum v4l2_field by u32, just as the prototype in the header has. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>