Commit graph

720 commits

Author SHA1 Message Date
Mathieu Duponchelle 3011764da1 onvifaggregator: refactor, expect parsed metadata
The aggregator was consuming meta buffers too greedily, causing
potential interleaving starvation upstream. Refactor to consume
media and meta buffers synchronously

Also expect parsed=true metadata caps (requiring an upstream
onvifmetadataparse element).
2022-08-16 12:28:52 +03:00
Sebastian Dröge 837126be76 onvifmetadataparse: Only define the namespace prefix once for the top-level element 2022-08-12 22:35:40 +03:00
Sebastian Dröge 2b61d51e91 Remove unnecessary unsafe blocks for Buffer::as_ptr() 2022-08-12 18:12:22 +03:00
Sebastian Dröge 35b42b88d9 onvif: Add onvifmetadataparse element
This splits XML metadata into separate frames and ensures properly
timestamped metadata.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/781>
2022-08-12 14:00:27 +00:00
Sebastian Dröge 05207cafea raptorq: Derive Eq for some more structs
warning: you are deriving `PartialEq` and can implement `Eq`
  --> net/raptorq/src/fecscheme.rs:13:24
   |
13 | #[derive(Clone, Debug, PartialEq)]
   |                        ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq`
   |
   = note: `#[warn(clippy::derive_partial_eq_without_eq)]` on by default
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq

warning: you are deriving `PartialEq` and can implement `Eq`
  --> net/raptorq/src/fecscheme.rs:38:24
   |
38 | #[derive(Clone, Debug, PartialEq)]
   |                        ^^^^^^^^^ help: consider deriving `Eq` as well: `PartialEq, Eq`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_partial_eq_without_eq
2022-08-09 13:40:39 +00:00
Sebastian Dröge cbb55c2322 hlssink3: Update to m3u8-rs 5 2022-08-09 13:40:39 +00:00
Sebastian Dröge 8b11aee04d aws: Update to aws 0.17/0.47 2022-08-09 13:40:39 +00:00
Mathieu Duponchelle f646cabb3d aws_transcriber: expose filtering related properties
- vocabulary-filter-name allows picking a vocabulary to filter words
- vocabulary-filter-method allows controlling how words are filtered
2022-08-09 12:14:31 +00:00
Sanchayan Maity d240bbc4e2 aws_transcriber: Fix regression with credentials mechanism
A regression was introduced during the migration to AWS SDK. One used
to be able to provide credentials in multiple ways with the earlier
Rusoto ChainProvider (config file / environment variables). Now one
has to explicitly set the properties.

Use the DefaultCredentialsChain from AWS SDK to restore the previous
functionality.

See
https://docs.rs/aws-config/0.46.0/aws_config/default_provider/credentials/struct.DefaultCredentialsChain.html.
2022-08-04 12:15:32 +00:00
Sanchayan Maity a4893f30c8 net/aws: Add support for specifying endpoint
Allow specifying an endpoint to be used for S3 requests. This makes
it possible to use integrations providing object storage based on S3
API like MinIO.

