Add chan spy via OSS

This commit is contained in:
Your Name
2020-12-22 21:15:49 +00:00
parent 2f836a336c
commit ef87e4c499
5 changed files with 562 additions and 18 deletions

View File

@@ -47,31 +47,29 @@ output_device=phoneOut
; ;
; If enabled, no audio capture device will be opened. This is useful on ; 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. ; systems where there will be no return audio path, such as overhead pagers.
;noaudiocapture=true noaudiocapture=true
; ----------------------------- JITTER BUFFER CONFIGURATION -------------------------- ; ----------------------------- JITTER BUFFER CONFIGURATION --------------------------
; jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an jbenable = yes ; Enables the use of a jitterbuffer on the receiving side of an
; ALSA channel. Defaults to "no". An enabled jitterbuffer will ; ALSA channel. Defaults to "no". An enabled jitterbuffer will
; be used only if the sending side can create and the receiving ; be used only if the sending side can create and the receiving
; side can not accept jitter. The ALSA channel can't accept jitter, ; side can not accept jitter. The ALSA channel can't accept jitter,
; thus an enabled jitterbuffer on the receive ALSA side will always ; thus an enabled jitterbuffer on the receive ALSA side will always
; be used if the sending side can create jitter. ; be used if the sending side can create jitter.
jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds.
; jbmaxsize = 200 ; Max length of the jitterbuffer in milliseconds. jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
; jbresyncthreshold = 1000 ; Jump in the frame timestamps over which the jitterbuffer is
; resynchronized. Useful to improve the quality of the voice, with ; resynchronized. Useful to improve the quality of the voice, with
; big jumps in/broken timestamps, usually sent from exotic devices ; big jumps in/broken timestamps, usually sent from exotic devices
; and programs. Defaults to 1000. ; 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" ; channel. Two implementations are currently available - "fixed"
; (with size always equals to jbmax-size) and "adaptive" (with ; (with size always equals to jbmax-size) and "adaptive" (with
; variable size, actually the new jb of IAX2). Defaults to fixed. ; variable size, actually the new jb of IAX2). Defaults to fixed.
; jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set. jbtargetextra = 40 ; This option only affects the jb when 'jbimpl = adaptive' is set.
; The option represents the number of milliseconds by which the new ; The option represents the number of milliseconds by which the new
; jitter buffer will pad its size. the default is 40, so without ; jitter buffer will pad its size. the default is 40, so without
; modification, the new jitter buffer will set its size to the jitter ; modification, the new jitter buffer will set its size to the jitter
; value plus 40 milliseconds. increasing this value may help if your ; value plus 40 milliseconds. increasing this value may help if your
; network normally has low jitter, but occasionally has spikes. ; network normally has low jitter, but occasionally has spikes.

384
asound.state Normal file
View File

@@ -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'
}
}
}

View File

@@ -755,6 +755,8 @@ same => n,Set(FILE(/tmp/money.txt,,,al,u)=${money} ${CALLERID(num)})
same => n,Playback(queue-thankyou) same => n,Playback(queue-thankyou)
same => n,Set(QUEUE_PRIO=${money}) same => n,Set(QUEUE_PRIO=${money})
same => n,Set(__AUCTION_BID=${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,Queue(auction,tc)
same => n,Dial(SIP/21,60,U(bidding-announce)) same => n,Dial(SIP/21,60,U(bidding-announce))
same => n,Hangup() same => n,Hangup()
@@ -766,6 +768,10 @@ same => n,Goto(1)
exten => bid-invalid,1,Playback(invalid) exten => bid-invalid,1,Playback(invalid)
same => n,Goto(1,1) same => n,Goto(1,1)
[auction-spy]
exten => s,1,Noop()
same => n,ChanSpy(SIP/22,bq)
[bidding-announce] [bidding-announce]
exten => s,1,Wait(1) exten => s,1,Wait(1)
same => n,Playback(is) same => n,Playback(is)

View File

@@ -34,11 +34,15 @@ autoload=yes
; Load one of: chan_oss, alsa, or console (portaudio). ; Load one of: chan_oss, alsa, or console (portaudio).
; By default, load chan_oss only (automatically). ; By default, load chan_oss only (automatically).
; ;
load => chan_alsa.so noload => chan_alsa.so
noload => chan_oss.so load => chan_oss.so
noload => chan_console.so noload => chan_console.so
noload => res_hep.so noload => res_hep.so
noload => res_hep_pjsip.so noload => res_hep_pjsip.so
noload => res_hep_rtcp.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

152
oss.conf Normal file
View File

@@ -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 = <event> <shape> x0 y0 x1 y1 h
; where <event> is the event to be generated (a digit, pickup, hangup,...)
; <shape> 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)