Commit graph

4232 commits

Author SHA1 Message Date
Wim Taymans
3cd2eb5847 video-converter: fix border handling of YUY2 and friends
Don't draw the border in groups of 4 pixels for YUY2 but instead in
groups of 2 with alternating U and V. This avoids a crash on odd width
borders.
2015-03-11 09:48:20 +01:00
Wim Taymans
757669481c video-converter: force yuv conversion for border
Make sure we always do yuv conversion for the border.
2015-03-11 09:47:23 +01:00
Wim Taymans
dd5fa311a1 video-format: fix A422 subsampling description 2015-03-10 17:29:51 +01:00
Wim Taymans
0d333d8d44 video-converter: add table based matrix8 implementation
Based on patch from Mozzhuhin Andrey <nopscmn at gmail.com>

Add a table based matrix8 multiplication implementation. The algorithm
does not do any clipping so we need to make sure we never call this on
input that might need to be clipped. In general, this algorithm is
2 times faster than the orc optimized one and would be chosen for all
RGB -> YUV conversions and some YUV->YUV and RGB->RGB conversions.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732186
2015-03-10 15:22:17 +01:00
Sebastian Dröge
06fd6f2f63 video: Add support for 10 bit planar AYUV formats 2015-03-10 10:31:28 +01:00
Tim-Philipp Müller
c53ba4beeb Fix double semicolons 2015-03-10 09:27:08 +00:00
Wim Taymans
62ff9b8bca video-info: validate parsed colorimetry
Validate the parsed colorimetry and reset to defaults when we get RGB
with a matrix or YUV without a matrix.
2015-03-09 16:28:02 +01:00
Wim Taymans
6ee67a8aa1 video-converter: detect identity matrix
Do nothing if we have an identity matrix conversion.
2015-03-09 16:02:17 +01:00
Wim Taymans
cf572ae2cb video-info: use default colorimetry on error
When we fail to parse the colorimetry property, fall back to the default
colorimetry for the format and dimension instead of leaving things
undefined.
2015-03-09 16:02:17 +01:00
Luis de Bethencourt
fedc1dba1a videoencoder: unused value
Value set in ret is immediately overwritten in the next line outside of the if
block. Run reset but don't store return.

CID #1226470
2015-03-09 11:25:47 +00:00
Wim Taymans
8296cdbfd5 video-converter: only convert to/from rgb when needed
Only use the YUV->RGB matrix when we have YUV as input and only use the
matrix when we need to make YUV output.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745780
2015-03-09 12:16:56 +01:00
Sebastian Dröge
8f13a31bae rtpbuffer: Link to an explanation why the seqnum comparison function does the right thing even for wraparounds 2015-03-09 11:12:46 +01:00
Mark Nauwelaerts
f134072c66 videodecoder: only return EOS upon clipping if applicable
See also https://bugzilla.gnome.org/show_bug.cgi?id=709224
2015-03-07 20:12:23 +01:00
Mark Nauwelaerts
eeeb2eab82 audiodecoder: only return EOS upon clipping if applicable
See also https://bugzilla.gnome.org/show_bug.cgi?id=709224
2015-03-07 20:10:31 +01:00
Sebastian Dröge
13a93575e1 video: Update orc generated C files 2015-03-07 16:49:07 +01:00
Wim Taymans
7b6278b7e4 video-converter: add transfer full annotation for config 2015-03-06 12:54:56 +01:00
Ravi Kiran K N
6bd458abc1 video-converter: correct right-border location for YUY2, YVYU, UYVY
Remove 'r_border /= 2' in convert_fill_border(). It doesn't
take the right border to correct location.

https://bugzilla.gnome.org/show_bug.cgi?id=745719
2015-03-06 12:27:18 +01:00
Wim Taymans
31a3e6c9f1 video-converter: avoid scaler when size is unchanged 2015-03-05 09:52:18 +01:00
Wim Taymans
6602861d00 video-scaler: add horizontal 2tap u16 orc function
Add slightly faster u16 horizontal resampler orc function.
2015-03-04 16:45:35 +01:00
Wim Taymans
e0a192d3dd video-converter: don't reuse the input line when adding borders
When we need to add borders, we need a writable input line, so
don't reuse the source memory directly.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745207
2015-03-04 12:29:45 +01:00
Arun Raghavan
557c2c9be1 audiobasesink: Reset audio clock if necessary
When the ringbuffer is deactivated and then acquired, if the audio clock
provided by the sink gets reset to zero, we need to add an offset to the
clock to make sure that subsequent samples are written out at the right
times. While we need to leave this to derived classes to take care of
when they provide their own clock (since that clock may or may not be
reset to zero), we can do this ourselves if we know the provided clock
is our own (which does reset to zero on a re-acquire).
2015-03-03 23:26:54 +05:30
Wim Taymans
4643d34a7a video-converter: avoid making scalers for outsize == 0 2015-03-02 16:42:23 +01:00
Wim Taymans
b2a7ac2766 video-converter: v-resample enough pixels
When we are using the fast linear resampler, use the ->inc to calculate
the first and last pixel we need so that we can do vertical resampling
on the right amount of pixels.
2015-03-02 16:33:09 +01:00
Wim Taymans
0062dadc35 video-orc: fix unpack functions for RGB/RGB15 on BE
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745337
2015-03-02 15:07:34 +01:00
Wim Taymans
d1a9eacb75 video-format: more fixes for big endian 2015-03-02 13:27:23 +01:00
Wim Taymans
569ca5770c video-format: add big-endian versions of RGB/BGR 15/16 pack/unpack
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745337
2015-03-02 12:27:24 +01:00
Olivier Crête
6046421ecc pbutils: description: Make static strings static
Otherwise, they're not guaranteed to still be valid when leaving the scope.