When the endpoint-uri property is specified, the endpoint resolver to
use will be overridden when making S3 requests.
2022-08-04 10:37:37 +05:30
Bilal Elmoussaoui 52973d975e Update per glib::SignalBuilder changes 2022-07-21 20:03:13 +02:00
Tomasz Andrzejak 14160d1d31 Add RaptorQ RTP FEC plugins 2022-07-20 13:34:58 +00:00
Sebastian Dröge 42b6c32f34 onvif: Update to minidom 0.15 2022-07-18 11:21:04 +03:00
Rafael Caricio adde6fc4e3
hlssink3: convert playlist type to an enum
Change the property `playlist-type` to an enum. We also expose the
new enum externally from the crate so users of Rust can directly use it.
2022-07-08 11:24:32 +02:00
Rajneesh Soni 08c6ab29e1 hlssink3: Put EXT-X-ENDLIST for vod playlist-type.
Ideally, when player encounter PLAYLIST-TYPE is VOD, player should
not reload the playlist. For playlist-type=vod, initially we put
PLAYLIST-TYPE=EVENT, and later change it to VOD, which confuse some
players so we shold put ENDLIST here.
In any case putting ENDLIST is right thing to do to indicate no new
segment will be added to playlist.
2022-07-04 15:15:20 +00:00
Rajneesh Soni 4ff2c8f1bc hlssink3: Dont reset end_list after stop is called.
in current implementation EXT-X-ENDLIST is never set for any playlist-type.
After calling playlist.stop(), during write_final_playlist() is called.
in final playlist write, segment is not added but update_playlist is called.
and update_playlist reset end_list again, so plugin never put ENDLIST.
2022-07-04 15:15:20 +00:00
Sebastian Dröge 88bb91a5cb aws: Update to aws 0.15/0.45 2022-07-04 10:20:43 +03:00
Sebastian Dröge 51c7d0652e Fix/silence a couple new clippy warnings 2022-06-30 16:07:32 +03:00
Sanchayan Maity a85a647794 net/aws: Add support for S3 HLS sink
This is a helper bin allowing the output of HLS sink to be uploaded
to S3.
2022-06-29 17:35:37 +00:00
Sanchayan Maity e0594ef349 net/aws/aws_transcriber: Fix clippy warning 2022-06-29 17:35:37 +00:00
Sanchayan Maity 7bc785fba3 net/aws: Clean up pending rusoto references 2022-06-29 17:35:37 +00:00
Sebastian Dröge cb84206457 Fix a couple of new 1.62 clippy warnings 2022-06-28 14:52:20 +03:00
Sebastian Dröge 5c00db62b7 aws: Update to aws 0.14/0.44 2022-06-27 10:11:16 +03:00
Rajneesh Soni b3e558bec0 aws: s3sink,s3src,transcriber: Add property to set temporary credentials.
STS provide temporary credentials to access AWS resource. Temporary
credentials include, AccessKeyId, SecretAccessKey and SessionToken.
With session-token property, element will be able to use temporary
credentials. When session-token is not set, element can use long
term credentials.
2022-06-22 18:45:41 +00:00
Sebastian Dröge d902ecca4f aws: Update to aws 0.13/0.43 2022-06-21 06:45:24 +00:00
Mathieu Duponchelle 20d2a7d05b onvifoverlay: render polygons when present 2022-06-15 14:32:48 +00:00
Sebastian Dröge dfa5b9d8bb onvifaggregator: Add support for UNIX reference timestamp metadata
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/780>
2022-06-14 23:44:00 +02:00
Sebastian Dröge 939f37dec5 onvif: Disable default features for the chrono dependency
We don't need all those.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/780>
2022-06-14 23:43:47 +02:00
Sanchayan Maity 19f69614a2 aws: s3sink: Add a deprecation warning for retry duration properties
Keeping the upload-part-retry-duration & complete-upload-retry-duration
properties changes the semantics in comparison to their usage in
rusotos3sink. Deprecate these two properties and add a warning while
making them noop.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/759>
2022-06-14 08:03:49 +00:00
Sanchayan Maity 511ee766df Rename rusoto to aws
Now that migration to AWS SDK is complete, rename directory and
references to aws/AWS SDK.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/759>
2022-06-14 08:03:49 +00:00
Sanchayan Maity 81437bb1c9 net/rusoto: Rename to aws
Rename all the elements to use aws prefix now but still register a
backwards compat element factory.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/759>
2022-06-14 08:03:49 +00:00
Sanchayan Maity 2b0bf218b1 net/rusoto: Drop rusoto crates
Now that all elements are migrated to AWS SDK drop the rusoto
dependencies.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/759>
2022-06-14 08:03:49 +00:00
Sanchayan Maity 753425507a Migrate transcriber to aws sdk
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/759>
2022-06-14 08:03:49 +00:00
Sanchayan Maity 768fad2445 Migrate s3src and s3sink to use AWS SDK
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/759>
2022-06-14 08:03:49 +00:00
Mathieu Duponchelle ab01fc6143 onvifaggregator: refactor to support duration-less media buffers
For instance when dealing with a variable framerate media stream,
input media buffers may not hold a duration, in which case we try
to calculate one by waiting for the following buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/765>
2022-05-25 17:35:04 +00:00
Mathieu Duponchelle 77260a8442 onvifaggregator: implement proper EOS support
We could otherwise busy loop in aggregate forever when the meta
sink pad received EOS.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/765>
2022-05-25 17:35:04 +00:00
Sebastian Dröge dcad6ffe34 rtponvifdepay: Set caps on the source pad
The RTP depayloader base class does not take care of this in any way and
it has to be done manually.
2022-05-13 13:34:30 +03:00
Mathieu Duponchelle 7425b31173 onvifaggregator: always push current media buffer on timeout
Even when aggregator.meta_frames is empty

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/751>
2022-05-10 14:35:50 +00:00
Sebastian Dröge 817231b4d0 hlssink3: PadTemplate::name_template() returns a &str now instead of Option<String> 2022-05-08 13:31:10 +03:00
Sebastian Dröge 92c66be943 onvifaggregator: Update for minor PadTemplate API changes
`PadTemplate::caps()` returns a reference to the caps now instead of a
new strong reference, so keeping the template in scope as long as the
caps reference is required.
2022-05-08 13:31:03 +03:00
Mathieu Duponchelle a4a5caec53 net/onvif: implement ONVIF metadata processing elements
- RTP payloader and depayloader

