Wim Taymans
1fa70ac02d
videoconvert: don't interpolate chroma in I420 -> RGB
...
Don't try to interpolate the chroma samples, the used algorithm only
works for horizontal cositing. Let's switch to a faster and safer
version until we handle chroma siting correctly in the fastpaths.
2014-01-13 17:24:01 +01:00
Wim Taymans
14b5999bca
videoconvert: rework YUV->RGB fastpaths
...
Rework the orc code to be around 10% faster and support arbitrary matrices.
Pass the matrix parameters to the YUV->RGB functions to make them work
for all matrices. This enables more and faster fastpath conversions.
See https://bugzilla.gnome.org/show_bug.cgi?id=721701
2014-01-09 18:19:59 +01:00
Sebastian Dröge
cd4602ecfa
videoconvert: Fix I420 to BGRA fast-path alpha setting
...
This fast-path was adding 128 to every component including
alpha while it should only be done for all components except
alpha. This caused wrong alpha values to be generated.
Also remove the high-quality I420 to BGRA fast-path as it needs
the same fix, which causes an additional instruction, which causes
orc to emit more than 96 variables, which then just crashes.
This can only be fixed in orc by breaking ABI and allowing more
variables.
2013-12-23 14:56:15 +01:00
Matthieu Bouron
22f411378e
videoconvert: remove unneeded guint comparaison
...
https://bugzilla.gnome.org/show_bug.cgi?id=710760
2013-10-25 12:42:19 +01:00
Wim Taymans
9b4e2b4b36
videoconvert: disable fastpath for odd width on some formats
2013-09-06 12:45:36 +02:00
Wim Taymans
e97f6401de
videoconvert: add additional width/height constraints
...
Some of the fastpath function can only work with aligned widht/height
so make sure we check this as well when choosing a fastpath.
Add fastpath for I420/YV12 -> BGRx
2013-09-05 17:22:50 +02:00
Wim Taymans
ce2b40670a
videoconvert: don't convert too much with odd width
2013-09-05 16:26:33 +02:00
Wim Taymans
700afbf6fd
videoconvert: handle lines in one go
...
Handle odd heights in 1 go when no vertical subsampling is used.
2013-09-05 11:05:36 +02:00
Wim Taymans
ce2ad4ae4a
videoconvert: fix height round down
2013-09-05 11:04:03 +02:00
Wim Taymans
22da49a55c
videoconvert: also allocate temp lines in fastpath
...
Some of the fastpath functions need tmplines, so make sure we allocate some in
the fastpath too.
This avoids SEGFAULTs with odd heights.
See https://bugzilla.gnome.org/show_bug.cgi?id=663248
2013-09-04 17:36:29 +02:00
Wim Taymans
579be969e5
videoconvert: add more fastpaths
...
Also reuse the I420 code for YV12 because it can handle the swapped UV fields
just fine.
2013-09-04 15:10:50 +02:00
Wim Taymans
c731f1cba0
videoconvert: only chroma subsample when needed
2013-09-03 17:37:14 +02:00
Wim Taymans
10b3b88e9c
videoconvert: fix handling of chroma resample
...
Increase the number of temporary lines that we need, it is possible that the
up and downsampling offsets are out of phase and that we need to keep some
extra lines around. Also copy the unhandled output lines for the next round
instead of overwriting them.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=706823
2013-09-03 15:42:44 +02:00
Wim Taymans
cfb7b51c08
videoconvert: improve debug
2013-09-03 15:41:56 +02:00
Sebastian Dröge
eb09e561c4
videoconvert: Fix leaking of the chroma resample helper objects
2013-06-11 15:24:05 +02:00
Wim Taymans
00bbca2f9f
videoconvert: free tmplines correctly
...
Keep track of how many tmplines we allocated and use that to free the
correct amount of lines.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=701234
2013-05-30 05:27:31 +02:00
Wim Taymans
7b8ff707b6
videoconvert: run chroma resamplers
...
Run the chroma upsampler after unpack and the chroma subsampler
before pack for higher quality conversions and correct chroma siting.
2013-05-27 11:05:08 +02:00
Wim Taymans
4f2e1b46a7
videoconvert: reformat
2013-05-27 11:05:06 +02:00
Wim Taymans
620e3aad07
videoconvert: actually use the input pixels
...
Operate on the provided pixels array instead of the temp array.
2013-05-27 11:05:06 +02:00
Wim Taymans
bc4238f959
videoconvert: use one matrix function
...
Use only one matrix function pointer, let the implementation cast the pixels to
the right size.
2013-03-30 19:14:40 +01:00
Wim Taymans
43a9bfae78
videoconvert: use one temp array for lines
...
Use only one temporary array for pixels.
2013-03-30 19:14:40 +01:00
Wim Taymans
701ae2f144
videoconvert: respect the pack_lines when packing
...
Packing is supposed to happen on the amount of lines specified in the format
info. It's currently all set to 1 but that will change.
2013-03-28 18:16:09 +01:00
Wim Taymans
3532323817
videoconvert: small cleanup
2013-03-28 18:15:24 +01:00
Tim-Philipp Müller
dce49a1a7e
video: fix return type of _get_palette() and add since markers to docs
...
'const gpointer' is not the same as 'gconstpointer', see
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35928 .
2013-02-06 12:43:51 +00:00
Wim Taymans
be866d4b78
videoconvert: interlace support to some fastpath functions
...
Add interlace support for some fastpath functions.
2013-02-04 16:21:20 +01:00
Wim Taymans
599880ff8d
videoconvert: make fast path interlaced aware
...
Make sure that we also handle interlacing when choosing the fast path.
See https://bugzilla.gnome.org/show_bug.cgi?id=588535
2013-02-04 15:40:02 +01:00
Wim Taymans
e3a9a7cf07
videoconvert: pass frame interlaced flag to pack/unpack
...
If the frame is interlaced, pass the interlaced flag to the pack/unpack
functions to make it unpack correctly.
2013-02-04 15:19:35 +01:00
Wim Taymans
ed2ce49499
videoconvert: use the palette helper functions
...
Get the palette from the video library instead of making our own.
2013-02-04 15:06:10 +01:00
Wim Taymans
9b95f9de95
videoconvert: make a constant of scale factor
2013-02-04 15:06:06 +01:00
Tim-Philipp Müller
5f59b4f7ee
Fix FSF address
...
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 23:05:09 +00:00
Wim Taymans
a5ef81e05e
videoconvert: add more debug
2012-10-22 09:51:34 +02:00
Wim Taymans
f3f08e829d
videoconvert: actually copy the palette
...
Copy the default palette in the destination buffer too.
2012-10-15 16:32:25 +02:00
Wim Taymans
7f23e75f3c
videoconvert: small cleanups
...
Make function pointers NULL when nothing needs to be done.
Pass target pixels to dither and matrix functions so that we can later make
them operate on the target buffer memory directly.
2012-07-27 12:19:04 +02:00
Wim Taymans
1e8c480dd7
videoconvert: prefix orc functions with video_convert_orc_
2012-07-23 17:19:56 +02:00
Wim Taymans
3d8636a662
videoconvert: use video helper function
...
Use the video helper function to get the offset and scale of a format.
2012-07-16 11:22:03 +02:00
Sebastian Dröge
a479886ff9
videoconvert: Fix compiler warnings
...
videoconvert.c: In function 'videoconvert_convert_new':
videoconvert.c:287:11: error: 'Kr' may be used uninitialized in this function
videoconvert.c:287:15: error: 'Kb' may be used uninitialized in this function
2012-07-11 12:57:28 +02:00
Wim Taymans
aa261162d2
videoconvert: fix offset and scale for GRAY
...
Fix the calculation of the offset and scale values for GRAY formats. We also
need to set the offset and base of the chroma values to match what the unpack
function creates.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=679612
2012-07-10 11:08:00 +02:00
Wim Taymans
ec4ca4773a
videoconvert: refactor matrix setup
2012-06-04 20:36:10 +02:00
Wim Taymans
93c3a74755
videoconvert: fix 0_255 handling
...
We also need to apply an offset to the Cb and Cr samples in the 0-255 case.
2012-06-04 16:17:32 +02:00
Wim Taymans
29edc0c6a5
videoconvert: improve color transform setup
...
Remove hardcoded color matrices and compute the matrices using the cms helper
library that was in cogcolorspace before.
2012-06-04 16:17:31 +02:00
Wim Taymans
443b0a3c78
videoconvert: use video helper library more
...
Use VideoInfo to setup the conversion.
Use the color matrix from the video info.
2012-06-01 12:09:44 +02:00
Wim Taymans
7f134c1441
video: fix paletted format
...
RGB8_PALETTED -> RGB8P
Fix the definition of paletted formats, store the palette in the second
plane.
Make sure we copy the palette correctly in gst_video_frame_copy()
Don't do alignment on the palette in videopool
2012-05-31 13:44:43 +02:00
Wim Taymans
c7b2011d68
videoconvert: use video library pack/unpack
...
Remove obsolete code and use the video pack/unpack functions
2012-05-30 17:17:24 +02:00
Wim Taymans
059a6ca673
video: update for removed formats
2012-05-29 17:52:06 +02:00
Wim Taymans
03dc5d4a1b
video: fix UYVP packing function
2012-05-28 17:11:46 +02:00
Wim Taymans
ae2c5e1757
videoconvert: fix v216
2012-05-28 16:31:14 +02:00
Wim Taymans
d2a1613a43
videoconvert: add support for 10bit I420
...
Add support for 10bit I420
Reorganize some macros, have separate plane and component macros, fix
a problem with YV12 in the process.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=665034
2012-05-28 12:59:40 +02:00
David Schleef
df11b1a5d1
colorspace: Fix v210 writing out of bounds
...
Port from 0.10 branch in -bad
2012-02-21 10:05:20 +01:00
David Schleef
bb19c41081
videoconvert: clamp intermediates when dithering
...
Port from the colorspace plugin in -bad.
2012-02-20 16:10:22 +01:00
Wim Taymans
e22f406a9a
videoconvert: improve error reporting
2012-02-10 15:41:19 +01:00