ruby-alsa 0.0.5 → 0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +18 -0
- data/debian/changelog +11 -0
- data/debian/compat +1 -0
- data/debian/control +18 -0
- data/debian/rules +15 -0
- data/lib/alsa.rb +3 -1
- data/lib/alsa/ffi_ext.rb +35 -0
- data/lib/alsa/native.rb +5 -0
- data/lib/alsa/pcm/capture.rb +39 -3
- data/lib/alsa/pcm/hw_parameters.rb +89 -0
- data/lib/alsa/pcm/native.rb +23 -3
- data/lib/alsa/pcm/playback.rb +50 -3
- data/lib/alsa/pcm/stream.rb +43 -1
- data/lib/alsa/pcm/sw_parameters.rb +53 -0
- data/lib/alsa/sine.rb +21 -0
- data/log/test.log +217 -0
- data/refs/alsa_player +0 -0
- data/refs/alsa_player.c +80 -0
- data/refs/alsa_player.rb +85 -0
- data/refs/alsa_player_async +0 -0
- data/refs/alsa_player_async.c +113 -0
- data/refs/alsa_player_async.rb +98 -0
- data/refs/alsa_recorder.rb +85 -0
- data/refs/alsa_recorder_async.rb +98 -0
- data/refs/pcm_wrap.rb +552 -0
- data/ruby-alsa.gemspec +8 -8
- data/script/play +9 -2
- data/script/record +15 -4
- data/setup.rb +1585 -0
- data/spec/alsa/pcm/native_spec.rb +2 -2
- data/spec/alsa/pcm/stream_spec.rb +4 -4
- data/tasks/debian.rake +19 -0
- metadata +35 -7
data/lib/alsa/pcm/stream.rb
CHANGED
@@ -26,12 +26,20 @@ module ALSA::PCM
|
|
26
26
|
|
27
27
|
self.hardware_parameters = hardware_attributes
|
28
28
|
|
29
|
+
change_software_parameters do |sw_params|
|
30
|
+
sw_params.available_minimum = buffer_frame_count / 2
|
31
|
+
end
|
32
|
+
|
33
|
+
ALSA::PCM::Native.prepare(handle)
|
34
|
+
|
29
35
|
if block_given?
|
30
36
|
begin
|
31
37
|
yield self
|
32
38
|
ensure
|
33
39
|
self.close
|
34
40
|
end
|
41
|
+
else
|
42
|
+
self
|
35
43
|
end
|
36
44
|
end
|
37
45
|
|
@@ -67,7 +75,9 @@ module ALSA::PCM
|
|
67
75
|
:access => :rw_interleaved,
|
68
76
|
:channels => 2,
|
69
77
|
:sample_format => :s16_le,
|
70
|
-
:sample_rate => 44100
|
78
|
+
:sample_rate => 44100,
|
79
|
+
# :buffer_time => buffer_time_size * 1000,
|
80
|
+
# :period_time => buffer_time_size * 1000 / 4
|
71
81
|
}.update(attributes)
|
72
82
|
|
73
83
|
change_hardware_parameters do |hw_params|
|
@@ -75,6 +85,25 @@ module ALSA::PCM
|
|
75
85
|
end
|
76
86
|
end
|
77
87
|
|
88
|
+
def change_software_parameters
|
89
|
+
sw_params = software_parameters
|
90
|
+
|
91
|
+
begin
|
92
|
+
yield sw_params
|
93
|
+
|
94
|
+
ALSA::try_to "set sw parameters" do
|
95
|
+
ALSA::PCM::Native::sw_params self.handle, sw_params.handle
|
96
|
+
end
|
97
|
+
ensure
|
98
|
+
sw_params.free
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def software_parameters
|
103
|
+
ALSA::PCM::SwParameters.new(self).current_for_device
|
104
|
+
end
|
105
|
+
alias_method :sw_params, :software_parameters
|
106
|
+
|
78
107
|
def opened?
|
79
108
|
not self.handle.nil?
|
80
109
|
end
|
@@ -90,5 +119,18 @@ module ALSA::PCM
|
|
90
119
|
end
|
91
120
|
end
|
92
121
|
|
122
|
+
def available_frame_count
|
123
|
+
check_handle!
|
124
|
+
|
125
|
+
ALSA::try_to "wait the interface is ready" do
|
126
|
+
ALSA::PCM::Native::wait(self.handle, buffer_time_size)
|
127
|
+
end
|
128
|
+
available_frame_count = ALSA::try_to "read available space" do
|
129
|
+
ALSA::PCM::Native::avail_update(self.handle)
|
130
|
+
end
|
131
|
+
|
132
|
+
[available_frame_count, buffer_frame_count].min
|
133
|
+
end
|
134
|
+
|
93
135
|
end
|
94
136
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module ALSA::PCM
|
2
|
+
class SwParameters
|
3
|
+
|
4
|
+
attr_accessor :handle, :device
|
5
|
+
|
6
|
+
def initialize(device = nil)
|
7
|
+
sw_params_pointer = FFI::MemoryPointer.new :pointer
|
8
|
+
|
9
|
+
ALSA::PCM::Native::sw_params_malloc sw_params_pointer
|
10
|
+
self.handle = sw_params_pointer.read_pointer
|
11
|
+
|
12
|
+
self.device = device if device
|
13
|
+
end
|
14
|
+
|
15
|
+
def update_attributes(attributes)
|
16
|
+
attributes.each_pair { |name, value| send("#{name}=", value) }
|
17
|
+
end
|
18
|
+
|
19
|
+
def current_for_device
|
20
|
+
ALSA::try_to "retrieve current hardware parameters" do
|
21
|
+
ALSA::PCM::Native::sw_params_current device.handle, self.handle
|
22
|
+
end
|
23
|
+
self
|
24
|
+
end
|
25
|
+
|
26
|
+
def avail_min=(avail_min)
|
27
|
+
ALSA::try_to "set avail_min (#{avail_min})" do
|
28
|
+
ALSA::PCM::Native::sw_params_set_avail_min self.device.handle, self.handle, avail_min
|
29
|
+
end
|
30
|
+
end
|
31
|
+
alias_method :available_minimum=, :avail_min=
|
32
|
+
|
33
|
+
def avail_min
|
34
|
+
value = nil
|
35
|
+
ALSA::try_to "get period time" do
|
36
|
+
value_pointer = FFI::MemoryPointer.new(:int)
|
37
|
+
error_code = ALSA::PCM::Native::sw_params_get_avail_min self.handle, value_pointer
|
38
|
+
value = value_pointer.read_int
|
39
|
+
value_pointer.free
|
40
|
+
error_code
|
41
|
+
end
|
42
|
+
value
|
43
|
+
end
|
44
|
+
alias_method :available_minimum, :avail_min
|
45
|
+
|
46
|
+
def free
|
47
|
+
ALSA::try_to "unallocate sw_params" do
|
48
|
+
ALSA::PCM::Native::sw_params_free self.handle
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
data/lib/alsa/sine.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
class ALSA::Sine
|
2
|
+
|
3
|
+
attr_accessor :frequency, :sample_rate
|
4
|
+
|
5
|
+
def initialize(frequency, sample_rate)
|
6
|
+
@frequency = frequency
|
7
|
+
@sample_rate = sample_rate
|
8
|
+
end
|
9
|
+
|
10
|
+
def frames(length)
|
11
|
+
(0...length).collect do |frame|
|
12
|
+
0x7F000000 * Math.sin(2 * Math::PI * frequency * frame / sample_rate)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def memory_pointer(length)
|
17
|
+
buffer = MemoryPointer.new(:int, length_count)
|
18
|
+
buffer.write_array_of_int frames(length_count)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/log/test.log
CHANGED
@@ -3280,3 +3280,220 @@ D, [2010-06-06T17:45:09.574964 #16888] DEBUG -- : write in audio interface
|
|
3280
3280
|
D, [2010-06-06T17:45:09.575162 #16888] DEBUG -- : close audio device
|
3281
3281
|
D, [2010-06-06T17:45:09.582668 #16888] DEBUG -- : dummy
|
3282
3282
|
D, [2010-06-06T17:45:09.583909 #16888] DEBUG -- : dummy
|
3283
|
+
D, [2010-08-04T11:48:58.480158 #22893] DEBUG -- : open audio device default
|
3284
|
+
D, [2010-08-04T11:48:58.520984 #22893] DEBUG -- : initialize hardware parameter structure
|
3285
|
+
D, [2010-08-04T11:48:58.521324 #22893] DEBUG -- : set sample format
|
3286
|
+
D, [2010-08-04T11:48:58.521468 #22893] DEBUG -- : set access type
|
3287
|
+
D, [2010-08-04T11:48:58.521591 #22893] DEBUG -- : set channel count : 2
|
3288
|
+
D, [2010-08-04T11:48:58.521717 #22893] DEBUG -- : set sample rate
|
3289
|
+
D, [2010-08-04T11:48:58.521904 #22893] DEBUG -- : set hw parameters
|
3290
|
+
D, [2010-08-04T11:48:58.522223 #22893] DEBUG -- : unallocate hw_params
|
3291
|
+
D, [2010-08-04T11:48:58.522752 #22893] DEBUG -- : close audio device
|
3292
|
+
D, [2010-08-04T11:48:58.523372 #22893] DEBUG -- : open audio device default
|
3293
|
+
D, [2010-08-04T11:48:58.528819 #22893] DEBUG -- : initialize hardware parameter structure
|
3294
|
+
D, [2010-08-04T11:48:58.529099 #22893] DEBUG -- : set sample format
|
3295
|
+
D, [2010-08-04T11:48:58.529257 #22893] DEBUG -- : set access type
|
3296
|
+
D, [2010-08-04T11:48:58.529400 #22893] DEBUG -- : set channel count : 2
|
3297
|
+
D, [2010-08-04T11:48:58.529548 #22893] DEBUG -- : set sample rate
|
3298
|
+
D, [2010-08-04T11:48:58.529747 #22893] DEBUG -- : set hw parameters
|
3299
|
+
D, [2010-08-04T11:48:58.530067 #22893] DEBUG -- : unallocate hw_params
|
3300
|
+
D, [2010-08-04T11:48:58.530208 #22893] DEBUG -- : close audio device
|
3301
|
+
D, [2010-08-04T11:48:58.530585 #22893] DEBUG -- : open audio device default
|
3302
|
+
D, [2010-08-04T11:48:58.536897 #22893] DEBUG -- : initialize hardware parameter structure
|
3303
|
+
D, [2010-08-04T11:48:58.537226 #22893] DEBUG -- : set sample format
|
3304
|
+
D, [2010-08-04T11:48:58.537389 #22893] DEBUG -- : set access type
|
3305
|
+
D, [2010-08-04T11:48:58.537535 #22893] DEBUG -- : set channel count : 2
|
3306
|
+
D, [2010-08-04T11:48:58.537683 #22893] DEBUG -- : set sample rate
|
3307
|
+
D, [2010-08-04T11:48:58.537885 #22893] DEBUG -- : set hw parameters
|
3308
|
+
D, [2010-08-04T11:48:58.538216 #22893] DEBUG -- : unallocate hw_params
|
3309
|
+
D, [2010-08-04T11:48:58.538341 #22893] DEBUG -- : close audio device
|
3310
|
+
D, [2010-08-04T11:48:58.539355 #22893] DEBUG -- : open audio device default
|
3311
|
+
D, [2010-08-04T11:48:58.548917 #22893] DEBUG -- : initialize hardware parameter structure
|
3312
|
+
D, [2010-08-04T11:48:58.549159 #22893] DEBUG -- : set sample format
|
3313
|
+
D, [2010-08-04T11:48:58.549295 #22893] DEBUG -- : set access type
|
3314
|
+
D, [2010-08-04T11:48:58.549418 #22893] DEBUG -- : set channel count : 2
|
3315
|
+
D, [2010-08-04T11:48:58.549543 #22893] DEBUG -- : set sample rate
|
3316
|
+
D, [2010-08-04T11:48:58.549716 #22893] DEBUG -- : set hw parameters
|
3317
|
+
D, [2010-08-04T11:48:58.549990 #22893] DEBUG -- : unallocate hw_params
|
3318
|
+
D, [2010-08-04T11:48:58.550111 #22893] DEBUG -- : retrieve current hardware parameters
|
3319
|
+
D, [2010-08-04T11:48:58.550199 #22893] DEBUG -- : get sample rate
|
3320
|
+
D, [2010-08-04T11:48:58.550306 #22893] DEBUG -- : retrieve current hardware parameters
|
3321
|
+
D, [2010-08-04T11:48:58.550399 #22893] DEBUG -- : get channels
|
3322
|
+
D, [2010-08-04T11:48:58.550463 #22893] DEBUG -- : start read with 44100, 2 channels
|
3323
|
+
D, [2010-08-04T11:48:58.550559 #22893] DEBUG -- : retrieve current hardware parameters
|
3324
|
+
D, [2010-08-04T11:48:58.550653 #22893] DEBUG -- : retrieve current hardware parameters
|
3325
|
+
D, [2010-08-04T11:48:58.550734 #22893] DEBUG -- : get sample rate
|
3326
|
+
D, [2010-08-04T11:48:58.550835 #22893] DEBUG -- : get sample format
|
3327
|
+
D, [2010-08-04T11:48:58.550927 #22893] DEBUG -- : get channels
|
3328
|
+
D, [2010-08-04T11:48:58.550990 #22893] DEBUG -- : allocate 44100 bytes for 11025 frames
|
3329
|
+
D, [2010-08-04T11:48:58.551072 #22893] DEBUG -- : retrieve current hardware parameters
|
3330
|
+
D, [2010-08-04T11:48:58.551158 #22893] DEBUG -- : get sample format
|
3331
|
+
D, [2010-08-04T11:48:58.551243 #22893] DEBUG -- : get channels
|
3332
|
+
D, [2010-08-04T11:48:58.551342 #22893] DEBUG -- : read from audio interface
|
3333
|
+
D, [2010-08-04T11:48:58.847531 #22893] DEBUG -- : retrieve current hardware parameters
|
3334
|
+
D, [2010-08-04T11:48:58.847714 #22893] DEBUG -- : get sample format
|
3335
|
+
D, [2010-08-04T11:48:58.847812 #22893] DEBUG -- : get channels
|
3336
|
+
D, [2010-08-04T11:48:58.847923 #22893] DEBUG -- : close audio device
|
3337
|
+
D, [2010-08-04T11:48:58.848372 #22893] DEBUG -- : open audio device default
|
3338
|
+
D, [2010-08-04T11:48:58.856910 #22893] DEBUG -- : initialize hardware parameter structure
|
3339
|
+
D, [2010-08-04T11:48:58.857166 #22893] DEBUG -- : set sample format
|
3340
|
+
D, [2010-08-04T11:48:58.857306 #22893] DEBUG -- : set access type
|
3341
|
+
D, [2010-08-04T11:48:58.857430 #22893] DEBUG -- : set channel count : 2
|
3342
|
+
D, [2010-08-04T11:48:58.857559 #22893] DEBUG -- : set sample rate
|
3343
|
+
D, [2010-08-04T11:48:58.857734 #22893] DEBUG -- : set hw parameters
|
3344
|
+
D, [2010-08-04T11:48:58.858021 #22893] DEBUG -- : unallocate hw_params
|
3345
|
+
D, [2010-08-04T11:48:58.858136 #22893] DEBUG -- : retrieve current hardware parameters
|
3346
|
+
D, [2010-08-04T11:48:58.858216 #22893] DEBUG -- : get sample rate
|
3347
|
+
D, [2010-08-04T11:48:58.858319 #22893] DEBUG -- : retrieve current hardware parameters
|
3348
|
+
D, [2010-08-04T11:48:58.858403 #22893] DEBUG -- : get channels
|
3349
|
+
D, [2010-08-04T11:48:58.858465 #22893] DEBUG -- : start read with 44100, 2 channels
|
3350
|
+
D, [2010-08-04T11:48:58.858555 #22893] DEBUG -- : retrieve current hardware parameters
|
3351
|
+
D, [2010-08-04T11:48:58.858646 #22893] DEBUG -- : retrieve current hardware parameters
|
3352
|
+
D, [2010-08-04T11:48:58.858725 #22893] DEBUG -- : get sample rate
|
3353
|
+
D, [2010-08-04T11:48:58.858822 #22893] DEBUG -- : get sample format
|
3354
|
+
D, [2010-08-04T11:48:58.858910 #22893] DEBUG -- : get channels
|
3355
|
+
D, [2010-08-04T11:48:58.858974 #22893] DEBUG -- : allocate 44100 bytes for 11025 frames
|
3356
|
+
D, [2010-08-04T11:48:58.859055 #22893] DEBUG -- : retrieve current hardware parameters
|
3357
|
+
D, [2010-08-04T11:48:58.859139 #22893] DEBUG -- : get sample format
|
3358
|
+
D, [2010-08-04T11:48:58.859223 #22893] DEBUG -- : get channels
|
3359
|
+
D, [2010-08-04T11:48:58.859319 #22893] DEBUG -- : read from audio interface
|
3360
|
+
D, [2010-08-04T11:48:59.134061 #22893] DEBUG -- : read from audio interface
|
3361
|
+
D, [2010-08-04T11:48:59.411418 #22893] DEBUG -- : read from audio interface
|
3362
|
+
D, [2010-08-04T11:48:59.667415 #22893] DEBUG -- : close audio device
|
3363
|
+
D, [2010-08-04T11:48:59.668514 #22893] DEBUG -- : open audio device default
|
3364
|
+
D, [2010-08-04T11:48:59.669485 #22893] DEBUG -- : initialize hardware parameter structure
|
3365
|
+
D, [2010-08-04T11:48:59.669658 #22893] DEBUG -- : set sample format
|
3366
|
+
D, [2010-08-04T11:48:59.669757 #22893] DEBUG -- : set access type
|
3367
|
+
D, [2010-08-04T11:48:59.669843 #22893] DEBUG -- : set channel count : 2
|
3368
|
+
D, [2010-08-04T11:48:59.669931 #22893] DEBUG -- : set sample rate
|
3369
|
+
D, [2010-08-04T11:48:59.670048 #22893] DEBUG -- : set hw parameters
|
3370
|
+
D, [2010-08-04T11:48:59.670249 #22893] DEBUG -- : unallocate hw_params
|
3371
|
+
D, [2010-08-04T11:48:59.670313 #22893] DEBUG -- : write in audio interface
|
3372
|
+
D, [2010-08-04T11:48:59.670377 #22893] DEBUG -- : close audio device
|
3373
|
+
D, [2010-08-04T11:48:59.672392 #22893] DEBUG -- : dummy
|
3374
|
+
D, [2010-08-04T11:48:59.672751 #22893] DEBUG -- : dummy
|
3375
|
+
D, [2010-10-14T10:39:18.478029 #15640] DEBUG -- : dummy
|
3376
|
+
D, [2010-10-14T10:39:18.478793 #15640] DEBUG -- : dummy
|
3377
|
+
D, [2010-10-14T10:39:18.483691 #15640] DEBUG -- : open audio device default
|
3378
|
+
D, [2010-10-14T10:39:18.495477 #15640] DEBUG -- : initialize hardware parameter structure
|
3379
|
+
D, [2010-10-14T10:39:18.495730 #15640] DEBUG -- : set sample format
|
3380
|
+
D, [2010-10-14T10:39:18.495836 #15640] DEBUG -- : set access type
|
3381
|
+
D, [2010-10-14T10:39:18.495919 #15640] DEBUG -- : set channel count : 2
|
3382
|
+
D, [2010-10-14T10:39:18.496003 #15640] DEBUG -- : set sample rate
|
3383
|
+
D, [2010-10-14T10:39:18.496124 #15640] DEBUG -- : set hw parameters
|
3384
|
+
D, [2010-10-14T10:39:18.496339 #15640] DEBUG -- : unallocate hw_params
|
3385
|
+
D, [2010-10-14T10:39:18.496417 #15640] DEBUG -- : retrieve current hardware parameters
|
3386
|
+
D, [2010-10-14T10:39:18.496482 #15640] DEBUG -- : retrieve current hardware parameters
|
3387
|
+
D, [2010-10-14T10:39:18.496535 #15640] DEBUG -- : get sample rate
|
3388
|
+
D, [2010-10-14T10:39:18.496601 #15640] DEBUG -- : set avail_min (5512)
|
3389
|
+
D, [2010-10-14T10:39:18.496653 #15640] DEBUG -- : set sw parameters
|
3390
|
+
D, [2010-10-14T10:39:18.496705 #15640] DEBUG -- : unallocate sw_params
|
3391
|
+
D, [2010-10-14T10:39:18.497085 #15640] DEBUG -- : close audio device
|
3392
|
+
D, [2010-10-14T10:39:18.497550 #15640] DEBUG -- : open audio device default
|
3393
|
+
D, [2010-10-14T10:39:18.503401 #15640] DEBUG -- : initialize hardware parameter structure
|
3394
|
+
D, [2010-10-14T10:39:18.503707 #15640] DEBUG -- : set sample format
|
3395
|
+
D, [2010-10-14T10:39:18.503878 #15640] DEBUG -- : set access type
|
3396
|
+
D, [2010-10-14T10:39:18.504026 #15640] DEBUG -- : set channel count : 2
|
3397
|
+
D, [2010-10-14T10:39:18.504185 #15640] DEBUG -- : set sample rate
|
3398
|
+
D, [2010-10-14T10:39:18.504407 #15640] DEBUG -- : set hw parameters
|
3399
|
+
D, [2010-10-14T10:39:18.504782 #15640] DEBUG -- : unallocate hw_params
|
3400
|
+
D, [2010-10-14T10:39:18.504916 #15640] DEBUG -- : retrieve current hardware parameters
|
3401
|
+
D, [2010-10-14T10:39:18.505036 #15640] DEBUG -- : retrieve current hardware parameters
|
3402
|
+
D, [2010-10-14T10:39:18.505139 #15640] DEBUG -- : get sample rate
|
3403
|
+
D, [2010-10-14T10:39:18.505257 #15640] DEBUG -- : set avail_min (5512)
|
3404
|
+
D, [2010-10-14T10:39:18.505365 #15640] DEBUG -- : set sw parameters
|
3405
|
+
D, [2010-10-14T10:39:18.505469 #15640] DEBUG -- : unallocate sw_params
|
3406
|
+
D, [2010-10-14T10:39:18.505641 #15640] DEBUG -- : close audio device
|
3407
|
+
D, [2010-10-14T10:39:18.506119 #15640] DEBUG -- : open audio device default
|
3408
|
+
D, [2010-10-14T10:39:18.515478 #15640] DEBUG -- : initialize hardware parameter structure
|
3409
|
+
D, [2010-10-14T10:39:18.515832 #15640] DEBUG -- : set sample format
|
3410
|
+
D, [2010-10-14T10:39:18.516011 #15640] DEBUG -- : set access type
|
3411
|
+
D, [2010-10-14T10:39:18.516164 #15640] DEBUG -- : set channel count : 2
|
3412
|
+
D, [2010-10-14T10:39:18.516323 #15640] DEBUG -- : set sample rate
|
3413
|
+
D, [2010-10-14T10:39:18.516562 #15640] DEBUG -- : set hw parameters
|
3414
|
+
D, [2010-10-14T10:39:18.516944 #15640] DEBUG -- : unallocate hw_params
|
3415
|
+
D, [2010-10-14T10:39:18.517078 #15640] DEBUG -- : retrieve current hardware parameters
|
3416
|
+
D, [2010-10-14T10:39:18.517199 #15640] DEBUG -- : retrieve current hardware parameters
|
3417
|
+
D, [2010-10-14T10:39:18.517301 #15640] DEBUG -- : get sample rate
|
3418
|
+
D, [2010-10-14T10:39:18.517421 #15640] DEBUG -- : set avail_min (5512)
|
3419
|
+
D, [2010-10-14T10:39:18.517521 #15640] DEBUG -- : set sw parameters
|
3420
|
+
D, [2010-10-14T10:39:18.517621 #15640] DEBUG -- : unallocate sw_params
|
3421
|
+
D, [2010-10-14T10:39:18.517742 #15640] DEBUG -- : close audio device
|
3422
|
+
D, [2010-10-14T10:39:18.518850 #15640] DEBUG -- : open audio device default
|
3423
|
+
D, [2010-10-14T10:39:18.527496 #15640] DEBUG -- : initialize hardware parameter structure
|
3424
|
+
D, [2010-10-14T10:39:18.527812 #15640] DEBUG -- : set sample format
|
3425
|
+
D, [2010-10-14T10:39:18.527985 #15640] DEBUG -- : set access type
|
3426
|
+
D, [2010-10-14T10:39:18.528135 #15640] DEBUG -- : set channel count : 2
|
3427
|
+
D, [2010-10-14T10:39:18.528292 #15640] DEBUG -- : set sample rate
|
3428
|
+
D, [2010-10-14T10:39:18.528517 #15640] DEBUG -- : set hw parameters
|
3429
|
+
D, [2010-10-14T10:39:18.528889 #15640] DEBUG -- : unallocate hw_params
|
3430
|
+
D, [2010-10-14T10:39:18.529017 #15640] DEBUG -- : retrieve current hardware parameters
|
3431
|
+
D, [2010-10-14T10:39:18.529146 #15640] DEBUG -- : retrieve current hardware parameters
|
3432
|
+
D, [2010-10-14T10:39:18.529244 #15640] DEBUG -- : get sample rate
|
3433
|
+
D, [2010-10-14T10:39:18.529362 #15640] DEBUG -- : set avail_min (5512)
|
3434
|
+
D, [2010-10-14T10:39:18.529459 #15640] DEBUG -- : set sw parameters
|
3435
|
+
D, [2010-10-14T10:39:18.529556 #15640] DEBUG -- : unallocate sw_params
|
3436
|
+
D, [2010-10-14T10:39:18.529696 #15640] DEBUG -- : retrieve current hardware parameters
|
3437
|
+
D, [2010-10-14T10:39:18.529807 #15640] DEBUG -- : get sample rate
|
3438
|
+
D, [2010-10-14T10:39:18.529927 #15640] DEBUG -- : get channels
|
3439
|
+
D, [2010-10-14T10:39:18.530032 #15640] DEBUG -- : get period time
|
3440
|
+
D, [2010-10-14T10:39:18.530144 #15640] DEBUG -- : get period size
|
3441
|
+
D, [2010-10-14T10:39:18.530269 #15640] DEBUG -- : get buffer size
|
3442
|
+
D, [2010-10-14T10:39:18.530350 #15640] DEBUG -- : start read with #<ALSA::PCM::HwParameters:70235853324760 sample_rate=44100, channels=2, period_time=21333, period_size=940, buffer_size=7526>
|
3443
|
+
D, [2010-10-14T10:39:18.530455 #15640] DEBUG -- : retrieve current hardware parameters
|
3444
|
+
D, [2010-10-14T10:39:18.530574 #15640] DEBUG -- : get sample format
|
3445
|
+
D, [2010-10-14T10:39:18.530684 #15640] DEBUG -- : get channels
|
3446
|
+
D, [2010-10-14T10:39:18.530824 #15640] DEBUG -- : read from audio interface
|
3447
|
+
D, [2010-10-14T10:39:18.805160 #15640] DEBUG -- : read frame count: 11025/11025
|
3448
|
+
D, [2010-10-14T10:39:18.805408 #15640] DEBUG -- : retrieve current hardware parameters
|
3449
|
+
D, [2010-10-14T10:39:18.805527 #15640] DEBUG -- : get sample format
|
3450
|
+
D, [2010-10-14T10:39:18.805638 #15640] DEBUG -- : get channels
|
3451
|
+
D, [2010-10-14T10:39:18.805793 #15640] DEBUG -- : close audio device
|
3452
|
+
D, [2010-10-14T10:39:18.806321 #15640] DEBUG -- : open audio device default
|
3453
|
+
D, [2010-10-14T10:39:18.815294 #15640] DEBUG -- : initialize hardware parameter structure
|
3454
|
+
D, [2010-10-14T10:39:18.815599 #15640] DEBUG -- : set sample format
|
3455
|
+
D, [2010-10-14T10:39:18.815769 #15640] DEBUG -- : set access type
|
3456
|
+
D, [2010-10-14T10:39:18.815933 #15640] DEBUG -- : set channel count : 2
|
3457
|
+
D, [2010-10-14T10:39:18.816164 #15640] DEBUG -- : set sample rate
|
3458
|
+
D, [2010-10-14T10:39:18.816443 #15640] DEBUG -- : set hw parameters
|
3459
|
+
D, [2010-10-14T10:39:18.816847 #15640] DEBUG -- : unallocate hw_params
|
3460
|
+
D, [2010-10-14T10:39:18.816976 #15640] DEBUG -- : retrieve current hardware parameters
|
3461
|
+
D, [2010-10-14T10:39:18.817101 #15640] DEBUG -- : retrieve current hardware parameters
|
3462
|
+
D, [2010-10-14T10:39:18.817223 #15640] DEBUG -- : get sample rate
|
3463
|
+
D, [2010-10-14T10:39:18.817348 #15640] DEBUG -- : set avail_min (5512)
|
3464
|
+
D, [2010-10-14T10:39:18.817447 #15640] DEBUG -- : set sw parameters
|
3465
|
+
D, [2010-10-14T10:39:18.817546 #15640] DEBUG -- : unallocate sw_params
|
3466
|
+
D, [2010-10-14T10:39:18.817702 #15640] DEBUG -- : retrieve current hardware parameters
|
3467
|
+
D, [2010-10-14T10:39:18.817817 #15640] DEBUG -- : get sample rate
|
3468
|
+
D, [2010-10-14T10:39:18.817931 #15640] DEBUG -- : get channels
|
3469
|
+
D, [2010-10-14T10:39:18.818034 #15640] DEBUG -- : get period time
|
3470
|
+
D, [2010-10-14T10:39:18.818148 #15640] DEBUG -- : get period size
|
3471
|
+
D, [2010-10-14T10:39:18.818259 #15640] DEBUG -- : get buffer size
|
3472
|
+
D, [2010-10-14T10:39:18.818337 #15640] DEBUG -- : start read with #<ALSA::PCM::HwParameters:70235853311640 sample_rate=44100, channels=2, period_time=21333, period_size=940, buffer_size=7526>
|
3473
|
+
D, [2010-10-14T10:39:18.818443 #15640] DEBUG -- : retrieve current hardware parameters
|
3474
|
+
D, [2010-10-14T10:39:18.818564 #15640] DEBUG -- : get sample format
|
3475
|
+
D, [2010-10-14T10:39:18.818673 #15640] DEBUG -- : get channels
|
3476
|
+
D, [2010-10-14T10:39:18.818823 #15640] DEBUG -- : read from audio interface
|
3477
|
+
D, [2010-10-14T10:39:19.092597 #15640] DEBUG -- : read frame count: 11025/11025
|
3478
|
+
D, [2010-10-14T10:39:19.092806 #15640] DEBUG -- : read from audio interface
|
3479
|
+
D, [2010-10-14T10:39:19.348512 #15640] DEBUG -- : read frame count: 11025/11025
|
3480
|
+
D, [2010-10-14T10:39:19.348712 #15640] DEBUG -- : read from audio interface
|
3481
|
+
D, [2010-10-14T10:39:19.604556 #15640] DEBUG -- : read frame count: 11025/11025
|
3482
|
+
D, [2010-10-14T10:39:19.604747 #15640] DEBUG -- : close audio device
|
3483
|
+
D, [2010-10-14T10:39:19.606353 #15640] DEBUG -- : open audio device default
|
3484
|
+
D, [2010-10-14T10:39:19.608050 #15640] DEBUG -- : initialize hardware parameter structure
|
3485
|
+
D, [2010-10-14T10:39:19.608358 #15640] DEBUG -- : set sample format
|
3486
|
+
D, [2010-10-14T10:39:19.608530 #15640] DEBUG -- : set access type
|
3487
|
+
D, [2010-10-14T10:39:19.608676 #15640] DEBUG -- : set channel count : 2
|
3488
|
+
D, [2010-10-14T10:39:19.608828 #15640] DEBUG -- : set sample rate
|
3489
|
+
D, [2010-10-14T10:39:19.609044 #15640] DEBUG -- : set hw parameters
|
3490
|
+
D, [2010-10-14T10:39:19.609436 #15640] DEBUG -- : unallocate hw_params
|
3491
|
+
D, [2010-10-14T10:39:19.609573 #15640] DEBUG -- : retrieve current hardware parameters
|
3492
|
+
D, [2010-10-14T10:39:19.609817 #15640] DEBUG -- : retrieve current hardware parameters
|
3493
|
+
D, [2010-10-14T10:39:19.609928 #15640] DEBUG -- : get sample rate
|
3494
|
+
D, [2010-10-14T10:39:19.610056 #15640] DEBUG -- : set avail_min (5512)
|
3495
|
+
D, [2010-10-14T10:39:19.610189 #15640] DEBUG -- : set sw parameters
|
3496
|
+
D, [2010-10-14T10:39:19.610298 #15640] DEBUG -- : unallocate sw_params
|
3497
|
+
D, [2010-10-14T10:39:19.610413 #15640] DEBUG -- : write in audio interface
|
3498
|
+
D, [2010-10-14T10:39:19.610521 #15640] DEBUG -- : write frame count: 100/100
|
3499
|
+
D, [2010-10-14T10:39:19.610640 #15640] DEBUG -- : close audio device
|
data/refs/alsa_player
ADDED
Binary file
|
data/refs/alsa_player.c
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
#include <stdio.h>
|
2
|
+
#include <stdlib.h>
|
3
|
+
#include <alsa/asoundlib.h>
|
4
|
+
|
5
|
+
main (int argc, char *argv[])
|
6
|
+
{
|
7
|
+
int i;
|
8
|
+
int err;
|
9
|
+
short buf[128];
|
10
|
+
snd_pcm_t *playback_handle;
|
11
|
+
snd_pcm_hw_params_t *hw_params;
|
12
|
+
|
13
|
+
if ((err = snd_pcm_open (&playback_handle, argv[1], SND_PCM_STREAM_PLAYBACK, 0)) < 0) {
|
14
|
+
fprintf (stderr, "cannot open audio device %s (%s)\n",
|
15
|
+
argv[1],
|
16
|
+
snd_strerror (err));
|
17
|
+
exit (1);
|
18
|
+
}
|
19
|
+
|
20
|
+
if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) {
|
21
|
+
fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n",
|
22
|
+
snd_strerror (err));
|
23
|
+
exit (1);
|
24
|
+
}
|
25
|
+
|
26
|
+
if ((err = snd_pcm_hw_params_any (playback_handle, hw_params)) < 0) {
|
27
|
+
fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n",
|
28
|
+
snd_strerror (err));
|
29
|
+
exit (1);
|
30
|
+
}
|
31
|
+
|
32
|
+
if ((err = snd_pcm_hw_params_set_access (playback_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) {
|
33
|
+
fprintf (stderr, "cannot set access type (%s)\n",
|
34
|
+
snd_strerror (err));
|
35
|
+
exit (1);
|
36
|
+
}
|
37
|
+
|
38
|
+
if ((err = snd_pcm_hw_params_set_format (playback_handle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) {
|
39
|
+
fprintf (stderr, "cannot set sample format (%s)\n",
|
40
|
+
snd_strerror (err));
|
41
|
+
exit (1);
|
42
|
+
}
|
43
|
+
|
44
|
+
if ((err = snd_pcm_hw_params_set_rate (playback_handle, hw_params, 44100, 0)) < 0) {
|
45
|
+
fprintf (stderr, "cannot set sample rate (%s)\n",
|
46
|
+
snd_strerror (err));
|
47
|
+
exit (1);
|
48
|
+
}
|
49
|
+
|
50
|
+
if ((err = snd_pcm_hw_params_set_channels (playback_handle, hw_params, 2)) < 0) {
|
51
|
+
fprintf (stderr, "cannot set channel count (%s)\n",
|
52
|
+
snd_strerror (err));
|
53
|
+
exit (1);
|
54
|
+
}
|
55
|
+
|
56
|
+
if ((err = snd_pcm_hw_params (playback_handle, hw_params)) < 0) {
|
57
|
+
fprintf (stderr, "cannot set parameters (%s)\n",
|
58
|
+
snd_strerror (err));
|
59
|
+
exit (1);
|
60
|
+
}
|
61
|
+
|
62
|
+
snd_pcm_hw_params_free (hw_params);
|
63
|
+
|
64
|
+
if ((err = snd_pcm_prepare (playback_handle)) < 0) {
|
65
|
+
fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
|
66
|
+
snd_strerror (err));
|
67
|
+
exit (1);
|
68
|
+
}
|
69
|
+
|
70
|
+
for (i = 0; i < 1000; ++i) {
|
71
|
+
if ((err = snd_pcm_writei (playback_handle, buf, 128)) != 128) {
|
72
|
+
fprintf (stderr, "write to audio interface failed (%s)\n",
|
73
|
+
snd_strerror (err));
|
74
|
+
exit (1);
|
75
|
+
}
|
76
|
+
}
|
77
|
+
|
78
|
+
snd_pcm_close (playback_handle);
|
79
|
+
exit (0);
|
80
|
+
}
|