- Aggregator to pair per-frame metadata with media frames

- Overlay to render detected shapes
2022-05-06 11:17:04 +03:00
Sebastian Dröge 3e10efa134 rusoto: Update to crc 3 and rusoto 0.48 2022-04-26 11:22:24 +03:00
Sebastian Dröge 9e3f713aa9 Update to m3u8-rs 4.0 2022-04-14 07:41:18 +00:00
Vivia Nikolaidou b5a3a99825 m3u8-rs: Depend on version exactly 3.0.0
https://github.com/rutgersc/m3u8-rs/pull/46#issuecomment-1094867533
2022-04-11 13:22:44 +03:00
Sebastian Dröge 803e452889 Update minimum supported GStreamer version to 1.14 2022-04-07 12:41:54 +03:00
Sebastian Dröge 88edc93a8a reqwest: Don't unnecessarily borrow dereferenced values explicitly
warning: this expression borrows a value the compiler would automatically borrow
   --> net/reqwest/tests/reqwesthttpsrc.rs:126:56
    |
126 |                     async move { Ok::<_, hyper::Error>((&mut *http_func.lock().unwrap())(req)) }
    |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `(*http_func.lock().unwrap())`
    |
    = note: `#[warn(clippy::needless_borrow)]` on by default
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow
2022-03-24 12:50:47 +02:00
Arun Raghavan 09a697faef rusoto: s3sink: Expose property to control all timeout/retry durations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/690>
2022-03-18 16:03:11 +05:30
Arun Raghavan 94c5cbbfb8 rusoto: s3sink: Make remaining requests bounded in time
This implements a default timeout and retry duration for the remaining
S3 requests that were still able to be blocked indefinitely. There are 3
classes of operations: multipart upload creation/abort (should not take
too long), uploads (duration depends on part size), multipart upload
completion (can take several minutes according to documentation).

We currently only expose the part upload times as configurable, and hard
code the rest. If it seems sensible, we can expose the other two sets of
parameters as well.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/690>
2022-03-18 16:03:10 +05:30
Arun Raghavan 5fe95afe87 s3src: Consolidate stream reading into get object retries
Previously, the actual reading from the streaming body of a GetObject
request was not within the same timeout/retry path as the dispatch of
the HTTP request itself. We consolidate these two into a single async
block and create a sum type to encapsulate the rusoto and std library
error paths within that future.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/690>
2022-03-18 16:02:20 +05:30
Arun Raghavan 22bb6ec74a rusoto: s3src: Implement timeout and retries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/690>
2022-03-18 15:17:37 +05:30
Arun Raghavan e973d41bac rusoto: s3sink, s3src: Retry on server errors
We can retry in the case of 500/503/other errors that might occur that
might be recoverable, instead of bailing.
2022-03-17 04:51:00 +00:00
Ray Tiley a3db85d869 awstranscribe - increase presisigned url duration to 5 mins from 60s
Have seen a few times where machines that are in perfect time sync with a good source the requests fail with `RequestExpired` errors.

https://docs.aws.amazon.com/transcribe/latest/dg/CommonErrors.html

While not perfect, bumping to five minutes gives more a chance that the signed requests to start streaming won't be expired.
2022-03-16 11:45:49 +00:00
Sebastian Dröge 6cf7d28481 Use SPDX license format in Cargo.toml 2022-03-14 10:23:16 +02:00
Sebastian Dröge b38f6cc731 Remove now unnecessary Send+Sync impls for element/etc subclasses
This is now automatically implemented.
2022-02-28 18:56:58 +02:00
Sebastian Dröge 04648546d1 rusoto: Update async-tungstenite dependency to 0.17 2022-02-28 09:31:58 +02:00
Arun Raghavan c2aafa4f46 rusoto: s3sink: Implement timeout/retry for part uploads
Rusoto does not implement timeouts or retries for any of its HTTP
requests. This is particularly problematic for the part upload stage of
multipart uploads, as a blip in the network could cause part uploads to
freeze for a long duration and eventually bail.

To avoid this, for part uploads, we add (a) (configurable) timeouts for
each request, and (b) retries with exponential backoff, upto a
configurable duration.

