82#if defined (__WIN32__) || defined(__WIN64__) || defined(_WINDOWS)
86#define ASDK_LoadLib(a) (asdk::hsdk)LoadLibraryA(a)
89#define ASDK_GetProc(a1, a2) GetProcAddress((HINSTANCE__*)a1, a2)
92#define ASDK_FreeLib(a) FreeLibrary((HINSTANCE__*)a)
94#define ASDK_CALL __cdecl
95#elif defined(__GNUC__)
101#define ASDK_LoadLib(a) (asdk::hsdk)dlopen(a, RTLD_NOW)
104#define ASDK_GetProc(a1, a2) dlsym(a1, a2)
107#define ASDK_FreeLib(a) dlclose(a)
111#error Compiler unsupported
120#ifndef ASDK_SAFE_ALIAS
121 #define ASDK_SAFE_ALIAS
433#ifdef ASDK_SAFE_ALIAS
750 using TimePoint = std::chrono::high_resolution_clock::time_point;
751 using TimeMS = std::chrono::milliseconds;
756 return std::chrono::high_resolution_clock::now();
762 return std::chrono::duration_cast<TimeMS>(
TimeNow() - timeStart).count();
770 return std::chrono::steady_clock::now();
777 return std::chrono::duration_cast<TimeMS>(
TimeNowSteady() - time).count();
809#ifdef ASDK_SAFE_ALIAS
828 const void* optionalData,
const uint32_t optionalDataSize,
void* opaque);
854 const unsigned char* audioEncoded,
855 const size_t audioEncodedSize,
void* opaque);
873 const uint8_t *data,
const uint32_t size,
881 const char* fileName,
const uint32_t fileSize,
882 const uint32_t originClientID,
const uint64_t utc,
892 const char* fileName,
const uint8_t* data,
893 const uint32_t size,
void* opaque);
898 const char* fileName,
900 const uint32_t transferred,
const uint32_t total,
905 const char* fileName,
void* opaque);
915 const uint32_t size,
void* opaque);
922#ifdef ASDK_SAFE_ALIAS
945 uint8_t *versionMinor,
946 uint8_t *versionPath);
987 const uint32_t timeout,
const bool highLatency,
988 const char *username,
const char *password,
991 const char *displayName =
nullptr) {
993 return _connect_(
this, ip, port, timeout, highLatency, username,
994 password, userCapability, deviceCapability,
1016 const uint32_t timeout,
const bool highLatency,
1017 const char *username,
const char* password,
1020 const char *certificate,
1021 const char *displayName =
nullptr) {
1022 if (_connect_secured_)
1023 return _connect_secured_(
this, ip, port, timeout, highLatency, username,
1024 password, userCapability, deviceCapability,
1025 certificate, displayName);
1047 const char* userName,
const char *password,
1050 const int timeout = 3000) {
1051 if (_request_certificate_)
1052 return _request_certificate_(
this, address, port, userName, password,
1053 certificateStateOut,
1054 certificateOut, timeout);
1066 if (_cached_certificate_)
1067 return _cached_certificate_(
this, certificateOut);
1080 return _disconnect_(
this);
1093 return _send_request_(
this, request);
1107 const char *option =
nullptr) {
1108 if (_send_request_string_)
1109 return _send_request_string_(
this, request, str, option);
1127 if (_send_chat_message_)
1128 return _send_chat_message_(
this, message);
1148 const uint32_t timeStamp = 0) {
1149 if (_send_audio_frame_)
1150 return _send_audio_frame_(
this, samples, sampleCount, timeStamp);
1169 const uint32_t timeStamp,
1171 if (_send_encoded_audio_frame_)
1172 return _send_encoded_audio_frame_(
this, data, size, timeStamp, state);
1186 if (_flush_audio_frames_)
1187 return _flush_audio_frames_(
this);
1203 if (_set_audio_options_)
1204 return _set_audio_options_(
this, audioOptions);
1219 if (_audio_options_)
1220 return _audio_options_(
this, audioOptions);
1241 const void* data,
const uint32_t size) {
1242 if (_room_file_send_)
1243 return _room_file_send_(
this, roomID, fileName, data, size);
1261 if (_room_file_send_from_path_)
1262 return _room_file_send_from_path_(
this, roomID, filePath);
1278 if (_room_file_send_resume_from_path_)
1279 return _room_file_send_resume_from_path_(
this, roomID, filePath);
1297 if (_room_file_download_)
1298 return _room_file_download_(
this, roomID, hash);
1323 const char* fileName,
const uint32_t totalSize,
1324 const void* haveBytes,
const uint32_t haveCount) {
1325 if (_room_file_download_resume_)
1326 return _room_file_download_resume_(
this, roomID, hash, fileName, totalSize,
1327 haveBytes, haveCount);
1343 if (_room_file_cancel_)
1344 return _room_file_cancel_(
this, roomID, hash);
1359 if (_room_file_delete_)
1360 return _room_file_delete_(
this, roomID, hash);
1372 if (_cb_server_state_)
1373 _cb_server_state_(
this, func, opaque);
1384 if (_cb_room_announce_)
1385 _cb_room_announce_(
this, func, opaque);
1396 if (_cb_room_response_)
1397 _cb_room_response_(
this, func, opaque);
1408 if (_cb_room_client_added_)
1409 _cb_room_client_added_(
this, func, opaque);
1420 if (_cb_room_client_removed_)
1421 _cb_room_client_removed_(
this, func, opaque);
1432 if (_cb_authenticate_response_)
1433 _cb_authenticate_response_(
this, func, opaque);
1445 _cb_frame_(
this, func, opaque);
1456 if (_cb_encoded_stream_)
1457 _cb_encoded_stream_(
this, func, opaque);
1468 if (_cb_encoded_audio_frame_)
1469 _cb_encoded_audio_frame_(
this, func, opaque);
1480 if (_cb_video_options_)
1481 _cb_video_options_(
this, func, opaque);
1492 if (_cb_video_mode_)
1493 _cb_video_mode_(
this, func, opaque);
1504 if (_cb_position_values_)
1505 _cb_position_values_(
this, func, opaque);
1516 if (_cb_bandwidth_statistics_)
1517 _cb_bandwidth_statistics_(
this, func, opaque);
1528 if (_cb_room_preview_image_)
1529 _cb_room_preview_image_(
this, func, opaque);
1540 if (_cb_chat_message_)
1541 _cb_chat_message_(
this, func, opaque);
1554 if (_cb_decoded_audio_frame_)
1555 _cb_decoded_audio_frame_(
this, func, opaque);
1568 if (_cb_room_file_available_)
1569 _cb_room_file_available_(
this, func, opaque);
1580 if (_cb_room_file_deleted_)
1581 _cb_room_file_deleted_(
this, func, opaque);
1594 if (_cb_room_file_downloaded_)
1595 _cb_room_file_downloaded_(
this, func, opaque);
1606 if (_cb_room_file_progress_)
1607 _cb_room_file_progress_(
this, func, opaque);
1618 if (_cb_room_file_sent_)
1619 _cb_room_file_sent_(
this, func, opaque);
1630 if (_cb_room_file_error_)
1631 _cb_room_file_error_(
this, func, opaque);
1639 const uint32_t timeout,
const bool highLatency,
1640 const char* username,
const char* password,
1643 const char *displayName);
1645 const uint32_t timeout,
const bool highLatency,
1646 const char* username,
const char* password,
1649 const char *certificate,
1650 const char* displayName);
1651 Status (
ASDK_CALL *_request_certificate_)(
sdk_t* sdk,
const char* address,
const uint16_t port,
1652 const char* userName,
const char* password,
1659 const char* str,
const char *option);
1662 Status (
ASDK_CALL *_room_file_delete_)(
sdk_t* sdk,
const uint32_t roomID,
const uint64_t hash);
1666 const void* data,
const uint32_t size);
1669 const char* filePath);
1672 const char* filePath);
1675 Status (
ASDK_CALL *_room_file_download_)(
sdk_t* sdk,
const uint32_t roomID,
const uint64_t hash);
1677 const uint64_t hash,
const char* fileName,
1678 const uint32_t totalSize,
1679 const void* haveBytes,
const uint32_t haveCount);
1682 Status (
ASDK_CALL *_room_file_cancel_)(
sdk_t* sdk,
const uint32_t roomID,
const uint64_t hash);
1689 const uint32_t sampleCount,
const uint32_t timeStamp);
1692 const uint32_t size,
const uint32_t timeStamp,
1726#ifdef ASDK_SAFE_ALIAS
1747 sdk_t* self =
nullptr;
1749 const char *library =
"asmirasdk.dll";
1751 const char *library =
"asmirasdk.so";
1757 if (funcInit && funcVersion) {
1758 uint8_t versionMajor = 0;
1759 uint8_t versionMinor = 0;
1760 uint8_t versionPatch = 0;
1761 funcVersion(&versionMajor, &versionMinor, &versionPatch);
1764 printf(
"Version mismatch warning\n");
1769 self->version = funcVersion;
1772 puts(
"Error occurred while initializing ASMIRA SDK");
1778 puts(
"Version error");
1784 puts(
"Failed to locate initialize proc");
1792 char* err = dlerror();
1794 printf(
"Failed to open: \"%s\" Reason: \"%s\"\n", library, err);
#define ASDK_GetProc(a1, a2)
void(*) EncodedAudioFrameFunc(const uint16_t srcID, const unsigned int timeStamp, const asdk::AudioFrameStateValue state, const unsigned char *audioEncoded, const size_t audioEncodedSize, void *opaque)
An encoded audio frame arrived, before any decoding.
static const uint32_t AUDIO_FRAME_SAMPLES
void SetEncodedAudioFrameCallback(EncodedAudioFrameFunc func, void *opaque=nullptr)
Encoded Audio Frame callback.
static const uint32_t AUDIO_CHANNELS
Status SendAudioFrame(const int16_t *samples, const uint32_t sampleCount, const uint32_t timeStamp=0)
Encodes and sends captured audio to the currently joined room.
Status FlushAudioFrames()
Sends the audio frames still held back by the transmit queue.
void SetDecodedAudioFrameCallback(DecodedAudioFrameFunc func, void *opaque=nullptr)
Decoded Audio Frame callback.
uint8_t AudioFrameStateValue
void(*) DecodedAudioFrameFunc(const audio_frame_t *audioFrame, void *opaque)
A received audio frame was decoded to PCM.
Status AudioOptions(audio_options_t *audioOptions)
Gets the audio options in effect.
static const uint32_t AUDIO_SAMPLE_RATE
Status SendEncodedAudioFrame(const void *data, const uint32_t size, const uint32_t timeStamp, const AudioFrameStateValue state)
Sends an already encoded audio frame to the currently joined room.
AudioCodec
Audio codec enum, the encoder used by sdk_t::SendAudioFrame.
AudioFrameState
Codec and origin of an encoded audio frame, as an AudioFrameStateValue.
Status SetAudioOptions(const audio_options_t *audioOptions)
Sets the audio encoder options.
void SetChatMessageCallback(ChatMessageFunc func, void *opaque=nullptr)
Chat message callback.
void(*) ChatMessageFunc(const uint32_t clientID, const char *message, const uint32_t size, void *opaque)
A chat message was received from the joined room.
static const uint32_t CHAT_MESSAGE_LEN
Status SendChatMessage(const char *message)
Sends a chat message to the currently joined room.
Status CachedCertificate(certificate_t *certificateOut)
Get cached certificate from ASMIRA server.
int DeviceCapabilityValue
CertificateState
Outcome of sdk_t::RequestCertificate.
void SetAuthenticateResponseCallback(AuthenticateResponseFunc func, void *opaque=nullptr)
Login result callback.
void SetServerStateCallback(ServerStateFunc func, void *opaque=nullptr)
Server state callback.
UserCapability
The role a client asks the server for on connect.
AuthenticationResponse
Outcome of a login attempt, reported by AuthenticateResponseFunc.
ServerState
State of the connection to the server, reported by ServerStateFunc.
Status RequestCertificate(const char *address, const uint16_t port, const char *userName, const char *password, CertificateState *certificateStateOut, certificate_t *certificateOut, const int timeout=3000)
Request certificate from ASMIRA server.
Status Disconnect()
Disconnects from ASMIRA server.
void(*) AuthenticateResponseFunc(const AuthenticationResponse authenticateResponse, void *opaque)
The server answered the login, see AuthenticationResponse for the bits.
Status ConnectSecured(const char *ip, const uint16_t port, const uint32_t timeout, const bool highLatency, const char *username, const char *password, const UserCapabilityValue userCapability, const DeviceCapabilityValue deviceCapability, const char *certificate, const char *displayName=nullptr)
Connect to ASMIRA server.
Status Connect(const char *ip, const uint16_t port, const uint32_t timeout, const bool highLatency, const char *username, const char *password, const UserCapabilityValue userCapability, const DeviceCapabilityValue deviceCapability, const char *displayName=nullptr)
Connect to ASMIRA server.
DeviceCapability
What a client announces it can do, as a DeviceCapabilityValue.
uint8_t UserCapabilityValue
void(*) ServerStateFunc(const ServerState serverState, void *opaque)
The connection to the server changed state.
@ CertificateStateConnectError
@ CertificateStateReceived
@ CertificateStateConnected
@ UserCapabilityController
@ AuthenticationResponseKickedOther
@ AuthenticationResponseSuccess
@ AuthenticationResponseVersionRecUpgrade
@ AuthenticationResponseLoggedInOther
@ AuthenticationResponseUndef
@ AuthenticationResponseWrongLoginType
@ AuthenticationResponseFormatError
@ AuthenticationResponseVersionError
@ AuthenticationResponseVersionMayUpgrade
@ AuthenticationResponseTryAgainLater
@ AuthenticationResponseRequestedCapError
@ AuthenticationResponseError
@ ServerStateDisconnected
@ ServerStateAuthenticateError
@ ServerStateConnectedAndAuthenticated
@ DeviceCapabilityFull
Everything, including the parts not yet implemented.
@ DeviceCapabilityVideoH264
@ DeviceCapabilityAudioOpus
@ DeviceCapabilityVideoROI
@ DeviceCapabilityVideoH265
@ DeviceCapabilityPhotoModeWEBP
@ DeviceCapabilityDisplay
@ DeviceCapabilityHeadless
Headless ASMIRA: video and photo mode only, no audio, chat or display.
@ DeviceCapabilityPhotoModeAVIF
@ DeviceCapabilityBasic
Common baseline: H.265 video, Speex audio, microphone, WebP photo mode, ROI, chat and a display.
@ DeviceCapabilityPhotoROI
@ DeviceCapabilityFileTransfer
@ DeviceCapabilityVideoAV1
@ DeviceCapabilityAudioSpeex
@ DeviceCapabilityPhotoModeHEIF
@ DeviceCapabilityAudioMIC
@ DeviceCapabilityCore
Desktop ASMIRA: DeviceCapabilityBasic plus AV1 and H.264.
static const uint8_t VERSION_MAJOR
static const uint8_t VERSION_PATCH
Status
Result of an SDK call.
Status Unload()
Unloads SDK library.
static const uint8_t VERSION_MINOR
sdk_t * Initialize()
Loads the SDK shared library and creates an SDK handle.
@ StatusErrorNotPermitted
void(*) RoomFileProgressFunc(const uint32_t roomID, const uint64_t hash, const char *fileName, const RoomFileDirection direction, const uint32_t transferred, const uint32_t total, void *opaque)
Bytes moved for a transfer in either direction.
Status RoomFileSendResumeFromPath(const uint32_t roomID, const char *filePath)
Resumes an interrupted upload of a file from disk.
void SetRoomFileAvailableCallback(RoomFileAvailableFunc func, void *opaque=nullptr)
Room File Available callback.
void(*) RoomFileSentFunc(const uint32_t roomID, const uint64_t hash, const char *fileName, void *opaque)
An upload reached the server, which now announces it to the other room members.
void(*) RoomFileDeletedFunc(const uint32_t roomID, const uint64_t hash, void *opaque)
A room file (roomID, hash) was deleted for the whole room; drop any reference to it.
RoomFileError
Room file transfer failure reason.
Status RoomFileSendFromPath(const uint32_t roomID, const char *filePath)
Uploads a file to a room from disk.
Status RoomFileSend(const uint32_t roomID, const char *fileName, const void *data, const uint32_t size)
Uploads a file to a room from memory.
Status RoomFileCancel(const uint32_t roomID, const uint64_t hash)
Cancels a room file transfer in either direction.
void(*) RoomFileErrorFunc(const uint32_t roomID, const uint64_t hash, const char *fileName, const RoomFileError error, void *opaque)
A transfer failed, anything already received for it has been discarded.
RoomFileDirection
Room file transfer direction.
void SetRoomFileSentCallback(RoomFileSentFunc func, void *opaque=nullptr)
Room File Sent callback.
Status RoomFileDownload(const uint32_t roomID, const uint64_t hash)
Downloads a room file announced by RoomFileAvailableFunc.
void SetRoomFileDeletedCallback(RoomFileDeletedFunc func, void *opaque=nullptr)
Room File Deleted callback.
Status RoomFileDelete(const uint32_t roomID, const uint64_t hash)
Deletes a shared room file for the whole room.
void(*) RoomFileAvailableFunc(const uint32_t roomID, const uint64_t hash, const char *fileName, const uint32_t fileSize, const uint32_t originClientID, const uint64_t utc, void *opaque)
A room file became available to download (pull model).
Status RoomFileDownloadResume(const uint32_t roomID, const uint64_t hash, const char *fileName, const uint32_t totalSize, const void *haveBytes, const uint32_t haveCount)
Resumes a room file download the caller already has part of.
void SetRoomFileProgressCallback(RoomFileProgressFunc func, void *opaque=nullptr)
Room File Progress callback.
void SetRoomFileErrorCallback(RoomFileErrorFunc func, void *opaque=nullptr)
Room File Error callback.
void SetRoomFileDownloadedCallback(RoomFileDownloadedFunc func, void *opaque=nullptr)
Room File Downloaded callback.
void(*) RoomFileDownloadedFunc(const uint32_t roomID, const uint64_t hash, const char *fileName, const uint8_t *data, const uint32_t size, void *opaque)
A requested room-file download finished and hash-verified: data/size hold the file bytes (valid only ...
@ RoomFileErrorHashMismatch
@ RoomFileDirectionReceive
void SetPositionValuesCallback(PositionValuesFunc func, void *opaque=nullptr)
Position Values callback.
PositionSource
Which member of position_values_t carries the position.
void(*) PositionValuesFunc(const position_values_t *positionValues, void *opaque)
The sending client reported a position, see position_values_t.
@ PositionSourceUndefined
Request
Request sent with sdk_t::SendRequest or sdk_t::SendRequestStr.
void SetRoomClientRemovedCallback(RoomClientRemovedFunc func, void *opaque=nullptr)
Server room client removed callback.
RoomState
State of a room, announced by RoomAnnounceFunc as a RoomStateValue.
Status SendRequestStr(const Request request, const char *str, const char *option=nullptr)
Sends request string to ASMIRA server.
RoomFlag
What a room permits, announced by RoomAnnounceFunc as a RoomFlagValue.
void SetRoomResponseCallback(RoomResponseFunc func, void *opaque=nullptr)
Server room response callback.
Status SendRequest(const Request request)
Sends request to ASMIRA server.
void(*) RoomClientAddedFunc(const uint32_t clientID, const char *userName, const UserCapabilityValue userCapability, const DeviceCapabilityValue deviceCapability, void *opaque)
A client joined the room, and once for each member already present when this client joined.
void(*) RoomClientRemovedFunc(const uint32_t clientID, void *opaque)
A client left the room, identified by the clientID given by RoomClientAdded.
void(*) RoomResponseFunc(const Request request, const RoomResponse response, const void *optionalData, const uint32_t optionalDataSize, void *opaque)
The server answered a request sent with SendRequest or SendRequestStr.
RoomResponse
Server answer to a Request, reported by RoomResponseFunc.
void SetRoomClientAddedCallback(RoomClientAddedFunc func, void *opaque=nullptr)
Server room client added callback.
void SetRoomAnnounceCallback(RoomAnnounceFunc func, void *opaque=nullptr)
Server room announce callback.
void(*) RoomAnnounceFunc(const char *roomName, const uint32_t roomID, const asdk::RoomStateValue state, const asdk::RoomFlagValue flags, void *opaque)
A room was announced after RequestRoomListSubscribe, or an announced room changed.
@ RequestRoomListUnsubscribe
@ RequestRoomListSubscribe
@ RoomResponseErrorAlreadyJoined
@ RoomResponseErrorUnhandled
void(*) BandwidthStatisticsFunc(const bandwidth_statistics_simple_t *bandwidthStatistics, void *opaque)
Periodic throughput report for the active connection.
void SetBandwidthStatisticsCallback(BandwidthStatisticsFunc func, void *opaque=nullptr)
Bandwidth Statistics callback.
TimePointSteady TimeNowSteady()
Current steady clock reading, unaffected by clock adjustments.
long long TimeSpentSteady(const TimePointSteady &time)
Milliseconds elapsed since a TimeNowSteady() reading.
long long TimeSpent(const TimePoint &timeStart)
Milliseconds elapsed since a TimeNow() reading.
TimePoint TimeNow()
Current high resolution clock reading.
void(*) VideoModeFunc(const video_mode_t *videoMode, void *opaque)
The sending client switched photo mode, ROI or streaming on or off.
void SetEncodedStreamCallback(EncodedStreamFunc func, void *opaque=nullptr)
Encoded Frame or stream callback.
void SetRoomPreviewImageCallback(RoomPreviewImageFunc func, void *opaque=nullptr)
Room Preview Image callback.
void(*) VideoOptionsFunc(const video_options_t *videoOptions, void *opaque)
The sending client reported its encoder settings, see video_options_t.
void SetVideoModeCallback(VideoModeFunc func, void *opaque=nullptr)
Video Mode callback.
void SetFrameCallback(FrameFunc func, void *opaque=nullptr)
Video/Photo Frame callback.
void(*) RoomPreviewImageFunc(const uint32_t roomID, const uint64_t utc, const ImageFormat imageFormat, const uint8_t *data, const uint32_t size, void *opaque)
A room preview image arrived for a room announced with RoomStatePreview.
void(*) EncodedStreamFunc(const StreamType type, const void *data, const uint32_t dataSize, void *opaque)
An encoded frame or stream chunk arrived, before any decoding.
void(*) FrameFunc(const frame_t *frame, void *opaque)
A video or photo frame was decoded to RGB.
ImageFormat
Encoding of the image delivered by RoomPreviewImageFunc.
StreamType
Kind of payload delivered by EncodedStreamFunc.
void SetVideoOptionsCallback(VideoOptionsFunc func, void *opaque=nullptr)
Video Options callback.
std::chrono::steady_clock::time_point TimePointSteady
struct asdk::position_klv_values_t position_klv_values_t
std::chrono::high_resolution_clock::time_point TimePoint
struct asdk::bandwidth_statistics_t bandwidth_statistics_t
struct asdk::position_values_t position_values_t
struct asdk::certificate_t certificate_t
struct asdk::position_nmea_values_t position_nmea_values_t
std::chrono::milliseconds TimeMS
Decoded room audio, delivered by DecodedAudioFrameFunc.
const int16_t * data
Signed 16 bit PCM samples.
uint32_t timeStamp
Presentation time in msec, as set by the sending client.
uint32_t sampleCount
PCM samples in data.
uint32_t sampleRate
PCM sample rate, always AUDIO_SAMPLE_RATE.
uint32_t channels
PCM channel count, always AUDIO_CHANNELS.
Audio encoder settings, see sdk_t::SetAudioOptions and sdk_t::AudioOptions.
int32_t bitrate
Encoder target bitrate (bit/s).
bool prioritizeSpeech
Tune the encoder for speech rather than general audio.
AudioCodec codec
Encoder used by SendAudioFrame.
int32_t txQueueFrames
Encoded frames accumulated into one packet, 1 - 40 where one frame is 20 msec.
int32_t complexity
Encoder complexity, 0 - 10 where 10 is the highest.
Throughput of the active connection, delivered by BandwidthStatisticsFunc.
float bitrateAverage
Throughput averaged over the connection in kbit/s.
unsigned int packetsSentReceived
Packets moved since the connection was established.
float bitrate
Throughput over the last reporting period in kbit/s.
unsigned int sizeTotal
Bytes moved during the reporting period.
unsigned int reportTime
Duration of the current report in milliseconds.
unsigned int packetsSentReceived
Packets moved during the reporting period.
unsigned int rtcpPacketLostSize
Bytes RTCP reported lost.
unsigned int rtcpPacketLostCount
Packets RTCP reported lost.
A server certificate, as filled in by sdk_t::RequestCertificate.
int len
Length of data in bytes.
const char * data
Certificate data.
A decoded video or photo frame, delivered by FrameFunc.
int32_t height
Frame resolution height in pixels.
uint8_t * data
Frame RGB data (R8G8B8), width * height * 3 bytes.
int64_t timeStamp
Presentation frame linear time since startup in msec.
uint64_t utc
Unix time in seconds at which the frame was captured.
int32_t width
Frame resolution width in pixels.
int32_t size
Size of data in bytes.
Platform and sensor position decoded from MISB ST 0601 KLV.
float sensorAzimuth
Sensor azimuth relative to the platform in degrees, 0 - 360 (ST 0601 tag 18).
float pitch
Platform pitch in degrees (ST 0601 tag 6).
float trueAirSpeed
Platform true airspeed in m/s, 0 - 255 (ST 0601 tag 57).
uint64_t unixTime
Unix time in seconds at which the platform sampled the position (ST 0601 tag 2, converted from micros...
float indicatedAirSpeed
Platform indicated airspeed in m/s, 0 - 255 (ST 0601 tag 58).
float sensorVerticalFOV
Sensor vertical field of view in degrees, 0 - 180 (ST 0601 tag 17).
float roll
Platform roll in degrees (ST 0601 tag 7).
float sensorHorizontalFOV
Sensor horizontal field of view in degrees, 0 - 180 (ST 0601 tag 16).
double longitude
Platform longitude in degrees, WGS 84 (ST 0601 tag 14).
double latitude
Platform latitude in degrees, WGS 84 (ST 0601 tag 13).
float sensorElevationAngle
Sensor elevation angle relative to the platform in degrees (ST 0601 tag 19).
float sensorRelativeRollAngle
Sensor roll relative to the platform in degrees, 0 - 360 (ST 0601 tag 20).
double altitude
Sensor true altitude in metres above mean sea level, -900 to 19000 (ST 0601 tag 15).
float heading
Platform heading in degrees, 0 - 360 clockwise from true north (ST 0601 tag 5).
float groundSpeed
Platform ground speed in m/s, 0 - 255 (ST 0601 tag 56).
Position decoded from an NMEA 0183 GNSS receiver.
double groundSpeed
Ground speed as reported by the receiver, transported as a whole number 0 - 255.
int64_t satVisibleCount
Number of satellites the receiver has in view.
double longitude
Longitude in degrees, WGS 84.
double latitude
Latitude in degrees, WGS 84.
double dilution
Dilution of precision, 0.0 - 99.9, dimensionless.
uint64_t unixTime
Unix time in seconds of the GNSS fix.
float heading
Heading in degrees, 0 - 360 clockwise from true north.
Position reported by the sending client, delivered by PositionValuesFunc.
position_klv_values_t * klvValues
May be nullptr, see positionSource.
PositionSource positionSource
Position value defined.
position_nmea_values_t * nmeaValues
May be nullptr, see positionSource.
void(*) VersionProc(uint8_t *versionMajor, uint8_t *versionMinor, uint8_t *versionPath)
What the sending client is currently doing, delivered by VideoModeFunc.
bool streamingEnabled
Streaming enabled.
bool photoMode
Photo mode enabled.
bool roiMode
ROI mode enabled.
Encoder settings in effect on the sending client, delivered by VideoOptionsFunc.
int32_t targetBitrate
Streaming target bitrate (kbit/s).
int32_t sourceFPS
Source maximum FPS.
int32_t sourceHeight
Source maximum resolution height.
int32_t photoBitrate
Streaming photo bitrate (kbit/s).
int32_t height
Streaming resolution height.
int32_t targetFPS
Streaming targeting FPS.
int32_t sourceWidth
Source maximum resolution width.
int32_t photoTargetSize
Streaming photo size (kbit).
int32_t threadsAvailable
Encoder threads available by system.
int32_t width
Streaming resolution width.
int32_t threads
Encoder threads.
int32_t priority
Encoder priority/compression level.