Make sampling rate for telephone events configurable (#57)
This commit is contained in:
parent
b7aeedc7bb
commit
3b305e70b3
2 changed files with 24 additions and 2 deletions
|
@ -14,6 +14,7 @@ struct telev;
|
|||
extern const char telev_rtpfmt[];
|
||||
|
||||
int telev_alloc(struct telev **tp, uint32_t ptime);
|
||||
int telev_set_srate(struct telev *tel, uint32_t srate);
|
||||
int telev_send(struct telev *tel, int event, bool end);
|
||||
int telev_recv(struct telev *tel, struct mbuf *mb, int *event, bool *end);
|
||||
int telev_poll(struct telev *tel, bool *marker, struct mbuf *mb);
|
||||
|
|
|
@ -73,6 +73,7 @@ struct telev {
|
|||
/* tx */
|
||||
struct mbuf *mb;
|
||||
uint32_t ptime;
|
||||
uint16_t pdur;
|
||||
enum state state;
|
||||
int event;
|
||||
uint16_t dur;
|
||||
|
@ -164,6 +165,7 @@ int telev_alloc(struct telev **tp, uint32_t ptime)
|
|||
|
||||
t->state = IDLE;
|
||||
t->ptime = ptime;
|
||||
t->pdur = ptime * 8;
|
||||
t->rx_event = -1;
|
||||
|
||||
out:
|
||||
|
@ -176,6 +178,25 @@ int telev_alloc(struct telev **tp, uint32_t ptime)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the sampling rate
|
||||
*
|
||||
* @param tel Telephony Event state
|
||||
* @param srate Sampling rate in [Hz]
|
||||
*
|
||||
* @return 0 if success, otherwise errorcode
|
||||
*/
|
||||
int telev_set_srate(struct telev *tel, uint32_t srate)
|
||||
{
|
||||
if (!tel || !srate)
|
||||
return EINVAL;
|
||||
|
||||
tel->pdur = tel->ptime * srate / 1000;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Send a Telephony Event
|
||||
*
|
||||
|
@ -275,7 +296,7 @@ int telev_poll(struct telev *tel, bool *marker, struct mbuf *mb)
|
|||
mrk = true;
|
||||
|
||||
tel->event = mbuf_read_u8(tel->mb);
|
||||
tel->dur = tel->ptime * 8;
|
||||
tel->dur = tel->pdur;
|
||||
tel->state = SENDING;
|
||||
tel->txc = 1;
|
||||
|
||||
|
@ -283,7 +304,7 @@ int telev_poll(struct telev *tel, bool *marker, struct mbuf *mb)
|
|||
break;
|
||||
|
||||
case SENDING:
|
||||
tel->dur += tel->ptime * 8;
|
||||
tel->dur += tel->pdur;
|
||||
|
||||
err = payload_encode(mb, tel->event, false, tel->dur);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue