/** * Copyright (c) 2016 Parrot Drones SAS * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the Parrot Drones SAS Company nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE PARROT DRONES SAS COMPANY BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _RTP_JITTER_H_ #define _RTP_JITTER_H_ struct rtp_pkt; struct rtp_jitter; struct rtp_jitter_cfg { uint32_t clk_rate; uint32_t delay; }; struct rtp_jitter_cbs { void (*process_pkt)(struct rtp_jitter *jitter, const struct rtp_pkt *pkt, uint32_t gap, void *userdata); }; RTP_API int rtp_jitter_new(const struct rtp_jitter_cfg *cfg, const struct rtp_jitter_cbs *cbs, void *userdata, struct rtp_jitter **ret_obj); RTP_API int rtp_jitter_destroy(struct rtp_jitter *self); RTP_API int rtp_jitter_clear(struct rtp_jitter *self, uint16_t next_seqnum); RTP_API int rtp_jitter_enqueue(struct rtp_jitter *self, struct rtp_pkt *pkt); RTP_API int rtp_jitter_process(struct rtp_jitter *self, uint64_t cur_timestamp); RTP_API int rtp_jitter_get_info(struct rtp_jitter *self, uint32_t *clk_rate, uint32_t *jitter_avg, int64_t *skew_avg); #endif /* _RTP_JITTER_H_ */