Commit graph

157 commits

Author SHA1 Message Date
Sebastian Dröge 34858762f7 Consolidate element properties
stream-name is called ndi-name everywhere in the NDI SDK and documentation
ip is called ip-address everywhere

Rename loss-threshold to timeout and change it to be in milliseconds
instead of iterations.

Add connect-timeout for timeout during connection

Add bandwidth and receiver-ndi-name properties, and initialize the
latter with a reasonable default value.
2019-07-17 11:01:40 +03:00
Sebastian Dröge 8b00e80316 Add property for selecting between different timestamping modes 2019-07-17 11:01:40 +03:00
Sebastian Dröge a4890d3295 Add timestamp/timecode into ReferenceTimestampMeta on every buffer 2019-07-16 16:03:15 +03:00
Sebastian Dröge fabcc65460 Properly support interlaced video and signal it correctly in the caps and buffer flags 2019-07-16 13:07:50 +03:00
Sebastian Dröge a500b5297b Simplify boolean expression 2019-07-16 12:49:31 +03:00
Sebastian Dröge b91d23521f Remove unnecessary TODO comment 2019-07-16 12:49:31 +03:00
Sebastian Dröge cd8bca11aa Run everything to rustfmt to give it a consistent indentation 2019-07-15 20:38:00 +03:00
Sebastian Dröge 4ebcd78acc Print frame timestamp/timecode in debug output 2019-07-15 20:38:00 +03:00
Sebastian Dröge 75eb959c80 Add support for all other video formats 2019-07-15 20:38:00 +03:00
Sebastian Dröge 5022ff412c Fix caps negotiation
We can't just fixate to any close to what we receive right now but only
support exactly the caps we receive. So check the format of each frame
and negotiate exactly those caps as needed when receiving frames.

Also re-negotiate if the caps are ever changing.
2019-07-15 20:13:12 +03:00
Sebastian Dröge 4443e03cd2 Remove wrong and unneeded latency query handling 2019-07-15 18:34:09 +03:00
Sebastian Dröge 2ad413773e Take the current running time as PTS for now and clean up timestamp/duration calculations
We might want to take the timestamp provided by the NDI SDK at a later
time but this needs to be done correctly.
2019-07-15 18:30:44 +03:00
Sebastian Dröge 32289047a5 Remove receiver/latency from Settings to State struct
And clean up usage of both.
2019-07-15 18:30:44 +03:00
Sebastian Dröge 9afe1d74b8 Set on_program to true by default in the Tally 2019-07-15 18:00:51 +03:00
Sebastian Dröge 25d7c9e74f Use glib::Type instead of element name or factory name for deciding between audio/video 2019-07-15 17:56:29 +03:00
Sebastian Dröge 71d8f7108c Remove unused FFI code 2019-07-11 23:37:35 +03:00
Sebastian Dröge 861d216eed Port audio/video source to the safe NDI SDK wrappers
This also fixes various memory unsafety issues.

And add lots of FIXME comments for code that is currently wrong.
2019-07-11 23:37:35 +03:00
Sebastian Dröge 48f8c498fa Wrap unsafe NDI C API in safe wrappers 2019-07-11 23:25:30 +03:00
Sebastian Dröge a0c918de71 Never send an empty buffer but simply retry
Sending an empty buffer will cause downstream to fail as it has the
wrong size.
2019-07-11 21:59:42 +03:00
Alfonso Rodríguez Pereira 13ce2da387
Merge pull request #27 from sdroege/plugin-version-helper
Use gst-plugin-version-helper crate to populate the plugin metadata
2019-07-11 11:09:36 +02:00
Alfonso Rodríguez Pereira 3742f8e776
Merge pull request #29 from sdroege/ndi-windows-linking
Use correct library name for linking on Windows
2019-07-11 11:07:23 +02:00
Alfonso Rodríguez Pereira cc63b187b9
Merge pull request #33 from sdroege/no-custom-error
Never return gst::FlowError::CustomError outside the element
2019-07-11 11:06:47 +02:00
Alfonso Rodríguez Pereira a355220254
Merge pull request #31 from sdroege/no-vec-from-raw-parts
Use slice::from_raw_parts instead of Vec::from_raw_parts and always free video frames
2019-07-11 11:05:33 +02:00
Alfonso Rodríguez Pereira 33fbc1c508
Merge pull request #30 from sdroege/sleep
Use NDIlib_find_wait_for_sources() instead of thread::sleep()
2019-07-11 11:05:10 +02:00
Sebastian Dröge c483270f27 Never return gst::FlowError::CustomError outside the element
It's for internal-usage and must be converted to a normal error at the
boundary to the base classes.
2019-07-09 19:29:45 +03:00
Sebastian Dröge b41d5839d4 Always free video frames with NDIlib_recv_free_video_v2() after last use
And not potentially before or not at all.
2019-07-09 19:27:55 +03:00
Sebastian Dröge 7b8070c55d Use slice::from_raw_parts instead of Vec::from_raw_parts
The latter must only be called on memory that was allocated by Rust for
a Vec and will cause crashes depending on the platform otherwise.

