Commit graph

77 commits

Author SHA1 Message Date
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
Sjoerd Simons
fd47c4fbf1 gst/videomixer/videomixer.c: Don't reset xpos and ypos in the setcaps function because causes unexpected behaviour.
Original commit message from CVS:
Patch by: Sjoerd Simons <sjoerd at luon dot net>
* gst/videomixer/videomixer.c:
(gst_videomixer_set_master_geometry),
(gst_videomixer_pad_sink_setcaps), (gst_videomixer_collect_free):
Don't reset xpos and ypos in the setcaps function because causes
unexpected behaviour.
Fixes #382179.
2006-12-06 15:06:04 +00:00
Mark Nauwelaerts
27d42165b7 gst/videomixer/videomixer.c: Fix memleak by unref'ing collectpads instance (when finalizing)
Original commit message from CVS:
Patch by: Mark Nauwelaerts  <manauw at skynet be>
* gst/videomixer/videomixer.c:
(gst_videomixer_set_master_geometry),
(gst_videomixer_pad_sink_setcaps), (gst_videomixer_class_init),
(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):
Fix memleak by unref'ing collectpads instance (when finalizing)
Implement releasing a request pad. Fixes #374479.
2006-11-13 18:31:18 +00:00
Mark Nauwelaerts
ccce64b293 gst/videomixer/videomixer.c: Fix videomixer so that it can handle any combination of framerates.
Original commit message from CVS:
Patch by: Mark Nauwelaerts  <manauw at skynet be>
* gst/videomixer/videomixer.c: (gst_videomixer_update_queues):
Fix videomixer so that it can handle any combination of framerates.
Fixes #367221.
2006-10-30 08:17:08 +00:00
Peter Kjellerstedt
b234d9b0f9 gst/: Include stdlib.h in some more places, makes things compile with uClibc and -Werror (#357592).
Original commit message from CVS:
Patch by: Peter Kjellerstedt  <pkj at axis com>
* gst/alpha/gstalpha.c:
* gst/rtp/gstrtpamrdepay.c:
* gst/rtsp/gstrtspsrc.c:
* gst/udp/gstudpsrc.c:
* gst/videomixer/videomixer.c:
Include stdlib.h in some more places, makes things compile
with uClibc and -Werror (#357592).
2006-09-25 11:47:42 +00:00
Stefan Kost
eb1b7236f3 More G_OBJECT macro fixing.
Original commit message from CVS:
* ext/flac/gstflactag.c:
* gst/alpha/gstalpha.c:
* gst/debug/breakmydata.c:
* gst/debug/negotiation.c:
* gst/debug/testplugin.c:
* gst/effectv/gstaging.c:
* gst/effectv/gstdice.c:
* gst/effectv/gstedge.c:
* gst/effectv/gstquark.c:
* gst/effectv/gstrev.c:
* gst/effectv/gstshagadelic.c:
* gst/effectv/gstvertigo.c:
* gst/effectv/gstwarp.c:
* gst/multipart/multipartdemux.c:
* gst/multipart/multipartmux.c:
* gst/videobox/gstvideobox.c:
* gst/videofilter/gstgamma.c:
* gst/videofilter/gstvideotemplate.c:
* gst/videomixer/videomixer.c:
* sys/sunaudio/gstsunaudiosrc.h:
More G_OBJECT macro fixing.
2006-09-16 21:57:29 +00:00
Tim-Philipp Müller
11cb7a31b4 Const-ify GEnumValue arrays.
Original commit message from CVS:
* ext/esd/esdmon.c: (gst_esdmon_depths_get_type),
(gst_esdmon_channels_get_type):
* ext/gconf/gstgconfaudiosink.c: (gst_gconf_profile_get_type):
* ext/gdk_pixbuf/pixbufscale.c: (gst_pixbufscale_method_get_type):
* ext/libcaca/gstcacasink.c: (gst_cacasink_dither_get_type):
* ext/shout2/gstshout2.c: (gst_shout2send_protocol_get_type):
* gst/alpha/gstalpha.c: (gst_alpha_method_get_type):
* gst/rtp/gstrtpilbcdepay.c: (gst_ilbc_mode_get_type):
* gst/rtsp/gstrtspsrc.c: (gst_rtsp_proto_get_type):
* gst/videobox/gstvideobox.c: (gst_video_box_fill_get_type):
* gst/videofilter/gstvideoflip.c: (gst_video_flip_method_get_type):
* gst/videomixer/videomixer.c:
(gst_video_mixer_background_get_type):
Const-ify GEnumValue arrays.
2006-05-10 10:29:54 +00:00