Commit graph

423 commits

Author SHA1 Message Date
ely-uf
8403b719d4 Make SkipDuration aware of potential change in audio parameters.
The `rodio` documentation states:
> The samples rate and number of channels of some sound sources can change
> by itself from time to time.

This commit introduces awareness of such change to the SkipDuration
source.
Now SkipDuration keeps track of `Source::current_frame_len` in order to
timely adjust both the sample rate and number of channels it uses to calculate
the amount of samples to skip.
2020-08-09 00:28:04 +03:00
ely-uf
15d4b54e2e Add inner, inner_mut and into_inner to SkipDuration. 2020-08-08 20:24:45 +03:00
ely-uf
7aaa9c3974 Add documentation comments to SkipDuration source. 2020-08-08 20:19:51 +03:00
ely-uf
f2e6795180 Add SkipDuration.
SkipDuration is a source that skips specified duration of the given
source from it's current position.

The already existing TakeDuration source allows to truncate the given source
from the end. SkipDuration complements it, introducing the option of
truncating the given source from it's current position.
2020-08-08 20:16:53 +03:00
Mac O'Brien
fb176a6883 Document PlayError and expose in public API 2020-08-04 14:15:04 -05:00
Mac O'Brien
8bd421afaf Enable 8-bit WAV decoding 2020-07-12 20:50:34 -05:00
est31
ad61c54485
Merge pull request #247 from alexheretic/engineless
Rework to use cpal-next
2020-07-11 04:41:15 +02:00
Karl Skomski
ce00eb0de6 Fix mp3 decoder bug: only reset offset after new frame 2020-07-07 14:11:29 +02:00
Alex Butler
81f5c9b6fd
Update to latest cpal 2020-05-02 13:34:14 +01:00
Alex Butler
4c96d3bd55
Improve stream docs 2020-05-02 13:34:14 +01:00
Alex Butler
e8a6502e45
Export OutputStreamHandle top level 2020-05-02 13:34:14 +01:00
Alex Butler
7ca3b1d635
fix crossfade 2018 & cargo fmt 2020-05-02 13:34:11 +01:00
Alex Butler
d7c77aa52e
Add OutputStreamHandle 2020-05-02 13:33:57 +01:00
Alex Butler
7ad840793c
Remove deadcode + rustfmt 2020-05-02 13:33:57 +01:00
Alex Butler
3a29a5390e
Update cpal to 946d646 2020-05-02 13:33:57 +01:00
Alex Butler
b5071c947d
Remove device mixer map, rename stream wrapper to OutputStream 2020-05-02 13:33:57 +01:00
Alex Butler
c93adb2582
Migrate to edition 2018
* Remove unstable/legacy rustfmt config
* Run rustfmt
2020-05-02 13:33:57 +01:00
Alex Butler
0517ee7216
Add RodioDevice wrapper for cpal::Device
* Remove static/global facilities.
2020-05-02 13:33:56 +01:00
Alex Butler
00c627241c
Rework to use no-event-loop cpal 2020-05-02 13:33:52 +01:00
Bernhard Fritz
6e2c022b5d add workaround for devices without a name 2020-03-27 09:30:51 +01:00
Jacob Greenfield
5c7c5c5596 Update TakeDuration documentation 2020-03-14 20:12:12 +01:00
Imbris
9c874b7690 Make silence more efficient 2020-02-24 08:53:38 +01:00
Daniel Lambert
2c7d171670 add Crossfade 2020-02-15 13:22:15 +01:00
Daniel Lambert
e2f79f4a8b add FadeOut effect to TakeDuration 2020-02-15 13:22:15 +01:00
Cocalus
d8723a5136 Generate samples at a multiple of channels (#249)
* Generate samples at a multiple of channels

* Fix nits
2019-11-16 22:11:20 +01:00
Théo Gaillard
2f04646ea5
feat: add cpal::Format to rodio:: 2019-11-12 15:46:22 +08:00
Brian Lewis
33788059e7 Fix output_devices return type to be OutputDevices instead of
`InputDevices`
2019-10-05 23:35:50 +02:00
est31
70c2985b7c Add dyn to the traits
This fixes a few warnings on nightly
2019-08-10 23:03:19 +02:00
Alex Butler
28fde9808b
Fix min_rate mistype 2019-08-10 09:54:47 +01:00
Alex Butler
b74581632d
Try all supported output formats when the default fails 2019-08-10 09:53:02 +01:00
est31
80948cf5c4
Merge pull request #243 from est31/remove_nalgebra
Remove nalgebra in favour of a handmade function
2019-08-09 22:06:57 +02:00
est31
fb5d8eb9d8 Save two multiplications 2019-08-09 21:10:09 +02:00
est31
a15ca2b43e Remove nalgebra in favour of a handmade function 2019-08-09 20:46:41 +02:00
Alex Butler
0151398043
Update cpal -> 0.10
* Provide device prevous method using `cpal::default_host()`
* Naively handle new cpal errors
2019-07-18 13:06:14 +01:00
Pierre Krieger
f5c08de1c0
Merge pull request #224 from azriel91/use-nalgebra-for-spatial-source
Use nalgebra for Spatial source
2019-06-08 15:01:12 +02:00
Azriel Hoh
3ee73c5ad6 Swap cgmath to nalgebra crate.
This helps converge the rust ecosystem onto `nalgebra`.
2019-05-21 14:22:43 +12:00
whentze
26c2ba50ac Add a correct implementation of total_duration to FlacDecoder. 2019-05-15 03:12:47 +02:00
Will Stott
941fec3fe5 Add some tests to Sink 2019-04-02 20:42:09 +00:00
Will Stott
074368480e Fix potential overflow for every-sample periodic_access. 2019-04-02 20:31:37 +00:00
Will Stott
14be3f46c8 Add to Source.periodic_access docs. 2019-04-02 19:26:42 +00:00
Will Stott
011090034f Fix periodic test module
Add a simple test of periodic_access.
2019-04-02 18:58:45 +00:00
Will Stott
dba627a1b4 Periodic access on the first sample & accurate for multi-channel sources 2019-03-29 14:13:09 +00:00
Will Stott
f36411f6f5 Add a len() method to Sink for some insight into the queue state. 2019-03-01 12:14:30 +00:00
Pierre Krieger
25d3151917
Merge pull request #218 from mathstuf/cleanups
Cleanups
2019-01-28 20:19:06 +01:00
Pierre Krieger
a86dbc5852
Add inner accessors for more sources (#216) 2019-01-28 20:17:00 +01:00
Joe Clay
b02529712d Fix doc comment in Sink (#215) 2019-01-28 20:16:02 +01:00
Ben Boeckel
e61d14ba38 sources: remove excess constraints on structures 2019-01-28 08:49:32 -05:00
Ben Boeckel
b5d678a44b done: fix markup on doc comment 2019-01-28 08:49:32 -05:00
Ben Boeckel
404e77351b fadein: fix documentation 2019-01-28 08:49:32 -05:00
Ben Boeckel
e8ce0659a7 take: fix doc comment 2019-01-28 08:49:32 -05:00
Joe Clay
53a7d78cd8 Add inner accessors for more sources 2019-01-17 01:10:12 +00:00
Alex Butler
4bb832ba30 Remove exclusive borrow requirement in Sink, SpatialSink (#203)
The inner Mutex does not require this.
2018-11-16 11:18:07 +01:00
Nicola Larosa
6fd5288cc7 Fix ChannelVolume dropping input samples (#198) 2018-11-10 14:44:49 +01:00
Aaron Kofsky
d20a3c661e Fix reading WAV of different encodings. (#199)
* Read 32 bit float and 24 bit int encoded files correctly.

Before, we were assuming that all WAV files are encoded as 16 bit integers.
This is not true, WAVs can actually also be encoded as 32 bit floats and
24 bit integers. Hound returns `Err` when we attempt to read files as the
wrong encoding, which was getting `unwrap_or`'d to just zero. This explains
why the file would load but not play any sound. We fix this by first
checking for the appropriate encoding, and then converting to an i16. This
might cause some slight dither issues but hopefully it is quiet enough that
it doesn't matter.

Fixes #195.

* Add tests of reading wav files different encodings

* Use `.map()` instead of control flow & unwrapping.

This makes things slightly cleaner to read.
Also remove extraneous print statement.
2018-11-09 21:58:43 +01:00
thiolliere
a55cac78ae Fix channel volume None sample (#191) 2018-10-11 15:36:03 +01:00
Anton
4168dbc161 added .stop() to SpacialSink (#188) 2018-09-23 05:10:35 +02:00
Ben Boeckel
8bf1bf5851 typos: fix in buffer and source documentation (#180)
* typos: fix in buffer and source documentation

* sink: fix some formatting

* sink: refer to the sink in the pause API docs
2018-09-15 11:07:33 +02:00
Ben Boeckel
f0fc5124db static_buffer: add a source backed by static data (#183)
If samples are available as static data, this avoids having to
reallocate the data.
2018-09-15 11:07:12 +02:00
Ben Boeckel
2e005c8218 repeat: implement Clone (#182)
It seems the compiler is not deriving `Clone` automatically even though
it is just `Buffered` wrappers around the original data.
2018-09-15 11:06:42 +02:00
Jacob Kiesel
d839e53078 Prepare 0.8 release 2018-06-22 08:50:19 -06:00
thiolliere
2933c3c0b2
fix dynamic mixer doc 2018-06-20 19:32:57 +02:00
Pierre Krieger
8d51880638
Merge pull request #167 from barzamin/minimp3
Implement MP3 support via Minimp3
2018-06-16 20:01:20 +02:00
Lennart Sauerbeck
43e161899d Fix typo in rustdoc 2018-06-09 20:57:02 +02:00
Erin Moon
5c54078126 decoders: implement minimp3-based MP3 decoder
Closes #36.
2018-05-26 18:42:22 -05:00
Erin Moon
c5725b8a37 vorbis decoder: implement filetype check and fallthrough 2018-05-26 18:42:22 -05:00
Erin Moon
73e19bad29 cargo: add feature dependency on minimp3 2018-05-26 18:42:22 -05:00
Francesco Zardi
6a8c71bdb2 Run cargo fmt 2018-04-19 10:03:48 +02:00
Francesco Zardi
255db6aa71 Use the default_output_format() from cpal to choose the best output format 2018-04-19 08:59:27 +02:00
Francesco Zardi
b85626b3fb Fix the value of the silenced output for the u16 case (i.e. half of the maximum allowed value) 2018-04-19 08:59:27 +02:00
Francesco Zardi
30d601c3cd Rename 'new_stream()' to 'new_output_stream()' 2018-04-19 08:59:27 +02:00
Francesco Zardi
5641ab56fa Remove 'mut' keyboard from the buffer argument of audio_callback() 2018-04-19 08:59:27 +02:00
Francesco Zardi
c554c8e1f8 Handle the case in which an StreamData::Input is passed as a buffer to audio_callback() 2018-04-19 08:59:27 +02:00
Francesco Zardi
457c8a5011 Fix typo 2018-04-19 08:59:27 +02:00
Francesco Zardi
95703113ba Rename 'endpoint' to 'device' 2018-04-19 08:59:27 +02:00
Francesco Zardi
5f42197c77 Fix typo 2018-04-19 08:59:27 +02:00
Francesco Zardi
0a90b31380 Rename the play() method of EventLoop to play_stream() 2018-04-19 08:59:27 +02:00
Francesco Zardi
96d4d539b3 Rename 'voice' to 'stream' 2018-04-19 08:59:27 +02:00
Francesco Zardi
f3b1fc915e Change the signature of audio_callback() to accept a StreamData enum instead of a UnknownTypeOutputBuffer 2018-04-19 08:59:27 +02:00
Francesco Zardi
9d4d9fdcac Rename voice_id to stream_id 2018-04-19 08:59:27 +02:00
Francesco Zardi
5d62f69223 Rename VoiceId to StreamId 2018-04-19 08:59:27 +02:00
Francesco Zardi
ebceebb760 Rename 'endpoints' to devices' 2018-04-19 08:59:27 +02:00
Francesco Zardi
cde47ab970 Rename default_endpoint() to, default_output_device(), reexport default_input_device() 2018-04-19 08:59:27 +02:00
Francesco Zardi
b912730313 Rename 'Endpoint' to 'Device' 2018-04-18 20:26:54 +02:00
Francesco Zardi
ac8541ddfc Rename UnknownTypeBuffer to UnknownTypeOutputBuffer 2018-04-18 18:03:22 +02:00
Francesco Zardi
a959cd618b Update comments to follow cpal` 0.7 convention 2018-04-18 14:53:04 +02:00
Francesco Zardi
95917f2e0f Rename samples_rate.rs to sample_rate.rs to follow cpal 0.7 convention 2018-04-18 14:46:29 +02:00
Francesco Zardi
74ceb63c3c Update cpal dependency to 0.7
The update required adapting to the breaking changes introduced by the new version, as reported in the `cpal`'s
[changelog](a2fe9386af/CHANGELOG.md), namely:

- Rename `ChannelsCount` to `ChannelCount`.
- Rename `SamplesRate` to `SampleRate`.
- Rename the `min_samples_rate` field of `SupportedFormat` to `min_sample_rate`
- Rename the `with_max_samples_rate()` method of`SupportedFormat` to `with_max_sample_rate()`
- Rename the `samples_rate` field of `Format` to `sample_rate`
- Changed the type of the `channels` field of the `SupportedFormat` struct from `Vec<ChannelPosition>` to `ChannelCount` (an alias to `u16`)
2018-04-18 14:24:33 +02:00
Andriy S. from cobalt
b14006ec99 have play_once fn and Decoder trait even if decoders are turned off 2017-10-29 21:18:01 +02:00
Andriy S. from cobalt
bfad440f6a use allow attr instead of _ vars 2017-10-29 20:39:02 +02:00
Andriy S. from cobalt
2f1b3f5309 merge upstream/master 2017-10-29 18:06:20 +02:00
Andriy S. from cobalt
3ef6b0564f make wav/flac/vorbis decoding features optional 2017-10-29 17:57:21 +02:00
tomaka
0e1ade3431 Merge pull request #142 from tomaka/cpal-rework
Update for cpal's rework
2017-10-21 10:04:27 +02:00
Pierre Krieger
f7473cc9fe Fix tests 2017-10-21 09:52:59 +02:00
Pierre Krieger
8b2fab2673 Finish rework 2017-10-21 09:30:38 +02:00
Pierre Krieger
8b0a20f42e Group the sink controls into one struct 2017-10-14 14:28:10 +02:00
Pierre Krieger
da515c65ec [WIP] Update for cpal's rework 2017-10-14 14:22:45 +02:00
Cam Jackson
8eaba65b5d Replace usages of deprecated functions in cpal 2017-10-11 21:31:15 +08:00
Andriy S. from cobalt
dfed9be5ce make sure buffer doesn't contain garbage 2017-10-08 00:54:33 +03:00
Jacob Kiesel
7c8a84a867 Add empty() function to Sink 2017-08-20 09:19:13 -06:00
Pierre Krieger
45c60ca155 Add a small basic test to dynamic_mixer 2017-07-30 18:56:24 +02:00
Andriy Symonovych on lilac
f05b352600 fix 'index out of bounds' 2017-07-22 02:21:09 +03:00
Pierre Krieger
578e27409c Add Sink::stop() 2017-07-11 16:53:02 +02:00
Pierre Krieger
88b0d40e4b Run rustfmt on the code 2017-07-03 10:10:00 +02:00
Jacob Kiesel
b4ecdfd075 Add spatial audio 2017-07-02 10:48:32 -06:00
Andriy Symonovych on lilac
0fb22acf63 fix taking duration from infinite sources 2017-06-18 03:59:19 +03:00
Pierre Krieger
e545472a5d Add draft for blt filters 2017-06-13 21:59:32 +02:00
SiIky
5abf517170 Fix typo 2017-06-05 22:52:52 +01:00
Pierre Krieger
0d26e0d9b3 Reduce threshold in SourcesQueueOutput 2017-05-27 18:16:56 +02:00
Pierre Krieger
44a8a2b923 Rustfmt 2017-05-04 13:51:33 +02:00
Pierre Krieger
a0ea1ce433 Add Source::from_iter 2017-05-01 21:18:00 +02:00
tomaka
138b746d12 Merge pull request #113 from tomaka/periodic
Periodic access
2017-05-01 14:51:59 +02:00
Pierre Krieger
00a2387182 Rework the Sink to use the new periodic update system 2017-05-01 13:54:45 +02:00
Pierre Krieger
83bcd1c175 Add Source::periodic_access 2017-05-01 13:39:08 +02:00
Pierre Krieger
bb9e2fb9ed Add source::from_factory 2017-05-01 13:28:50 +02:00
Pierre Krieger
4e58aeb5c7 Implement Source on Box<Source> 2017-05-01 13:16:06 +02:00
Pierre Krieger
7df741665d Rename methods of the Source trait 2017-05-01 11:11:33 +02:00
Pierre Krieger
634d6bafaa Add Samples::convert_samples() 2017-05-01 11:05:00 +02:00
Pierre Krieger
cbecbc8093 Decoder now produces i16s 2017-05-01 10:46:20 +02:00
tomaka
e365488e06 Merge pull request #98 from tomaka/saturating-add
Use saturating_add for the samples, and fix the mixer
2017-05-01 10:45:51 +02:00
est31
89635a3f71 Update to lewton 0.5 2017-02-27 19:26:16 +01:00
Pierre Krieger
e06f1f84e7 Use saturating_add for the samples, and fix the mixer 2017-02-10 09:50:12 +01:00
tomaka
b1a560eb41 Merge pull request #100 from tomaka/flac
Implement decoding Flac
2017-02-10 09:49:23 +01:00
tomaka
4ac235a2ac Merge pull request #101 from tomaka/tests
Add some tests
2017-02-09 20:30:18 +01:00
Pierre Krieger
c9338891d5 More documentation rework 2017-02-09 14:02:38 +01:00
Pierre Krieger
70eddf8e77 Better documentation for buffer 2017-02-09 13:24:15 +01:00
Pierre Krieger
002879471c Add tests for the queue 2017-02-09 13:18:47 +01:00
Pierre Krieger
c7bd21b75a Add tests for dynamic_mixer 2017-02-09 13:10:51 +01:00
Pierre Krieger
c3d573db9f Add a SamplesBuffer struct 2017-02-09 13:04:04 +01:00
Pierre Krieger
90c6339376 Fix channels not interleaved 2017-02-09 12:37:32 +01:00
Pierre Krieger
99419b64ec Implement decoding Flac 2017-02-09 11:54:25 +01:00
tomaka
953681a14d Merge pull request #99 from tomaka/source-doc
Add better documentation for the Source trait
2017-02-09 10:47:26 +01:00
Pierre Krieger
522ad12a2d Add better documentation for the Source trait 2017-02-08 18:10:41 +01:00
Pierre Krieger
2fbd21a41d Rename Pauseable to Pausable 2017-02-08 16:41:52 +01:00
Pierre Krieger
b1cbe3d69f Extract Sink to its own module 2017-02-07 13:39:25 +01:00
Pierre Krieger
11f4465600 Isolate engine to own module 2017-02-07 13:37:09 +01:00
Pierre Krieger
350fae9dab Remove debugging println 2017-02-07 12:33:12 +01:00
Pierre Krieger
84f6992667 Fix behavior of Stoppable 2017-02-07 12:32:31 +01:00
Pierre Krieger
137a871640 Fix bug with the frame length of the queue 2017-02-07 12:12:07 +01:00
Pierre Krieger
885caa6e74 Make the dynamic mixer drop finished sources 2017-02-07 11:11:14 +01:00
Pierre Krieger
cd193a541b Restore .detach() and the Sink destructor 2017-02-07 10:59:48 +01:00
Pierre Krieger
7dc391e0a7 Allow setting keep_alive_if_empty in the queue 2017-02-07 10:47:34 +01:00
Pierre Krieger
8aca2cb6eb Rework the engine 2017-02-07 10:27:07 +01:00
Pierre Krieger
78281513a1 Add dynamic_mixer 2017-02-07 08:51:11 +01:00
Pierre Krieger
382ea32b8a Add a queue module 2017-02-06 16:05:21 +01:00
Pierre Krieger
668a215d8b Add source::Empty and source::Zero 2017-02-06 15:53:09 +01:00
Pierre Krieger
9397cf136e Make the engine filters public 2017-02-06 15:04:51 +01:00
Pierre Krieger
642f11c824 Run rustfmt on the code 2017-02-01 10:14:50 +01:00
tomaka
32c75caed1 Merge pull request #89 from Xaeroxe23/master
Fix QueueIterator leak
2017-02-01 10:12:21 +01:00
Simon Heath
f564978fc7 Implemented std::error::Error on DecoderError
Resolves issue #86
2017-01-31 09:59:36 -05:00
Jake Kiesel
bf40003319 Fix QueueIterator leak 2017-01-28 22:57:39 -07:00
Jacob Kiesel
e552b90963 Add comment requested 2017-01-24 13:55:59 -07:00
Jacob Kiesel
cea59b97f6 Add comment requested 2017-01-24 13:55:41 -07:00
Jacob Kiesel
fb98ab7019 Added implementation as source filters 2017-01-24 13:37:23 -07:00
Pierre Krieger
1eae866da4 Fix most warnings 2016-10-04 16:36:11 +02:00
tomaka
7f8d237a80 Merge pull request #77 from est31/master
Use lewton
2016-10-04 16:16:51 +02:00
est31
043b2074b8 Use lewton
Fixes #74.
2016-10-04 16:10:02 +02:00
tomaka
669f5ca75c Fix typo in Source's doc 2016-10-04 08:45:20 +02:00
Pierre Krieger
498241237c Update to cpal 0.4 2016-10-01 10:44:00 +02:00
Pierre Krieger
591d3ddf46 Remove dependency on time 2016-09-06 09:32:17 +02:00
Pierre Krieger
2d2b5b54a2 Minor changes to the engine 2016-09-06 09:32:17 +02:00
Pierre Krieger
7347f18289 Switch to futures 2016-09-06 09:32:17 +02:00
Vadim Petrochenkov
29ab9a158c Fix a private-in-public error
Fix deprecation warning for `thread::park_timeout_ms`
2016-09-04 16:39:19 +03:00
tomaka
9c029bf3c3 Fix travis build 2016-05-19 18:28:36 +02:00
Pierre Krieger
a4a8497707 Fix mixing taking the average of the sounds 2015-10-23 17:20:41 +02:00
Pierre Krieger
b27f0a87cc Rewrite Repeat to use Buffered 2015-10-23 16:29:14 +02:00
Pierre Krieger
5d58d9188f Add some docs at various places 2015-10-22 20:30:07 +02:00
Pierre Krieger
069faf762d Add a DecoderError and publish 0.3 2015-10-22 16:45:33 +02:00
Pierre Krieger
aa531d8e8d Add Source::reverb 2015-10-22 16:37:01 +02:00
Pierre Krieger
8912ff3b57 Add Source::mix() 2015-10-22 16:22:14 +02:00
tomaka
01d9e582f2 Merge pull request #54 from tomaka/clone-debug
Derive Clone and Debug on most iterators
2015-10-22 15:46:49 +02:00
Pierre Krieger
0603bad9a4 Derive Clone and Debug on most iterators 2015-10-22 15:43:40 +02:00
Pierre Krieger
af89f60998 Add Source::buffered() 2015-10-22 15:39:40 +02:00
Pierre Krieger
73e1c56746 Add .speed() to Source 2015-10-17 13:46:54 +02:00
Pierre Krieger
e5f14bed1a Add face_in() to Source 2015-10-17 09:58:36 +02:00
Pierre Krieger
d26d413cb8 Add amplify() to Source 2015-10-17 08:42:04 +02:00
tomaka
e778c8b6b4 Fix norun -> no_run 2015-10-16 19:38:52 +02:00
Pierre Krieger
2a8a57b25a Add Source::delay 2015-10-16 19:10:11 +02:00
Pierre Krieger
4b4f900ba9 Fix the warnings in nightly 2015-10-16 17:33:58 +02:00
Pierre Krieger
e2f834da9b Add source::SineWave 2015-10-16 17:09:04 +02:00
Pierre Krieger
10a8c62169 Add documentation 2015-10-16 16:48:40 +02:00
Pierre Krieger
d589b82215 Add take_duration() to Source 2015-10-16 16:40:08 +02:00
Pierre Krieger
c67362a999 Dispatch source.rs between various submodules 2015-10-16 16:13:24 +02:00
Pierre Krieger
1f3eefd863 Add repeat_infinite to Source 2015-10-16 16:08:52 +02:00
Pierre Krieger
188032f843 Remove the play function 2015-10-16 15:39:00 +02:00
Pierre Krieger
a23aeaa4ff Dropping the Sink now stops all sounds 2015-10-16 15:38:10 +02:00
Pierre Krieger
d786f79e02 Change get_remaining_duration_ms to get_min_remaining_duration 2015-10-16 15:30:04 +02:00
Pierre Krieger
e2fc982652 Duration more or less works again 2015-10-16 15:28:13 +02:00
Pierre Krieger
efc00ff834 Rename Handle to Sink and add methods 2015-10-16 15:14:56 +02:00
Pierre Krieger
dad2088c39 Allow adding other sounds behind existing sounds 2015-10-16 15:11:54 +02:00
Pierre Krieger
0d96bd3883 Remove mentions of ExactSizeIterator 2015-10-16 14:25:03 +02:00
Pierre Krieger
9ff58ca760 Revert previous commit 2015-10-16 14:23:34 +02:00
Pierre Krieger
85ee95d269 Ensure that get_current_frame_len never returns 0 2015-10-16 14:22:53 +02:00
Pierre Krieger
ce0165a0de Restore the vorbis decoder 2015-10-16 14:21:37 +02:00
Pierre Krieger
9d80295d5d Better duration handling 2015-10-16 14:02:44 +02:00
Pierre Krieger
d3052bc986 Add play() and make the decoder public 2015-10-16 13:43:23 +02:00
Pierre Krieger
5ab65b7a31 Hide the implementation of the decoder 2015-10-16 13:42:57 +02:00
Pierre Krieger
2e09c3494d Remove the Decoder trait and switch to the Source trait 2015-10-16 13:35:30 +02:00
Pierre Krieger
102ec8fd2c Add the Source trait and UniformSourceIterator 2015-10-16 13:11:37 +02:00
Pierre Krieger
4173ba5a08 Use at least a quality of 44100 2015-09-27 19:21:10 +02:00
Pierre Krieger
c20ff8aa99 Improve timing system again 2015-09-27 14:49:53 +02:00