]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
IPTV: RTP - add pkt_cb to iptv_rtp_read() - for RTCP
authorJaroslav Kysela <perex@perex.cz>
Thu, 28 May 2015 12:22:24 +0000 (14:22 +0200)
committerJaroslav Kysela <perex@perex.cz>
Thu, 28 May 2015 12:22:24 +0000 (14:22 +0200)
src/input/mpegts/iptv/iptv_private.h
src/input/mpegts/iptv/iptv_rtsp.c
src/input/mpegts/iptv/iptv_udp.c

index 688e25fd9190d35ac8d35edf6a82d951bd55e906..47fef71d6ba75785fcac12d1dd8abed70241bce3 100644 (file)
@@ -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__ */
 
index 17d82ff8dd4e31456ed80f74a82daa51b921a5cd..a17063300aaf6e1ac87f73a2fe6da27c552bdbab 100644 (file)
@@ -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;
index e561c375ad7fe811a04871fdbf34d8304bcd2792..c1fba5b9a48371362c1bc6175965bc43111af580 100644 (file)
@@ -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);
 }
 
 /*