It is not clear if/how we want to do this for other types of requests.
The creation of a multipart upload should be relatively quick, but the
completion of an upload might take several minutes, so there is no
one-size-fits-all configuration, necessarily.

It would likely make more sense to implement some sensible hard-coded
defaults for these other sorts of requests.
2022-02-23 13:53:39 -05:00
François Laignel 2cf84d5ce8 Update minimum supported Rust version to 1.57 2022-02-21 23:32:32 +01:00
François Laignel 422ea740ca Update to gst::_log_macro_
See the details:
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/980
2022-02-21 20:50:01 +01:00
Rafael Caricio 5a0f7f6976
rusoto: Export AwsTranscriberResultStability enum 2022-02-06 15:11:12 +01:00
Sebastian Dröge f44b86cd30 Simplify some code around event/query views 2022-01-22 12:18:02 +02:00
Sebastian Dröge 65fcd55160 Update for event/message/query view API changes 2022-01-19 15:07:45 +02:00
Sebastian Dröge b2d0172422 Replace Foo::from_instance(foo) with foo.imp() 2022-01-17 19:36:41 +02:00
Sebastian Dröge eb8dfb28f1 hlssink3: Fix version 2022-01-16 14:15:29 +02:00
Sebastian Dröge 0dd6e303ce rusoto: Add missing license file 2022-01-16 14:15:29 +02:00
Sebastian Dröge 51f8e963d6 Add SPDX-License-Identifier to all file headers 2022-01-15 21:18:47 +02:00
Sebastian Dröge 326449b3e6 Re-license LGPL-2.1 plugins to MPL-2
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/168
2022-01-15 21:05:11 +02:00
Sebastian Dröge 0c7764fa40 Update versions to 0.9.0 2022-01-15 20:33:49 +02:00
Sebastian Dröge ab14c50d1c Ignore clippy::non_send_fields_in_send_ty lint
It's useless in its current shape and wrongly triggering on all types.

See https://github.com/rust-lang/rust-clippy/issues/8045
2022-01-14 12:09:57 +02:00
Sebastian Dröge 81f5f0f60c Fix various clippy warnings 2022-01-12 19:51:08 +02:00
Rafael Caricio 9ae8f0d330 hlssink3: fix segment paths in playlist file 2021-12-09 12:38:35 +00:00
Sanchayan Maity 099a3f2114 rusoto: s3sink: Support aborting or completing multipart upload on error
A multipart upload should either be completed or aborted on error. In
the current state of things, a multipart upload would neither be
completed nor aborted, putting the onus on an external entity to take
care of finishing incomplete uploads or relying on a sane bucket
life cycle policy configured to abort incomplete multipart uploads.

An incomplete multipart upload still contributes to the storage costs as
long as it exists.

We introduce a property here to allow the user to select either aborting
or completing multipart uploads on error. Aborting the upload causes
whole of data to be discarded and the same upload ID is not usable for
uploading more parts to the same.

Completing an incomplete multipart upload can be useful in situations
like having a streamable MP4 where one might want to complete the upload
and have part of the data which was uploaded be preserved.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/618>
2021-12-07 18:29:52 +05:30
Tim-Philipp Müller febbd5c2c9 hlssink3: fix symbolic link to LICENSE file 2021-12-01 15:38:47 +00:00
Sebastian Dröge c46901d150 Fix or silence various new 1.57 clippy warnings 2021-11-30 16:31:50 +02:00
Mathieu Duponchelle 97e6a89cac aws_transcriber: sanity check alternative length
The design of the element is based on the assumption that when
receiving a partial result, the following result will contain
at least as many items as there were stable items in the previous
result.

This patch adds a sanity check to make sure our "partial index"
isn't larger than the new received result, and errors out otherwise.

