changeset 3959:ed6f6aa977ec libavformat

Remove access to rdt_data struct in functions called outside of the DynamicProtocol* context. Doing so could lead to problems if we're accessing Real servers serving non-RDT data (or the other way around). Temporarily, this patch adds a _subscribe2() function which will soon be removed in one of the subsequent commits. OK'ed by Luca in "Realmedia patch" thread on ML.
author rbultje
date Tue, 30 Sep 2008 13:23:33 +0000
parents ab2d2bc3a6e7
children 13e9b0d3a314
files rdt.c rdt.h rtsp.c
diffstat 3 files changed, 16 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/rdt.c	Tue Sep 30 13:20:23 2008 +0000
+++ b/rdt.c	Tue Sep 30 13:23:33 2008 +0000
@@ -234,15 +234,20 @@
 }
 
 void
-ff_rdt_subscribe_rule (RTPDemuxContext *s, char *cmd, int size,
+ff_rdt_subscribe_rule (char *cmd, int size,
                        int stream_nr, int rule_nr)
 {
+    av_strlcatf(cmd, size, "stream=%d;rule=%d,stream=%d;rule=%d",
+                stream_nr, rule_nr * 2, stream_nr, rule_nr * 2 + 1);
+}
+
+void
+ff_rdt_subscribe_rule2 (RTPDemuxContext *s, char *cmd, int size,
+                        int stream_nr, int rule_nr)
+{
     rdt_data *rdt = s->dynamic_protocol_context;
 
-    av_strlcatf(cmd, size, "stream=%d;rule=%d,stream=%d;rule=%d",
-                stream_nr, rule_nr, stream_nr, rule_nr + 1);
-
-    rdt_load_mdpr(rdt, s->st, 0);
+    rdt_load_mdpr(rdt, s->st, rule_nr * 2);
 }
 
 static unsigned char *
--- a/rdt.h	Tue Sep 30 13:20:23 2008 +0000
+++ b/rdt.h	Tue Sep 30 13:23:33 2008 +0000
@@ -45,14 +45,16 @@
 /**
  * Add subscription information to Subscribe parameter string.
  *
- * @param s RDT context
  * @param cmd string to write the subscription information into.
  * @param size size of cmd.
  * @param stream_nr stream number.
  * @param rule_nr rule number to conform to.
  */
-void ff_rdt_subscribe_rule(RTPDemuxContext *s, char *cmd, int size,
+void ff_rdt_subscribe_rule(char *cmd, int size,
                            int stream_nr, int rule_nr);
+// FIXME this will be removed ASAP
+void ff_rdt_subscribe_rule2(RTPDemuxContext *s, char *cmd, int size,
+                            int stream_nr, int rule_nr);
 
 /**
  * Parse RDT-style packet data (header + media data).
--- a/rtsp.c	Tue Sep 30 13:20:23 2008 +0000
+++ b/rtsp.c	Tue Sep 30 13:23:33 2008 +0000
@@ -1324,7 +1324,8 @@
                  s->filename);
         for (i = 0; i < rt->nb_rtsp_streams; i++) {
             if (i != 0) av_strlcat(cmd, ",", sizeof(cmd));
-            ff_rdt_subscribe_rule(
+            ff_rdt_subscribe_rule(cmd, sizeof(cmd), i, 0);
+            ff_rdt_subscribe_rule2(
                 rt->rtsp_streams[i]->rtp_ctx,
                 cmd, sizeof(cmd), i, 0);
         }