Skip to content

Commit

Permalink
srtr: stats
Browse files Browse the repository at this point in the history
  • Loading branch information
funman committed Dec 22, 2023
1 parent 46ab7ec commit 7e5f5dc
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
18 changes: 18 additions & 0 deletions include/upipe-srt/upipe_srt_receiver.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,24 @@ extern "C" {
#define UPIPE_SRT_RECEIVER_SIGNATURE UBASE_FOURCC('s','r','t','r')
#define UPIPE_SRT_RECEIVER_OUTPUT_SIGNATURE UBASE_FOURCC('s','r','r','o')

enum upipe_srt_receiver_command {
UPIPE_SRTR_SENTINEL = UPIPE_CONTROL_LOCAL,

/** get counters (unsigned *, unsigned *, size_t *, size_t *, size_t *, size_t *, size_t *) */
UPIPE_SRTR_GET_STATS,
};

static inline int upipe_srt_receiver_get_stats(struct upipe *upipe,
unsigned *expected_seqnum, unsigned *last_output_seqnum,
size_t *buffered, size_t *nacks, size_t *repaired,
size_t *lost, size_t *duplicates)
{
return upipe_control(upipe, UPIPE_SRTR_GET_STATS,
UPIPE_SRT_RECEIVER_SIGNATURE, expected_seqnum, last_output_seqnum,
buffered, nacks, repaired, lost, duplicates);
}


/** @This returns the management structure for all srt receiver sources.
*
* @return pointer to manager
Expand Down
27 changes: 27 additions & 0 deletions lib/upipe-srt/upipe_srt_receiver.c
Original file line number Diff line number Diff line change
Expand Up @@ -955,6 +955,33 @@ static int _upipe_srt_receiver_control(struct upipe *upipe,
return UBASE_ERR_NONE;
}

case UPIPE_SRTR_GET_STATS: {
UBASE_SIGNATURE_CHECK(args, UPIPE_SRT_RECEIVER_SIGNATURE)
unsigned *expected_seqnum = va_arg(args, unsigned*);
unsigned *last_output_seqnum = va_arg(args, unsigned*);
size_t *buffered = va_arg(args, size_t*);
size_t *nacks = va_arg(args, size_t*);
size_t *repaired = va_arg(args, size_t*);
size_t *loss = va_arg(args, size_t*);
size_t *dups = va_arg(args, size_t*);

struct upipe_srt_receiver *upipe_srt_receiver = upipe_srt_receiver_from_upipe(upipe);
*buffered = upipe_srt_receiver->buffered;
*expected_seqnum = upipe_srt_receiver->expected_seqnum;
*last_output_seqnum = upipe_srt_receiver->last_output_seqnum;
*nacks = upipe_srt_receiver->nacks;
*repaired = upipe_srt_receiver->repaired;
*loss = upipe_srt_receiver->loss;
*dups = upipe_srt_receiver->dups;

upipe_srt_receiver->nacks = 0;
upipe_srt_receiver->repaired = 0;
upipe_srt_receiver->loss = 0;
upipe_srt_receiver->dups = 0;

return UBASE_ERR_NONE;
}

default:
return UBASE_ERR_UNHANDLED;
}
Expand Down

0 comments on commit 7e5f5dc

Please sign in to comment.