*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "avformat.h"
char buf[1024];
char path[1024];
-
- url_split(NULL, 0, hostname, sizeof(hostname), &port,
+
+ url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port,
path, sizeof(path), uri);
snprintf(buf, sizeof(buf), "udp://%s:%d%s", hostname, port, path);
}
static void build_udp_url(char *buf, int buf_size,
- const char *hostname, int port,
- int local_port, int multicast, int ttl)
+ const char *hostname, int port,
+ int local_port, int multicast, int ttl)
{
snprintf(buf, buf_size, "udp://%s:%d", hostname, port);
if (local_port >= 0)
/*
* url syntax: rtp://host:port[?option=val...]
- * option: 'multicast=1' : enable multicast
+ * option: 'multicast=1' : enable multicast
* 'ttl=n' : set the ttl value (for multicast only)
* 'localport=n' : set the local port to n
*
char buf[1024];
char path[1024];
const char *p;
-
+
is_output = (flags & URL_WRONLY);
s = av_mallocz(sizeof(RTPContext));
if (!s)
return -ENOMEM;
h->priv_data = s;
-
- url_split(NULL, 0, hostname, sizeof(hostname), &port,
+
+ url_split(NULL, 0, NULL, 0, hostname, sizeof(hostname), &port,
path, sizeof(path), uri);
/* extract parameters */
is_multicast = 0;
/* XXX: need to open another connexion if the port is not even */
/* well, should suppress localport in path */
-
+
build_udp_url(buf, sizeof(buf),
hostname, port + 1, local_port + 1, is_multicast, ttl);
if (url_open(&s->rtcp_hd, buf, flags) < 0)
goto fail;
-
+
/* just to ease handle access. XXX: need to suppress direct handle
access */
s->rtp_fd = udp_get_file_handle(s->rtp_hd);
s->rtcp_fd = udp_get_file_handle(s->rtcp_hd);
- h->max_packet_size = url_get_max_packet_size(s->rtp_hd);
+ h->max_packet_size = url_get_max_packet_size(s->rtp_hd);
h->is_streamed = 1;
return 0;
if (s->rtcp_hd)
url_close(s->rtcp_hd);
av_free(s);
- return -EIO;
+ return AVERROR_IO;
}
-static int rtp_read(URLContext *h, UINT8 *buf, int size)
+static int rtp_read(URLContext *h, uint8_t *buf, int size)
{
RTPContext *s = h->priv_data;
struct sockaddr_in from;
if (len < 0) {
if (errno == EAGAIN || errno == EINTR)
continue;
- return -EIO;
+ return AVERROR_IO;
}
break;
}
if (len < 0) {
if (errno == EAGAIN || errno == EINTR)
continue;
- return -EIO;
+ return AVERROR_IO;
}
break;
}
if (len < 0) {
if (errno == EAGAIN || errno == EINTR)
continue;
- return -EIO;
+ return AVERROR_IO;
}
break;
}
return len;
}
-static int rtp_write(URLContext *h, UINT8 *buf, int size)
+static int rtp_write(URLContext *h, uint8_t *buf, int size)
{
RTPContext *s = h->priv_data;
int ret;
URLContext *hd;
-
+
if (buf[1] >= 200 && buf[1] <= 204) {
/* RTCP payload type */
hd = s->rtcp_hd;