pulseaudio_simple_fiddle 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/pulseaudio_simple_fiddle.rb +57 -0
  3. metadata +56 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: f8e9574c69aca85e111e3ba10fb34be6f04eaa84a36ac85cea78a93e349ac75f
4
+ data.tar.gz: 6686c626cccbe18baf98de58fc2b1af00508741cffc1470678dca4228e5c6ff2
5
+ SHA512:
6
+ metadata.gz: 84492e6e6e29b2ef7e404380250a9a05ecb10943e365431bc68a86172db76f253d2cf484c0ea3fefc13b3b2b1c92e7cec321b2f64c2efadd79b815898467fa33
7
+ data.tar.gz: 962bea9664b940dd3acbbf8abb59519cf850ab28322cb67b8e037db2377f29467906e2a42353f342b70c298ef256f3d2e96e9ae409ff0b922ac22be75c7c8394
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby
2
+ require 'fiddle'
3
+ require 'fiddle/import'
4
+
5
+ module PulseAudio
6
+ module SampleFormat
7
+ INVALID,U8,ALAW,ULAW,S16LE,S16BE,F32LE,F32BE,S32LE,S32BE,S24LE,S24BE,S2432LE,S2432BE,MAX=(-1..12).to_a
8
+ end
9
+ module StreamDirection
10
+ NODIRECTION,PLAYBACK,RECORD,UPLOAD=(0..3).to_a
11
+ end
12
+ module Simple
13
+ extend Fiddle::Importer
14
+ dlload 'libpulse-simple.so'
15
+
16
+ SampleSpec = struct [
17
+ 'int sample_format',
18
+ 'uint32_t rate',
19
+ 'uint8_t channels'
20
+ ]
21
+ extern 'void * pa_simple_new ( const char * server, const char * name, int dir,const char * dev, const char * stream_name, const int * ss, const pa_channel_map * map, const pa_buffer_attr * attr,int * error );'
22
+ extern 'int pa_simple_write ( void * s, const void * data, size_t bytes, int * error )'
23
+ extern 'void pa_simple_free ( void * s )'
24
+ extern 'uint64_t pa_simple_get_latency ( void * s, int * error )'
25
+ end
26
+
27
+ class SimpleO
28
+ def handle_error code
29
+ throw [code,"Error #{code} in #{caller[0]}"] unless 0 == code
30
+ end
31
+ def initialize name,desc,server:nil,device:nil,map:nil,buffer:nil,format:SampleFormat::F32LE,rate:44100,channels:2
32
+ ps=Simple::SampleSpec.malloc
33
+ ps.sample_format=format
34
+ ps.rate=rate
35
+ ps.channels=channels
36
+ @err = 0
37
+ @handle=Simple::pa_simple_new(server,name,StreamDirection::PLAYBACK,device,desc,ps,nil,nil,@err)
38
+ handle_error @err
39
+ end
40
+ def write buf
41
+ @err=0
42
+ Simple::pa_simple_write @handle,buf,buf.length,@err
43
+ handle_error @err
44
+ end
45
+ def free
46
+ Simple::pa_simple_free @handle
47
+ @handle=nil
48
+ end
49
+ def latency
50
+ @err=0
51
+ val=Simple::pa_simple_get_latency @handle,@err
52
+ handle_error @err
53
+ val
54
+ end
55
+ alias :close :free
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pulseaudio_simple_fiddle
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Benjamin Cook
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-06-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fiddle
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ description: A Ruby-Fiddle implementation of the PulseAudio Simple API.
28
+ email: root@baryon.it
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/pulseaudio_simple_fiddle.rb
34
+ homepage: https://github.com/Canar/pulseaudio_simple_fiddle
35
+ licenses: []
36
+ metadata: {}
37
+ post_install_message:
38
+ rdoc_options: []
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '2.5'
46
+ required_rubygems_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ requirements: []
52
+ rubygems_version: 3.3.15
53
+ signing_key:
54
+ specification_version: 4
55
+ summary: A Ruby-Fiddle implementation of the PulseAudio Simple API.
56
+ test_files: []