153a5a1b3Sopenharmony_ci#ifndef foortphfoo 253a5a1b3Sopenharmony_ci#define foortphfoo 353a5a1b3Sopenharmony_ci 453a5a1b3Sopenharmony_ci/*** 553a5a1b3Sopenharmony_ci This file is part of PulseAudio. 653a5a1b3Sopenharmony_ci 753a5a1b3Sopenharmony_ci Copyright 2006 Lennart Poettering 853a5a1b3Sopenharmony_ci 953a5a1b3Sopenharmony_ci PulseAudio is free software; you can redistribute it and/or modify 1053a5a1b3Sopenharmony_ci it under the terms of the GNU Lesser General Public License as published 1153a5a1b3Sopenharmony_ci by the Free Software Foundation; either version 2.1 of the License, 1253a5a1b3Sopenharmony_ci or (at your option) any later version. 1353a5a1b3Sopenharmony_ci 1453a5a1b3Sopenharmony_ci PulseAudio is distributed in the hope that it will be useful, but 1553a5a1b3Sopenharmony_ci WITHOUT ANY WARRANTY; without even the implied warranty of 1653a5a1b3Sopenharmony_ci MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1753a5a1b3Sopenharmony_ci General Public License for more details. 1853a5a1b3Sopenharmony_ci 1953a5a1b3Sopenharmony_ci You should have received a copy of the GNU Lesser General Public License 2053a5a1b3Sopenharmony_ci along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. 2153a5a1b3Sopenharmony_ci***/ 2253a5a1b3Sopenharmony_ci 2353a5a1b3Sopenharmony_ci#include <inttypes.h> 2453a5a1b3Sopenharmony_ci#include <sys/socket.h> 2553a5a1b3Sopenharmony_ci#include <sys/types.h> 2653a5a1b3Sopenharmony_ci#include <pulsecore/memblockq.h> 2753a5a1b3Sopenharmony_ci#include <pulsecore/memchunk.h> 2853a5a1b3Sopenharmony_ci#include <pulsecore/rtpoll.h> 2953a5a1b3Sopenharmony_ci 3053a5a1b3Sopenharmony_citypedef struct pa_rtp_context pa_rtp_context; 3153a5a1b3Sopenharmony_ci 3253a5a1b3Sopenharmony_ciint pa_rtp_context_init_send(pa_rtp_context *c, int fd, uint8_t payload, size_t mtu, size_t frame_size); 3353a5a1b3Sopenharmony_cipa_rtp_context* pa_rtp_context_new_send(int fd, uint8_t payload, size_t mtu, const pa_sample_spec *ss, bool enable_opus); 3453a5a1b3Sopenharmony_ci 3553a5a1b3Sopenharmony_ci/* If the memblockq doesn't have a silence memchunk set, then the caller must 3653a5a1b3Sopenharmony_ci * guarantee that the current read index doesn't point to a hole. */ 3753a5a1b3Sopenharmony_ciint pa_rtp_send(pa_rtp_context *c, pa_memblockq *q); 3853a5a1b3Sopenharmony_ci 3953a5a1b3Sopenharmony_cipa_rtp_context* pa_rtp_context_new_recv(int fd, uint8_t payload, const pa_sample_spec *ss, bool enable_opus); 4053a5a1b3Sopenharmony_ciint pa_rtp_recv(pa_rtp_context *c, pa_memchunk *chunk, pa_mempool *pool, uint32_t *rtp_tstamp, struct timeval *tstamp); 4153a5a1b3Sopenharmony_ci 4253a5a1b3Sopenharmony_civoid pa_rtp_context_free(pa_rtp_context *c); 4353a5a1b3Sopenharmony_ci 4453a5a1b3Sopenharmony_cisize_t pa_rtp_context_get_frame_size(pa_rtp_context *c); 4553a5a1b3Sopenharmony_cipa_rtpoll_item* pa_rtp_context_get_rtpoll_item(pa_rtp_context *c, pa_rtpoll *rtpoll); 4653a5a1b3Sopenharmony_ci 4753a5a1b3Sopenharmony_cipa_sample_spec* pa_rtp_sample_spec_fixup(pa_sample_spec *ss, bool enable_opus); 4853a5a1b3Sopenharmony_ciint pa_rtp_sample_spec_valid(const pa_sample_spec *ss); 4953a5a1b3Sopenharmony_ci 5053a5a1b3Sopenharmony_ciuint8_t pa_rtp_payload_from_sample_spec(const pa_sample_spec *ss); 5153a5a1b3Sopenharmony_cipa_sample_spec *pa_rtp_sample_spec_from_payload(uint8_t payload, pa_sample_spec *ss); 5253a5a1b3Sopenharmony_ci 5353a5a1b3Sopenharmony_ciconst char* pa_rtp_format_to_string(pa_sample_format_t f); 5453a5a1b3Sopenharmony_cipa_sample_format_t pa_rtp_string_to_format(const char *s, bool enable_opus); 5553a5a1b3Sopenharmony_ci 5653a5a1b3Sopenharmony_ci#endif 57