partial_index will eventually be reset to 0 once we receive a
new non-partial result.
2021-11-24 13:10:00 +00:00
Guillaume Desmottes 0b348406ef s3sink: add metadata property
This property can be used to set metadata on the S3 storage object.
2021-11-22 17:03:24 +01:00
Guillaume Desmottes 11bef9066c s3sink: log when setting properties 2021-11-22 16:52:04 +01:00
Sebastian Dröge 86f422592b Update for glib::Enum / glib::Boxed / glib::flags! macro renames 2021-11-22 11:04:26 +02:00
Sebastian Dröge 651ea7de5f hlssink3: Minor cleanup of debug output
Pass the object instance to the debug logs too to be able to distinguish
multiple instances.
2021-11-21 18:18:56 +02:00
Sebastian Dröge c68f6b2631 Update for GLib signal emit_by_name() API changes 2021-11-21 18:15:04 +02:00
Sebastian Dröge 55aad51141 Update for glib constructor renames
See https://github.com/gtk-rs/gtk-rs-core/pull/384
2021-11-20 14:31:06 +02:00
Sebastian Dröge 8722206be8 hlssink3: Update to m3u8-rs 3
This uses nom 7 now.
2021-11-18 21:44:09 +02:00
Sebastian Dröge 41a37db2c7 hlssink3: Use local version of gst-plugin-version-helper 2021-11-17 10:11:43 +02:00
Sebastian Dröge f817f6e9b9 Update to rav1e 0.5 and async-tungstenite 0.16
Also add an asm feature to rav1e, which requires nasm to be in place.
2021-11-17 10:10:00 +02:00
Rafael Caricio 58322bcc96
Fix license in hlssink3 plugin 2021-11-16 19:52:30 +01:00
Rafael Caricio e87a7afe3e Add hlssink3 plugin 2021-11-16 08:23:44 +00:00
Bilal Elmoussaoui 82be7b3ac5 adapt to ObjectExt improvements 2021-11-08 14:43:53 +02:00
Sebastian Dröge d9bda62a47 Update for GLib/GStreamer API changes
And clean up a lot of related property/caps/structure code.
2021-11-06 09:34:10 +02:00
Sebastian Dröge 0a7d1639e7 Update to Rust edition 2021 and minimum supported Rust version to 1.56 2021-10-31 17:40:05 +02:00
Sebastian Dröge b9541b2ca4 Update for GstObjectImpl API change 2021-10-23 12:31:33 +03:00
François Laignel 27b9f0d868 Improve usability thanks to opt-ops
The crate option-operations simplifies usage when dealing with
`Option`s, which is often the case with `ClockTime`.
2021-10-18 15:09:47 +02:00
Sebastian Dröge c5d3a2efce Update for event API changes 2021-10-17 17:30:38 +03:00
Sebastian Dröge 69bb09f7ad rusoto/s3: Allow passing custom AWS-compatible regions
For the region property this would be provided as
    `region-name+https://region.end/point`
while for the URI this unfortunately has to be base32 encoded to allow
usage as the host part of the URI.
2021-09-28 06:23:07 +00:00
Sebastian Dröge 502b336361 rusoto: Implement auth via explicit access-key/secret-access-key properties
This allows passing them explicitly as strings to the elements instead
of relying on system/per-user configuration.
2021-09-27 17:00:36 +03:00
Sebastian Dröge afd736dfec Update for new PushSrc::create() signature 2021-09-19 22:27:20 +03:00
Sebastian Dröge f4613bfc07 Use Buffer::from_mut_slice() in more places
This allows downstream to map the memory mutable.
2021-09-18 11:58:59 +03:00
Sebastian Dröge ea394fb06e rusoto: Update to async-tungstenite 0.15 2021-09-11 08:44:32 +03:00
Sebastian Dröge 96d86eaa06 Clean up clippy warnings and CI configuration
Put clippy overrides into the sources files instead of the CI
configuration, and fix various warnings / clean up code.
2021-09-08 12:35:41 +00:00
Mathieu Duponchelle 626df03961 aws_transcriber: fix CRC check
This was broken when porting to crc 2, based on:

https://github.com/mrhooray/crc-rs/issues/62#issuecomment-850591181

> CRC_32_BZIP2 is a different algorithm from CRC_32_IEEE, try CRC_32_ISO_HDLC instead.

The correct algorithm for replacing checksum_ieee is not CRC_32_BZIP2.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/555>
2021-09-03 23:37:14 +02:00
Mathieu Duponchelle 1a4e6d58f4 net/rusoto: implement parser for AWS transcription file
AWS can generate JSON files containing a full transcript, implement
a simple push parser to support the format.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/547>
2021-08-27 19:53:57 +00:00
Sebastian Dröge 4a870af19c Update various dependencies 2021-08-26 09:44:43 +03:00
Sebastian Dröge 848b296390 Add capi feature to all plugin crates
This fixes the build with cargo-c 0.9.2.
2021-08-11 20:51:36 +03:00
Sebastian Dröge 052365ba1a Fix various needless-borrow clippy warnings and others 2021-07-30 13:53:35 +03:00
Sebastian Dröge 67f566dd28 reqwest: Switch from hyperx to headers
The maintainer of hyperx has kind of special opinions and doesn't want
to play well with the rest of the ecosystem, see
https://github.com/dekellum/hyperx/pull/33 .

