Commit graph

53 commits

Author SHA1 Message Date
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
Vincent Penquerc'h
d69e4e7a2c videoconvert: fix width/height mismatches
https://bugzilla.gnome.org/show_bug.cgi?id=663238
2011-11-24 11:09:20 +01:00
Mark Nauwelaerts
2c0b294005 videoconvert: fix odd width and height handling in some fastpath cases 2011-11-24 11:04:10 +01:00
Vincent Penquerc'h
e4d27cfa60 videoconvert: fix r210 writing only half a scanline 2011-11-07 18:19:51 +00:00
Wim Taymans
ddce68a5c2 video: More video helper library improvements
Make a new GstVideoFormatinfo structure that contains the specific information
related to a format such as the number of planes, components, subsampling,
pixel stride etc. The result is that we are now able to introduce the concept of
components again in the API.
Use tables to specify the formats and its properties.
Use macros to get information about the video format description.
Move code to set strides, offsets and size into one function.
Remove methods that are not handled with the structures.
Add methods to retrieve pointers and strides to the components in the video.
2011-07-04 16:01:14 +02:00
Wim Taymans
6d9e76f2de video: remove intermediate Plane structure
Remove the GstVideoPlane structure and move the fields directly into the
GstVideoInfo structure. This makes things a little easier to read and also makes
it more likely that we can pass the stride array to external libraries.
2011-06-20 11:25:58 +02:00