Files
Administrator 14893e62a5 feat: Geutebruck GeViScope/GeViSoft Action Mapping System - MVP
This MVP release provides a complete full-stack solution for managing action mappings
in Geutebruck's GeViScope and GeViSoft video surveillance systems.

## Features

### Flutter Web Application (Port 8081)
- Modern, responsive UI for managing action mappings
- Action picker dialog with full parameter configuration
- Support for both GSC (GeViScope) and G-Core server actions
- Consistent UI for input and output actions with edit/delete capabilities
- Real-time action mapping creation, editing, and deletion
- Server categorization (GSC: prefix for GeViScope, G-Core: prefix for G-Core servers)

### FastAPI REST Backend (Port 8000)
- RESTful API for action mapping CRUD operations
- Action template service with comprehensive action catalog (247 actions)
- Server management (G-Core and GeViScope servers)
- Configuration tree reading and writing
- JWT authentication with role-based access control
- PostgreSQL database integration

### C# SDK Bridge (gRPC, Port 50051)
- Native integration with GeViSoft SDK (GeViProcAPINET_4_0.dll)
- Action mapping creation with correct binary format
- Support for GSC and G-Core action types
- Proper Camera parameter inclusion in action strings (fixes CrossSwitch bug)
- Action ID lookup table with server-specific action IDs
- Configuration reading/writing via SetupClient

## Bug Fixes
- **CrossSwitch Bug**: GSC and G-Core actions now correctly display camera/PTZ head parameters in GeViSet
- Action strings now include Camera parameter: `@ PanLeft (Comment: "", Camera: 101028)`
- Proper filter flags and VideoInput=0 for action mappings
- Correct action ID assignment (4198 for GSC, 9294 for G-Core PanLeft)

## Technical Stack
- **Frontend**: Flutter Web, Dart, Dio HTTP client
- **Backend**: Python FastAPI, PostgreSQL, Redis
- **SDK Bridge**: C# .NET 8.0, gRPC, GeViSoft SDK
- **Authentication**: JWT tokens
- **Configuration**: GeViSoft .set files (binary format)

## Credentials
- GeViSoft/GeViScope: username=sysadmin, password=masterkey
- Default admin: username=admin, password=admin123

## Deployment
All services run on localhost:
- Flutter Web: http://localhost:8081
- FastAPI: http://localhost:8000
- SDK Bridge gRPC: localhost:50051
- GeViServer: localhost (default port)

Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 18:10:54 +01:00

