30 #define AV_CAT_SEPARATOR "|" 
   50     for (i = 0; i != data->
length; i++)
 
   55     return err < 0 ? -1 : 0;
 
   60     char *node_uri = 
NULL;
 
   73     for (i = 0, len = 1; uri[i]; i++) {
 
   76             if (++len == UINT_MAX / 
sizeof(*nodes)) {
 
   91     for (i = 0; *uri; i++) {
 
  131     int result, total = 0;
 
  139             return total ? total : result;
 
  141             if (i + 1 == data->
length ||
 
  162         for (i = data->
length - 1; i && pos < -nodes[i].
size; i--)
 
  163             pos += nodes[i].
size;
 
  167         for (i = 0; i != data->
current; i++)
 
  168             pos += nodes[i].
size;
 
  173         for (i = 0; i != data->
length - 1 && pos >= nodes[i].
size; i++)
 
  174             pos -= nodes[i].
size;
 
  184             result += nodes[--i].
size;
 
  196     .default_whitelist = 
"concat,file,subfile",
 
ptrdiff_t const GLvoid * data
 
static av_cold int concat_close(URLContext *h)
 
memory handling functions 
 
AVIOInterruptCB interrupt_callback
 
size_t length
number of cat'ed nodes 
 
struct concat_nodes * nodes
list of nodes to concat 
 
static int concat_read(URLContext *h, unsigned char *buf, int size)
 
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
 
const char * protocol_whitelist
 
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. 
 
static int64_t concat_seek(URLContext *h, int64_t pos, int whence)
 
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. ...
 
int64_t ffurl_size(URLContext *h)
Return the filesize of the resource accessed by h, AVERROR(ENOSYS) if the operation is not supported ...
 
static av_cold int concat_open(URLContext *h, const char *uri, int flags)
 
int ffurl_close(URLContext *h)
 
int av_strstart(const char *str, const char *pfx, const char **ptr)
Return non-zero if pfx is a prefix of str. 
 
int64_t ffurl_seek(URLContext *h, int64_t pos, int whence)
Change the position that will be used by the next read/write operation on the resource accessed by h...
 
void * av_realloc(void *ptr, size_t size)
Allocate or reallocate a block of memory. 
 
int av_reallocp(void *ptr, size_t size)
Allocate or reallocate a block of memory. 
 
size_t current
index of currently read node 
 
unbuffered private I/O API 
 
URLProtocol ff_concat_protocol
 
int ffurl_read(URLContext *h, unsigned char *buf, int size)
Read up to size bytes from the resource accessed by h, and store the read bytes in buf...
 
URLContext * uc
node's URLContext