Commit graph

83 commits

Author SHA1 Message Date
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
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
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
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
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
3c0f18d765 videomixer: some trivial cleanups 2009-12-24 21:45:12 +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
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
Sebastian Dröge
b0f8978fd8 videomixer: Use gst_util_uint64_scale_int() for fps to seconds per frame calculations 2009-12-09 16:15:09 +01:00
Sebastian Dröge
91ad86c0f9 videomixer: Random cleanup 2009-07-10 19:54:25 +02:00
Sebastian Dröge
f19ef7eada videomixer: Send queries to the master pad by default instead of all pads 2009-07-10 19:54:13 +02:00
Sebastian Dröge
0bf61ecfaf videomixer: Add RGB, BGR, xRGB, RGBx, xBGR, BGRx support 2009-07-10 19:35:49 +02:00
Sebastian Dröge
bbcb4f8f15 videomixer: Clean up debugging a bit 2009-07-10 17:43:07 +02:00
Sebastian Dröge
0775db4455 videomixer: Remove some redundant checks and error out immediately if not negotiated
Also stop leaking the output buffer in some error cases.
2009-07-10 17:33:40 +02:00
Sebastian Dröge
4ccd9c92ae videomixer: Remove the calculate_frame_size() function and use libgstvideo instead 2009-07-10 17:23:03 +02:00
Edward Hervey
34c97c0c6f videomixer: Remove unused link/unlink pad methods 2009-07-10 14:37:16 +02:00
Edward Hervey
ace4cb2295 videomixer: Make debugging category global to all the code. 2009-07-10 14:37:07 +02:00
Edward Hervey
3ebf5e9a2a videomixer: improve readability of debugging statements. 2009-07-10 14:37:04 +02:00
Sebastian Dröge
69f9b7c8d6 videomixer: Add support for ARGB
And clean up the caps parsing.
2009-07-08 18:17:48 +02:00
Jan Schmidt
6d32642887 docs: Quieten a couple more docs warnings 2009-06-11 11:39:25 +01:00
Sebastian Dröge
d46e459f22 videomixer: Don't use // comments 2009-05-28 14:01:17 +02:00
Sebastian Dröge
83fc39ccff videomixer: Some cleanup and fix the calculation of the frame size in bytes 2009-05-28 13:54:14 +02:00
Alex Ugarte
82abbeaf4f videomixer: Add support for blending BGRA and AYUV
Fixes bug #577017.
2009-05-28 12:55:16 +02:00
Edward Hervey
0cb5b42d54 Remove trivial unused variables detected by CLang static analyzer. 2009-04-18 18:51:28 +02:00
Wim Taymans
07329bc083 videomixer: some more indent fixes 2009-03-26 10:18:31 +01:00
Wim Taymans
62d118678a videomixer: fix gst-indent screwup 2009-03-26 10:17:48 +01:00
Stefan Kost
a99d3f8769 Update and add documentation for plugins with no deps (gst).
Link to properties. Correct titles for examples. Document a few trivial cases. Keep lists in section file and docs/plugins/Makefile.am alphabetically ordered.
2009-01-28 12:32:59 +02:00
Wim Taymans
1dcf0755c5 gst/videomixer/videomixer.c: Handle segments a little better. Fixes #537361.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_fill_queues),
(gst_videomixer_sink_event):
Handle segments a little better. Fixes #537361.
2008-09-25 15:11:16 +00:00
Wim Taymans
06fa431cef gst/videomixer/videomixer.c: Remove bogus check.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_fill_queues),
(gst_videomixer_blend_buffers), (gst_videomixer_update_queues):
Remove bogus check.
2008-06-10 17:20:45 +00:00
Wim Taymans
515b32d5aa gst/videomixer/videomixer.c: Use stream_time to synchronize the object properties.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_fill_queues),
(gst_videomixer_blend_buffers):
Use stream_time to synchronize the object properties.
Use running_time of the master pad to timestamp outgoing buffers.
Fix the initial segment event to extend an unknown amount of time.
Fixes #537361.
2008-06-10 16:25:24 +00:00
Sebastian Dröge
0275425212 gst/videomixer/videomixer.c: When using gst_element_iterate_pads() one has to unref every pad after usage.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_query_duration),
(gst_videomixer_query_latency):
When using gst_element_iterate_pads() one has to unref every pad
after usage.
2008-06-02 12:22:56 +00:00
Sebastian Dröge
abe4291d7a gst/videomixer/videomixer.*: duration and latency queries.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_reset),
(gst_videomixer_init), (gst_videomixer_query_duration),
(gst_videomixer_query_latency), (gst_videomixer_query),
(gst_videomixer_blend_buffers):
* gst/videomixer/videomixer.h:
Implement position (in time), duration and latency queries.
2008-05-28 08:36:44 +00:00
Edward Hervey
3ada650b62 gst/videomixer/videomixer.*: Implement proper seek/newsegment handling.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_reset),
(gst_videomixer_init), (gst_videomixer_request_new_pad),
(gst_videomixer_fill_queues), (forward_event_func),
(forward_event), (gst_videomixer_src_event),
(gst_videomixer_sink_event):
* gst/videomixer/videomixer.h:
Implement proper seek/newsegment handling.
Based on adder's implementation.
Fixes #535121
2008-05-27 17:55:30 +00:00
Stefan Kost
736b7ba31f gst/videomixer/videomixer.c: Add missing incudes.
Original commit message from CVS:
* gst/videomixer/videomixer.c:
Add missing incudes.
2008-05-20 14:24:21 +00:00
Jan Schmidt
0de3094950 gst/videomixer/videomixer.*: Instead of a random number for the request pad id's, use a counter.
Original commit message from CVS:
* gst/videomixer/videomixer.c:
* gst/videomixer/videomixer.h:
Instead of a random number for the request pad id's,
use a counter.
Register the videomixerpad class from the element's class_init
where it's safer, and allows the docs generator to scan it.
2008-05-20 10:42:33 +00:00
Stefan Kost
17d7955eff Try using thaytans new mechanism to get extra classes into plugin docs. Aparently works for the Eq. For VideoMixer th...
Original commit message from CVS:
* docs/plugins/gst-plugins-good-plugins-docs.sgml:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* docs/plugins/gst-plugins-good-plugins.args:
* docs/plugins/gst-plugins-good-plugins.hierarchy:
* docs/plugins/gst-plugins-good-plugins.interfaces:
* docs/plugins/gst-plugins-good-plugins.types:
* gst/videomixer/videomixer.c:
Try using thaytans new mechanism to get extra classes into plugin
docs. Aparently works for the Eq. For VideoMixer the GObject stuff is
missing still.
2008-05-19 21:05:03 +00:00
Michael Smith
86700041a8 gst/videomixer/videomixer.c: Don't call gst_object_sync_values() unless we have a valid timestamp.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_blend_buffers):
Don't call gst_object_sync_values() unless we have a valid timestamp.
2008-02-29 12:35:24 +00:00
Stefan Kost
8b570d9fd0 gst/videomixer/videomixer.c: Also commit the missing gst_object_sync_values().
Original commit message from CVS:
* gst/videomixer/videomixer.c:
Also commit the missing gst_object_sync_values().
2008-01-16 20:17:08 +00:00
Stefan Kost
af52f547bd docs/plugins/: Update plugin docs.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-good-plugins.args:
* docs/plugins/gst-plugins-good-plugins.signals:
* docs/plugins/inspect/plugin-alaw.xml:
* docs/plugins/inspect/plugin-alpha.xml:
* docs/plugins/inspect/plugin-alphacolor.xml:
* docs/plugins/inspect/plugin-annodex.xml:
* docs/plugins/inspect/plugin-apetag.xml:
* docs/plugins/inspect/plugin-audiofx.xml:
* docs/plugins/inspect/plugin-auparse.xml:
* docs/plugins/inspect/plugin-autodetect.xml:
* docs/plugins/inspect/plugin-avi.xml:
* docs/plugins/inspect/plugin-cairo.xml:
* docs/plugins/inspect/plugin-cdio.xml:
* docs/plugins/inspect/plugin-cutter.xml:
* docs/plugins/inspect/plugin-debug.xml:
* docs/plugins/inspect/plugin-dv.xml:
* docs/plugins/inspect/plugin-efence.xml:
* docs/plugins/inspect/plugin-effectv.xml:
* docs/plugins/inspect/plugin-flac.xml:
* docs/plugins/inspect/plugin-flxdec.xml:
* docs/plugins/inspect/plugin-gconfelements.xml:
* docs/plugins/inspect/plugin-gdkpixbuf.xml:
* docs/plugins/inspect/plugin-goom.xml:
* docs/plugins/inspect/plugin-halelements.xml:
* docs/plugins/inspect/plugin-icydemux.xml:
* docs/plugins/inspect/plugin-id3demux.xml:
* docs/plugins/inspect/plugin-jpeg.xml:
* docs/plugins/inspect/plugin-ladspa.xml:
* docs/plugins/inspect/plugin-level.xml:
* docs/plugins/inspect/plugin-matroska.xml:
* docs/plugins/inspect/plugin-mulaw.xml:
* docs/plugins/inspect/plugin-multipart.xml:
* docs/plugins/inspect/plugin-navigationtest.xml:
* docs/plugins/inspect/plugin-png.xml:
* docs/plugins/inspect/plugin-quicktime.xml:
* docs/plugins/inspect/plugin-rtp.xml:
* docs/plugins/inspect/plugin-rtsp.xml:
* docs/plugins/inspect/plugin-shout2send.xml:
* docs/plugins/inspect/plugin-smpte.xml:
* docs/plugins/inspect/plugin-speex.xml:
* docs/plugins/inspect/plugin-taglib.xml:
* docs/plugins/inspect/plugin-udp.xml:
* docs/plugins/inspect/plugin-videobalance.xml:
* docs/plugins/inspect/plugin-videobox.xml:
* docs/plugins/inspect/plugin-videocrop.xml:
* docs/plugins/inspect/plugin-videoflip.xml:
* docs/plugins/inspect/plugin-videomixer.xml:
* docs/plugins/inspect/plugin-wavenc.xml:
* docs/plugins/inspect/plugin-wavpack.xml:
* docs/plugins/inspect/plugin-wavparse.xml:
Update plugin docs.
* gst/videomixer/Makefile.am:
* gst/videomixer/videomixer.c:
* gst/videomixer/videomixer.h:
* gst/videomixer/videomixerpad.h:
Split out header to fix warnings from the doc-build.
2008-01-15 07:42:51 +00:00
Edward Hervey
a860efa4c3 gst/videomixer/videomixer.c: Fix error from my last commit.
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_init):
Fix error from my last commit.
2008-01-09 15:28:29 +00:00
Edward Hervey
d21b870f58 gst/videomixer/videomixer.c: Implement GstChildProxy interface.
Original commit message from CVS:
reviewed by: Edward Hervey  <edward.hervey@collabora.co.uk>
* gst/videomixer/videomixer.c:
(gst_videomixer_set_master_geometry), (_do_init),
(gst_videomixer_child_proxy_get_child_by_index),
(gst_videomixer_child_proxy_get_children_count),
(gst_videomixer_child_proxy_init), (gst_videomixer_reset),
(gst_videomixer_init), (gst_videomixer_request_new_pad),
(gst_videomixer_release_pad), (gst_videomixer_fill_queues):
Implement GstChildProxy interface.
Send newsegment at the right moment
Fixes #488879
2008-01-09 12:33:58 +00:00
Tim-Philipp Müller
e38b5e7590 gst/videomixer/videomixer.c: Fix strides calculation for AYUV (it's just width*4) (#436910).
Original commit message from CVS:
* gst/videomixer/videomixer.c: (gst_videomixer_blend_ayuv_ayuv),
(gst_videomixer_fill_checker), (gst_videomixer_fill_color),
(gst_videomixer_collected):
Fix strides calculation for AYUV (it's just width*4) (#436910).
2007-05-08 15:49:01 +00:00
Sjoerd Simons
e2f1b66fb2 gst/videomixer/videomixer.c: Introduce some locking around the videomixer state so that it does not crash when adding...
Original commit message from CVS:
Patch by: Sjoerd Simons <sjoerd at luon dot net>
* gst/videomixer/videomixer.c: (gst_videomixer_pad_set_property),
(gst_videomixer_set_master_geometry),
(gst_videomixer_pad_sink_setcaps), (gst_videomixer_collect_free),
(gst_videomixer_reset), (gst_videomixer_init),
(gst_videomixer_finalize), (gst_videomixer_request_new_pad),
(gst_videomixer_release_pad), (gst_videomixer_collected),
(gst_videomixer_change_state):
Introduce some locking around the videomixer state so that it does not
crash when adding/removing pads. Fixes #383043.
2006-12-16 16:21:26 +00:00