1 /*
2 * Format register and lookup
3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
26
27 /**
28 * @file
29 * Format register and lookup
30 */
31 /** head of registered input format linked list */
33 /** head of registered output format linked list */
35
38
40 {
41 if (f)
43 else
45 }
46
48 {
49 if (f)
51 else
53 }
54
56 {
58
62 last_iformat = &format->
next;
63 }
64
66 {
68
72 last_oformat = &format->
next;
73 }
74
76 {
77 const char *ext, *p;
78 char ext1[32], *q;
79
80 if (!filename)
81 return 0;
82
83 ext = strrchr(filename, '.');
84 if (ext) {
85 ext++;
86 p = extensions;
87 for (;;) {
88 q = ext1;
89 while (*p != '0円' && *p != ',' && q - ext1 < sizeof(ext1) - 1)
90 *q++ = *p++;
91 *q = '0円';
93 return 1;
94 if (*p == '0円')
95 break;
96 p++;
97 }
98 }
99 return 0;
100 }
101
103 {
104 const char *p;
106
107 if (!name || !names)
108 return 0;
109
110 namelen = strlen(name);
111 while ((p = strchr(names, ','))) {
112 len =
FFMAX(p - names, namelen);
114 return 1;
115 names = p + 1;
116 }
118 }
119
121 const char *mime_type)
122 {
124 int score_max, score;
125
126 /* specific test for image sequences */
127 #if CONFIG_IMAGE2_MUXER
128 if (!short_name && filename &&
132 }
133 #endif
134 /* Find the proper file type. */
135 fmt_found = NULL;
136 score_max = 0;
138 score = 0;
140 score += 100;
142 score += 10;
145 score += 5;
146 }
147 if (score > score_max) {
148 score_max = score;
150 }
151 }
152 return fmt_found;
153 }
154
156 const char *filename, const char *mime_type,
158 {
159 if (!strcmp(fmt->
name,
"segment") || !strcmp(fmt->
name,
"ssegment")) {
161 }
162
165
166 #if CONFIG_IMAGE2_MUXER
167 if (!strcmp(fmt->
name,
"image2") || !strcmp(fmt->
name,
"image2pipe")) {
169 }
170 #endif
178 else
180 }
181
183 {
188 return NULL;
189 }