Commit graph

52 commits

Author SHA1 Message Date
Andoni Morales Alastruey
1991b5bb6f ksvideosrc: don't timestamp buffers for muxed streams 2015-04-29 21:41:55 +02:00
Andoni Morales Alastruey
20e5a4a498 ksvideosrc: fix header size for muxed streams 2015-04-29 21:41:48 +02:00
Руслан Ижбулатов
a31855d618 GstDeviceProvider implementation for WIN Kernel Streaming plugin
gst_ks_device_provider_probe() is a no-braier, just runs ks_enumerate_devices()
and reports the results.

Monitoring is a bit more tricky. We have to create a dummy message-processing
window and register device change notifications for it.

As kernel streaming can (and should) be used for audio capture and audio
playback, this change also has certain placeholders for such.

https://bugzilla.gnome.org/show_bug.cgi?id=747757
2015-04-28 20:24:26 -04:00
Sebastian Dröge
91853015b7 winks: Reset DTS to GST_CLOCK_TIME_NONE
Otherwise we might get a previous DTS set from a recycled buffer that we get
back from a buffer pool, which then confuses synchronization.

https://bugzilla.gnome.org/show_bug.cgi?id=747722
2015-04-12 13:01:56 +02:00
Tim-Philipp Müller
ea58a2138d winks: fix debug message parameter format
The first part of the GUID structure is a DWORD
which is defined as an unsigned long, so we need
to either cast or use %08lx.
2015-04-11 12:12:57 +01:00
Andoni Morales Alastruey
83a54e07fd ksvideosrc: fix support for DV devices 2015-04-08 18:54:52 +02:00
Andoni Morales Alastruey
7bc0fa5d70 ksvideosrc: only list capture devices 2015-04-08 18:45:08 +02:00
Nicolas Dufresne
5aa292b588 ksvideosrc: Fix missing brace warning
There is more but it's from ks.h GUID initializer, which is shipped
this way with mingw.
2015-02-03 18:16:51 -05:00
Nicolas Dufresne
bd5e9a5442 ksvideosrc: Fix buffer handling
The pseudo buffer pool code was using gst_buffer_is_writable()
alone to try and figure-out if cached buffer could be reused.
It needs to check for memory writability too. Also check map
result and fix map flags.

https://bugzilla.gnome.org/show_bug.cgi?id=734264
2015-02-03 18:16:50 -05:00
Tim-Philipp Müller
99a17503a4 winks: fix debug message format issues
And print last bits of GUID properly instead
of printing nonsense.

https://bugzilla.gnome.org/show_bug.cgi?id=733055
2014-11-25 16:31:50 +00:00
Andoni Morales Alastruey
86e96cfdc6 winks: port to 1.0
https://bugzilla.gnome.org/show_bug.cgi?id=702041
2014-03-15 15:34:29 +01:00
Sebastian Dröge
22b4223c86 configure: Rename all variables related to the winks plugin
It does not make sense to call them after directshow if they
are for the winks plugin only.

https://bugzilla.gnome.org/show_bug.cgi?id=724100
2014-02-16 10:09:18 +01:00
Руслан Ижбулатов
ad92dfc7b4 winks: Make headers known to automake
Fixes #724003
2014-02-10 09:32:49 +01:00
Sebastian Dröge
e51cd4fe2f gst: Add better support for static plugins 2013-04-15 15:59:22 +02:00
Sebastian Dröge
97a365c439 windows: Put the DirectX LDFLAGS in the correct place and reorder libraries 2012-11-21 10:23:45 +01:00
Tim-Philipp Müller
9e1b75fda3 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:09:59 +00:00
Tim-Philipp Müller
32ba17cd0f Use gst_element_class_set_static_metadata()
where possible. Avoids some string copies. Also re-indent
some stuff. Also some indent fixes here and there.
2012-10-17 17:46:34 +01:00
Mark Nauwelaerts
578861abea replace gst_element_class_set_details_simple with gst_element_class_set_metadata 2012-09-14 17:27:49 +02:00
Andoni Morales Alastruey
a3519d59ef winks: add missing default switch case 2012-08-07 19:05:10 +02:00
Andoni Morales Alastruey
71c1a0e999 winks: fix types 2012-08-07 19:05:04 +02:00
Andoni Morales Alastruey
97a95c9cba winks: fix format warnings 2012-08-07 19:05:00 +02:00
Andoni Morales Alastruey
64f77b2f84 winks: fix unused variables warnings 2012-08-07 19:04:55 +02:00
Andoni Morales Alastruey
4120cfa43f winks: don't reinitialize MEDIASUBTYPE_I420 2012-08-07 19:04:50 +02:00
Andoni Morales Alastruey
ffb40074cd winks: define STATIC_KSPROPSETID_Wave_Queued if not defined 2012-08-07 19:04:42 +02:00
Andoni Morales Alastruey
544840ff38 winks: integrate build with autotools 2012-08-07 19:04:36 +02:00
Mark Nauwelaerts
6578797245 collectpads2: rename to collectpads 2012-04-17 15:22:59 +02:00
Sebastian Dröge
cda192b3b7 gst: Update for GST_PLUGIN_DEFINE() API changes 2012-04-05 18:02:56 +02:00
Wim Taymans
de1f89bf07 GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING 2012-02-08 16:37:13 +01:00
Wim Taymans
8546951222 chain up in set_clock 2011-11-10 12:11:21 +01:00
Christian Berentsen
6cf92cd25c winks: fix framerate fraction range mapping
Min and max may be slightly different but compress to the same fraction.
2010-12-10 04:06:53 +01:00
Ole André Vadla Ravnås
cc1c6ee9e3 winks: work around shutdown deadlock
GetOverlappedResult() might never return with some drivers. Time out
after 1000 ms. We cannot really fix this without either:
1) Controlling the streaming thread so we can do CancelIo() from that
   thread.