This currently causes cargo outdated to fail because of suboptimal
dependencies.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/159
2021-07-29 10:19:05 +03:00
Sebastian Dröge ca892cf116 reqwest: Require GStreamer 1.10 for the tests
They use `Element::call_async()`
2021-07-29 10:18:25 +03:00
Mathieu Duponchelle a051127cb1 aws_transcriber: expose lateness property
The default behavior for the transcriber is to output text buffers
synchronized with the input stream, introducing a configurable
latency.

For use cases where synchronization is not crucial, but latency
is, the lateness property can be used instead of or in combination
with the latency property, in order to introduce a configurable
offset with the input stream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/534>
2021-07-28 00:48:14 +02:00
Ruben Gonzalez 54d8c5f6a9 Delete minimum GStremer required version for some plugins
Tested building the pluging with cargo-c and running gst-inspect-1.0
in a Ubuntu Xenial 18.04 LTS. It contains GStreamer 1.8.3.
2021-07-20 21:49:24 +02:00
Sebastian Dröge 24ec79cd1a Update versions to 0.8.0 for the master branch 2021-07-09 13:49:33 +03:00
Sebastian Dröge 1c3ae0f89a Update versions to 0.7.0 2021-07-09 13:49:21 +03:00
Mathieu Duponchelle 9415c50200 awstranscriber: further decouple output from input
As awstranscriber might in theory push out gap events without
any flow of input data, it needs to send its mandatory events
(stream-start, caps, segment) independently.

In addition, track a start time and use it to offset the 0-based
timestamps returned by AWS in order to output buffers timestamped
in the running-time domain, and perform item timing adjustment
only when dequeuing, instead of when queuing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/525>
2021-06-26 00:46:28 +02:00
Arun Raghavan 3a2d16f00c rusoto: s3sink: Bring back bucket, key and region properties
We don't want to drop these entirely while introducing the URI handler,
as that would break backwards compatibility.
2021-06-21 06:58:06 -04:00
Mathieu Duponchelle 640ce43fee awstranscriber: make use of new result stability AWS API option
<https://aws.amazon.com/blogs/machine-learning/amazon-transcribe-now-supports-partial-results-stabilization-for-streaming-audio/>

Amazon seem to have realized the previous iteration of their API
made it difficult to identify items from one result to the next,
which made the element much more complicated than it should have
been. With that new "stability" option, we can enqueue items as
soon as they stabilize, and simply rely on the current index in
the transcript to output them exactly once.

This also means the "use_partial_results" is now useless, as there
will be no difference in accuracy between a non-partial result and
and of its stable items that might have been pushed from previous
partial versions of the result.

The property is removed, instead a new option is exposed to let
users control how fast results should stabilize.

This greatly simplifies the code, and also improves the output as
punctuation doesn't need to be randomly discarded anymore.
2021-06-19 14:45:22 +02:00
Mathieu Duponchelle d15e97efb8 awstranscriber: expose optional session-id property
When set, it can be used to identify transcription sessions
a posteriori.
2021-06-17 00:54:14 +02:00
François Laignel 5439f14e57 fix clippy warnings 2021-06-05 10:36:22 +02:00
François Laignel 2c4c35deba net: migrate to new ClockTime design 2021-06-05 10:36:21 +02:00
François Laignel 8dfc872544 use gst::glib where applicable 2021-06-03 20:53:16 +02:00
Sebastian Dröge 04a60b8f46 Update repository URL for gtk-rs "core" crates 2021-05-13 09:50:08 +03:00
Karl Rikte e1ea71fec7 Implemented proxy support
Implemented analogously to souphttpsrc for compatibility. Proxy
prevents sharing the client between element instances.