374 lines
18 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns:MadCap="http://www.madcapsoftware.com/Schemas/MadCap.xsd" lang="en" xml:lang="en" data-mc-search-type="Stem" data-mc-help-system-file-name="index.xml" data-mc-path-to-help-system="../" data-mc-target-type="WebHelp2" data-mc-runtime-file-type="Topic" data-mc-preload-images="false" data-mc-in-preview-mode="false" data-mc-toc-path="">
<!-- saved from url=(0014)about:internet -->
<head>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Audio Back Channel (ABC) Plugin documentation</title>
<link href="Resources/TableStyles/Rows.css" rel="stylesheet" />
<link href="../Skins/Default/Stylesheets/TextEffects.css" rel="stylesheet" />
<link href="../Skins/Default/Stylesheets/Topic.css" rel="stylesheet" />
<link href="Resources/Stylesheets/Styles.css" rel="stylesheet" />
<script src="../Resources/Scripts/jquery.min.js">
</script>
<script src="../Resources/Scripts/plugins.min.js">
</script>
<script src="../Resources/Scripts/require.min.js">
</script>
<script src="../Resources/Scripts/require.config.js">
</script>
<script src="../Resources/Scripts/MadCapAll.js">
</script>
</head>
<body>
<h2><b>Audio Back Channel (ABC) Plugin documentation</b>
</h2>
<h3><b>1. Destination</b>
</h3>
<p>The ABC plugin may be used to create a uni/bidirectional (full duplex)
audio communication between different components of the GeViScope/re_porter
environment. Application scenarios are for example:</p>
<p>&#160;</p>
<ul>
<li value="1"> the uni/bidirectional
audio communication of a GSCView station with GeViScope devices. This may be
used for example for announcements from CCTV workstations to railway stations
where GeViScopes are installed (<b>announcement function</b>).
</li>
<li value="2">the uni/bidirectional audio communication between two GSCView
workstations (<b>audio chat function</b>)
</li>
<li value="3">(not) CCTV related audio broadcast function (for example shopping mall
announcements or even entertainment with recorded audio multimedia material) (<b>thin
audio client function</b>)
</li>
</ul>
<p>&#160;</p>
<p>The ABC function is not thought to replace professional Intercom
technology. Its principal transmission latency of about 500ms makes real
intercom applications inconvenient. It just represents a simple means to
transmit audio from a GSCView workstation to other devices which have the
necessary ABC plugin software installed. Nevertheless the architectural
approach of the feature allows quite flexible communication scenarios.
</p>
<h3><b>2. Communication architecture</b>
</h3>
<p>The ABC function is implemented as a GeViScope media plugin device. It
requires the availability of the ABC plugin on the system which is to output
the audio backchannel on its loudspeakers (<b>ABC output</b>). To access the
audio source a GSCServer must be installed on the system which represents the
input of the audio backchannel (<b>ABC source</b>). The audio device may be a
microphone or any other audio component which may be connected to the PC audio
input. This architectural approach allows different application scenarios which
are to be explained in the following paragraphs together with the necessary setup
parameters in both the&#160;ABC source and the ABC output.</p>
<p>&#160;</p>
<p>The ABC function is working completely independent of the DSP audio
inputs of GeViScope. It may be used even if GeViscope/re_porter is not using
its audio inputs (unidirectional audio for example for the announcement
function). In the following just the ABC function is explained. The common audio
functions of the GSC/re_porter system are not influenced and may be used as
accustomed.</p>
<h4><b>2.1. GSCView → GSC</b>
</h4>
<h5><b>2.1.1 General architecture</b>
</h5>
<p>
<img width="564" height="354" src="Images/210image005.jpg" class="padding600" />
</p>
<p>The image shows the basic communication architecture of ABC. In that
installation the function may be used to send audio from a microphone on the GSCView &#160;workstationto either:</p>
<p>&#160;</p>
<p>1.&#160;&#160;&#160;&#160; a fixed (but connected) GeViScope independently from the video
presentation
</p>
<p>2.&#160;&#160;&#160;&#160; the GeViScope which has the video channel which is presented in the
active viewer of GSCView
</p>
<p>3.&#160;&#160;&#160;&#160; all GeViScopes which are currently connected to GSCView (audio
broadcast)
</p>
<p>&#160;</p>
<p>The ABC behaviour 1,2 or 3 may be parametrized
in GSCView and is dependent on the setup for the ABC control buttons. ABC works
in the following way:</p>
<p>&#160;</p>
<ul>
<li value="1">The audio source for ABC is realized by a (virtual) GSCServer which must
be installed on the ABC source system.
</li>
<li value="2">This virtual server offers an audio media channel which may be accessed
remotely. The input microphone is connected to that media channel.
</li>
<li value="3">GSCView (or any other GSC action source - for example Multimap, GeViSoft
or GSCSDK based applications) transmits ABC Control Actions to the ABC output
system. These actions contain the IP address (or network name) of the ABC
source system.
</li>
<li value="4">The ABC actions are forwarded to the ABC plugin which must be installed
on the ABC output system.
</li>
<li value="5">The ABC plugin gets the IP address of the ABC source and connects to it
via the GSCDBI interface. Then it searches the ABC source for a audio channel which it is to output. If an audio source
channel was found the ABC plugin starts the audio transmission and feeds the
audio to the local loudspeaker output.
</li>
<li value="6"> If the ABC plugin gets an ABC_disconnect action or if it gets a new ABC_connect
action the old audio stream is closed and if necessary the new one is opened.
</li>
</ul>
<p>&#160;</p>
<p>To get that function running there is some setup work (GSCSetup ABC
source, GSCSsetup ABC output, Setup GSCView) necessary which is described in
the following instructions.
</p>
<h5><b>2.1.2 Installation step by step</b>
</h5>
<p>The following describes a step by step setup for the application
scenario of this paragraph. Based on that example the realization of other
types of applications (like an GSCView ↔ GSCView
intercommunication) should be simple.</p>
<p>&#160;</p>
<p><b>ABC source </b>
</p>
<p>&#160;</p>
<p>Before starting you should make sure that the system audio channel is
working at all and the microphone input is processed by Windows. A test with
the Windows audio recorder function shows that.</p>
<p>&#160;</p>
<p>a) (virtual) GSCServer setup</p>
<p>&#160;</p>
<ol style="margin-top: 0cm;list-style-type: decimal;" start="1">
<li value="1">Install
GSCServer on the ABC source system
</li>
<li value="2">Start GSCSetup
and connect to the GSCServer on the ABC source system.
</li>
<li value="3">Move to the
“Hardware” dialog.
</li>
<li value="4">Add a virtual
channel. For example you can use any IP camera type for that. It just
provides a placeholder for the ABC function.
</li>
<li value="5">Check
the “Use &#160;system &#160;audio” box in the &#160;belonging “Hardware settings” dialog. This assigns the system audio input to that media
channel.
</li>
<li value="6">Save the setup
</li>
<li value="7">Move to the
“Media Channels” dialog.
</li>
<li value="8">Add the virtual
media channel to the list.
</li>
<li value="9">Change the name
of that channel to the default name for the ABC function
(AUDIOBACKCHANNEL)
</li>
<li value="10">Move to the live
streaming function dialog of that channel
</li>
<li value="11">Select “High”
for the “Audio profile” of the live stream.
</li>
</ol>
<p>&#160;</p>
<p>After that the source system offers a network audio channel.</p>
<p>&#160;</p>
<p>b) GSCView setup</p>
<p>&#160;</p>
<ol style="margin-top: 0cm;list-style-type: decimal;" start="1">
<li value="1">Open the GSCView
profile manager
</li>
<li value="2">Select the menu
“Custom buttons”
</li>
<li value="3">Create a custom
button
</li>
<ol style="margin-top: 0cm;list-style-type: lower-alpha;" start="1">
<li value="1">Caption &#160;Speak
</li>
<li value="2">Action on mouse
down&#160;ABC_Connect(”ABC
source address”)
</li>
<li value="3">Action on mouse
up &#160;ABC_Disconnect()
</li>
<li value="4">Send to&#160;Server
of selected viewer
</li>
</ol>
</ol>
<p>&#160;</p>
<p>ABC source address in the ABC_Connect actions represents the IP address
or network name of the ABC source system. If the button is pressed the “Action
on mouse down” is sent to the remote GSC. Its ABC plugin receives it and
connects to the IP address parameter of the ABC_Connect Attention: Do not mix
up the IP addresses of the ABC source and ABC output system. If
the button is released that action is as well transmitted to the remote GSC.It tells the ABC plugin to close the IP connection and henceforth to mute the
audio transmission.
</p>
<p>&#160;</p>
<p>If you would like to connect the ABC just to a fixed server you can
select it in the “Send to” option of the “Speak” button. This could perhaps be
necessary in an installation where multiple GSCs are remotely installed at the
same site but just one has a loudspeaker connected.</p>
<p>&#160;</p>
<p><b>ABC output</b>
</p>
<p>&#160;</p>
<p>On the GSC which is to output an ABC channel do the following:</p>
<p>&#160;</p>
<p>Before starting you should make sure that the system audio output is
working at all. Connect a loudspeaker and try to play an audio sample with the
media player.</p>
<p>&#160;</p>
<ol style="margin-top: 0cm;list-style-type: decimal;" start="1">
<li value="1">Copy the ABC
plugin (AudioBackChannel.dll) to the directory mediaplugins (in the
GEVISCOPE system folder).
</li>
<li value="2">Start GSCSetup
and connect to the GSCServer on the ABC output system
</li>
<li value="3">Move to the
“Hardware” dialog.
</li>
<li value="4">Open the menu
item “Add” in the context menu. Select “Add”. This shows a list of
available media plugins. Select the ABC plugin.
</li>
<li value="5">Save that setup
to the GeViScope. It is NOT necessary to setup a “Media channel” for that
plugin as it is accustomed for normal devices.
</li>
</ol>
<p>&#160;</p>
<p>That procedure must be done on each GSC which is to output audio from
the ABC source system.
</p>
<h5><b>2.1.3 Parameters of the ABC plugin</b>
</h5>
<p>In the hardware dialog of the ABC output system you may adjust some
parameters which control the behaviour of the audio backchannel:
</p>
<p class="MsoNormal" align="center" style="text-align: center;">
<img src="Images/210image001_600x372.jpg" class="padding600" style="width: 600;height: 372;" />
</p>
<table class="TableStyle_Rows" style="mc-table-style: url('Resources/TableStyles/Rows.css');" cellspacing="0">
<col style="width: 120px;" />
<col style="width: 480px;" />
<tbody>
<tr>
<td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="font-weight: bold;">Default volume</td>
<td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd">Defines the default loudness of the audio output</td>
</tr>
<tr>
<td class="TableStyle_Rows_Body_1_0_RowSep_ColSep" style="font-weight: bold;">GSCChannel</td>
<td class="TableStyle_Rows_Body_1_0_RowSep_ColEnd">That is the name of the audio channel on the ABC source system. The default is
AUDIOBACKCHANNEL</td>
</tr>
<tr>
<td class="TableStyle_Rows_Body_0_0_RowSep_ColSep" style="font-weight: bold;">GSC user name<br />GSC password<br /></td>
<td class="TableStyle_Rows_Body_0_0_RowSep_ColEnd">The connection between the ABC plugin and the ABC source server needs a normal
GSC account. The default is “sysadmin” “masterkey”. If you want to use another
account you can change it here. That account must be available in the setup of
the ABC source system</td>
</tr>
<tr>
<td class="TableStyle_Rows_Body_1_0_RowEnd_ColSep" style="font-weight: bold;">Prebuffer latency<br />Runtime latency</td>
<td class="TableStyle_Rows_Body_1_0_RowEnd_ColEnd">These parameters influence the audio transmission latency. To have an audio
transmission without stream interruption a certain buffering is necessary. If
there are audio interruptions you may reduce them by increasing the latencies</td>
</tr>
</tbody>
</table>
<h5><b>2.1.4 ABC Actions</b>
</h5>
<p>ABC is controled by special ABC-actions. These actions may be created by
any software which interfaces either GeViScope or GeViSoft. This needs not to
be just GSCView but may be used in Multimap or SDK clients as well to control
the establishment of ABC audio connections. If for example Multimap is used to
control GSCView remotely you may add ABC control buttons to Multimap maps
instead of controling ABC from GSCView. You may even use MBEG or any other
hardware / software interface of GeViSoft to control the ABC function.</p>
<p>&#160;</p>
<p>ABC connections are controled by the following GSC actions:</p>
<p>&#160;</p>
<ul>
<li value="1">ABC_Connect(“ABC source address”)<br />Instructs the remote ABC plugin to connect to the audio channel auf the ABC source. A new ABC_Connect action overwrites the old connection.</li>
<li value="2">ABC_Disconnect()<br />Disconnects the ABC connection on that GSC where it is sent to.</li>
</ul>
<h3><b>3. ABC Extensions (07/2008)</b>
</h3>
<h4><b>3.1 Action controled playing of pre-recorded audio files</b>
</h4>
<ul>
<li value="1">May be used to play
audio files (WAV) controled by any action and action mapping in GSC
</li>
<li value="2">Alternative to the
direct speech between GSCView and GSC. May be used in GSCView as well
alternatively to the direct microphone connection. Has advantages in the
following situations:
</li>
</ul>
<p style="margin-left: 75px;">- Low bandwidth
connections between GSCView and GSC. The ABC live
channel needs a minimum of 128 kbit / second. Playing of predefined audio files
does not consume bandwidth
</p>
<p style="margin-left: 75px;">- the surveillance
staff has no possibility to misuse the live function or to make stupid audio comments
via live connections
</p>
<p style="margin-left: 75px;">- clearer understandable
speech if a predefined reaction is possible. Not dependend from the clarity of
speech of the guards.
</p>
<p style="margin-left: 75px;">- Possible to be
controled from Multiview with custom buttons which address different
announcements.
</p>
<ul>
<li value="1">May be used for lots
of other applications as well :
</li>
</ul>
<p style="margin-left: 75px;">- Audio error messages
on the GSC. All SystemError/Warning actions may be mapped to an audio message
</p>
<p style="margin-left: 75px;">- Automatically
produced audio messages for example by video sensor actions “You are
trespassing a forbidden zone …” <br /><br /></p>
<p>The control is done by the action:
</p>
<p>&#160;</p>
<p class="CODEetc">ABCPlayFile
</p>
<p>&#160;</p>
<p>with the parameters: </p>
<ul>
<li value="1">FileID represents a
number of an audio file. The name is automatically created as
GSCSOUND_FileID.Wav. The ABC plugin searches for files with that name and plays
them.
</li>
<li value="2">FileName represents
a name of an audio file. If that parameter is valid FileID is ignored
</li>
<li value="3">AutoRepeat the
audio file is played in a loop
</li>
</ul>
<p>&#160;</p>
<p>The playback of audio files and file loops may be
interrupted with the ABC_Disconnect action. The audio files should reside in
the GSC home directory.<br /><br /></p>
</body>
</html>