2) Switch to using IO completion ports.
2010-10-28 17:08:41 +02:00
Ole André Vadla Ravnås
a7a04fe601 winks: remove JPEG validation hack
This should clearly not be done in a video source.
2010-10-28 17:08:41 +02:00
Ole André Vadla Ravnås
35ed06fba2 winks: set PrioritySubClass to KSPRIORITY_NORMAL instead of 1
In order to match the reference implementation.
2010-10-28 17:08:41 +02:00
Ole André Vadla Ravnås
c1d16c4fee winks: retry when KsCreatePin fails with ERROR_NOT_READY
Turns out that the reference implementation does this, hence we need to
mirror this behaviour. This typically happens with hardware that takes
some time to initialize.
2010-10-28 17:08:41 +02:00
Ole André Vadla Ravnås
bb17394e76 winks: improve framerate fraction conversions
* For instance 7.5 fps should be represented as 15/2 instead of 7/1.
* Clamp AvgTimePerFrame and dwBitRate to account for rounding errors.
2010-10-28 17:08:41 +02:00
Ole André Vadla Ravnås
d282a1d380 winks: improve error-handling
Most important part here is special-casing "device busy" so the application
is able to provide better feedback when another application is using the
device.
2010-10-28 17:08:41 +02:00
Ole André Vadla Ravnås
cddfa50d92 winks: performance improvements
* Make the driver write directly into each GstBuffer to avoid memcpy().
* Don't memset() the buffer before reusing it.
* Recycle memory by keeping two spare buffers. Two because the sink
  downstream may keep a ref to the previous buffer.

