aboutsummaryrefslogtreecommitdiff
path: root/src/voice
Commit message (Collapse)AuthorAgeFilesLines
* A bunch of typo fixes (#404)Perry Fraser2018-10-011-1/+1
|
* Remove a compiler warning about an unused variable (#398)Mariell2018-09-231-1/+1
|
* Don't log event deserialization failures in voiceZeyla Hellyer2018-09-151-5/+1
|
* Revert "Send silence frames upon connection (Fix #301)"Zeyla Hellyer2018-08-112-5/+3
| | | | | | This reverts commit 83a0c85b0bf87cb4272b5d6e189d139fc31a6d23. This makes voice sending work again.
* Fix ffmpeg_optioned doctestZeyla Hellyer2018-07-091-0/+2
|
* Add voice::streamer::ffmpeg_optionedZeyla Hellyer2018-07-092-3/+39
| | | | | | Add a method for specifying custom ffmpeg arguments. Closes #266.
* Monomorphize all functionsZeyla Hellyer2018-07-042-8/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | This commit monomorphizes all functions, turning functions like: ```rust fn foo<T: Into<Bar>>(baz: T) { baz = baz.into(); // function here } ``` Into functions like: ```rust fn foo<T: Into<Bar>>(baz: T) { _foo(baz.into()) } fn _foo(baz: Bar) { // function here } ``` This avoids binary bloat and improves build times, by reducing the amount of code duplication.
* Remove extraneous spaces at the end of linesZeyla Hellyer2018-06-175-29/+29
|
* Fix voice hang on `.stop()`Kyle Simpson2018-04-251-1/+1
| | | | Turns out `wait` was a little *too* cooperative. Holdover until we change to real ffmpeg bindings.
* Send silence frames upon connection (Fix #301)Kyle Simpson2018-04-202-3/+5
|
* Refactor imports/exports to use nested groups and better formattingacdenisSK2018-03-298-42/+121
|
* Change the way ids and some enums are made (#295)Leah2018-03-234-17/+17
| | | | | This makes them easier to be found by tools like rls. Also update struct inits to use the shorthand version for `x: x`.
* Backport parts of 7d162b9Kyle Simpson2018-03-054-10/+109
| | | | | | | | | | | | | | | | | * Backport parts of 7d162b9. * Silent frame fixes. * Read-only playback position. * Opus Softclip for audio mixing. * Documentation for Audio structs. Not included (for now): * Bitrate control * Gutting/rework of Voice OpCodes, Heartbeats * Opus stream mixing * Minor adjustments due to manual edits.
* Drop implementation for ffmpeg containerKyle Simpson2018-02-201-0/+8
|
* Fix broken docs links caused by model mod changesZeyla Hellyer2018-01-312-18/+4
| | | | | Fix broken links caused by the `model` module changes in v0.5.0, which split up the module into sub-modules for better organization.
* Multiple audio stream playback, volume control, pausingKyle Simpson2018-01-315-29/+172
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fix Speaking state, use latest voice API version * Speaking state would remain stuck on after playing particularly long stretches of audio. So far as I can tell, playing 5 frames of silence BEFORE changing the state seems to do the trick. * Added new constant to make sure the library uses v3 of the voice api, which it is written for. * Heartbeat interval adjusted by * .75 as recommended by Discord. * Initial version of new Audio wrapper. * Single audio file case, as before.. * Loop over all available audio samples. * Combine audio streams, account for volume. * Cheaper explicit Opus silence frames. As per Discord's recommendation, use a well-known 3-byte silence frame when needed. * A bit of cleanup Cleanup some of the code, rename some short-form fields to longer forms (e.g. `s/src/source`), and remove a breaking change. `Handler::play` was changed to return `LockedAudio` instead of `()`. If someone were to rely on `Handler::play` returning `()`, the return type change would break their code. Instead, this functionality has been added to a new `Handler::play_returning` function.
* Remove an `Into<Option<T>>`Zeyla Hellyer2018-01-301-2/+2
| | | | | Technically a bugfix because this made it sort of unusable; instead, users need to explicitly `Some(Box::new(receiver))`.
* Reduce number of clones in the libraryZeyla Hellyer2018-01-272-2/+2
|
* Fix voice websocket loop terminationNikita Pekin2018-01-241-1/+1
| | | | | | | The websocket loop for voice events is terminated whenever a websocket message is successfully sent. This is caused by a bug that was introduced in https://github.com/zeyla/serenity/commit/c8536c111117f26833fb1bceff734ac1abc55479#diff-6a8a0bad68abd05790cdc2c2ba043ec6L457, due to an improperly implemented clippy lint.
* Strip RTP header extensions from voice streamNikita Pekin2018-01-241-2/+24
| | | | | Add code to strip RTP header extensions from an incoming voice stream, if they are present. See https://tools.ietf.org/html/rfc5285 for more info.
* Expose a client voice managerZeyla Hellyer2018-01-181-1/+7
|
* Use an InterMessage to communicate over gatewayZeyla Hellyer2018-01-182-8/+16
| | | | | | | Instead of communicating over the gateway in a split form of a `serde_json::Value` or a `client::bridge::gateway::ShardClientMessage`, wrap them both into a single enum for better interaction between the client, gateway, and voice modules.
* Fix voice feature compilationZeyla Hellyer2017-12-165-5/+6
|
* Implement Deserialize for {,Gateway,Voice}EventZeyla Hellyer2017-11-191-8/+27
| | | | | | | | | | | Implement Deserialize for `model::event::GatewayEvent` and `model::event::VoiceEvent`, and derive it for `model::event::Event`. Due to the natural potential slowness of deserializing into`Event` (attempting to deserialize into each variant until successful), a function named `model::event::deserialize_event_with_type` is provided for quickly deserializing into a known type if the dispatch type is known.
* Re-order use statements alphabeticallyZeyla Hellyer2017-11-117-23/+20
|
* Update to account for changes made in 0.4.1acdenisSK2017-10-142-2/+2
|\
| * Fix clippy lintsZeyla Hellyer2017-10-112-2/+2
| |
| * Add the lifetime againacdenisSK2017-10-071-1/+1
| |
| * Use an as_ref hackacdenisSK2017-10-051-2/+2
| |
| * Replace slice parametres by IntoIterator (#177)François Triquet2017-10-051-1/+6
| | | | | | Fixes #174
| * Revert "Use the de-generification trick."acdenisSK2017-10-031-13/+4
| | | | | | | | Makes the compiliation time just a bit worse
| * Use the de-generification trick.acdenisSK2017-10-021-4/+13
| | | | | | | | Fixes #168
| * `to_owned` -> `to_string`acdenisSK2017-10-011-1/+1
| |
* | Switch to parking_lot::{Mutex, RwLock}Zeyla Hellyer2017-10-101-10/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Switch to the `parking_lot` crate's implementations of `std::sync::Mutex` and `std::sync::RwLock`, which are more efficient. A writeup on why `parking_lot` is more efficient can be read here: <https://github.com/Amanieu/parking_lot> Upgrade path: Modify `mutex.lock().unwrap()` usage to `mutex.lock()` (not needing to unwrap or handle a result), and `rwlock.read().unwrap()`/`rwlock.write().unwrap()` usage to `rwlock.read()` and `rwlock.write()`. For example, modify: ```rust use serenity::CACHE; println!("{}", CACHE.read().unwrap().user.id); ``` to: ```rust use serenity::CACHE; println!("{}", CACHE.read().user.id); ```
* | Add the lifetime againacdenisSK2017-10-091-1/+1
| |
* | Use an as_ref hackacdenisSK2017-10-091-2/+2
| |
* | Replace slice parametres by IntoIterator (#177)François Triquet2017-10-091-1/+6
| | | | | | Fixes #174
* | Revert "Use the de-generification trick."acdenisSK2017-10-091-13/+4
| | | | | | | | Makes the compiliation time just a bit worse
* | Use the de-generification trick.acdenisSK2017-10-091-4/+13
| | | | | | | | Fixes #168
* | `to_owned` -> `to_string`acdenisSK2017-10-091-1/+1
|/
* Fix tests and example 05Zeyla Hellyer2017-09-241-5/+5
|
* Apply rustfmtZeyla Hellyer2017-09-184-92/+69
|
* Prevent malformed opus data from crashing the bot process (#149)Maiddog2017-08-271-0/+5
|
* Add ability to play DCA and Opus files. (#148)Maiddog2017-08-277-116/+265
|
* Revamp `RwLock` usage in the libacdenisSK2017-08-245-76/+58
| | | | Also not quite sure if they goofed rustfmt or something, but its changes it did were a bit bizarre.
* Apply rustfmtZeyla Hellyer2017-08-182-50/+61
|
* Change the config a bit, and a few nitpicksacdenisSK2017-07-275-56/+60
|
* rustfmtacdenisSK2017-07-278-152/+130
|
* Utilise the newly stabilised loop-with-break-valueacdenisSK2017-07-201-20/+12
|
* Switch to tokio for events (#122)Alex Lyon2017-07-141-1/+1
|