Commit graph

378 commits

Author SHA1 Message Date
Víctor Manuel Jáquez Leal
87193af4d5 xvimagesink: Handle cropping when copying frames.
Cropping was not handled properly when frames have to be copied to
xvimage's buffer pool, first because the crop meta were dropped, and
second because the allocated frame size in xvimage's buffer pool were
smaller than the incoming frame.

This patch updates xvimagesink's video info when propose_allocation()
is called, and copies the GstVideoCropMeta from source frame to
destination one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1088>
2021-04-28 11:00:56 +00:00
Víctor Manuel Jáquez Leal
c38bede8ba xvimagesink: Delay pool creation until it's needed.
Buffer pool is created every time setcaps() is called, but it's
required only when upstream doesn't use it, so it's only needed to
copy frames onto XV buffers.

This patch delay the creation of the buffer pool until it's frame copy
is required.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1088>
2021-04-28 11:00:56 +00:00
Stéphane Cerveau
141b8c4399 xvimage: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.

More details here:

https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1089>
2021-03-29 15:59:53 +02:00
Stéphane Cerveau
58e6f598f4 base: use of g_value_dup_string
Use helper method to get string from GValue.
2019-12-18 16:03:59 +01:00
Akinobu Mita
2d65683658 ximagesink, xvimagesink: don't use XkbKeycodeToKeysym if Xkb is unavailable
ximagesink and xvimagesink use XkbKeycodeToKeysym when the key event is
received. However, this function returns NoSymbol if Xkb is unavailable.

This causes all key events to be translated to "unknown" key when running
ximagsink under some VNC.

Fix it by using XKeycodeToKeysym if Xkb is unavailable.
2019-11-19 14:28:35 +00:00
Seungha Yang
83c7dd2335 xvimage: Fix symbol redefine build error
https://bugzilla.gnome.org/show_bug.cgi?id=796827
2018-07-19 12:22:34 +01:00
Nicolas Dufresne
e368b3105b xvimagesink: Allow changing render-rectangle through property
This also enables setting the render rectangle before the window
is provided or created.

https://bugzilla.gnome.org/show_bug.cgi?id=792798
2018-01-29 16:26:09 +00:00
Jun Xie
e0846de5b9 xvimagesink: fix inaccurate error message
It's about not being able to calculate the display size, not the display
ratio.

https://bugzilla.gnome.org/show_bug.cgi?id=791463
2017-12-11 10:29:12 +02:00
Akinobu Mita
6e770e0ebb ximagesink, xvimagesink: fix incorrect type conversion of pointer position
I'm currently playing with modified ximagesink that does XGrabPointer()
in order to receive the mouse events occurred outside of the window and
send them to the navigation interface.

The pointer positions usually have positive coordinates, but it could
be negative with that change.

When the ximagesink handles XEvent that contains a negative pointer
coordinate, it incorrectly generates the GstEvent that contains an
extremely large positive pointer coordinate.

This is because the negative pointer position in XEvent is incorrectly
converted from signed to unsigned and passed as an argument to
gst_navigation_send_mouse_event() which causes implicit conversion from
integer to double.  So the pointer position in the received XEvent and
generated GstEvent are completely different.

This potential problem does not seem to be a real problem with unmodified
ximagesink but there is no reason to leave it as is.  This also fixes
xvimagesink that has the same potential problem.

https://bugzilla.gnome.org/show_bug.cgi?id=791140
2017-12-08 00:48:16 +00:00
Nicolas Dufresne
2bf665486e Request minimum buffer even if need_pool is FALSE
When tee is used, it will not request a pool, but still it wants to
know how many buffers are required.

https://bugzilla.gnome.org/show_bug.cgi?id=730758
2017-09-06 14:20:46 -04:00
Thibault Saunier
099ac9faf2 docs: Convert gtkdoc comments to markdown
Modernizing the documentation, making it simpler to read an
modify and allowing us to possibly switch to hotdoc in the
future.
2017-03-10 18:19:17 -03:00
Vineeth TM
44b70ca3a1 base: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763075
2016-03-24 14:25:41 +02:00
Tim-Philipp Müller
a62c7bd54c Fix use of undeclared core debug category symbols
libgstreamer currently exports some debug category
symbols GST_CAT_*, but those are not declared in any
public headers.

