Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
Multi-Layer Reprojection
Manage
Activity
Members
Labels
Plan
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LuFG VR VIS
VR-Group
Multi-Layer Reprojection
Commits
2d19b787
Commit
2d19b787
authored
2 years ago
by
Azur Ponjavic
Browse files
Options
Downloads
Patches
Plain Diff
improved logging
parent
fec54ba5
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/transport/webrtc_transport.cpp
+34
-49
34 additions, 49 deletions
src/transport/webrtc_transport.cpp
src/transport/webrtc_transport.hpp
+1
-2
1 addition, 2 deletions
src/transport/webrtc_transport.hpp
with
35 additions
and
51 deletions
src/transport/webrtc_transport.cpp
+
34
−
49
View file @
2d19b787
...
@@ -21,8 +21,12 @@ rtc::Configuration* config;
...
@@ -21,8 +21,12 @@ rtc::Configuration* config;
std
::
ofstream
logFile
;
std
::
ofstream
logFile
;
rtc
::
binary
*
msg_frame_buffer
;
rtc
::
binary
*
msg_frame_buffer
;
unsigned
long
long
maxMessageSize
=
64000
;
//262144; //65536;
unsigned
long
long
maxMessageSize
=
64000
;
//262144; //65536;
std
::
map
<
TransformId
,
unsigned
long
long
>
left_frame_start_times
,
right_frame_start_times
;
std
::
map
<
TransformId
,
unsigned
long
long
>
left_frame_generation_times
,
right_frame_generation_times
;
TransformId
transformsCount
=
0
;
unsigned
long
long
frameStarts
[
30000
];
TransformId
transformMaps
[
30000
];
int
LeftFrameGenerationTimes
[
30000
];
int
RightFrameGenerationTimes
[
30000
];
bool
WebRTCTransport
::
create
(
uint32_t
port_number
)
{
bool
WebRTCTransport
::
create
(
uint32_t
port_number
)
{
this
->
last_update_time
=
std
::
chrono
::
high_resolution_clock
::
now
();
this
->
last_update_time
=
std
::
chrono
::
high_resolution_clock
::
now
();
...
@@ -265,45 +269,45 @@ shared_ptr<rtc::PeerConnection> createPeerConnection(weak_ptr<rtc::WebSocket> ww
...
@@ -265,45 +269,45 @@ shared_ptr<rtc::PeerConnection> createPeerConnection(weak_ptr<rtc::WebSocket> ww
TransformId
transform_id
=
(
std
::
to_integer
<
long
long
>
(
msg
[
1
])
|
std
::
to_integer
<
long
long
>
(
msg
[
2
])
<<
8
|
std
::
to_integer
<
long
long
>
(
msg
[
3
])
<<
16
|
std
::
to_integer
<
long
long
>
(
msg
[
4
])
<<
24
|
std
::
to_integer
<
long
long
>
(
msg
[
5
])
<<
32
|
std
::
to_integer
<
long
long
>
(
msg
[
6
])
<<
40
|
std
::
to_integer
<
long
long
>
(
msg
[
7
])
<<
48
|
std
::
to_integer
<
long
long
>
(
msg
[
8
])
<<
56
);
TransformId
transform_id
=
(
std
::
to_integer
<
long
long
>
(
msg
[
1
])
|
std
::
to_integer
<
long
long
>
(
msg
[
2
])
<<
8
|
std
::
to_integer
<
long
long
>
(
msg
[
3
])
<<
16
|
std
::
to_integer
<
long
long
>
(
msg
[
4
])
<<
24
|
std
::
to_integer
<
long
long
>
(
msg
[
5
])
<<
32
|
std
::
to_integer
<
long
long
>
(
msg
[
6
])
<<
40
|
std
::
to_integer
<
long
long
>
(
msg
[
7
])
<<
48
|
std
::
to_integer
<
long
long
>
(
msg
[
8
])
<<
56
);
float
htr
[
16
];
float
htr
[
16
];
//memcpy(&htr, &msg[9], 64);
//memcpy(&htr, &msg[9], 64);
//texting only:
auto
time
=
std
::
chrono
::
system_clock
::
now
();
// get the current time
auto
time
=
std
::
chrono
::
system_clock
::
now
();
// get the current time
auto
since_epoch
=
time
.
time_since_epoch
();
// get the duration since epoch
auto
since_epoch
=
time
.
time_since_epoch
();
// get the duration since epoch
auto
millis
=
std
::
chrono
::
duration_cast
<
std
::
chrono
::
milliseconds
>
(
since_epoch
);
auto
millis
=
std
::
chrono
::
duration_cast
<
std
::
chrono
::
milliseconds
>
(
since_epoch
);
auto
now
=
millis
.
count
();
// just like java (new Date()).getTime();
auto
now
=
millis
.
count
();
// just like java (new Date()).getTime();
left_
frame
_s
tart
_times
.
insert
(
std
::
pair
<
TransformId
,
unsigned
long
long
>
(
transform_id
,
now
))
;
frame
S
tart
s
[
transformsCount
]
=
now
;
right_frame_start_times
.
insert
(
std
::
pair
<
TransformId
,
unsigned
long
long
>
(
transform_id
,
now
))
;
transformMaps
[
transformsCount
]
=
transform_id
;
int
r
=
now
%
1000
;
//
int r = now % 1000;
float
angle
=
r
/
1000.0
*
2
*
3.141592
;
//
float angle = r / 1000.0 * 2 * 3.141592;
float
sine
=
std
::
sin
(
angle
);
//
float sine = std::sin(angle);
float
cosine
=
std
::
cos
(
angle
);
//
float cosine = std::cos(angle);
//htr[0] = cosine;
//htr[0] = cosine;
//htr[10] = cosine;
//htr[10] = cosine;
//htr[2] = sine;
//htr[2] = sine;
//htr[8] = -sine;
//htr[8] = -sine;
tr
->
parse_head_transform
(
transform_id
,
htr
);
tr
->
parse_head_transform
(
transformsCount
,
htr
);
transformsCount
++
;
}
}
break
;
break
;
case
'g'
:
//logging message
case
'g'
:
//logging message
if
(
tr
->
get_state
()
==
TRANSPORT_STATE_CONNECTED
)
{
if
(
tr
->
get_state
()
==
TRANSPORT_STATE_CONNECTED
)
{
float
val_1
,
val_2
,
val_3
,
val_4
,
val_5
;
float
val_1
,
val_2
,
val_3
,
val_4
,
val_5
,
val_6
;
memcpy
(
&
val_1
,
&
msg
[
1
],
4
);
memcpy
(
&
val_1
,
&
msg
[
1
],
4
);
memcpy
(
&
val_6
,
&
msg
[
13
],
4
);
memcpy
(
&
val_2
,
&
msg
[
5
],
4
);
memcpy
(
&
val_2
,
&
msg
[
5
],
4
);
memcpy
(
&
val_3
,
&
msg
[
9
],
4
);
memcpy
(
&
val_3
,
&
msg
[
9
],
4
);
memcpy
(
&
val_4
,
&
msg
[
1
3
],
4
);
memcpy
(
&
val_4
,
&
msg
[
1
7
],
4
);
memcpy
(
&
val_5
,
&
msg
[
1
7
],
4
);
memcpy
(
&
val_5
,
&
msg
[
2
1
],
4
);
unsigned
long
long
generation_time
=
300
;
int
generation_time
=
-
1
;
if
((
int
)
val_1
%
2
==
0
)
{
if
((
int
)
val_1
%
2
==
0
)
{
if
(
left_frame_start_times
.
contains
((
TransformId
)
val_4
)
&&
left_frame_generation_times
.
contains
((
TransformId
)
val_4
))
{
generation_time
=
LeftFrameGenerationTimes
[(
FrameNumber
)
val_6
];
generation_time
=
left_frame_generation_times
[(
TransformId
)
val_4
]
-
left_frame_start_times
[(
TransformId
)
val_4
];
}
}
else
{
}
else
{
if
(
right_frame_start_times
.
contains
((
TransformId
)
val_4
)
&&
right_frame_generation_times
.
contains
((
TransformId
)
val_4
))
{
generation_time
=
RightFrameGenerationTimes
[(
FrameNumber
)
val_6
];
generation_time
=
right_frame_generation_times
[(
TransformId
)
val_4
]
-
right_frame_start_times
[(
TransformId
)
val_4
];
}
}
}
//frame id, transform_id, Generation time, RTT no decoding, RTT with decoding, packets sent, packets received bytes sent,
//frame id, Generation time, RTT no decoding, RTT with decoding, packets sent, packets received bytes sent,
logFile
<<
std
::
to_string
(
val_1
)
+
"; "
+
std
::
to_string
(
val_4
)
+
"; "
+
std
::
to_string
(
generation_time
)
+
"; "
+
std
::
to_string
(
val_3
-
val_4
)
+
"; "
+
std
::
to_string
(
val_2
-
val_4
)
+
"; "
+
std
::
to_string
(
tr
->
packets_send
)
+
"; "
+
std
::
to_string
(
val_5
)
+
"; "
+
std
::
to_string
(
tr
->
bytes_send_total
)
+
";
\n
"
;
logFile
<<
std
::
to_string
(
val_1
)
+
"; "
+
std
::
to_string
(
val_4
)
+
"; "
+
std
::
to_string
(
generation_time
)
+
"; "
+
std
::
to_string
(
val_3
-
val_4
)
+
"; "
+
std
::
to_string
(
val_2
-
val_4
)
+
"; "
+
std
::
to_string
(
tr
->
packets_send
)
+
"; "
+
std
::
to_string
(
val_5
)
+
"; "
+
std
::
to_string
(
tr
->
bytes_send_total
)
+
";
\n
"
;
//logFile << std::to_string(val_1) + "; " + std::to_string(val_2) + "; " + std::to_string(val_3) + "; " + std::to_string(val_4) + "; \n";
//logFile << std::to_string(val_1) + "; " + std::to_string(val_2) + "; " + std::to_string(val_3) + "; " + std::to_string(val_4) + "; \n";
tr
->
latency_counter
+=
generation_time
;
tr
->
frame_counter
++
;
tr
->
frame_counter
++
;
}
}
break
;
break
;
...
@@ -413,26 +417,13 @@ bool WebRTCTransport::send_frame_nal(FrameNumber frame_number, FrameId frame_id,
...
@@ -413,26 +417,13 @@ bool WebRTCTransport::send_frame_nal(FrameNumber frame_number, FrameId frame_id,
auto
since_epoch
=
time
.
time_since_epoch
();
// get the duration since epoch
auto
since_epoch
=
time
.
time_since_epoch
();
// get the duration since epoch
auto
millis
=
std
::
chrono
::
duration_cast
<
std
::
chrono
::
milliseconds
>
(
since_epoch
);
auto
millis
=
std
::
chrono
::
duration_cast
<
std
::
chrono
::
milliseconds
>
(
since_epoch
);
auto
now
=
millis
.
count
();
// just like java (new Date()).getTime();
auto
now
=
millis
.
count
();
// just like java (new Date()).getTime();
TransformId
realTransformId
=
transformMaps
[
transform_id
];
if
(
frame_id
==
0
)
{
if
(
frame_id
==
0
)
{
std
::
erase_if
(
left_frame_start_times
,
[
transform_id
](
const
auto
&
item
)
{
LeftFrameGenerationTimes
[
frame_number
]
=
now
-
frameStarts
[
transform_id
];
auto
const
&
[
key
,
value
]
=
item
;
return
key
<
transform_id
-
300
;
});
std
::
erase_if
(
left_frame_generation_times
,
[
transform_id
](
const
auto
&
item
)
{
auto
const
&
[
key
,
value
]
=
item
;
return
key
<
transform_id
-
300
;
});
left_frame_generation_times
.
insert
(
std
::
pair
<
TransformId
,
unsigned
long
long
>
(
transform_id
,
now
));
}
else
{
}
else
{
std
::
erase_if
(
right_frame_start_times
,
[
transform_id
](
const
auto
&
item
)
{
RightFrameGenerationTimes
[
frame_number
]
=
now
-
frameStarts
[
transform_id
];
auto
const
&
[
key
,
value
]
=
item
;
return
key
<
transform_id
-
300
;
});
std
::
erase_if
(
right_frame_generation_times
,
[
transform_id
](
const
auto
&
item
)
{
auto
const
&
[
key
,
value
]
=
item
;
return
key
<
transform_id
-
300
;
});
right_frame_generation_times
.
insert
(
std
::
pair
<
TransformId
,
unsigned
long
long
>
(
transform_id
,
now
));
}
}
if
(
msg_frame_buffer
==
nullptr
)
{
if
(
msg_frame_buffer
==
nullptr
)
{
...
@@ -448,10 +439,10 @@ bool WebRTCTransport::send_frame_nal(FrameNumber frame_number, FrameId frame_id,
...
@@ -448,10 +439,10 @@ bool WebRTCTransport::send_frame_nal(FrameNumber frame_number, FrameId frame_id,
}
else
{
}
else
{
(
*
msg_frame_buffer
)[
1
]
=
std
::
byte
(
'r'
);
(
*
msg_frame_buffer
)[
1
]
=
std
::
byte
(
'r'
);
}
}
(
*
msg_frame_buffer
)[
2
]
=
std
::
byte
(
t
ransform
_i
d
&
0x000000ff
);
(
*
msg_frame_buffer
)[
2
]
=
std
::
byte
(
realT
ransform
I
d
&
0x000000ff
);
(
*
msg_frame_buffer
)[
3
]
=
std
::
byte
((
t
ransform
_i
d
&
0x0000ff00
)
>>
8
);
(
*
msg_frame_buffer
)[
3
]
=
std
::
byte
((
realT
ransform
I
d
&
0x0000ff00
)
>>
8
);
(
*
msg_frame_buffer
)[
4
]
=
std
::
byte
((
t
ransform
_i
d
&
0x00ff0000
)
>>
16
);
(
*
msg_frame_buffer
)[
4
]
=
std
::
byte
((
realT
ransform
I
d
&
0x00ff0000
)
>>
16
);
(
*
msg_frame_buffer
)[
5
]
=
std
::
byte
((
t
ransform
_i
d
&
0xff000000
)
>>
24
);
(
*
msg_frame_buffer
)[
5
]
=
std
::
byte
((
realT
ransform
I
d
&
0xff000000
)
>>
24
);
//time at start transmission
//time at start transmission
//auto time = std::chrono::system_clock::now();
//auto time = std::chrono::system_clock::now();
...
@@ -681,12 +672,6 @@ void WebRTCTransport::process_send_queue() {
...
@@ -681,12 +672,6 @@ void WebRTCTransport::process_send_queue() {
this
->
bitrate_receive
=
((
double
)
this
->
bits_received
/
(
double
)
delta_time
)
/
1000.0
;
this
->
bitrate_receive
=
((
double
)
this
->
bits_received
/
(
double
)
delta_time
)
/
1000.0
;
this
->
bits_send
=
0
;
this
->
bits_send
=
0
;
this
->
bits_received
=
0
;
this
->
bits_received
=
0
;
if
((
latency_counter
/
(
double
)
frame_counter
)
>
GOAL_LATENCY
)
{
}
else
{
}
this
->
latency_counter
=
0
;
this
->
frame_counter
=
0
;
this
->
frame_counter
=
0
;
this
->
last_update_time
=
cur_time
;
this
->
last_update_time
=
cur_time
;
}
}
...
...
This diff is collapsed.
Click to expand it.
src/transport/webrtc_transport.hpp
+
1
−
2
View file @
2d19b787
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
#include
<unordered_map>
#include
<unordered_map>
#define WEBRTC_TRANSPORT_STATE_CHECK_INTERVAL 20
0
//NOTE: In milliseconds
#define WEBRTC_TRANSPORT_STATE_CHECK_INTERVAL 20 //NOTE: In milliseconds
#define TRANSPORT_CLIENT_CONNECT_TIMEOUT 60 //NOTE: In seconds
#define TRANSPORT_CLIENT_CONNECT_TIMEOUT 60 //NOTE: In seconds
#define WEBRTC_TRANSPORT_CLIENT_TIMEOUT 20 //NOTE: In seconds
#define WEBRTC_TRANSPORT_CLIENT_TIMEOUT 20 //NOTE: In seconds
#define GOAL_LATENCY 50
#define GOAL_LATENCY 50
...
@@ -93,7 +93,6 @@ public:
...
@@ -93,7 +93,6 @@ public:
uint32_t
bits_received
=
0
;
//NOTE: Owned by worker_thread
uint32_t
bits_received
=
0
;
//NOTE: Owned by worker_thread
double
bytes_send_total
=
0.0
;
double
bytes_send_total
=
0.0
;
double
packets_send
=
0.0
;
double
packets_send
=
0.0
;
double
latency_counter
=
0.0
;
uint32_t
frame_counter
=
0
;
uint32_t
frame_counter
=
0
;
private:
private:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment