From ef87e4c499ed6420bf4428a0916077d230b47435 Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 22 Dec 2020 21:15:49 +0000 Subject: [PATCH] Add chan spy via OSS --- alsa.conf | 28 ++-- asound.state | 384 ++++++++++++++++++++++++++++++++++++++++++++++++ extensions.conf | 6 + modules.conf | 10 +- oss.conf | 152 +++++++++++++++++++ 5 files changed, 562 insertions(+), 18 deletions(-) create mode 100644 asound.state create mode 100644 oss.conf diff --git a/alsa.conf b/alsa.conf index 8db6225..5e70e9c 100644 --- a/alsa.conf +++ b/alsa.conf @@ -47,31 +47,29 @@ output_device=phoneOut ; ; If enabled, no audio capture device will be opened. This is useful on ; systems where there will be no return audio path, such as overhead pagers. -;noaudiocapture=true +noaudiocapture=true ; ----------------------------- JITTER BUFFER CONFIGURATION -------------------------- -; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an - ; ALSA channel. Defaults to "no". An enabled jitterbuffer will - ; be used only if the sending side can create and the receiving - ; side can not accept jitter. The ALSA channel can't accept jitter, - ; thus an enabled jitterbuffer on the receive ALSA side will always - ; be used if the sending side can create jitter. - -; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. - -; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is +jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an + ; ALSA channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The ALSA channel can't accept jitter, + ; thus an enabled jitterbuffer on the receive ALSA side will always + ; be used if the sending side can create jitter. +jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. +jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is ; resynchronized. Useful to improve the quality of the voice, with ; big jumps in/broken timestamps, usually sent from exotic devices ; and programs. Defaults to 1000. -; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of a SIP +jbimpl = adaptive ; Jitterbuffer implementation, used on the receiving side of a SIP ; channel. Two implementations are currently available - "fixed" ; (with size always equals to jbmax-size) and "adaptive" (with ; variable size, actually the new jb of IAX2). Defaults to fixed. -; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. - ; The option represents the number of milliseconds by which the new - ; jitter buffer will pad its size. the default is 40, so without +jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new + ; jitter buffer will pad its size. the default is 40, so without ; modification, the new jitter buffer will set its size to the jitter ; value plus 40 milliseconds. increasing this value may help if your ; network normally has low jitter, but occasionally has spikes. diff --git a/asound.state b/asound.state new file mode 100644 index 0000000..a475086 --- /dev/null +++ b/asound.state @@ -0,0 +1,384 @@ +state.Generic { + control.1 { + iface MIXER + name 'IEC958 Playback Con Mask' + value '0fff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access read + type IEC958 + count 1 + } + } + control.2 { + iface MIXER + name 'IEC958 Playback Pro Mask' + value '0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access read + type IEC958 + count 1 + } + } + control.3 { + iface MIXER + name 'IEC958 Playback Default' + value '0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + comment { + access 'read write' + type IEC958 + count 1 + } + } + control.4 { + iface MIXER + name 'IEC958 Playback Switch' + value false + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.5 { + iface CARD + name 'HDMI Jack' + value false + comment { + access read + type BOOLEAN + count 1 + } + } + control.6 { + iface PCM + device 3 + name 'Playback Channel Map' + value.0 0 + value.1 0 + comment { + access read + type INTEGER + count 2 + range '0 - 36' + } + } +} +state.SB { + control.1 { + iface MIXER + name 'Line Out Playback Volume' + value.0 64 + value.1 64 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 64' + dbmin -6400 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.2 { + iface MIXER + name 'Line Out Playback Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.3 { + iface MIXER + name 'Headphone Playback Volume' + value.0 64 + value.1 64 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 64' + dbmin -6400 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.4 { + iface MIXER + name 'Headphone Playback Switch' + value.0 true + value.1 true + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.5 { + iface MIXER + name 'Speaker Playback Volume' + value.0 64 + value.1 64 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 64' + dbmin -6400 + dbmax 0 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.6 { + iface MIXER + name 'Speaker Playback Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.7 { + iface MIXER + name 'Auto-Mute Mode' + value 'Line Out+Speaker' + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Disabled + item.1 'Speaker Only' + item.2 'Line Out+Speaker' + } + } + control.8 { + iface MIXER + name 'Input Source' + value Mic + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Mic + item.1 Line + } + } + control.9 { + iface MIXER + name 'Input Source' + index 1 + value Mic + comment { + access 'read write' + type ENUMERATED + count 1 + item.0 Mic + item.1 Line + } + } + control.10 { + iface MIXER + name 'Capture Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 31' + dbmin -1650 + dbmax 3000 + dbvalue.0 -1650 + dbvalue.1 -1650 + } + } + control.11 { + iface MIXER + name 'Capture Switch' + value.0 false + value.1 false + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.12 { + iface MIXER + name 'Capture Volume' + index 1 + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 31' + dbmin -1650 + dbmax 3000 + dbvalue.0 -1650 + dbvalue.1 -1650 + } + } + control.13 { + iface MIXER + name 'Capture Switch' + index 1 + value.0 false + value.1 false + comment { + access 'read write' + type BOOLEAN + count 2 + } + } + control.14 { + iface MIXER + name 'Mic Boost Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 3' + dbmin 0 + dbmax 3000 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.15 { + iface MIXER + name 'Line Boost Volume' + value.0 0 + value.1 0 + comment { + access 'read write' + type INTEGER + count 2 + range '0 - 3' + dbmin 0 + dbmax 3000 + dbvalue.0 0 + dbvalue.1 0 + } + } + control.16 { + iface MIXER + name 'Master Playback Volume' + value 57 + comment { + access 'read write' + type INTEGER + count 1 + range '0 - 64' + dbmin -6400 + dbmax 0 + dbvalue.0 -700 + } + } + control.17 { + iface MIXER + name 'Master Playback Switch' + value true + comment { + access 'read write' + type BOOLEAN + count 1 + } + } + control.18 { + iface CARD + name 'Mic Jack' + value false + comment { + access read + type BOOLEAN + count 1 + } + } + control.19 { + iface CARD + name 'Line Jack' + value false + comment { + access read + type BOOLEAN + count 1 + } + } + control.20 { + iface CARD + name 'Line Out Jack' + value true + comment { + access read + type BOOLEAN + count 1 + } + } + control.21 { + iface CARD + name 'Front Headphone Jack' + value false + comment { + access read + type BOOLEAN + count 1 + } + } + control.22 { + iface CARD + name 'Speaker Phantom Jack' + value true + comment { + access read + type BOOLEAN + count 1 + } + } + control.23 { + iface PCM + name 'Playback Channel Map' + value.0 3 + value.1 4 + comment { + access read + type INTEGER + count 2 + range '0 - 36' + } + } + control.24 { + iface PCM + name 'Capture Channel Map' + value.0 3 + value.1 4 + comment { + access read + type INTEGER + count 2 + range '0 - 36' + } + } + control.25 { + iface PCM + device 2 + name 'Capture Channel Map' + value.0 0 + value.1 0 + comment { + access read + type INTEGER + count 2 + range '0 - 36' + } + } +} diff --git a/extensions.conf b/extensions.conf index aee90a6..115d136 100644 --- a/extensions.conf +++ b/extensions.conf @@ -755,6 +755,8 @@ same => n,Set(FILE(/tmp/money.txt,,,al,u)=${money} ${CALLERID(num)}) same => n,Playback(queue-thankyou) same => n,Set(QUEUE_PRIO=${money}) same => n,Set(__AUCTION_BID=${money}) +same => n,Originate(Console/dsp,exten,auction-spy,s,1,,a) +same => n,Set(SPYGROUP=10022) same => n,Queue(auction,tc) same => n,Dial(SIP/21,60,U(bidding-announce)) same => n,Hangup() @@ -766,6 +768,10 @@ same => n,Goto(1) exten => bid-invalid,1,Playback(invalid) same => n,Goto(1,1) +[auction-spy] +exten => s,1,Noop() +same => n,ChanSpy(SIP/22,bq) + [bidding-announce] exten => s,1,Wait(1) same => n,Playback(is) diff --git a/modules.conf b/modules.conf index 4836c74..25e28f6 100644 --- a/modules.conf +++ b/modules.conf @@ -34,11 +34,15 @@ autoload=yes ; Load one of: chan_oss, alsa, or console (portaudio). ; By default, load chan_oss only (automatically). ; -load => chan_alsa.so -noload => chan_oss.so +noload => chan_alsa.so +load => chan_oss.so noload => chan_console.so noload => res_hep.so noload => res_hep_pjsip.so noload => res_hep_rtcp.so -; + +noload => res_timing_pthread.so +noload => res_timing_timerfd.so +noload => res_timing_kqueue.so +load => res_timing_dahdi.so diff --git a/oss.conf b/oss.conf new file mode 100644 index 0000000..78c1c1c --- /dev/null +++ b/oss.conf @@ -0,0 +1,152 @@ +; +; Automatically generated from ../channels/chan_oss.c +; + +[general] + ; General config options, with default values shown. + ; You should use one section per device, with [general] being used + ; for the first device and also as a template for other devices. + ; + ; All but 'debug' can go also in the device-specific sections. + ; + ; debug = 0x0 ; misc debug flags, default is 0 + + ; Set the device to use for I/O + device = /dev/dsp1 + + ; Optional mixer command to run upon startup (e.g. to set + ; volume levels, mutes, etc. + ; mixer = + + ; Software mic volume booster (or attenuator), useful for sound + ; cards or microphones with poor sensitivity. The volume level + ; is in dB, ranging from -20.0 to +20.0 + ; boost = n ; mic volume boost in dB + + ; Set the callerid for outgoing calls + ; callerid = John Doe <555-1234> + + autoanswer = yes ; no autoanswer on call + autohangup = yes ; hangup when other party closes + ; extension = s ; default extension to call + ; context = default ; default context for outgoing calls + ; language = "" ; default language + + ; If you set overridecontext to 'yes', then the whole dial string + ; will be interpreted as an extension, which is extremely useful + ; to dial SIP, IAX and other extensions which use the '@' character. + ; The default is 'no' just for backward compatibility, but the + ; suggestion is to change it. + ; overridecontext = no ; if 'no', the last @ will start the context + ; if 'yes' the whole string is an extension. + + ; low level device parameters in case you have problems with the + ; device driver on your operating system. You should not touch these + ; unless you know what you are doing. + ; queuesize = 10 ; frames in device driver + ; frags = 8 ; argument to SETFRAGMENT + + ; ----------------------------- JITTER BUFFER CONFIGURATION -------------------------- + ; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an + ; OSS channel. Defaults to "no". An enabled jitterbuffer will + ; be used only if the sending side can create and the receiving + ; side can not accept jitter. The OSS channel can't accept jitter, + ; thus an enabled jitterbuffer on the receive OSS side will always + ; be used if the sending side can create jitter. + + ; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. + + ; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is + ; resynchronized. Useful to improve the quality of the voice, with + ; big jumps in/broken timestamps, usually sent from exotic devices + ; and programs. Defaults to 1000. + + ; jbimpl = fixed ; Jitterbuffer implementation, used on the receiving side of an OSS + ; channel. Two implementations are currently available - "fixed" + ; (with size always equals to jbmax-size) and "adaptive" (with + ; variable size, actually the new jb of IAX2). Defaults to fixed. + + ; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. + ; The option represents the number of milliseconds by which the new + ; jitter buffer will pad its size. the default is 40, so without + ; modification, the new jitter buffer will set its size to the jitter + ; value plus 40 milliseconds. increasing this value may help if your + ; network normally has low jitter, but occasionally has spikes. + + ; jblog = no ; Enables jitterbuffer frame logging. Defaults to "no". + ; ---------------------------------------------------------------------------------- + +; below is an entry for a second console channel +; [card1] + ; device = /dev/dsp1 ; alternate device + +; Below are the settings to support video. You can include them +; in your general configuration as [general](+,video) +; The parameters are all available through the CLI as "console name value" +; Section names used here are only examples. + +[my_video](!) ; you can just include in your config + videodevice = /dev/video0 ; uses your V4L webcam as video source + videodevice = X11 ; X11 grabber. Dragging on the local display moves the origin. + videocodec = h263 ; also h261, h263p, h264, mpeg4, ... + + ; video_size is the geometry used by the encoder. + ; Depending on the codec your choice is restricted. + video_size = 352x288 ; the format WIDTHxHEIGHT is also ok + video_size = cif ; sqcif, qcif, cif, qvga, vga, ... + + ; You can also set the geometry used for the camera, local display and remote display. + ; The local window is on the right, the remote window is on the left. + ; Right clicking with the mouse on a video window increases the size, + ; center-clicking reduces the size. + camera_size = cif + remote_size = cif + local_size = qcif + + bitrate = 60000 ; rate told to ffmpeg. + fps = 5 ; frames per second from the source. + ; qmin = 3 ; quantizer value passed to the encoder. + +; The keypad is made of an image (in any format supported by SDL_image) +; and some configuration entries indicating the location and function of buttons. +; These entries can also be contained in the comment field of the image, +; which is a lot more convenient to manage. +; E.g. for jpeg you can write them with wrjpgcom (part of libjpeg). +; The format to define keys is +; region = x0 y0 x1 y1 h +; where is the event to be generated (a digit, pickup, hangup,...) +; is the shape of the region (currently 'rect' and 'circle' are +; supported, the latter is really an ellipse), x0 y0 x1 y1 are the +; coordinates of the base of the rectangle or main diameter of the ellipse, +; (they can be rotated) while h is the height of the rectangle or the other +; diameter of the ellipse. +; +[my_skin](!) + keypad = /tmp/keypad.jpg + region = 1 rect 19 18 67 18 28 + region = 2 rect 84 18 133 18 28 + region = 3 rect 152 18 201 18 28 + region = 4 rect 19 60 67 60 28 + region = 5 rect 84 60 133 60 28 + region = 6 rect 152 60 201 60 28 + region = 7 rect 19 103 67 103 28 + region = 8 rect 84 103 133 103 28 + region = 9 rect 152 103 201 103 28 + region = * rect 19 146 67 146 28 + region = 0 rect 84 146 133 146 28 + region = # rect 152 146 201 146 28 + region = pickup rect 229 15 267 15 40 + region = hangup rect 230 66 270 64 40 + region = mute circle 232 141 264 141 33 + region = sendvideo circle 235 185 266 185 33 + region = autoanswer rect 228 212 275 212 50 + +; another skin with entries for the keypad and a small font +; to write to the message boards in the skin. +[skin2](!) + keypad = /tmp/kpad2.jpg + keypad_font = /tmp/font.png + +; to add video support, uncomment this and remember to install +; the keypad and keypad_font files to the right place +; [general](+,my_video,skin2)