https://bugzilla.gnome.org/show_bug.cgi?id=673976
2015-02-27 15:08:50 -05:00
Luis de Bethencourt
7175417f7e video-converter: remove check for below zero for unsigned int
CLAMP checks both if value is '< 0' and '> max'. Value will never be a negative
number since it in an unsigned integer. Removing that check and only checking
if it is bigger than max and setting it appropriately.

CID #1271606
2015-02-26 14:48:51 +00:00
Wim Taymans
621292e754 video-converter: we can use the scaler without scalers to copy 2015-02-25 17:00:34 +01:00
Wim Taymans
e1715f7728 video-converter: only make a scaler when we are scaling
Only make a scaler when we are actually doing any scaling. Without
scalers, the scale function will simply do a copy.
2015-02-25 16:50:02 +01:00
Wim Taymans
330fb44a6f video-scaler: add support for copy
When no scalers are given, simply do a copy of the requested area.
2015-02-25 16:49:20 +01:00
Wim Taymans
3046935e03 video-converter: activate scaler fastpath depending on method
Only activate the scaler fastpath for x2 up and downscale when the
scaler method is respectively nearest and linear because that is what
those fastpaths really implement.
2015-02-25 16:15:52 +01:00
Wim Taymans
9e8799924b video-scaler: add scaler optimization
If we are vertically downscaling, it is better to first downscale and
then do the horizontal scaling in most cases.
2015-02-25 15:33:26 +01:00
Wim Taymans
4d8c277656 video-scaler: remove unused case 2015-02-25 15:32:57 +01:00
Wim Taymans
495873298c video-converter: don't overwrite border alpha
Let border alpha and image alpha be independent.
2015-02-25 11:39:20 +01:00
Wim Taymans
c4f071546d video-converter: use 1.0 as default alpha 2015-02-24 17:33:57 +01:00
Wim Taymans
5077a5e3af video-converter: add alpha handling
Add support for alpha. Make it possible to copy, set and multiply the
alpha value of a frame during conversion.
Set the border alpha to 0xff by default.
Go over some of the fastpaths and add alpha handling.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745006
2015-02-24 17:29:18 +01:00
Wim Taymans
5744b7995c video-converter: fix chroma subsampling
Also adjust the output line number with the offset.
2015-02-24 17:29:18 +01:00
Wim Taymans
cb5ec197da video-converter: disable fastpath when scaling and gamma
Disable the fastpath when scaling and doing gamma remap.
2015-02-24 17:29:18 +01:00
Wim Taymans
bf916a244d video-converter: don't do gamma on alpha channel
The alpha channel is not supposed to be gamma encoded.
2015-02-24 17:29:18 +01:00
Tim-Philipp Müller
0b0c667e57 video-converter: minor docs fix 2015-02-24 12:38:10 +00:00
Jan Schmidt
b3053925ac audiodecoder: Don't send pending events before decode
Make sure to update the output segment to track the segment
we're decoding in, but don't actually push it downstream until
after buffers are decoded.

https://bugzilla.gnome.org/show_bug.cgi?id=744806
2015-02-24 01:36:44 +11:00
Jan Schmidt
af26201429 videodecoder: Add drain() vfunc
drain() is a new vfunc which does what finish() does, while
explicitly requiring the decoder be able to continue processing
data afterward.

https://bugzilla.gnome.org/show_bug.cgi?id=734617
2015-02-24 01:36:44 +11:00
Mark Nauwelaerts
ccee86a7dd Revert "videodecoder: drain current segment upon new one to ensure correct flow return"
This reverts commit cc1b4eaf9e.

See https://bugzilla.gnome.org/show_bug.cgi?id=734617
2015-02-22 16:59:08 +01:00
Mark Nauwelaerts
c321b6bd81 Revert "audiodecoder: drain current segment upon new one to ensure correct flow return"
This reverts commit 696b8cdc40.

See https://bugzilla.gnome.org/show_bug.cgi?id=734617
2015-02-22 16:58:33 +01:00
Mark Nauwelaerts
cc1b4eaf9e videodecoder: drain current segment upon new one to ensure correct flow return
See also https://bugzilla.gnome.org/show_bug.cgi?id=709224
2015-02-22 13:23:44 +01:00
Mark Nauwelaerts
696b8cdc40 audiodecoder: drain current segment upon new one to ensure correct flow return
See also https://bugzilla.gnome.org/show_bug.cgi?id=709224
2015-02-22 13:23:44 +01:00
Thiago Santos
7e39a51a50 audio: video: fix a few GI annotations
transfer-full -> transfer full
@Since -> Since
2015-02-19 15:51:42 -03:00
Thiago Santos
cd07101420 tagdemux: ensure tags have been fetched before pulling data
Otherwise upstream can get confused about offsets as there will
be a jump once the tags have been parsed due to the stripped area.

If upstream pulls from 0 to 100, and then tagdemux does the
tag reading and finds out that the first 200 bytes are the tag, the
next pull from upstream will have an offset of 200 bytes. So
upstream will get the following data:

0 - 100, 300 - (EOS), as it will continue requesting from where
it has last stopped, but tagdemux will add an offset to skip the
tags.

This patch makes sure that the tags have been parsed and skipped
since the first pull range call.

https://bugzilla.gnome.org/show_bug.cgi?id=744580
2015-02-18 21:00:50 -03:00
Tim-Philipp Müller
f0f6bd4910 pbutils: description: fix MPEG-2 video profiles in description
We would accidentally use the profile nick as profile name
in the description for MPEG video that's not version 4.
2015-02-18 11:34:15 +00:00