pulseaudio_simple_fiddle 0.0.0

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.
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: []