]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtp_internal.h
memleak (seems ive missed that under the obfuscated indention)
[ffmpeg] / libavformat / rtp_internal.h
index f8b0202df4a9b1be3ff8c1657c999c34235a80da..3edcf49c8a76c871d0ee8082bc4c4936f5868d4b 100644 (file)
@@ -2,18 +2,20 @@
  * RTP definitions
  * Copyright (c) 2006 Ryan Martell <rdm4@martellventures.com>
  *
- * This library is free software; you can redistribute it and/or
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
  *
- * This library is distributed in the hope that it will be useful,
+ * FFmpeg is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
+ * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 #ifndef RTP_INTERNAL_H
 #define RTP_INTERNAL_H
 
+// these statistics are used for rtcp receiver reports...
+typedef struct {
+    uint16_t max_seq;           ///< highest sequence number seen
+    uint32_t cycles;            ///< shifted count of sequence number cycles
+    uint32_t base_seq;          ///< base sequence number
+    uint32_t bad_seq;           ///< last bad sequence number + 1
+    int probation;              ///< sequence packets till source is valid
+    int received;               ///< packets received
+    int expected_prior;         ///< packets expected in last interval
+    int received_prior;         ///< packets received in last interval
+    uint32_t transit;           ///< relative transit time for previous packet
+    uint32_t jitter;            ///< estimated jitter.
+} RTPStatistics;
+
+
 typedef int (*DynamicPayloadPacketHandlerProc) (struct RTPDemuxContext * s,
                                                 AVPacket * pkt,
-                                                uint32_t timestamp,
+                                                uint32_t *timestamp,
                                                 const uint8_t * buf,
                                                 int len);
 
@@ -58,6 +75,11 @@ struct RTPDemuxContext {
     struct MpegTSContext *ts;   /* only used for MP2T payloads */
     int read_buf_index;
     int read_buf_size;
+    /* used to send back RTCP RR */
+    URLContext *rtp_ctx;
+    char hostname[256];
+
+    RTPStatistics statistics; ///< Statistics for this stream (used by RTCP receiver reports)
 
     /* rtcp sender statistics receive */
     int64_t last_rtcp_ntp_time;    // TODO: move into statistics
@@ -82,5 +104,7 @@ struct RTPDemuxContext {
 };
 
 extern RTPDynamicProtocolHandler *RTPFirstDynamicPayloadHandler;
+
+int rtsp_next_attr_and_value(const char **p, char *attr, int attr_size, char *value, int value_size); ///< from rtsp.c, but used by rtp dynamic protocol handlers.
 #endif /* RTP_INTERNAL_H */