Some plugins and libgstvideo just use GST_DEBUG_CATEGORY_EXTERN()
to declare and use those, but that's just not right at
all, and it won't work on Windows with MSVC. Instead look
up the categories via the API.
2016-02-20 11:31:43 +00:00
Vineeth TM
5f79ccb420 xvimagesink/ximagesink: Fix structure memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=758204
2015-11-17 00:07:35 -03:00
Vineeth TM
dab39bf42b xvimagesink: fix error leak when context creation fails
When context creation fails, error is getting leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=754973
2015-09-14 16:55:01 +01:00
Vineeth T M
efdb0fc281 xvimagesink: refactor to use gst_pad_push_event
Right now navigation events are being sent via gst_pad_send_event
after getting the peer pad of the sinkpad.
But the same functionality can be done using gst_pad_push_event
without need of getting peer pad in xvimagesink.

https://bugzilla.gnome.org/show_bug.cgi?id=752059
2015-07-07 12:50:39 +01:00
Vineeth TM
cf454ca713 xvimagesink: fix pad memory leak
pad is not being freed when xwindow is not created

https://bugzilla.gnome.org/show_bug.cgi?id=752042
2015-07-07 09:28:12 +01:00
Stefan Sauer
923d72d399 x/xv_image_sink: rename for consitency
Insert '_' to match the CamelCase. This is needed so that the plugin docs can
guess the names from the type name.
2015-07-06 17:37:15 +02:00
Nicolas Dufresne
df313a6dbc xvimagesink: Don't share internal pool
Sharing the internal pool results in situation where the pool may have
two upstream owners. This creates a race upon deactivation. Instead,
always offer a new pool, and keep the internal pool internal in case
we absolutely need it.

https://bugzilla.gnome.org/show_bug.cgi?id=748344
2015-06-12 18:26:07 -04:00
Vineeth T M
b1bc2af766 xvimagesink: fix pool leak
During set caps when config fails, the referenced newpool
is not unref ed.

https://bugzilla.gnome.org/show_bug.cgi?id=749530
2015-05-18 10:40:37 +03:00
Tim-Philipp Müller
ec5c93f169 docs: update element example pipelines
- gst-launch -> gst-launch-1.0
- use autoaudiosink and audiovideosink more often
- review pipeline examples and descriptions
2015-05-10 11:38:19 +01:00
Guillaume Desmottes
ca100d117c xvimagesink: fix navigation event leak when early returning
Create the event *after* the early return check so it's not leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=748903
2015-05-05 13:54:08 -03:00
Guillaume Desmottes
9d85e23c3d xvimagesink: fix navigation event leak when not handled
gst_navigation_message_new_event() is *not* consuming the event so we should
always drop our extra reference.

https://bugzilla.gnome.org/show_bug.cgi?id=748903
2015-05-05 13:54:08 -03:00
Edward Hervey
c90a3ac468 xvimagesink: Post unhandled navigation events on the bus
https://bugzilla.gnome.org/show_bug.cgi?id=747245
2015-04-29 15:47:49 +02:00
Wim Taymans
662a674f8a ximagesink: clear src and dest rectangles
Now that the center function also takes into account the x and y
coordinates of the dest rectangle, better clear all the fields before
using them.
2014-12-16 12:57:55 +01:00
Tim-Philipp Müller
c33d9d603c xvimagesink: fix property description string
Spotted by Josep Torra.
2014-07-17 14:36:16 +01:00
Holger Kaelberer
ae4338bd35 xvimagesink: don't recreate xvcontext
A xvcontext can be created early in gst_xvimagesink_set_window_handle().
In this case don't recreate, i.e. overwrite it in gst_xvimagesink_open().
Otherwise XEvents won't be handled in the xevent listener thread.

Fixes a regression when setting the window handle on the sink in
the very beginning before changing its state.