Change-Id: I50d676fd55f0e1d7051d8cd7d5922b7be4f0c6e8
2021-05-03 19:13:33 +02:00
Sanchayan Maity bf5e231e5b rusoto: s3sink: Implement support for GstUriHandler interface
With the URI handler interface implemented, we can drop the old method
of specifying bucket, key and region. This also brings it in line with
how it is for s3src.
2021-05-01 13:55:49 +05:30
Sebastian Dröge 15cf738616 Update for Value trait refactoring 2021-04-25 15:48:55 +03:00
Mathieu Duponchelle e9a08214bb awstranscriber: use all available credentials mechanisms
AWS specifies a few mechanisms besides environment variables
to provide credentials, ChainProvider implements all of those
in order of priority.
2021-04-22 19:42:44 +02:00
François Laignel 95cdd43f4f manual fixes remove get prefix round 2 2021-04-20 18:19:58 +02:00
François Laignel 67c5871957 fix-getters-calls 0.3.0 pass 2021-04-20 18:19:58 +02:00
François Laignel 27bc5c89ca fix-getters-def 0.3.0 pass 2021-04-20 18:19:58 +02:00
Arun Raghavan 8d0d438615 rusoto: Update README
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/495>
2021-04-14 15:31:23 -04:00
François Laignel 7d17f88941 post fix-getters manual updates 2021-04-13 17:24:20 +02:00
François Laignel 06accc8d98 fix-getters-{def,calls} pass 2021-04-12 15:57:19 +02:00
Sebastian Dröge 2cada57efc Update for the subclassing glib/gstreamer bindings API changes 2021-03-09 17:07:13 +02:00
Sebastian Dröge aa354058f5 Update pretty-assertions to 0.7, async-tungstenite to 0.13 and num-rational to 0.4
Also get rid of the funty workaround as nom now depends on the right
version.
2021-03-09 11:42:33 +02:00
Sebastian Dröge dc0c5f7611 Update for new #[glib::object_subclass] attribute macro 2021-03-07 18:27:00 +02:00
Mathieu Duponchelle 7c61fd9e7a awstranscriber: add vocabulary property
AWS offers the option of creating "vocabularies", lists of words
that are likely to be encountered. Those can be created through
the AWS console, and are given a name. That name can then be
specified when starting a transcription job.
2021-02-19 21:54:08 +01:00
Sebastian Dröge 1cd5d5ef45 Temporarily depend on funty 1.1.0 to work around breakage in 1.2.0
See https://github.com/myrrlyn/funty/issues/3
2021-02-14 11:07:26 +02:00
Sebastian Dröge cbda137fbf Fix various warnings from clippy 1.50 2021-02-09 18:57:34 +02:00
Sebastian Dröge b649e9b076 Use gst::PARAM_FLAG_MUTABLE_PLAYING and others consistently everywhere
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/139
2021-01-31 15:43:00 +02:00
Sebastian Dröge d4ce1a33f2 Update for glib/gstreamer bindings API changes 2021-01-25 14:43:05 +02:00
Sebastian Dröge 65c9c33f88 rusoto: Port to nom 6 2021-01-09 12:34:41 +02:00
Sebastian Dröge e3aa368d94 rusoto: Port to tokio 1.0 2021-01-09 12:34:31 +02:00
Sebastian Dröge c380a3ea3d requesthttpsrc: Port to tokio 1.0 2021-01-09 12:04:38 +02:00
Guillaume Desmottes 8bc2e5ebb8 use cargo-c to produce cdy and static libs
cargo-c will produce a pkg-config file making it easier to statically
link plugins.

Also add 'static' features for plugins depending on < 1.14 as this is the
minimal required version to use static linking because of ABI changes in
core.
2021-01-04 12:26:45 +01:00
Sebastian Dröge 640d8ef904 rusoto/aws_transcriber: Don't hold mutex across await points
This mutex is actually only ever used from a single thread, so use
AtomicRefCell instead. It provides the guarantees of a mutex but panics
instead of blocking.
2020-12-29 17:28:19 +02:00
Sebastian Dröge 3d617371af Update for macro renames 2020-12-20 20:43:45 +02:00
Sebastian Dröge ea6c05e16c Update everything for glib macro renamings 2020-12-18 00:44:49 +02:00
Sebastian Dröge 3c9f1c0d1d net: Update to 2018 edition 2020-11-23 10:28:33 +02:00
Sebastian Dröge d56ae71e0e Update for ObjectImpl::get_property() being infallible now 2020-11-19 18:25:53 +02:00
Guillaume Desmottes b9f8ce9995 meson: add support for static build
There is no way to dynamically ask Cargo to build static or dynamic lib
so we have to build both and pick the one we care when doing the meson
processing.