Note that we align buffers on highest possible byte boundary (4096) so we
don't have to take into account what kind of alignment the driver requires.
2010-10-28 17:08:35 +02:00
Ole André Vadla Ravnås
f2b4d8990d winks: store priv pointer instead of looking it up 2010-10-28 17:08:35 +02:00
Ole André Vadla Ravnås
00bc7860ff winks: post error message on flow-unexpected 2010-10-28 17:08:35 +02:00
Andres Colubri
700f70e7a5 winks: add property probing support 2010-10-28 17:08:35 +02:00
Ole André Vadla Ravnås
2cf589b928 winks: sort devices that look like cameras first 2010-10-28 17:08:31 +02:00
Knut Inge Hvidsten
a54972f806 winks: provide guessed pixel-aspect-ratio in caps 2010-10-28 17:08:31 +02:00
Ole André Vadla Ravnås
a5beb0b8ff winks: only try to change state when actually open 2010-10-28 17:08:31 +02:00
Ole André Vadla Ravnås
1f6a6d2430 winks: ignore unsupported formats 2010-10-28 17:08:27 +02:00
Ole André Vadla Ravnås
b88b25ab9b winks: adjust a couple of logging severities
Should clearly not be considered warnings, as they're quite common.
2010-10-28 16:14:34 +02:00
David Hoyt
e467a3e14b winks: fix compilation by using the right function
Fixes #623883.
2010-07-08 21:54:28 +01:00
Benjamin Otte
775c7584fd gst_element_class_set_details => gst_element_class_set_details_simple 2010-03-18 22:46:41 +01:00
Ole André Vadla Ravnås
61dee51291 sys/winks/gstksclock.c (gst_ks_clock_worker_thread_func, gst_ks_clock_start):
Original commit message from CVS:
* sys/winks/gstksclock.c (gst_ks_clock_worker_thread_func,
gst_ks_clock_start):
Synchronize KS clock as a single-shot operation for now, there's not
much point in doing it periodically until we're actually using the
KS timestamps for anything else than just discarding old frames.
* sys/winks/gstksvideosrc.c (gst_ks_video_src_open_device):
Provide the GstClock when opening the device if we already have one.
2008-09-10 12:05:39 +00:00
Ole André Vadla Ravnås
0ff4dc306f sys/winks/gstksvideodevice.c (GST_DEBUG_IS_ENABLED, last_timestamp, gst_ks_video_device_prepare_buffers, gst_ks_video...
Original commit message from CVS:
* sys/winks/gstksvideodevice.c (GST_DEBUG_IS_ENABLED, last_timestamp,
gst_ks_video_device_prepare_buffers, gst_ks_video_device_create_pin,
gst_ks_video_device_set_state, gst_ks_video_device_request_frame,
gst_ks_video_device_read_frame):
Guard against capturing old frames by keeping track of the last
timestamp and also zero-fill the buffers before each capture.
Only assign a master clock if the pin hasn't already got one.
Actually free buffers on the way down to avoid a huge memory leak,
as this was previously done when changing state to ACQUIRE downwards
and we now skip that state on the way down.
Add some debug.
* sys/winks/gstksvideosrc.c (DEFAULT_DEVICE_PATH, DEFAULT_DEVICE_NAME,
DEFAULT_DEVICE_INDEX, KS_WORKER_LOCK, KS_WORKER_UNLOCK,
KS_WORKER_WAIT, KS_WORKER_NOTIFY, KS_WORKER_WAIT_FOR_RESULT,
KS_WORKER_NOTIFY_RESULT, KS_WORKER_STATE_STARTING,
KS_WORKER_STATE_READY, KS_WORKER_STATE_STOPPING,
KS_WORKER_STATE_ERROR, KsWorkerState, device_path, device_name,
device_index, running, worker_thread, worker_lock,
worker_notify_cond, worker_result_cond, worker_state,
worker_pending_caps, worker_setcaps_result, worker_pending_run,
worker_run_result, gst_ks_video_src_reset,
gst_ks_video_src_apply_driver_quirks, gst_ks_video_src_open_device,
gst_ks_video_src_close_device, gst_ks_video_src_worker_func,
gst_ks_video_src_start_worker, gst_ks_video_src_stop_worker,
gst_ks_video_src_change_state, gst_ks_video_src_set_clock,
gst_ks_video_src_set_caps, gst_ks_video_src_timestamp_buffer,
gst_ks_video_src_create):
Remove ENABLE_CLOCK_DEBUG define, it's GST_LEVEL_DEBUG after all.
Get rid of PROP_ENSLAVE_KSCLOCK and always slave the ks clock to the
GStreamer clock, it doesn't seem to hurt and matches DirectShow's
behavior. As an added bonus we usually get PresentationTime set for
each frame, so we can expand on this later for smarter latency
reporting (by looking at the diff between the timestamp from the
driver and the time according to the GStreamer clock).
Use an internal worker thread for opening the device, setting caps,
changing its state and closing it. This way we're a lot more
compatible with drivers that rely on hacks to do video-effects
between the low-level NT API and the application. Ick.
Start the ks clock and set the pin to KSSTATE_RUN on the first
create() so that we'll hopefully get hold of the GStreamer clock
from the very beginning. This way there's no chance that the
timestamps will make a sudden jump in the beginning of the stream
when we're running with a clock.
* sys/winks/kshelpers.c (CHECK_OPTIONS_FLAG,
ks_options_flags_to_string):
Reorder the flags to match the headerfile order, and make the string
a bit more compact.
* sys/winks/ksvideohelpers.c (ks_video_probe_filter_for_caps):
Avoid leaking KSPROPERTY_PIN_DATARANGES.
2008-09-09 23:58:02 +00:00
Ole André Vadla Ravnås
e3fcb1d801 sys/winks/ksvideohelpers.c (ks_video_media_type_free): Avoid leaking the KSDATARANGE member of each KsVideoMediaType.
Original commit message from CVS:
* sys/winks/ksvideohelpers.c (ks_video_media_type_free):
Avoid leaking the KSDATARANGE member of each KsVideoMediaType.
2008-08-28 22:02:28 +00:00