libavformat/udp.c File Reference

UDP protocol. More...

#include "avformat.h"
#include "avio_internal.h"
#include "libavutil/parseutils.h"
#include "libavutil/fifo.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/avstring.h"
#include "libavutil/opt.h"
#include "libavutil/log.h"
#include "internal.h"
#include "network.h"
#include "os_support.h"
#include "url.h"

Go to the source code of this file.

Data Structures

struct  UDPContext

Defines

#define _BSD_SOURCE
#define HAVE_PTHREAD_CANCEL   0
#define IPV6_ADD_MEMBERSHIP   IPV6_JOIN_GROUP
#define IPV6_DROP_MEMBERSHIP   IPV6_LEAVE_GROUP
#define UDP_TX_BUF_SIZE   32768
#define UDP_MAX_PKT_SIZE   65536
#define OFFSET(x)   offsetof(UDPContext, x)
#define D   AV_OPT_FLAG_DECODING_PARAM
#define E   AV_OPT_FLAG_ENCODING_PARAM

Functions

static void log_net_error (void *ctx, int level, const char *prefix)
static int udp_set_multicast_ttl (int sockfd, int mcastTTL, struct sockaddr *addr)
static int udp_join_multicast_group (int sockfd, struct sockaddr *addr)
static int udp_leave_multicast_group (int sockfd, struct sockaddr *addr)
static struct addrinfoudp_resolve_host (const char *hostname, int port, int type, int family, int flags)
static int udp_set_multicast_sources (int sockfd, struct sockaddr *addr, int addr_len, char **sources, int nb_sources, int include)
static int udp_set_url (struct sockaddr_storage *addr, const char *hostname, int port)
static int udp_socket_create (UDPContext *s, struct sockaddr_storage *addr, int *addr_len, const char *localaddr)
static int udp_port (struct sockaddr_storage *addr, int addr_len)
int ff_udp_set_remote_url (URLContext *h, const char *uri)
 If no filename is given to av_open_input_file because you want to get the local port first, then you must call this function to set the remote server address.
int ff_udp_get_local_port (URLContext *h)
 Return the local port used by the UDP connection.
static int udp_get_file_handle (URLContext *h)
 Return the udp file handle for select() usage to wait for several RTP streams at the same time.
static int udp_open (URLContext *h, const char *uri, int flags)
static int udp_read (URLContext *h, uint8_t *buf, int size)
static int udp_write (URLContext *h, const uint8_t *buf, int size)
static int udp_close (URLContext *h)

Variables

static const AVOption options []
static const AVClass udp_context_class
URLProtocol ff_udp_protocol


Detailed Description

UDP protocol.

Definition in file udp.c.


Define Documentation

#define _BSD_SOURCE

Definition at line 27 of file udp.c.

#define D   AV_OPT_FLAG_DECODING_PARAM

Definition at line 89 of file udp.c.

#define E   AV_OPT_FLAG_ENCODING_PARAM

Definition at line 90 of file udp.c.

#define HAVE_PTHREAD_CANCEL   0

Definition at line 47 of file udp.c.

Referenced by udp_open().

#define IPV6_ADD_MEMBERSHIP   IPV6_JOIN_GROUP

Definition at line 51 of file udp.c.

Referenced by udp_join_multicast_group().

#define IPV6_DROP_MEMBERSHIP   IPV6_LEAVE_GROUP

Definition at line 52 of file udp.c.

Referenced by udp_leave_multicast_group().

#define OFFSET (  )     offsetof(UDPContext, x)

Definition at line 88 of file udp.c.

#define UDP_MAX_PKT_SIZE   65536

Definition at line 56 of file udp.c.

Referenced by udp_open().

#define UDP_TX_BUF_SIZE   32768

Definition at line 55 of file udp.c.

Referenced by udp_open().


Function Documentation

int ff_udp_get_local_port ( URLContext h  ) 

Return the local port used by the UDP connection.

Parameters:
h media file context
Returns:
the local port number

Definition at line 420 of file udp.c.

Referenced by ff_rtp_get_local_rtcp_port(), ff_rtp_get_local_rtp_port(), and rtp_open().

int ff_udp_set_remote_url ( URLContext h,
const char *  uri 
)

If no filename is given to av_open_input_file because you want to get the local port first, then you must call this function to set the remote server address.

url syntax: udp://host:port[?option=val...] option: 'ttl=n' : set the ttl value (for multicast only) 'localport=n' : set the local port 'pkt_size=n' : set max packet size 'reuse=1' : enable reusing the socket 'overrun_nonfatal=1': survive in case of circular buffer overrun

Parameters:
h media file context
uri of the remote server
Returns:
zero if no error.

Definition at line 381 of file udp.c.

Referenced by ff_rtp_set_remote_url(), and udp_open().