https://bugzilla.gnome.org/show_bug.cgi?id=715138
2014-01-15 11:06:09 +01:00
Todd Agulnick
38d8fa12a5 Some compiler warning fixes to satisfy XCode compiler
https://bugzilla.gnome.org/show_bug.cgi?id=720513
2013-12-16 16:51:29 +01:00
Tim-Philipp Müller
b1ff48c1a1 docs: remove old 0.10 Since markers
They're just confusing.
2013-11-16 16:10:07 +00:00
Wim Taymans
d99e270fc8 xvimagesink: configure colorimetry
Use the XV_ITURBT_709 attribute to configure the 601 or 709 matrix
depending on the color matrix of the input video frame.
2013-03-14 15:46:59 +01:00
Wim Taymans
0cf392837d xvimagesink: use xvcontext for allocation
Make a new refcounted xvcontext object that handles the X connection.
Use the xvcontext to allocate images and windows. Move some code
around so that all X calls are made from the xvcontext object.
Make a GstXvImageAllocator object that allocates images from the xvcontext. We
can implement a copy function now for these memory objects now.
Make the bufferpool use the xvimageallocator object for its images.
2013-03-13 11:51:12 +01:00
Wim Taymans
b740edff06 xvimagesink: mark as NO_SHARE
We don't want to share the memory between buffers because that could
cause the memory of the bufferpool buffers to be copied and replaced
with other memory.

This is a hopefully a temporary fix until we can figure out how to share
properly.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=695203
2013-03-05 16:34:35 +01:00
Sebastian Dröge
45ac6dea64 xvimagesink: Implement XvImage memory as a GstMemory, not as a GstMeta 2013-02-23 09:58:51 +01:00
Tim-Philipp Müller
e05abf0ef1 docs: fix up some more GstXOverlay -> GstVideoOverlay
https://bugzilla.gnome.org/show_bug.cgi?id=689740
2012-12-10 13:40:26 +00: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
Tim-Philipp Müller
8a3bdca78d xvimagesink: port to new GLib thread API 2012-09-10 01:26:20 +01:00
Tim-Philipp Müller
2079a8c12b Remove glib-compat-private.h stuff we don't need any more
It's all been ported to the latest GLib API now.
2012-09-09 18:36:49 +01:00
Wim Taymans
da4884a834 x11: don't block in buffer acquire
Don't ever block when acquiring a buffer from the bufferpool in the fallback
mode. If we block, we might deadlock when going to PAUSED because we never
unlock when going to paused.

The acquire can block when there are no more buffers in the pool, this is a
sign that the pool is too small. Since we are the only ones using the pool in
the fallback case and because we scale the buffer, someone else must be using
our pool as well and is doing something bad.
2012-08-10 12:13:57 +02:00
Sebastian Dröge
7bdcb12b41 gst: Set alignment at the correct place of GstAllocationParams 2012-08-08 17:41:19 +02:00
Wim Taymans
9572ec0481 xvimagesink: calculate target rectangle correctly
Use the negotiated size and PAR to center the image into the target window.

See https://bugzilla.gnome.org/show_bug.cgi?id=680093
2012-07-24 12:02:34 +02:00
Wim Taymans
17ff2b0643 x11: match FORCE_ASPECT_RATIO default value
Set the default value for FORCE_ASPECT_RATIO correctly
2012-07-24 11:25:04 +02:00
Wim Taymans
53fc1f3fca update for query api changes 2012-07-06 11:50:44 +02:00
Wim Taymans
bc5ba349b7 update for allocation query changes 2012-07-06 11:05:09 +02:00
Tim-Philipp Müller
cc8b526c00 ximagesink, xvimagesink: default to force-aspect-ratio=true 2012-06-29 11:43:46 +01:00
Wim Taymans
f35f0b6548 sys: fix some bufferpool leaks 2012-06-18 12:17:25 +02:00
Wim Taymans
f3fdfd9ec8 x11: handle case where no bufferpool is suggested 2012-06-15 16:45:16 +02:00
Sreerenj Balachandran
1805273cc5 xvimagesink: remove unused assignment
https://bugzilla.gnome.org/show_bug.cgi?id=676344
2012-05-19 11:19:47 +01:00
Sebastian Dröge
69b18ab09d gst-libs: Remove interfaces libs and mixer/tuner interfaces
The navigation interface is now in the video library.
2012-04-13 13:14:13 +02:00
Tim-Philipp Müller
3c6a3ad629 Use new gst_element_class_set_static_metadata() 2012-04-10 00:45:16 +01:00
Wim Taymans
bee3d7b683 update for get_param changes
Remove the const from the GstCaps.
Fix some GstStructure leaks.
2012-03-27 12:44:02 +02:00