ao 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.rdoc +1 -1
- data/example/rawplay.rb +1 -1
- data/ext/audio/device.c +14 -15
- data/ext/audio/exception.c +0 -3
- data/ext/audio/info.c +0 -6
- data/ext/audio/mixer.c +3 -3
- data/ext/audio/option.c +0 -5
- data/ext/audio/output.c +1 -12
- data/ext/audio/thread.c +0 -18
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95b55efc78c4e08cecf01300b2498ae7d0167133de4c7b45eda9833096075574
|
4
|
+
data.tar.gz: c0642596b538bd9369747e314c338d1bca68154edf8d8799cadf346093968047
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56453a03af111246aad7b0af58fd572f796021ffc006a65cb27cc91b3bb4c2509fd407153b236ac4028ef89ffe597bada7c0f33cae83f016ebb345eb777b8fbd
|
7
|
+
data.tar.gz: 6d2ef0d6a259de0fad48975ec617a14d0a1fc10e3303d86eb2ab57beebe6d2fb3a98edc02b1b6b93d3f91fdbdce3489e51000c1157e8463bbe352987f5108eb6
|
data/README.rdoc
CHANGED
data/example/rawplay.rb
CHANGED
@@ -12,7 +12,7 @@ require 'audio/output'
|
|
12
12
|
|
13
13
|
ARGV.each{|file|
|
14
14
|
if File.file?(file)
|
15
|
-
Audio::LiveOutput.new(bits: 16, rate: 44100, channels: 2,
|
15
|
+
Audio::LiveOutput.new(driver_id: Audio::Info.default_driver_id, bits: 16, rate: 44100, channels: 2,
|
16
16
|
byte_format: Audio::Info::FMT_LITTLE){|ao|
|
17
17
|
File.open(file){|f|
|
18
18
|
while buffer = f.read(4096)
|
data/ext/audio/device.c
CHANGED
@@ -97,7 +97,6 @@ raodev_play(VALUE obj, VALUE output_samples)
|
|
97
97
|
*/
|
98
98
|
void
|
99
99
|
close_device(ao_struct *aos){
|
100
|
-
int i;
|
101
100
|
sample_t *sample;
|
102
101
|
|
103
102
|
if (aos->tmode == 1){
|
@@ -113,21 +112,21 @@ close_device(ao_struct *aos){
|
|
113
112
|
free(sample);
|
114
113
|
}
|
115
114
|
pthread_join(aos->thread, NULL);
|
116
|
-
} else {
|
117
|
-
if (aos->device != NULL){
|
118
|
-
ao_close(aos->device);
|
119
|
-
}
|
120
|
-
if (aos->option != NULL){
|
121
|
-
ao_free_options(aos->option);
|
122
|
-
}
|
123
|
-
if (aos->format != NULL){
|
124
|
-
free_format(aos->format);
|
125
|
-
}
|
126
|
-
aos->device = NULL;
|
127
|
-
aos->option = NULL;
|
128
|
-
aos->format = NULL;
|
129
|
-
aos->queue = NULL;
|
130
115
|
}
|
116
|
+
|
117
|
+
if (aos->device != NULL){
|
118
|
+
ao_close(aos->device);
|
119
|
+
}
|
120
|
+
if (aos->option != NULL){
|
121
|
+
ao_free_options(aos->option);
|
122
|
+
}
|
123
|
+
if (aos->format != NULL){
|
124
|
+
free_format(aos->format);
|
125
|
+
}
|
126
|
+
aos->device = NULL;
|
127
|
+
aos->option = NULL;
|
128
|
+
aos->format = NULL;
|
129
|
+
aos->queue = NULL;
|
131
130
|
return;
|
132
131
|
}
|
133
132
|
|
data/ext/audio/exception.c
CHANGED
data/ext/audio/info.c
CHANGED
data/ext/audio/mixer.c
CHANGED
@@ -9,7 +9,7 @@ int
|
|
9
9
|
mix_sample_8(sample_t **samples, sample_t *ret, int chs){
|
10
10
|
int32_t sum;
|
11
11
|
int ch;
|
12
|
-
|
12
|
+
uint32_t pos;
|
13
13
|
int8_t *buffer;
|
14
14
|
int8_t *src;
|
15
15
|
|
@@ -31,7 +31,7 @@ int
|
|
31
31
|
mix_sample_16(sample_t **samples, sample_t *ret, int chs){
|
32
32
|
int32_t sum;
|
33
33
|
int ch;
|
34
|
-
|
34
|
+
uint32_t pos;
|
35
35
|
int16_t *buffer;
|
36
36
|
int16_t *src;
|
37
37
|
|
@@ -80,7 +80,7 @@ rao_mix_samples(VALUE obj, VALUE bits, VALUE rsamples){
|
|
80
80
|
sample_t ret;
|
81
81
|
int stat;
|
82
82
|
int chs = 0;
|
83
|
-
|
83
|
+
uint32_t maxlen = 0;
|
84
84
|
|
85
85
|
Check_Type(bits, T_FIXNUM);
|
86
86
|
Check_Type(rsamples, T_ARRAY);
|
data/ext/audio/option.c
CHANGED
@@ -4,10 +4,6 @@
|
|
4
4
|
#include <errno.h>
|
5
5
|
#include "cao.h"
|
6
6
|
|
7
|
-
VALUE cAudio;
|
8
|
-
VALUE cAO_Info;
|
9
|
-
VALUE cAO_eUnknownError;
|
10
|
-
|
11
7
|
/*
|
12
8
|
引数に設定されたサンプルフォーマットをao_sample_format構造体に設定する。
|
13
9
|
成功したらao_sample_format構造体へのポインタを返す。
|
@@ -17,7 +13,6 @@ set_format(VALUE bits, VALUE rate, VALUE channels,
|
|
17
13
|
VALUE byte_format, VALUE matrix)
|
18
14
|
{
|
19
15
|
ao_sample_format *format;
|
20
|
-
size_t len;
|
21
16
|
|
22
17
|
if ((format = malloc(sizeof(ao_sample_format))) == NULL){
|
23
18
|
rb_raise(cAO_eUnknownError, "memory allocation failure.");
|
data/ext/audio/output.c
CHANGED
@@ -4,21 +4,10 @@
|
|
4
4
|
#include <errno.h>
|
5
5
|
#include "cao.h"
|
6
6
|
|
7
|
-
VALUE cAudio;
|
8
7
|
VALUE cAO_Live;
|
9
8
|
VALUE cAO_File;
|
10
|
-
VALUE cAO_Info;
|
11
9
|
VALUE cAO_Mixer;
|
12
10
|
VALUE cAO_DeviceData;
|
13
|
-
VALUE cAO_eAOError;
|
14
|
-
VALUE cAO_eDeviceError;
|
15
|
-
VALUE cAO_eUnknownError;
|
16
|
-
|
17
|
-
VALUE cAO_eNoDriver;
|
18
|
-
VALUE cAO_eNotFile;
|
19
|
-
VALUE cAO_eNotLive;
|
20
|
-
VALUE cAO_eBadOption;
|
21
|
-
VALUE cAO_eDriverError;
|
22
11
|
|
23
12
|
VALUE
|
24
13
|
rao_close(VALUE obj)
|
@@ -82,7 +71,7 @@ Init_outputc(void)
|
|
82
71
|
* 開いたデバイスに関する基本的な情報を保持するクラス。
|
83
72
|
* ruby側から操作はしない。
|
84
73
|
*/
|
85
|
-
cAO_DeviceData = rb_define_class_under(cAO_Live, "DeviceData",
|
74
|
+
cAO_DeviceData = rb_define_class_under(cAO_Live, "DeviceData", rb_cObject);
|
86
75
|
|
87
76
|
/* library initialize & shutdown */
|
88
77
|
rb_define_private_method(cAO_Live, "initialize", rao_open_live, 8);
|
data/ext/audio/thread.c
CHANGED
@@ -12,7 +12,6 @@
|
|
12
12
|
|
13
13
|
void *
|
14
14
|
thread_player(void *val){
|
15
|
-
queue res;
|
16
15
|
ao_struct *aos = val;
|
17
16
|
sample_t *sample;
|
18
17
|
struct timespec tout = {0, 1000000};
|
@@ -52,23 +51,6 @@ thread_player(void *val){
|
|
52
51
|
assert(pthread_mutex_unlock(&aos->mutex) == 0);
|
53
52
|
}
|
54
53
|
|
55
|
-
while ((sample = dequeue(aos)) != NULL){
|
56
|
-
free(sample->buffer);
|
57
|
-
free(sample);
|
58
|
-
}
|
59
|
-
if (aos->device != NULL){
|
60
|
-
ao_close(aos->device);
|
61
|
-
}
|
62
|
-
if (aos->option != NULL){
|
63
|
-
ao_free_options(aos->option);
|
64
|
-
}
|
65
|
-
if (aos->format != NULL){
|
66
|
-
free_format(aos->format);
|
67
|
-
}
|
68
|
-
aos->device = NULL;
|
69
|
-
aos->option = NULL;
|
70
|
-
aos->format = NULL;
|
71
|
-
aos->queue = NULL;
|
72
54
|
assert(pthread_mutex_lock(&aos->mutex) == 0);
|
73
55
|
aos->status = -1;
|
74
56
|
assert(pthread_mutex_unlock(&aos->mutex) == 0);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ao
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akito Miura
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: simple & cross platform audio output library(libao binding http://http://xiph.org/ao/)
|
14
14
|
email: phenomer@g.hachune.net
|
@@ -59,7 +59,7 @@ homepage: http://bitbucket.org/phenomer/ruby-ao
|
|
59
59
|
licenses:
|
60
60
|
- MIT
|
61
61
|
metadata: {}
|
62
|
-
post_install_message:
|
62
|
+
post_install_message:
|
63
63
|
rdoc_options:
|
64
64
|
- "-m README.rdoc"
|
65
65
|
require_paths:
|
@@ -68,16 +68,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements:
|
69
69
|
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: 2.
|
71
|
+
version: 2.7.0
|
72
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
requirements: []
|
78
|
-
|
79
|
-
|
80
|
-
signing_key:
|
78
|
+
rubygems_version: 3.3.3
|
79
|
+
signing_key:
|
81
80
|
specification_version: 4
|
82
81
|
summary: simple & cross platform audio output library
|
83
82
|
test_files: []
|