Also it would free the memory as if a Vec was allocated, which would
free memory that we don't own to begin with.
2019-07-09 19:27:55 +03:00
Sebastian Dröge bd1f8cb7d1 Use NDIlib_find_wait_for_sources() instead of thread::sleep() 2019-07-09 19:27:14 +03:00
Sebastian Dröge 38e39d181e Use correct library name for linking on Windows 2019-07-09 19:26:18 +03:00
Sebastian Dröge 3acd848b5f Use gst-plugin-version-helper crate to populate the plugin metadata 2019-07-09 18:35:47 +03:00
Alfonso Rodríguez Pereira def42b5514
Merge pull request #26 from teltek/feature_gst_v0.14.0
Update to the new version of the GStreamer Rust bindings, 0.14.0
2019-06-27 13:10:10 +02:00
rubenrua 28265f1151 Update to the new version of the GStreamer Rust bindings, 0.14.0
https://gstreamer.freedesktop.org/news/#2019-06-24T20:00:00Z
2019-06-25 18:20:50 +02:00
Ruben Gonzalez 2802a6fc97
Merge pull request #25 from o-reo/freeze_dependencies
freeze dependencies
2019-05-16 16:04:14 +02:00
o-reo 81cde09641 compile: freeze gstreamer-rs dependencies 2019-05-16 15:08:10 +02:00
Ruben Gonzalez 6cc722af25
Merge pull request #24 from o-reo/fix_element_register
fix element register due to gstreamer rs update
2019-04-26 11:00:38 +02:00
o-reo c1eecbc5c4 fix element register due to gstreamer rs update 2019-04-23 16:17:29 +02:00
rubenrua 6dc39b2dea Fix rust fmt 2019-03-26 17:41:28 +01:00
Ruben Gonzalez fb56cdc87c
Merge pull request #21 from o-reo/master
FIX changed return for gstreamer functions, fixed NDI frames memory leaks
2019-03-26 17:37:51 +01:00
Ruben Gonzalez 2794366186
Update license (fix #22)
Use the same GStreamer license
2019-03-18 18:24:37 +01:00
o-reo 16139c4565 FIX: Removed NDI free fctns when receiving NDI frame type none 2019-03-06 17:57:28 +01:00
o-reo 547df0f042 FIX: left a bracked after unsafe block refactoring 2019-03-06 16:16:47 +01:00
o-reo dc2591ab45 FIX: Removed unncessary NDI free methods
- when looping until a specific frame typeis returned no free are needed
2019-03-05 17:59:44 +01:00
o-reo 7c98b2e830 STYLE: clean useless comment 2019-03-04 15:21:01 +01:00
o-reo 761d7ae7ef FIX: Fixed NDI frames memory leaks 2019-03-01 11:24:54 +01:00
o-reo a407346053 ENH: Changed error message on start to notfound 2019-02-28 13:27:38 +01:00
o-reo 1bacf8237b ENH: Error handling on fn start 2019-02-28 12:13:40 +01:00
o-reo f74b0b4088 FIX: changed return bool to errorMessages 2019-02-28 11:43:31 +01:00
o-reo c1f0b8e941 WIP: changed return type for status_change, start, stop, change_caps,... 2019-02-28 10:55:01 +01:00
Ruben Gonzalez 127dbca2f5
Merge pull request #17 from teltek/new_glib_subclassing
Port to new glib subclassing API
2018-12-12 12:21:37 +01:00
Daniel Vilar b85fcdf649 Cast correctly audio data in buffer from *mut u8 to *mut i16 2018-12-12 12:00:33 +01:00