Fix #88
2020-11-16 15:30:32 +01:00
Sebastian Dröge d7404a7e1c net: Update for subclassing API changes 2020-11-15 18:25:42 +02:00
Sebastian Dröge 1f446f6b64 Switch to the combined gtk-rs and gstreamer-rs repositories 2020-11-01 10:24:57 +02:00
Sebastian Dröge 83e64104bc Update async-tungstenite dependency to 0.9 2020-10-13 12:56:49 +03:00
Sebastian Dröge a022bbe260 Fix some new clippy warnings 2020-07-28 18:52:11 +03:00
Sebastian Dröge 786ee001b3 rusoto: Update async-tungstenite dependency to 0.8 2020-07-27 07:28:11 +00:00
Sebastian Dröge c556c1f164 rusoto: Update to rusoto 0.45 2020-07-26 18:46:50 +03:00
Sebastian Dröge 0eb777cf5a Update for removal of ObjectImpl::get_type_data() 2020-07-26 18:46:32 +03:00
Sebastian Dröge e9b61b733d Add LICENSE files to each individual crate 2020-07-10 13:06:28 +03:00
Sebastian Dröge a28455f0ce Update for Element::post_message() signature change 2020-06-30 21:28:02 +00:00
Sebastian Dröge d03c6cb26a Update various dependencies 2020-06-30 10:49:27 +03:00
François Laignel e40267e95d event,message,query: update instantiation
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/532
2020-06-25 11:26:32 +02:00
Sebastian Dröge fc20df294e Remove a few unused dependencies 2020-06-22 16:29:13 +03:00
Sebastian Dröge 9bb3e75fb9 Update to use the new pad builders for safely setting pad functions
Only two uses of unsafely setting the pad functions is left:
- fallbacksrc for overriding the chain function of the proxy pad of a
  ghost pad
- threadshare for overriding the pad functions after creationg, which
  probably needs some fixing at some point
2020-06-22 11:28:19 +03:00
Sebastian Dröge c917e77687 rusoto: Update async-tungstenite dependency to 0.6 2020-06-21 18:16:42 +03:00
Sebastian Dröge 60321edb8c Update for new_with_XXX/new_from_XXX function renaming 2020-06-16 11:56:48 +03:00
Guillaume Desmottes e85799b9d6 use new constructor names 2020-06-11 13:07:01 +02:00
Sebastian Dröge 0674826376 rusoto: Update to rusoto 0.44 2020-06-05 12:29:54 +03:00
Mathieu Duponchelle 3d26d2f27b sync elements: implement provide_clock
Since those are using the clock for sync, they need to also
provide a clock for good measure. The reason is that even if
downstream elements provide a clock, we don't want to have
that clock selected because it might not be running yet.
2020-06-02 19:31:58 +02:00
Mathieu Duponchelle 7bf43241e5 audio/transcribe: remove and merge with rusoto
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/348>
2020-05-29 20:21:34 +00:00
Arun Raghavan d398d4a7dc rusoto: Upgrade to Rusoto 0.43
This moves to Rusoto 0.43, which has moved from futures to async/.await.
As a result, we implement a utility function to convert the
async/streaming bits to blocking operations backed by a tokio runtime.

In the process, we also need to restructure s3sink a little, so that the
client is now part of the started state (like it is for s3src). This is
a better model than a separate client, as it reflects the condition that
the client is only available in the started state.
2020-05-28 07:19:13 -04:00
Sebastian Dröge 56962b1273 rusoto/s3sink: Don't use mem::replace() for a simple assignment
The return value of mem::replace() would be the old value but we don't
really need that here, so simply do an assignment instead.
2020-05-08 11:23:03 +00:00
Sebastian Dröge 36f032ef15 Configure crate-type to cdylib/rlib consistently in Cargo.toml
And not in the source code, it's a build decision.
2020-04-24 15:02:12 +03:00
Sebastian Dröge 5a7fcfad7f Fix various new clippy warnings with clippy 1.43 2020-04-24 13:55:01 +03:00
Arun Raghavan bc5d05f5e8 Update all documentation to point to the updated repository name
Just gst-plugin-rs -> gst-plugins-rs
2020-04-05 19:10:47 +00:00
Arun Raghavan dc3c8fd049 Drop gst-plugin- prefix in plugin directory name 2020-04-05 19:10:47 +00:00
Arun Raghavan 205b6040fb Reorganise plugins into directories by function
This should start making navigating the tree a little easier to start
with, and we can then move to allowing building specific groups of
plugins as well.

The plugins are moved into the following hierarchy:

  audio
    / gst-plugin-audiofx
    / gst-plugin-claxon
    / gst-plugin-csound
    / gst-plugin-lewton
  generic
    / gst-plugin-file
    / gst-plugin-sodium
    / gst-plugin-threadshare
  net
    / gst-plugin-reqwest
    / gst-plugin-rusoto
  utils
    / gst-plugin-fallbackswitch
    / gst-plugin-togglerecord
  video
    / gst-plugin-cdg
    / gst-plugin-closedcaption
    / gst-plugin-dav1d
    / gst-plugin-flv
    / gst-plugin-gif
    / gst-plugin-rav1e

  gst-plugin-tutorial
  gst-plugin-version-helper
2020-04-05 19:10:46 +00:00