mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 19:21:06 +00:00
ptp: Initialize expected DELAY_REQ seqnum to an invalid value
This allows distinguishing pending syncs that didn't have a DELAY_REQ sent from ones that did but used a seqnum of 0, like the very first one. Specifically, if the first one or more syncs are still pending and we send the first DELAY_REQ for a later pending sync, then the DELAY_RESP would've been wrongly associated to the very first pending sync because of the seqnum. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3383 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6365>
This commit is contained in:
parent
470bcd4ec9
commit
0fe3ffe0c0
1 changed files with 3 additions and 2 deletions
|
@ -321,14 +321,14 @@ typedef struct
|
||||||
{
|
{
|
||||||
guint domain;
|
guint domain;
|
||||||
|
|
||||||
guint16 sync_seqnum;
|
guint32 sync_seqnum;
|
||||||
GstClockTime sync_recv_time_local; /* t2 */
|
GstClockTime sync_recv_time_local; /* t2 */
|
||||||
GstClockTime sync_send_time_remote; /* t1, might be -1 if FOLLOW_UP pending */
|
GstClockTime sync_send_time_remote; /* t1, might be -1 if FOLLOW_UP pending */
|
||||||
GstClockTime follow_up_recv_time_local;
|
GstClockTime follow_up_recv_time_local;
|
||||||
|
|
||||||
GSource *timeout_source;
|
GSource *timeout_source;
|
||||||
guint8 iface_idx;
|
guint8 iface_idx;
|
||||||
guint16 delay_req_seqnum;
|
guint32 delay_req_seqnum;
|
||||||
GstClockTime delay_req_send_time_local; /* t3, -1 if we wait for FOLLOW_UP */
|
GstClockTime delay_req_send_time_local; /* t3, -1 if we wait for FOLLOW_UP */
|
||||||
GstClockTime delay_req_recv_time_remote; /* t4, -1 if we wait */
|
GstClockTime delay_req_recv_time_remote; /* t4, -1 if we wait */
|
||||||
GstClockTime delay_resp_recv_time_local;
|
GstClockTime delay_resp_recv_time_local;
|
||||||
|
@ -1668,6 +1668,7 @@ handle_sync_message (PtpMessage * msg, guint8 iface_idx,
|
||||||
sync->delay_req_send_time_local = GST_CLOCK_TIME_NONE;
|
sync->delay_req_send_time_local = GST_CLOCK_TIME_NONE;
|
||||||
sync->delay_req_recv_time_remote = GST_CLOCK_TIME_NONE;
|
sync->delay_req_recv_time_remote = GST_CLOCK_TIME_NONE;
|
||||||
sync->delay_resp_recv_time_local = GST_CLOCK_TIME_NONE;
|
sync->delay_resp_recv_time_local = GST_CLOCK_TIME_NONE;
|
||||||
|
sync->delay_req_seqnum = G_MAXUINT32;
|
||||||
|
|
||||||
/* 0.5 correction factor for division later */
|
/* 0.5 correction factor for division later */
|
||||||
sync->correction_field_sync = msg->correction_field;
|
sync->correction_field_sync = msg->correction_field;
|
||||||
|
|
Loading…
Reference in a new issue