static void log_net_error ( void *  ctx,
int  level,
const char *  prefix 
) [static]

static int udp_close ( URLContext h  )  [static]

Definition at line 808 of file udp.c.

static int udp_get_file_handle ( URLContext h  )  [static]

Return the udp file handle for select() usage to wait for several RTP streams at the same time.

Parameters:
h media file context

Definition at line 431 of file udp.c.

static int udp_join_multicast_group ( int  sockfd,
struct sockaddr *  addr 
) [static]

Definition at line 142 of file udp.c.

Referenced by udp_open().

static int udp_leave_multicast_group ( int  sockfd,
struct sockaddr *  addr 
) [static]

Definition at line 171 of file udp.c.

Referenced by udp_close().

static int udp_open ( URLContext h,
const char *  uri,
int  flags 
) [static]

Definition at line 494 of file udp.c.

static int udp_port ( struct sockaddr_storage addr,
int  addr_len 
) [static]

Definition at line 351 of file udp.c.

Referenced by udp_open().

static int udp_read ( URLContext h,
uint8_t buf,
int  size 
) [static]

Definition at line 730 of file udp.c.

static struct addrinfo* udp_resolve_host ( const char *  hostname,
int  port,
int  type,
int  family,
int  flags 
) [static, read]

Definition at line 200 of file udp.c.

Referenced by udp_set_multicast_sources(), udp_set_url(), and udp_socket_create().

static int udp_set_multicast_sources ( int  sockfd,
struct sockaddr *  addr,
int  addr_len,
char **  sources,
int  nb_sources,
int  include 
) [static]

Definition at line 226 of file udp.c.

Referenced by udp_open().

static int udp_set_multicast_ttl ( int  sockfd,
int  mcastTTL,
struct sockaddr *  addr 
) [static]

Definition at line 120 of file udp.c.

Referenced by udp_open().

static int udp_set_url ( struct sockaddr_storage addr,
const char *  hostname,
int  port 
) [static]

Definition at line 299 of file udp.c.

Referenced by ff_udp_set_remote_url().

static int udp_socket_create ( UDPContext s,
struct sockaddr_storage addr,
int addr_len,
const char *  localaddr 
) [static]

Definition at line 314 of file udp.c.

Referenced by udp_open().

static int udp_write ( URLContext h,
const uint8_t buf,
int  size 
) [static]

Definition at line 787 of file udp.c.


Variable Documentation

Initial value:

 {
    .name                = "udp",
    .url_open            = udp_open,
    .url_read            = udp_read,
    .url_write           = udp_write,
    .url_close           = udp_close,
    .url_get_file_handle = udp_get_file_handle,
    .priv_data_size      = sizeof(UDPContext),
    .priv_data_class     = &udp_context_class,
    .flags               = URL_PROTOCOL_FLAG_NETWORK,
}

Definition at line 830 of file udp.c.

const AVOption options[] [static]

Initial value:

 {
{"buffer_size", "Socket buffer size in bytes", OFFSET(buffer_size), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, D|E },
{"localport", "Set local port to bind to", OFFSET(local_port), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, D|E },
{"localaddr", "Choose local IP address", OFFSET(local_addr), AV_OPT_TYPE_STRING, {.str = ""}, 0, 0, D|E },
{"pkt_size", "Set size of UDP packets", OFFSET(packet_size), AV_OPT_TYPE_INT, {.i64 = 1472}, 0, INT_MAX, D|E },
{"reuse", "Explicitly allow or disallow reusing UDP sockets", OFFSET(reuse_socket), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, D|E },
{"ttl", "Set the time to live value (for multicast only)", OFFSET(ttl), AV_OPT_TYPE_INT, {.i64 = 16}, 0, INT_MAX, E },
{"connect", "Should connect() be called on socket", OFFSET(is_connected), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, D|E },

{"fifo_size", "Set the UDP receiving circular buffer size, expressed as a number of packets with size of 188 bytes", OFFSET(circular_buffer_size), AV_OPT_TYPE_INT, {.i64 = 7*4096}, 0, INT_MAX, D },
{"overrun_nonfatal", "Survive in case of UDP receiving circular buffer overrun", OFFSET(overrun_nonfatal), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, D },
{"timeout", "In read mode: if no data arrived in more than this time interval, raise error", OFFSET(timeout), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, D },
{NULL}
}

Definition at line 91 of file udp.c.

const AVClass udp_context_class [static]

Initial value:

 {
    .class_name     = "udp",
    .item_name      = av_default_item_name,
    .option         = options,
    .version        = LIBAVUTIL_VERSION_INT,
}

Definition at line 106 of file udp.c.


Generated on Fri Oct 26 02:50:11 2012 for FFmpeg by  doxygen 1.5.8