From: Jaroslav Kysela Date: Thu, 28 May 2015 12:22:24 +0000 (+0200) Subject: IPTV: RTP - add pkt_cb to iptv_rtp_read() - for RTCP X-Git-Tag: v4.2.1~2430 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e808234552667a70a463235e1dce527e81f86aff;p=thirdparty%2Ftvheadend.git IPTV: RTP - add pkt_cb to iptv_rtp_read() - for RTCP --- diff --git a/src/input/mpegts/iptv/iptv_private.h b/src/input/mpegts/iptv/iptv_private.h index 688e25fd9..47fef71d6 100644 --- a/src/input/mpegts/iptv/iptv_private.h +++ b/src/input/mpegts/iptv/iptv_private.h @@ -128,7 +128,8 @@ void iptv_udp_init ( void ); void iptv_rtsp_init ( void ); void iptv_pipe_init ( void ); -ssize_t iptv_rtp_read ( iptv_mux_t *im, udp_multirecv_t *um ); +ssize_t iptv_rtp_read ( iptv_mux_t *im, udp_multirecv_t *um, + void (*pkt_cb)(iptv_mux_t *im, uint8_t *buf, int len) ); #endif /* __IPTV_PRIVATE_H__ */ diff --git a/src/input/mpegts/iptv/iptv_rtsp.c b/src/input/mpegts/iptv/iptv_rtsp.c index 17d82ff8d..a17063300 100644 --- a/src/input/mpegts/iptv/iptv_rtsp.c +++ b/src/input/mpegts/iptv/iptv_rtsp.c @@ -224,7 +224,7 @@ iptv_rtsp_read ( iptv_mux_t *im ) r = recv(im->mm_iptv_fd2, buf, sizeof(buf), MSG_DONTWAIT); } while (r > 0); - r = iptv_rtp_read(im, um); + r = iptv_rtp_read(im, um, NULL); if (r < 0 && ERRNO_AGAIN(errno)) r = 0; return r; diff --git a/src/input/mpegts/iptv/iptv_udp.c b/src/input/mpegts/iptv/iptv_udp.c index e561c375a..c1fba5b9a 100644 --- a/src/input/mpegts/iptv/iptv_udp.c +++ b/src/input/mpegts/iptv/iptv_udp.c @@ -93,7 +93,8 @@ iptv_udp_read ( iptv_mux_t *im ) } ssize_t -iptv_rtp_read ( iptv_mux_t *im, udp_multirecv_t *um ) +iptv_rtp_read ( iptv_mux_t *im, udp_multirecv_t *um, + void (*pkt_cb)(iptv_mux_t *im, uint8_t *pkt, int len) ) { ssize_t len, hlen; uint8_t *rtp; @@ -115,6 +116,9 @@ iptv_rtp_read ( iptv_mux_t *im, udp_multirecv_t *um ) if (len < 12) continue; + if (pkt_cb) + pkt_cb(im, rtp, len); + /* Version 2 */ if ((rtp[0] & 0xC0) != 0x80) continue; @@ -149,7 +153,7 @@ iptv_udp_rtp_read ( iptv_mux_t *im ) { udp_multirecv_t *um = im->im_data; - return iptv_rtp_read(im, um); + return iptv_rtp_read(im, um, NULL); } /*