Sebastian Dröge
bcfd60a8d2
videomixer2: Add videomixer2 element
...
This is based on collectpads2 and is synchronizing
all streams based on the running time.
New features compared to old videomixer:
* Synchronizing frames on the running time
* Improved and simplified negotiation
* Full QoS support
* Variable framerate support
Fixes bug #626048 , #624905 .
2010-09-04 14:52:11 +02:00
Sebastian Dröge
77c7f5fdcd
videomixer: Update disted ORC files
2010-09-04 14:52:09 +02:00
Sebastian Dröge
6da14d0c41
videomixer: Optimize ARGB blending and implement BGRA blending with orc
...
This now means, that we have absolutely no handwritten assembly anymore
in videomixer and it's also faster now when using SSE.
2010-09-04 14:52:09 +02:00
David Schleef
7cfa519547
videomixer: Add orc implementation for blending
...
videomixer: Add orc implementation for blending
2010-09-04 14:52:08 +02:00
David Schleef
1ace738c3a
videomixer: Fix example pipelines
...
videomixer: Fix example pipelines
2010-09-04 14:52:08 +02:00
Tim-Philipp Müller
b26897dd84
Release 0.10.25
2010-09-02 23:44:19 +01:00
Sebastian Dröge
9e981f6c2d
0.10.24.4 pre-release
2010-08-21 21:41:36 +02:00
Sebastian Dröge
19c8226c6d
videomixer: Fix pipeline in the documentation
...
Make sure that we have the same color format on all streams, i.e. AYUV
Fixes bug #625452 .
2010-08-06 19:24:56 +02:00
Sebastian Dröge
fc00857c82
videomixer: Move debug categories into the source files and add debug category for the blend functions
2010-08-04 19:43:08 +02:00
Sebastian Dröge
38124ef5e5
videomixer: Only reset QoS information and send a NEWSEGMENT event downstream for NEWSEGMENT events on the master pad
2010-07-21 10:23:30 +02:00
Tim-Philipp Müller
240dec038c
gst: update orc files
2010-06-26 18:41:49 +01:00
Sebastian Dröge
e84136ba03
videomixer: Port most blending related functions to orc
...
Only remaining MMX implementation is the ARGB/BGRA/AYUV blending
for which we first need the orc compositing opcodes.
2010-06-10 22:46:00 +02:00
Sebastian Dröge
e87802efdd
videomixer: Replace some tabs by spaces
2010-06-10 22:46:00 +02:00
David Schleef
b83cd99aeb
videomixer: liboil to orc conversion
2010-06-08 17:25:35 -07:00
Sebastian Dröge
f16ed4a91c
gst: Don't use GST_DEBUG_FUNCPTR for GObject vfuncs
2010-06-06 17:52:40 +02:00
Edward Hervey
2ff87c0fb9
videomixer: if we're not linked downstream, we can do any format
...
Stupid me, assuming _get_allowed_caps() would actually return the
pad templates if there was no peer.
2010-06-04 11:44:09 +02:00
Edward Hervey
d72a2fb6da
videomixer: Don't return caps in get_caps() that will be rejected
...
This commit basically puts _get_caps() in sync with accept_caps().
If we don't have a master pad OR the master pad caps aren't negotiated
then we just return the downstream allowed caps.
If we have a master pad with negotiated caps, we return those caps
with a free range of width/height/framerate
2010-06-03 19:01:14 +02:00
Edward Hervey
59dcdc37a0
videomixer: filter caps returned from downstream with our pad template.
2010-06-01 20:45:29 +02:00
Edward Hervey
01abf5b94e
videomixer: Implement sinkpad GetCapsFunction.
...
This allows returning only the formats, width, height, framerate
and pixel-aspect-ratio that downstream can support.
https://bugzilla.gnome.org/show_bug.cgi?id=620148
2010-06-01 12:42:10 +02:00
Sebastian Dröge
f5bca501e5
videomixer: Don't mix input with different pixel aspect ratios
...
Fixes bug #618530 .
2010-06-01 11:21:29 +02:00
Sebastian Dröge
85c6b9b712
videomixer: Make selection of a sinkpad number threadsafe
2010-05-05 19:35:48 +02:00
Sebastian Dröge
6dd3edd0f7
videomixer: Add support for YUY2, YVYU, UYVY
2010-04-29 19:28:22 +02:00
Sebastian Dröge
bd0b307a74
videomixer: Add support for Y444, Y42B, Y41B and YV12
2010-04-29 19:28:22 +02:00
Sebastian Dröge
5a530b19e8
videomixer: Fix byte order for MMX ARGB/AYUV color filling
...
Fixes bug #616409 .
2010-04-22 13:30:55 +02:00
Sebastian Dröge
a27856e6b8
videomixer: Fix AYUV checker/color filling
2010-04-21 17:53:49 +02:00
Sebastian Dröge
3f88dce350
videomixer: Add i387 floating point registers to the clobbered registers list
...
They are the same as the mm0-mm7 MMX registers and will be overwritten
by the assembly code if gcc doesn't know about the MMX registers.
Note: They're all added to the list of clobbered registers in all cases
and not only when __MMX__ is not defined just to make sure that no other
bugs happen with this code just because some compiler version gets things
wrong.
Fixes bug #614466 .
2010-04-19 16:57:19 +02:00
Sebastian Dröge
fe4ff4f324
videomixer: Add support for ABGR and RGBA
...
Now all 4 ARGB variants are supported by videomixer.
2010-03-20 17:32:48 +01:00
Tim-Philipp Müller
073201b329
build: Makefile.am cleanups
...
Mostly add $(GST_BASE_CFLAGS) where it was missing, but also fix up
order of flags and libs if needed (see docs/random/moving-plugins).
2010-03-18 21:34:24 +00:00
Benjamin Otte
1055aaa9cb
Add -Wredundant-decls warning flag
...
Also fix compile issues
2010-03-17 19:35:10 +01:00
Benjamin Otte
3342b1679e
Add -Wmissing-declarations -Wmissing-prototypes warning flags
...
And fix all the warnings.
2010-03-17 18:23:28 +01:00
Alessandro Decina
49b2a94644
Make sure FLUSH_STOP is sent so not to leave downstream flushing.
2010-02-24 02:05:49 +01:00
Wim Taymans
caec8d9837
videomixer: fix timestamp problems
...
When the pad with the highest framerate goes EOS, instead of not timestamping
output buffers, intepollate timestamps and durations from the last seen ones.
Fixes #608026
2010-02-12 13:53:57 +01:00
Sebastian Dröge
41b17ec2a7
videomixer: Fix assembly register constraints
...
Fixes bug #608209 .
2010-01-27 16:35:10 +01:00
Stefan Kost
404e673ac0
videomixer: use 'q' constraint instead of 'r'
...
This avoids the "bad register name `%dil'" compilation errors on 32bit where
because of 'r' gcc puts the value in a general purpose register and then tries
to access the lower part as %dil/%sil which is not existing on 32bit. 'q' requests
a-d registers
2010-01-13 16:48:46 +02:00
Sebastian Dröge
daa52708b3
videomixer: Implement basic QoS
...
This drops frames if they're too late anyway before blending and all
that starts but QoS events are not forwarded upstream. In the future
the QoS events should be transformed somehow and forwarded upstream.
2010-01-11 19:32:35 +01:00
Sebastian Dröge
6158f401a1
videomixer: Add MMX implementations for I420 and all non-alpha RGB formats
2010-01-11 18:37:45 +01:00
Sebastian Dröge
2950262186
videomixer: Refactor processing functions
...
This allows easier plugging of optimized processing functions
in the future, like for SSE or AltiVec.
2010-01-11 18:37:44 +01:00
Wim Taymans
362785df88
videomixer: optimize blend code some more
...
Use more efficient formula that uses less multiplies.
Reduce the amount of scalar code, use MMX to calculate the desired
alpha value.
Unroll and handle 2 pixels in one iteration for improved pairing.
2009-12-25 12:38:45 +01:00
Wim Taymans
4f9ded7742
videomixer: scale and clamp
...
Scale and clamp to the max alpha values.
2009-12-24 22:59:09 +01:00
Wim Taymans
3c0f18d765
videomixer: some trivial cleanups
2009-12-24 21:45:12 +01:00
Sebastian Dröge
3ac6f5e48b
videomixer: Fix assembly compilation on x86
...
Fixes bug #604814 .
2009-12-17 18:14:55 +01:00
Sebastian Dröge
0a0f7ecc16
videomixer: Use movzbl instead of movzxb for moving one byte to a l register
...
For some reason latest gcc/binutils accept movzxb here while
movzbl would be correct and is the only thing accepted by older
gcc/binutils.
Fixes bug #604679 .
2009-12-16 10:50:32 +01:00
Sebastian Dröge
9e45038d8d
videomixer: src/dest are input and output of the AYUV blending MMX assembler
2009-12-16 06:59:01 +01:00
Sebastian Dröge
061ededa36
videomixer: Add MMX implementations of the AYUV blending and color filling functions
...
This provides a 20% speedup for blending and 100% for color filling.
The blending can probably be optimized even more.
2009-12-15 12:30:21 +01:00
Sebastian Dröge
66d3ac8fb7
videomixer: Dequeue current buffer on FLUSH_STOP and don't unref NULL buffers
...
... NULL buffers shouldn't really happen anymore when popping the
buffer from GstCollectPads but better check for this and print a warning.
2009-12-12 16:55:13 +01:00
Sebastian Dröge
760eaf7b2a
videomixer: Fix stupid mistake in last commit
2009-12-11 13:11:12 +01:00
Sebastian Dröge
089d9d9dba
videomixer: Don't do floating point math in the inner processing loop for I420 blending
2009-12-11 12:36:42 +01:00
Sebastian Dröge
6f51dfba95
videomixer: Remove wrong comments, copied from the I420 blend function
2009-12-10 10:48:49 +01:00
Sebastian Dröge
93089ef445
videomixer: The queued duration is a signed integer
...
...and it will really be negative sometimes.
2009-12-09 21:15:07 +01:00
Sebastian Dröge
7418dee253
videomixer: Only pop buffers from collectpads after they're fully consumed
...
This decreases latency and memory usage because new buffers are only
accepted by collectpads if there's no queued buffer.
2009-12-09 21:03:57 +01:00