hornetseye-alsa 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require 'rake/loaders/makefile'
7
7
  require 'rbconfig'
8
8
 
9
9
  PKG_NAME = 'hornetseye-alsa'
10
- PKG_VERSION = '0.3.1'
10
+ PKG_VERSION = '0.3.2'
11
11
  CFG = RbConfig::CONFIG
12
12
  CXX = ENV[ 'CXX' ] || 'g++'
13
13
  RB_FILES = FileList[ 'lib/**/*.rb' ]
@@ -17,12 +17,32 @@
17
17
  # Namespace of Hornetseye computer vision library
18
18
  module Hornetseye
19
19
 
20
+ # Class for playing sounds using the ALSA library
21
+ #
22
+ # @see http://www.alsa-project.org/
20
23
  class AlsaOutput
21
24
 
22
25
  class << self
23
26
 
24
27
  alias_method :orig_new, :new
25
-
28
+
29
+ # Open a sound device
30
+ #
31
+ # Open the specified sound device for writing. Note that the desired sample rate
32
+ # may not be supported. In that case the sound library will provide a sampling
33
+ # rate near the desired one.
34
+ #
35
+ # @example Open a sound device
36
+ # speaker = AlsaOutput.new 'default:0', 44_100, 2, 16, 1024
37
+ #
38
+ # @param [String] pcm_name Name of the PCM device
39
+ # @param [Integer] rate Desired sampling rate.
40
+ # @param [Integer] channels Number of channels (1=mono, 2=stereo).
41
+ # @param [Integer] periods Number of audio frames of the output buffer.
42
+ # @param [Integer] frames Size of the audio frames of the output buffer.
43
+ # @return [AlsaOutput] An object for accessing the sound device.
44
+ #
45
+ # @see #rate
26
46
  def new( pcm_name = 'default:0', rate = 48000, channels = 2, periods = 16,
27
47
  frames = 1024 )
28
48
  orig_new pcm_name, rate, channels, periods, frames
@@ -32,6 +52,24 @@ module Hornetseye
32
52
 
33
53
  alias_method :orig_write, :write
34
54
 
55
+ # Write an audio frame to the sound device
56
+ #
57
+ # The audio data is written to the output buffer of the sound device. Playback is
58
+ # resumed if a buffer underflow occurred earlier. The first dimension of the array
59
+ # with the audio data must match the number of channels of the audio device. The
60
+ # second dimension is the number of audio samples.
61
+ #
62
+ # A blocking write operation is used. I.e. the program is blocked until there is
63
+ # sufficient space in the audio output buffer.
64
+ #
65
+ # @example Writing audio samples
66
+ # speaker = AlsaOutput.new 'default:0', 44_100, 2, 16, 1024
67
+ # wave = lazy( 2, 110 ) { |j,i| Math.sin( i * 2 * Math::PI / 110 ) * 0x7FFF }.to_sint
68
+ # while true
69
+ # speaker.write wave
70
+ # end
71
+ #
72
+ # @param [Node] frame A two-dimensional array of short-integer audio samples.
35
73
  def write( frame )
36
74
  if frame.typecode != SINT
37
75
  raise "Audio data must be of type SINT (but was #{frame.typecode})"
@@ -0,0 +1,93 @@
1
+ # hornetseye-alsa - Play audio data using libalsa
2
+ # Copyright (C) 2010 Jan Wedekind
3
+ #
4
+ # This program is free software: you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation, either version 3 of the License, or
7
+ # (at your option) any later version.
8
+ #
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU General Public License
15
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+
17
+ # Namespace of Hornetseye computer vision library
18
+ module Hornetseye
19
+
20
+ class AlsaInput
21
+
22
+ attr_reader :rate
23
+
24
+ attr_reader :channels
25
+
26
+ def close
27
+ end
28
+
29
+ def avail
30
+ end
31
+
32
+ def delay
33
+ end
34
+
35
+ def prepare
36
+ end
37
+
38
+ end
39
+
40
+ class AlsaOutput
41
+
42
+ # Get the sampling rate of the sound device
43
+ #
44
+ # The sampling rate may be different to the desired sampling rate specified in
45
+ # the constructor.
46
+ #
47
+ # @return [Integer] The sampling rate of the sound device.
48
+ attr_reader :rate
49
+
50
+ # Number of audio channels
51
+ #
52
+ # @return [Integer] Number of audio channels (1=mono, 2=stereo).
53
+ attr_reader :channels
54
+
55
+ # Close the audio device
56
+ def close
57
+ end
58
+
59
+ # Drop content of audio output buffer
60
+ def drop
61
+ end
62
+
63
+ # Wait until audio buffer underflows
64
+ def drain
65
+ end
66
+
67
+ # Space available for writing in the audio buffer
68
+ #
69
+ # @return [Integer] Number of audio samples which can be written to the audio
70
+ # buffer.
71
+ def avail
72
+ end
73
+
74
+ # Number of audio samples in the audio buffer
75
+ #
76
+ # Returns the number of audio samples left in the audio buffer. This can be used
77
+ # to properly synchronise video display with audio output.
78
+ #
79
+ # @return [Integer] Number of audio samples left to play.
80
+ def delay
81
+ end
82
+
83
+ # Reset the sound device.
84
+ #
85
+ # One needs to call this method if one wants to resume playing audio samples after
86
+ # calling #drop or #drain.
87
+ def prepare
88
+ end
89
+
90
+ end
91
+
92
+ end
93
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 1
9
- version: 0.3.1
8
+ - 2
9
+ version: 0.3.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jan Wedekind
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-15 00:00:00 +00:00
17
+ date: 2010-11-17 00:00:00 +00:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -72,6 +72,7 @@ files:
72
72
  - COPYING
73
73
  - .document
74
74
  - lib/hornetseye-alsa/alsainput.rb
75
+ - lib/hornetseye-alsa/docs.rb
75
76
  - lib/hornetseye-alsa/alsaoutput.rb
76
77
  - lib/hornetseye_alsa_ext.rb
77
78
  - ext/alsainput.cc