72     char host[1024], path[1024], url[1024], announce_addr[50] = 
"";
 
   74     int port = 9875, base_port = 5004, i, pos = 0, same_port = 0, ttl = 255;
 
   78     socklen_t addrlen = 
sizeof(localaddr);
 
   92     option_list = strrchr(path, 
'?');
 
   96             port = strtol(buf, 
NULL, 10);
 
   99             same_port = strtol(buf, 
NULL, 10);
 
  102             ttl = strtol(buf, 
NULL, 10);
 
  105             av_strlcpy(announce_addr, buf, 
sizeof(announce_addr));
 
  109     if (!announce_addr[0]) {
 
  117         if (ai->ai_family == AF_INET) {
 
  119             av_strlcpy(announce_addr, 
"224.2.127.254", 
sizeof(announce_addr));
 
  120 #if HAVE_STRUCT_SOCKADDR_IN6 
  121         } 
else if (ai->ai_family == AF_INET6) {
 
  125             av_strlcpy(announce_addr, 
"ff0e::2:7ffe", 
sizeof(announce_addr));
 
  130                                     "address family\n", host);
 
  164         av_strlcpy(contexts[i]->filename, url, 
sizeof(contexts[i]->filename));
 
  171                 "?ttl=%d&connect=1", ttl);
 
  181     if (getsockname(udp_fd, (
struct sockaddr*) &localaddr, &addrlen)) {
 
  186 #
if HAVE_STRUCT_SOCKADDR_IN6
 
  200     sap->
ann[pos] = (1 << 5);
 
  201 #if HAVE_STRUCT_SOCKADDR_IN6 
  203         sap->
ann[pos] |= 0x10;
 
  210         memcpy(&sap->
ann[pos], &((
struct sockaddr_in*)&localaddr)->sin_addr,
 
  211                sizeof(
struct in_addr));
 
  212         pos += 
sizeof(
struct in_addr);
 
  213 #if HAVE_STRUCT_SOCKADDR_IN6 
  215         memcpy(&sap->
ann[pos], &((
struct sockaddr_in6*)&localaddr)->sin6_addr,
 
  216                sizeof(
struct in6_addr));
 
  217         pos += 
sizeof(
struct in6_addr);
 
  222     pos += strlen(&sap->
ann[pos]) + 1;
 
  231     pos += strlen(&sap->
ann[pos]);
 
  257         if (ret < 0 && ret != 
AVERROR(ECONNREFUSED))
 
  268     .priv_data_size    = 
sizeof(
struct SAPState),
 
void av_url_split(char *proto, int proto_size, char *authorization, int authorization_size, char *hostname, int hostname_size, int *port_ptr, char *path, int path_size, const char *url)
Split a URL string into components. 
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
int64_t start_time_realtime
Start time of the stream in real world time, in microseconds since the Unix epoch (00:00 1st January ...
AVIOInterruptCB interrupt_callback
Custom interrupt callbacks for the I/O layer. 
int ffurl_write(URLContext *h, const unsigned char *buf, int size)
Write size bytes from buf to the resource accessed by h. 
#define AVIO_FLAG_WRITE
write-only 
void ff_network_close(void)
AVOutputFormat ff_sap_muxer
static int sap_write_packet(AVFormatContext *s, AVPacket *pkt)
int ff_network_init(void)
miscellaneous OS support macros and functions. 
AVStream ** streams
A list of all streams in the file. 
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key. 
char * protocol_whitelist
',' separated list of allowed protocols. 
#define AV_LOG_VERBOSE
Detailed information. 
int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size)
Generate an SDP for an RTP session. 
int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info)
Attempt to find a specific tag in a URL. 
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
AVDictionary * metadata
Metadata that applies to the whole file. 
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
size_t av_strlcpy(char *dst, const char *src, size_t size)
Copy the string src to dst, but no more than size - 1 bytes, and null-terminate dst. 
unsigned int nb_streams
Number of elements in AVFormatContext.streams. 
char filename[1024]
input or output filename 
static int sap_write_close(AVFormatContext *s)
int ffurl_get_file_handle(URLContext *h)
Return the file descriptor associated with this URL. 
int64_t av_gettime(void)
Get the current time in microseconds. 
int ff_url_join(char *str, int size, const char *proto, const char *authorization, const char *hostname, int port, const char *fmt,...)
int ffurl_open_whitelist(URLContext **puc, const char *filename, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options, const char *whitelist)
Create an URLContext for accessing to the resource indicated by url, and open it. ...
static int sap_write_header(AVFormatContext *s)
AVIOContext * pb
I/O context. 
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry. 
void avformat_free_context(AVFormatContext *s)
Free an AVFormatContext and all its streams. 
int64_t av_gettime_relative(void)
Get the current time in microseconds since some unspecified starting point. 
int ffurl_close(URLContext *h)
int ff_rtp_chain_mux_open(AVFormatContext **out, AVFormatContext *s, AVStream *st, URLContext *handle, int packet_size, int idx)
void * priv_data
Format private data. 
static void * av_mallocz_array(size_t nmemb, size_t size)
int av_write_trailer(AVFormatContext *s)
Write the stream trailer to an output media file and free the file private data. 
int max_packet_size
if non zero, the stream is packetized with this max packet size 
unbuffered private I/O API 
uint32_t av_get_random_seed(void)
Get a seed to use in conjunction with random functions. 
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
This structure stores compressed data. 
int avio_closep(AVIOContext **s)
Close the resource accessed by the AVIOContext *s, free it and set the pointer pointing to it to NULL...
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
#define AV_NOPTS_VALUE
Undefined timestamp value.