| @@ -24,7 +24,6 @@ · 23 unmodified lines |
| 24 | #define closesocket close | 24 | #define closesocket close |
| 25 | #endif | 25 | #endif |
| 26 | #include <string.h> | 26 | #include <string.h> |
| 27 | #include <strings.h> | | |
| 28 | #include <stdlib.h> | 27 | #include <stdlib.h> |
| 29 | #include "libavformat/avformat.h" | 28 | #include "libavformat/avformat.h" |
| 30 | #include "libavformat/ffm.h" | 29 | #include "libavformat/ffm.h" |
| @@ -1085,13 +1084,13 @@ static int extract_rates(char *rates, int ratelen, const char *request) · 1054 unmodified lines |
| 1085 | const char *p; | 1084 | const char *p; |
| 1086 | | 1085 | |
| 1087 | for (p = request; *p && *p != '\r' && *p != '\n'; ) { | 1086 | for (p = request; *p && *p != '\r' && *p != '\n'; ) { |
| 1088 | if (strncasecmp(p, "Pragma:", 7) == 0) { | 1087 | if (av_strncasecmp(p, "Pragma:", 7) == 0) { |
| 1089 | const char *q = p + 7; | 1088 | const char *q = p + 7; |
| 1090 | | 1089 | |
| 1091 | while (*q && *q != '\n' && isspace(*q)) | 1090 | while (*q && *q != '\n' && isspace(*q)) |
| 1092 | q++; | 1091 | q++; |
| 1093 | | 1092 | |
| 1094 | if (strncasecmp(q, "stream-switch-entry=", 20) == 0) { | 1093 | if (av_strncasecmp(q, "stream-switch-entry=", 20) == 0) { |
| 1095 | int stream_no; | 1094 | int stream_no; |
| 1096 | int rate_no; | 1095 | int rate_no; |
| 1097 | | 1096 | |
| @@ -1271,9 +1270,9 @@ static void parse_acl_row(FFStream *stream, FFStream* feed, IPAddressACL *ext_ac · 173 unmodified lines |
| 1271 | int errors = 0; | 1270 | int errors = 0; |
| 1272 | | 1271 | |
| 1273 | get_arg(arg, sizeof(arg), &p); | 1272 | get_arg(arg, sizeof(arg), &p); |
| 1274 | if (strcasecmp(arg, "allow") == 0) | 1273 | if (av_strcasecmp(arg, "allow") == 0) |
| 1275 | acl.action = IP_ALLOW; | 1274 | acl.action = IP_ALLOW; |
| 1276 | else if (strcasecmp(arg, "deny") == 0) | 1275 | else if (av_strcasecmp(arg, "deny") == 0) |
| 1277 | acl.action = IP_DENY; | 1276 | acl.action = IP_DENY; |
| 1278 | else { | 1277 | else { |
| 1279 | fprintf(stderr, "%s:%d: ACL action '%s' is not ALLOW or DENY\n", | 1278 | fprintf(stderr, "%s:%d: ACL action '%s' is not ALLOW or DENY\n", |
| @@ -1358,7 +1357,7 @@ static IPAddressACL* parse_dynamic_acl(FFStream *stream, HTTPContext *c) · 78 unmodified lines |
| 1358 | continue; | 1357 | continue; |
| 1359 | get_arg(cmd, sizeof(cmd), &p); | 1358 | get_arg(cmd, sizeof(cmd), &p); |
| 1360 | | 1359 | |
| 1361 | if (!strcasecmp(cmd, "ACL")) | 1360 | if (!av_strcasecmp(cmd, "ACL")) |
| 1362 | parse_acl_row(NULL, NULL, acl, p, stream->dynamic_acl, line_num); | 1361 | parse_acl_row(NULL, NULL, acl, p, stream->dynamic_acl, line_num); |
| 1363 | } | 1362 | } |
| 1364 | fclose(f); | 1363 | fclose(f); |
| @@ -1500,7 +1499,7 @@ static int http_parse_request(HTTPContext *c) · 135 unmodified lines |
| 1500 | av_strlcpy(filename, url + ((*url == '/') ? 1 : 0), sizeof(filename)-1); | 1499 | av_strlcpy(filename, url + ((*url == '/') ? 1 : 0), sizeof(filename)-1); |
| 1501 | | 1500 | |
| 1502 | for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { | 1501 | for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { |
| 1503 | if (strncasecmp(p, "User-Agent:", 11) == 0) { | 1502 | if (av_strncasecmp(p, "User-Agent:", 11) == 0) { |
| 1504 | useragent = p + 11; | 1503 | useragent = p + 11; |
| 1505 | if (*useragent && *useragent != '\n' && isspace(*useragent)) | 1504 | if (*useragent && *useragent != '\n' && isspace(*useragent)) |
| 1506 | useragent++; | 1505 | useragent++; |
| @@ -1518,7 +1517,7 @@ static int http_parse_request(HTTPContext *c) · 11 unmodified lines |
| 1518 | redir_type = REDIR_ASX; | 1517 | redir_type = REDIR_ASX; |
| 1519 | filename[strlen(filename)-1] = 'f'; | 1518 | filename[strlen(filename)-1] = 'f'; |
| 1520 | } else if (av_match_ext(filename, "asf") && | 1519 | } else if (av_match_ext(filename, "asf") && |
| 1521 | (!useragent || strncasecmp(useragent, "NSPlayer", 8) != 0)) { | 1520 | (!useragent || av_strncasecmp(useragent, "NSPlayer", 8) != 0)) { |
| 1522 | /* if this isn't WMP or lookalike, return the redirector file */ | 1521 | /* if this isn't WMP or lookalike, return the redirector file */ |
| 1523 | redir_type = REDIR_ASF; | 1522 | redir_type = REDIR_ASF; |
| 1524 | } else if (av_match_ext(filename, "rpm,ram")) { | 1523 | } else if (av_match_ext(filename, "rpm,ram")) { |
| @@ -1613,7 +1612,7 @@ static int http_parse_request(HTTPContext *c) · 88 unmodified lines |
| 1613 | char *hostinfo = 0; | 1612 | char *hostinfo = 0; |
| 1614 | | 1613 | |
| 1615 | for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { | 1614 | for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { |
| 1616 | if (strncasecmp(p, "Host:", 5) == 0) { | 1615 | if (av_strncasecmp(p, "Host:", 5) == 0) { |
| 1617 | hostinfo = p + 5; | 1616 | hostinfo = p + 5; |
| 1618 | break; | 1617 | break; |
| 1619 | } | 1618 | } |
| @@ -1742,11 +1741,11 @@ static int http_parse_request(HTTPContext *c) · 122 unmodified lines |
| 1742 | int client_id = 0; | 1741 | int client_id = 0; |
| 1743 | | 1742 | |
| 1744 | for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { | 1743 | for (p = c->buffer; *p && *p != '\r' && *p != '\n'; ) { |
| 1745 | if (strncasecmp(p, "Pragma: log-line=", 17) == 0) { | 1744 | if (av_strncasecmp(p, "Pragma: log-line=", 17) == 0) { |
| 1746 | logline = p; | 1745 | logline = p; |
| 1747 | break; | 1746 | break; |
| 1748 | } | 1747 | } |
| 1749 | if (strncasecmp(p, "Pragma: client-id=", 18) == 0) | 1748 | if (av_strncasecmp(p, "Pragma: client-id=", 18) == 0) |
| 1750 | client_id = strtol(p + 18, 0, 10); | 1749 | client_id = strtol(p + 18, 0, 10); |
| 1751 | p = strchr(p, '\n'); | 1750 | p = strchr(p, '\n'); |
| 1752 | if (!p) | 1751 | if (!p) |
| @@ -4059,40 +4058,40 @@ static int parse_ffconfig(const char *filename) · 2306 unmodified lines |
| 4059 | | 4058 | |
| 4060 | get_arg(cmd, sizeof(cmd), &p); | 4059 | get_arg(cmd, sizeof(cmd), &p); |
| 4061 | | 4060 | |
| 4062 | if (!strcasecmp(cmd, "Port")) { | 4061 | if (!av_strcasecmp(cmd, "Port")) { |
| 4063 | get_arg(arg, sizeof(arg), &p); | 4062 | get_arg(arg, sizeof(arg), &p); |
| 4064 | val = atoi(arg); | 4063 | val = atoi(arg); |
| 4065 | if (val < 1 || val > 65536) { | 4064 | if (val < 1 || val > 65536) { |
| 4066 | ERROR("Invalid_port: %s\n", arg); | 4065 | ERROR("Invalid_port: %s\n", arg); |
| 4067 | } | 4066 | } |
| 4068 | my_http_addr.sin_port = htons(val); | 4067 | my_http_addr.sin_port = htons(val); |
| 4069 | } else if (!strcasecmp(cmd, "BindAddress")) { | 4068 | } else if (!av_strcasecmp(cmd, "BindAddress")) { |
| 4070 | get_arg(arg, sizeof(arg), &p); | 4069 | get_arg(arg, sizeof(arg), &p); |
| 4071 | if (resolve_host(&my_http_addr.sin_addr, arg) != 0) { | 4070 | if (resolve_host(&my_http_addr.sin_addr, arg) != 0) { |
| 4072 | ERROR("%s:%d: Invalid host/IP address: %s\n", arg); | 4071 | ERROR("%s:%d: Invalid host/IP address: %s\n", arg); |
| 4073 | } | 4072 | } |
| 4074 | } else if (!strcasecmp(cmd, "NoDaemon")) { | 4073 | } else if (!av_strcasecmp(cmd, "NoDaemon")) { |
| 4075 | avserver_daemon = 0; | 4074 | avserver_daemon = 0; |
| 4076 | } else if (!strcasecmp(cmd, "RTSPPort")) { | 4075 | } else if (!av_strcasecmp(cmd, "RTSPPort")) { |
| 4077 | get_arg(arg, sizeof(arg), &p); | 4076 | get_arg(arg, sizeof(arg), &p); |
| 4078 | val = atoi(arg); | 4077 | val = atoi(arg); |
| 4079 | if (val < 1 || val > 65536) { | 4078 | if (val < 1 || val > 65536) { |
| 4080 | ERROR("%s:%d: Invalid port: %s\n", arg); | 4079 | ERROR("%s:%d: Invalid port: %s\n", arg); |
| 4081 | } | 4080 | } |
| 4082 | my_rtsp_addr.sin_port = htons(atoi(arg)); | 4081 | my_rtsp_addr.sin_port = htons(atoi(arg)); |
| 4083 | } else if (!strcasecmp(cmd, "RTSPBindAddress")) { | 4082 | } else if (!av_strcasecmp(cmd, "RTSPBindAddress")) { |
| 4084 | get_arg(arg, sizeof(arg), &p); | 4083 | get_arg(arg, sizeof(arg), &p); |
| 4085 | if (resolve_host(&my_rtsp_addr.sin_addr, arg) != 0) { | 4084 | if (resolve_host(&my_rtsp_addr.sin_addr, arg) != 0) { |
| 4086 | ERROR("Invalid host/IP address: %s\n", arg); | 4085 | ERROR("Invalid host/IP address: %s\n", arg); |
| 4087 | } | 4086 | } |
| 4088 | } else if (!strcasecmp(cmd, "MaxHTTPConnections")) { | 4087 | } else if (!av_strcasecmp(cmd, "MaxHTTPConnections")) { |
| 4089 | get_arg(arg, sizeof(arg), &p); | 4088 | get_arg(arg, sizeof(arg), &p); |
| 4090 | val = atoi(arg); | 4089 | val = atoi(arg); |
| 4091 | if (val < 1 || val > 65536) { | 4090 | if (val < 1 || val > 65536) { |
| 4092 | ERROR("Invalid MaxHTTPConnections: %s\n", arg); | 4091 | ERROR("Invalid MaxHTTPConnections: %s\n", arg); |
| 4093 | } | 4092 | } |
| 4094 | nb_max_http_connections = val; | 4093 | nb_max_http_connections = val; |
| 4095 | } else if (!strcasecmp(cmd, "MaxClients")) { | 4094 | } else if (!av_strcasecmp(cmd, "MaxClients")) { |
| 4096 | get_arg(arg, sizeof(arg), &p); | 4095 | get_arg(arg, sizeof(arg), &p); |
| 4097 | val = atoi(arg); | 4096 | val = atoi(arg); |
| 4098 | if (val < 1 || val > nb_max_http_connections) { | 4097 | if (val < 1 || val > nb_max_http_connections) { |
| @@ -4100,7 +4099,7 @@ static int parse_ffconfig(const char *filename) · 1 unmodified line |
| 4100 | } else { | 4099 | } else { |
| 4101 | nb_max_connections = val; | 4100 | nb_max_connections = val; |
| 4102 | } | 4101 | } |
| 4103 | } else if (!strcasecmp(cmd, "MaxBandwidth")) { | 4102 | } else if (!av_strcasecmp(cmd, "MaxBandwidth")) { |
| 4104 | int64_t llval; | 4103 | int64_t llval; |
| 4105 | get_arg(arg, sizeof(arg), &p); | 4104 | get_arg(arg, sizeof(arg), &p); |
| 4106 | llval = atoll(arg); | 4105 | llval = atoll(arg); |
| @@ -4108,10 +4107,10 @@ static int parse_ffconfig(const char *filename) · 1 unmodified line |
| 4108 | ERROR("Invalid MaxBandwidth: %s\n", arg); | 4107 | ERROR("Invalid MaxBandwidth: %s\n", arg); |
| 4109 | } else | 4108 | } else |
| 4110 | max_bandwidth = llval; | 4109 | max_bandwidth = llval; |
| 4111 | } else if (!strcasecmp(cmd, "CustomLog")) { | 4110 | } else if (!av_strcasecmp(cmd, "CustomLog")) { |
| 4112 | if (!avserver_debug) | 4111 | if (!avserver_debug) |
| 4113 | get_arg(logfilename, sizeof(logfilename), &p); | 4112 | get_arg(logfilename, sizeof(logfilename), &p); |
| 4114 | } else if (!strcasecmp(cmd, "<Feed")) { | 4113 | } else if (!av_strcasecmp(cmd, "<Feed")) { |
| 4115 | /*********************************************/ | 4114 | /*********************************************/ |
| 4116 | /* Feed related options */ | 4115 | /* Feed related options */ |
| 4117 | char *q; | 4116 | char *q; |
| @@ -4145,7 +4144,7 @@ static int parse_ffconfig(const char *filename) · 27 unmodified lines |
| 4145 | *last_feed = feed; | 4144 | *last_feed = feed; |
| 4146 | last_feed = &feed->next_feed; | 4145 | last_feed = &feed->next_feed; |
| 4147 | } | 4146 | } |
| 4148 | } else if (!strcasecmp(cmd, "Launch")) { | 4147 | } else if (!av_strcasecmp(cmd, "Launch")) { |
| 4149 | if (feed) { | 4148 | if (feed) { |
| 4150 | int i; | 4149 | int i; |
| 4151 | | 4150 | |
| @@ -4167,24 +4166,24 @@ static int parse_ffconfig(const char *filename) · 15 unmodified lines |
| 4167 | inet_ntoa(my_http_addr.sin_addr), | 4166 | inet_ntoa(my_http_addr.sin_addr), |
| 4168 | ntohs(my_http_addr.sin_port), feed->filename); | 4167 | ntohs(my_http_addr.sin_port), feed->filename); |
| 4169 | } | 4168 | } |
| 4170 | } else if (!strcasecmp(cmd, "ReadOnlyFile")) { | 4169 | } else if (!av_strcasecmp(cmd, "ReadOnlyFile")) { |
| 4171 | if (feed) { | 4170 | if (feed) { |
| 4172 | get_arg(feed->feed_filename, sizeof(feed->feed_filename), &p); | 4171 | get_arg(feed->feed_filename, sizeof(feed->feed_filename), &p); |
| 4173 | feed->readonly = 1; | 4172 | feed->readonly = 1; |
| 4174 | } else if (stream) { | 4173 | } else if (stream) { |
| 4175 | get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p); | 4174 | get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p); |
| 4176 | } | 4175 | } |
| 4177 | } else if (!strcasecmp(cmd, "File")) { | 4176 | } else if (!av_strcasecmp(cmd, "File")) { |
| 4178 | if (feed) { | 4177 | if (feed) { |
| 4179 | get_arg(feed->feed_filename, sizeof(feed->feed_filename), &p); | 4178 | get_arg(feed->feed_filename, sizeof(feed->feed_filename), &p); |
| 4180 | } else if (stream) | 4179 | } else if (stream) |
| 4181 | get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p); | 4180 | get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p); |
| 4182 | } else if (!strcasecmp(cmd, "Truncate")) { | 4181 | } else if (!av_strcasecmp(cmd, "Truncate")) { |
| 4183 | if (feed) { | 4182 | if (feed) { |
| 4184 | get_arg(arg, sizeof(arg), &p); | 4183 | get_arg(arg, sizeof(arg), &p); |
| 4185 | feed->truncate = strtod(arg, NULL); | 4184 | feed->truncate = strtod(arg, NULL); |
| 4186 | } | 4185 | } |
| 4187 | } else if (!strcasecmp(cmd, "FileMaxSize")) { | 4186 | } else if (!av_strcasecmp(cmd, "FileMaxSize")) { |
| 4188 | if (feed) { | 4187 | if (feed) { |
| 4189 | char *p1; | 4188 | char *p1; |
| 4190 | double fsize; | 4189 | double fsize; |
| @@ -4208,12 +4207,12 @@ static int parse_ffconfig(const char *filename) · 17 unmodified lines |
| 4208 | ERROR("Feed max file size is too small, must be at least %d\n", FFM_PACKET_SIZE*4); | 4207 | ERROR("Feed max file size is too small, must be at least %d\n", FFM_PACKET_SIZE*4); |
| 4209 | } | 4208 | } |
| 4210 | } | 4209 | } |
| 4211 | } else if (!strcasecmp(cmd, "</Feed>")) { | 4210 | } else if (!av_strcasecmp(cmd, "</Feed>")) { |
| 4212 | if (!feed) { | 4211 | if (!feed) { |
| 4213 | ERROR("No corresponding <Feed> for </Feed>\n"); | 4212 | ERROR("No corresponding <Feed> for </Feed>\n"); |
| 4214 | } | 4213 | } |
| 4215 | feed = NULL; | 4214 | feed = NULL; |
| 4216 | } else if (!strcasecmp(cmd, "<Stream")) { | 4215 | } else if (!av_strcasecmp(cmd, "<Stream")) { |
| 4217 | /*********************************************/ | 4216 | /*********************************************/ |
| 4218 | /* Stream related options */ | 4217 | /* Stream related options */ |
| 4219 | char *q; | 4218 | char *q; |
| @@ -4246,7 +4245,7 @@ static int parse_ffconfig(const char *filename) · 26 unmodified lines |
| 4246 | *last_stream = stream; | 4245 | *last_stream = stream; |
| 4247 | last_stream = &stream->next; | 4246 | last_stream = &stream->next; |
| 4248 | } | 4247 | } |
| 4249 | } else if (!strcasecmp(cmd, "Feed")) { | 4248 | } else if (!av_strcasecmp(cmd, "Feed")) { |
| 4250 | get_arg(arg, sizeof(arg), &p); | 4249 | get_arg(arg, sizeof(arg), &p); |
| 4251 | if (stream) { | 4250 | if (stream) { |
| 4252 | FFStream *sfeed; | 4251 | FFStream *sfeed; |
| @@ -4262,7 +4261,7 @@ static int parse_ffconfig(const char *filename) · 9 unmodified lines |
| 4262 | else | 4261 | else |
| 4263 | stream->feed = sfeed; | 4262 | stream->feed = sfeed; |
| 4264 | } | 4263 | } |
| 4265 | } else if (!strcasecmp(cmd, "Format")) { | 4264 | } else if (!av_strcasecmp(cmd, "Format")) { |
| 4266 | get_arg(arg, sizeof(arg), &p); | 4265 | get_arg(arg, sizeof(arg), &p); |
| 4267 | if (stream) { | 4266 | if (stream) { |
| 4268 | if (!strcmp(arg, "status")) { | 4267 | if (!strcmp(arg, "status")) { |
| @@ -4283,7 +4282,7 @@ static int parse_ffconfig(const char *filename) · 14 unmodified lines |
| 4283 | video_id = stream->fmt->video_codec; | 4282 | video_id = stream->fmt->video_codec; |
| 4284 | } | 4283 | } |
| 4285 | } | 4284 | } |
| 4286 | } else if (!strcasecmp(cmd, "InputFormat")) { | 4285 | } else if (!av_strcasecmp(cmd, "InputFormat")) { |
| 4287 | get_arg(arg, sizeof(arg), &p); | 4286 | get_arg(arg, sizeof(arg), &p); |
| 4288 | if (stream) { | 4287 | if (stream) { |
| 4289 | stream->ifmt = av_find_input_format(arg); | 4288 | stream->ifmt = av_find_input_format(arg); |
| @@ -4291,65 +4290,65 @@ static int parse_ffconfig(const char *filename) · 1 unmodified line |
| 4291 | ERROR("Unknown input format: %s\n", arg); | 4290 | ERROR("Unknown input format: %s\n", arg); |
| 4292 | } | 4291 | } |
| 4293 | } | 4292 | } |
| 4294 | } else if (!strcasecmp(cmd, "FaviconURL")) { | 4293 | } else if (!av_strcasecmp(cmd, "FaviconURL")) { |
| 4295 | if (stream && stream->stream_type == STREAM_TYPE_STATUS) { | 4294 | if (stream && stream->stream_type == STREAM_TYPE_STATUS) { |
| 4296 | get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p); | 4295 | get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p); |
| 4297 | } else { | 4296 | } else { |
| 4298 | ERROR("FaviconURL only permitted for status streams\n"); | 4297 | ERROR("FaviconURL only permitted for status streams\n"); |
| 4299 | } | 4298 | } |
| 4300 | } else if (!strcasecmp(cmd, "Author")) { | 4299 | } else if (!av_strcasecmp(cmd, "Author")) { |
| 4301 | if (stream) | 4300 | if (stream) |
| 4302 | get_arg(stream->author, sizeof(stream->author), &p); | 4301 | get_arg(stream->author, sizeof(stream->author), &p); |
| 4303 | } else if (!strcasecmp(cmd, "Comment")) { | 4302 | } else if (!av_strcasecmp(cmd, "Comment")) { |
| 4304 | if (stream) | 4303 | if (stream) |
| 4305 | get_arg(stream->comment, sizeof(stream->comment), &p); | 4304 | get_arg(stream->comment, sizeof(stream->comment), &p); |
| 4306 | } else if (!strcasecmp(cmd, "Copyright")) { | 4305 | } else if (!av_strcasecmp(cmd, "Copyright")) { |
| 4307 | if (stream) | 4306 | if (stream) |
| 4308 | get_arg(stream->copyright, sizeof(stream->copyright), &p); | 4307 | get_arg(stream->copyright, sizeof(stream->copyright), &p); |
| 4309 | } else if (!strcasecmp(cmd, "Title")) { | 4308 | } else if (!av_strcasecmp(cmd, "Title")) { |
| 4310 | if (stream) | 4309 | if (stream) |
| 4311 | get_arg(stream->title, sizeof(stream->title), &p); | 4310 | get_arg(stream->title, sizeof(stream->title), &p); |
| 4312 | } else if (!strcasecmp(cmd, "Preroll")) { | 4311 | } else if (!av_strcasecmp(cmd, "Preroll")) { |
| 4313 | get_arg(arg, sizeof(arg), &p); | 4312 | get_arg(arg, sizeof(arg), &p); |
| 4314 | if (stream) | 4313 | if (stream) |
| 4315 | stream->prebuffer = atof(arg) * 1000; | 4314 | stream->prebuffer = atof(arg) * 1000; |
| 4316 | } else if (!strcasecmp(cmd, "StartSendOnKey")) { | 4315 | } else if (!av_strcasecmp(cmd, "StartSendOnKey")) { |
| 4317 | if (stream) | 4316 | if (stream) |
| 4318 | stream->send_on_key = 1; | 4317 | stream->send_on_key = 1; |
| 4319 | } else if (!strcasecmp(cmd, "AudioCodec")) { | 4318 | } else if (!av_strcasecmp(cmd, "AudioCodec")) { |
| 4320 | get_arg(arg, sizeof(arg), &p); | 4319 | get_arg(arg, sizeof(arg), &p); |
| 4321 | audio_id = opt_audio_codec(arg); | 4320 | audio_id = opt_audio_codec(arg); |
| 4322 | if (audio_id == CODEC_ID_NONE) { | 4321 | if (audio_id == CODEC_ID_NONE) { |
| 4323 | ERROR("Unknown AudioCodec: %s\n", arg); | 4322 | ERROR("Unknown AudioCodec: %s\n", arg); |
| 4324 | } | 4323 | } |
| 4325 | } else if (!strcasecmp(cmd, "VideoCodec")) { | 4324 | } else if (!av_strcasecmp(cmd, "VideoCodec")) { |
| 4326 | get_arg(arg, sizeof(arg), &p); | 4325 | get_arg(arg, sizeof(arg), &p); |
| 4327 | video_id = opt_video_codec(arg); | 4326 | video_id = opt_video_codec(arg); |
| 4328 | if (video_id == CODEC_ID_NONE) { | 4327 | if (video_id == CODEC_ID_NONE) { |
| 4329 | ERROR("Unknown VideoCodec: %s\n", arg); | 4328 | ERROR("Unknown VideoCodec: %s\n", arg); |
| 4330 | } | 4329 | } |
| 4331 | } else if (!strcasecmp(cmd, "MaxTime")) { | 4330 | } else if (!av_strcasecmp(cmd, "MaxTime")) { |
| 4332 | get_arg(arg, sizeof(arg), &p); | 4331 | get_arg(arg, sizeof(arg), &p); |
| 4333 | if (stream) | 4332 | if (stream) |
| 4334 | stream->max_time = atof(arg) * 1000; | 4333 | stream->max_time = atof(arg) * 1000; |
| 4335 | } else if (!strcasecmp(cmd, "AudioBitRate")) { | 4334 | } else if (!av_strcasecmp(cmd, "AudioBitRate")) { |
| 4336 | get_arg(arg, sizeof(arg), &p); | 4335 | get_arg(arg, sizeof(arg), &p); |
| 4337 | if (stream) | 4336 | if (stream) |
| 4338 | audio_enc.bit_rate = lrintf(atof(arg) * 1000); | 4337 | audio_enc.bit_rate = lrintf(atof(arg) * 1000); |
| 4339 | } else if (!strcasecmp(cmd, "AudioChannels")) { | 4338 | } else if (!av_strcasecmp(cmd, "AudioChannels")) { |
| 4340 | get_arg(arg, sizeof(arg), &p); | 4339 | get_arg(arg, sizeof(arg), &p); |
| 4341 | if (stream) | 4340 | if (stream) |
| 4342 | audio_enc.channels = atoi(arg); | 4341 | audio_enc.channels = atoi(arg); |
| 4343 | } else if (!strcasecmp(cmd, "AudioSampleRate")) { | 4342 | } else if (!av_strcasecmp(cmd, "AudioSampleRate")) { |
| 4344 | get_arg(arg, sizeof(arg), &p); | 4343 | get_arg(arg, sizeof(arg), &p); |
| 4345 | if (stream) | 4344 | if (stream) |
| 4346 | audio_enc.sample_rate = atoi(arg); | 4345 | audio_enc.sample_rate = atoi(arg); |
| 4347 | } else if (!strcasecmp(cmd, "AudioQuality")) { | 4346 | } else if (!av_strcasecmp(cmd, "AudioQuality")) { |
| 4348 | get_arg(arg, sizeof(arg), &p); | 4347 | get_arg(arg, sizeof(arg), &p); |
| 4349 | if (stream) { | 4348 | if (stream) { |
| 4350 | // audio_enc.quality = atof(arg) * 1000; | 4349 | // audio_enc.quality = atof(arg) * 1000; |
| 4351 | } | 4350 | } |
| 4352 | } else if (!strcasecmp(cmd, "VideoBitRateRange")) { | 4351 | } else if (!av_strcasecmp(cmd, "VideoBitRateRange")) { |
| 4353 | if (stream) { | 4352 | if (stream) { |
| 4354 | int minrate, maxrate; | 4353 | int minrate, maxrate; |
| 4355 | | 4354 | |
| @@ -4362,32 +4361,32 @@ static int parse_ffconfig(const char *filename) · 6 unmodified lines |
| 4362 | ERROR("Incorrect format for VideoBitRateRange -- should be <min>-<max>: %s\n", arg); | 4361 | ERROR("Incorrect format for VideoBitRateRange -- should be <min>-<max>: %s\n", arg); |
| 4363 | } | 4362 | } |
| 4364 | } | 4363 | } |
| 4365 | } else if (!strcasecmp(cmd, "Debug")) { | 4364 | } else if (!av_strcasecmp(cmd, "Debug")) { |
| 4366 | if (stream) { | 4365 | if (stream) { |
| 4367 | get_arg(arg, sizeof(arg), &p); | 4366 | get_arg(arg, sizeof(arg), &p); |
| 4368 | video_enc.debug = strtol(arg,0,0); | 4367 | video_enc.debug = strtol(arg,0,0); |
| 4369 | } | 4368 | } |
| 4370 | } else if (!strcasecmp(cmd, "Strict")) { | 4369 | } else if (!av_strcasecmp(cmd, "Strict")) { |
| 4371 | if (stream) { | 4370 | if (stream) { |
| 4372 | get_arg(arg, sizeof(arg), &p); | 4371 | get_arg(arg, sizeof(arg), &p); |
| 4373 | video_enc.strict_std_compliance = atoi(arg); | 4372 | video_enc.strict_std_compliance = atoi(arg); |
| 4374 | } | 4373 | } |
| 4375 | } else if (!strcasecmp(cmd, "VideoBufferSize")) { | 4374 | } else if (!av_strcasecmp(cmd, "VideoBufferSize")) { |
| 4376 | if (stream) { | 4375 | if (stream) { |
| 4377 | get_arg(arg, sizeof(arg), &p); | 4376 | get_arg(arg, sizeof(arg), &p); |
| 4378 | video_enc.rc_buffer_size = atoi(arg) * 8*1024; | 4377 | video_enc.rc_buffer_size = atoi(arg) * 8*1024; |
| 4379 | } | 4378 | } |
| 4380 | } else if (!strcasecmp(cmd, "VideoBitRateTolerance")) { | 4379 | } else if (!av_strcasecmp(cmd, "VideoBitRateTolerance")) { |
| 4381 | if (stream) { | 4380 | if (stream) { |
| 4382 | get_arg(arg, sizeof(arg), &p); | 4381 | get_arg(arg, sizeof(arg), &p); |
| 4383 | video_enc.bit_rate_tolerance = atoi(arg) * 1000; | 4382 | video_enc.bit_rate_tolerance = atoi(arg) * 1000; |
| 4384 | } | 4383 | } |
| 4385 | } else if (!strcasecmp(cmd, "VideoBitRate")) { | 4384 | } else if (!av_strcasecmp(cmd, "VideoBitRate")) { |
| 4386 | get_arg(arg, sizeof(arg), &p); | 4385 | get_arg(arg, sizeof(arg), &p); |
| 4387 | if (stream) { | 4386 | if (stream) { |
| 4388 | video_enc.bit_rate = atoi(arg) * 1000; | 4387 | video_enc.bit_rate = atoi(arg) * 1000; |
| 4389 | } | 4388 | } |
| 4390 | } else if (!strcasecmp(cmd, "VideoSize")) { | 4389 | } else if (!av_strcasecmp(cmd, "VideoSize")) { |
| 4391 | get_arg(arg, sizeof(arg), &p); | 4390 | get_arg(arg, sizeof(arg), &p); |
| 4392 | if (stream) { | 4391 | if (stream) { |
| 4393 | av_parse_video_size(&video_enc.width, &video_enc.height, arg); | 4392 | av_parse_video_size(&video_enc.width, &video_enc.height, arg); |
| @@ -4396,7 +4395,7 @@ static int parse_ffconfig(const char *filename) · 2 unmodified lines |
| 4396 | ERROR("Image size must be a multiple of 16\n"); | 4395 | ERROR("Image size must be a multiple of 16\n"); |
| 4397 | } | 4396 | } |
| 4398 | } | 4397 | } |
| 4399 | } else if (!strcasecmp(cmd, "VideoFrameRate")) { | 4398 | } else if (!av_strcasecmp(cmd, "VideoFrameRate")) { |
| 4400 | get_arg(arg, sizeof(arg), &p); | 4399 | get_arg(arg, sizeof(arg), &p); |
| 4401 | if (stream) { | 4400 | if (stream) { |
| 4402 | AVRational frame_rate; | 4401 | AVRational frame_rate; |
| @@ -4407,29 +4406,29 @@ static int parse_ffconfig(const char *filename) · 4 unmodified lines |
| 4407 | video_enc.time_base.den = frame_rate.num; | 4406 | video_enc.time_base.den = frame_rate.num; |
| 4408 | } | 4407 | } |
| 4409 | } | 4408 | } |
| 4410 | } else if (!strcasecmp(cmd, "VideoGopSize")) { | 4409 | } else if (!av_strcasecmp(cmd, "VideoGopSize")) { |
| 4411 | get_arg(arg, sizeof(arg), &p); | 4410 | get_arg(arg, sizeof(arg), &p); |
| 4412 | if (stream) | 4411 | if (stream) |
| 4413 | video_enc.gop_size = atoi(arg); | 4412 | video_enc.gop_size = atoi(arg); |
| 4414 | } else if (!strcasecmp(cmd, "VideoIntraOnly")) { | 4413 | } else if (!av_strcasecmp(cmd, "VideoIntraOnly")) { |
| 4415 | if (stream) | 4414 | if (stream) |
| 4416 | video_enc.gop_size = 1; | 4415 | video_enc.gop_size = 1; |
| 4417 | } else if (!strcasecmp(cmd, "VideoHighQuality")) { | 4416 | } else if (!av_strcasecmp(cmd, "VideoHighQuality")) { |
| 4418 | if (stream) | 4417 | if (stream) |
| 4419 | video_enc.mb_decision = FF_MB_DECISION_BITS; | 4418 | video_enc.mb_decision = FF_MB_DECISION_BITS; |
| 4420 | } else if (!strcasecmp(cmd, "Video4MotionVector")) { | 4419 | } else if (!av_strcasecmp(cmd, "Video4MotionVector")) { |
| 4421 | if (stream) { | 4420 | if (stream) { |
| 4422 | video_enc.mb_decision = FF_MB_DECISION_BITS; //FIXME remove | 4421 | video_enc.mb_decision = FF_MB_DECISION_BITS; //FIXME remove |
| 4423 | video_enc.flags |= CODEC_FLAG_4MV; | 4422 | video_enc.flags |= CODEC_FLAG_4MV; |
| 4424 | } | 4423 | } |
| 4425 | } else if (!strcasecmp(cmd, "AVOptionVideo") || | 4424 | } else if (!av_strcasecmp(cmd, "AVOptionVideo") || |
| 4426 | !strcasecmp(cmd, "AVOptionAudio")) { | 4425 | !av_strcasecmp(cmd, "AVOptionAudio")) { |
| 4427 | char arg2[1024]; | 4426 | char arg2[1024]; |
| 4428 | AVCodecContext *avctx; | 4427 | AVCodecContext *avctx; |
| 4429 | int type; | 4428 | int type; |
| 4430 | get_arg(arg, sizeof(arg), &p); | 4429 | get_arg(arg, sizeof(arg), &p); |
| 4431 | get_arg(arg2, sizeof(arg2), &p); | 4430 | get_arg(arg2, sizeof(arg2), &p); |
| 4432 | if (!strcasecmp(cmd, "AVOptionVideo")) { | 4431 | if (!av_strcasecmp(cmd, "AVOptionVideo")) { |
| 4433 | avctx = &video_enc; | 4432 | avctx = &video_enc; |
| 4434 | type = AV_OPT_FLAG_VIDEO_PARAM; | 4433 | type = AV_OPT_FLAG_VIDEO_PARAM; |
| 4435 | } else { | 4434 | } else { |
| @@ -4439,12 +4438,12 @@ static int parse_ffconfig(const char *filename) · 3 unmodified lines |
| 4439 | if (avserver_opt_default(arg, arg2, avctx, type|AV_OPT_FLAG_ENCODING_PARAM)) { | 4438 | if (avserver_opt_default(arg, arg2, avctx, type|AV_OPT_FLAG_ENCODING_PARAM)) { |
| 4440 | ERROR("AVOption error: %s %s\n", arg, arg2); | 4439 | ERROR("AVOption error: %s %s\n", arg, arg2); |
| 4441 | } | 4440 | } |
| 4442 | } else if (!strcasecmp(cmd, "AVPresetVideo") || | 4441 | } else if (!av_strcasecmp(cmd, "AVPresetVideo") || |
| 4443 | !strcasecmp(cmd, "AVPresetAudio")) { | 4442 | !av_strcasecmp(cmd, "AVPresetAudio")) { |
| 4444 | AVCodecContext *avctx; | 4443 | AVCodecContext *avctx; |
| 4445 | int type; | 4444 | int type; |
| 4446 | get_arg(arg, sizeof(arg), &p); | 4445 | get_arg(arg, sizeof(arg), &p); |
| 4447 | if (!strcasecmp(cmd, "AVPresetVideo")) { | 4446 | if (!av_strcasecmp(cmd, "AVPresetVideo")) { |
| 4448 | avctx = &video_enc; | 4447 | avctx = &video_enc; |
| 4449 | video_enc.codec_id = video_id; | 4448 | video_enc.codec_id = video_id; |
| 4450 | type = AV_OPT_FLAG_VIDEO_PARAM; | 4449 | type = AV_OPT_FLAG_VIDEO_PARAM; |
| @@ -4456,26 +4455,26 @@ static int parse_ffconfig(const char *filename) · 5 unmodified lines |
| 4456 | if (avserver_opt_preset(arg, avctx, type|AV_OPT_FLAG_ENCODING_PARAM, &audio_id, &video_id)) { | 4455 | if (avserver_opt_preset(arg, avctx, type|AV_OPT_FLAG_ENCODING_PARAM, &audio_id, &video_id)) { |
| 4457 | ERROR("AVPreset error: %s\n", arg); | 4456 | ERROR("AVPreset error: %s\n", arg); |
| 4458 | } | 4457 | } |
| 4459 | } else if (!strcasecmp(cmd, "VideoTag")) { | 4458 | } else if (!av_strcasecmp(cmd, "VideoTag")) { |
| 4460 | get_arg(arg, sizeof(arg), &p); | 4459 | get_arg(arg, sizeof(arg), &p); |
| 4461 | if ((strlen(arg) == 4) && stream) | 4460 | if ((strlen(arg) == 4) && stream) |
| 4462 | video_enc.codec_tag = MKTAG(arg[0], arg[1], arg[2], arg[3]); | 4461 | video_enc.codec_tag = MKTAG(arg[0], arg[1], arg[2], arg[3]); |
| 4463 | } else if (!strcasecmp(cmd, "BitExact")) { | 4462 | } else if (!av_strcasecmp(cmd, "BitExact")) { |
| 4464 | if (stream) | 4463 | if (stream) |
| 4465 | video_enc.flags |= CODEC_FLAG_BITEXACT; | 4464 | video_enc.flags |= CODEC_FLAG_BITEXACT; |
| 4466 | } else if (!strcasecmp(cmd, "DctFastint")) { | 4465 | } else if (!av_strcasecmp(cmd, "DctFastint")) { |
| 4467 | if (stream) | 4466 | if (stream) |
| 4468 | video_enc.dct_algo = FF_DCT_FASTINT; | 4467 | video_enc.dct_algo = FF_DCT_FASTINT; |
| 4469 | } else if (!strcasecmp(cmd, "IdctSimple")) { | 4468 | } else if (!av_strcasecmp(cmd, "IdctSimple")) { |
| 4470 | if (stream) | 4469 | if (stream) |
| 4471 | video_enc.idct_algo = FF_IDCT_SIMPLE; | 4470 | video_enc.idct_algo = FF_IDCT_SIMPLE; |
| 4472 | } else if (!strcasecmp(cmd, "Qscale")) { | 4471 | } else if (!av_strcasecmp(cmd, "Qscale")) { |
| 4473 | get_arg(arg, sizeof(arg), &p); | 4472 | get_arg(arg, sizeof(arg), &p); |
| 4474 | if (stream) { | 4473 | if (stream) { |
| 4475 | video_enc.flags |= CODEC_FLAG_QSCALE; | 4474 | video_enc.flags |= CODEC_FLAG_QSCALE; |
| 4476 | video_enc.global_quality = FF_QP2LAMBDA * atoi(arg); | 4475 | video_enc.global_quality = FF_QP2LAMBDA * atoi(arg); |
| 4477 | } | 4476 | } |
| 4478 | } else if (!strcasecmp(cmd, "VideoQDiff")) { | 4477 | } else if (!av_strcasecmp(cmd, "VideoQDiff")) { |
| 4479 | get_arg(arg, sizeof(arg), &p); | 4478 | get_arg(arg, sizeof(arg), &p); |
| 4480 | if (stream) { | 4479 | if (stream) { |
| 4481 | video_enc.max_qdiff = atoi(arg); | 4480 | video_enc.max_qdiff = atoi(arg); |
| @@ -4483,7 +4482,7 @@ static int parse_ffconfig(const char *filename) · 1 unmodified line |
| 4483 | ERROR("VideoQDiff out of range\n"); | 4482 | ERROR("VideoQDiff out of range\n"); |
| 4484 | } | 4483 | } |
| 4485 | } | 4484 | } |
| 4486 | } else if (!strcasecmp(cmd, "VideoQMax")) { | 4485 | } else if (!av_strcasecmp(cmd, "VideoQMax")) { |
| 4487 | get_arg(arg, sizeof(arg), &p); | 4486 | get_arg(arg, sizeof(arg), &p); |
| 4488 | if (stream) { | 4487 | if (stream) { |
| 4489 | video_enc.qmax = atoi(arg); | 4488 | video_enc.qmax = atoi(arg); |
| @@ -4491,7 +4490,7 @@ static int parse_ffconfig(const char *filename) · 1 unmodified line |
| 4491 | ERROR("VideoQMax out of range\n"); | 4490 | ERROR("VideoQMax out of range\n"); |
| 4492 | } | 4491 | } |
| 4493 | } | 4492 | } |
| 4494 | } else if (!strcasecmp(cmd, "VideoQMin")) { | 4493 | } else if (!av_strcasecmp(cmd, "VideoQMin")) { |
| 4495 | get_arg(arg, sizeof(arg), &p); | 4494 | get_arg(arg, sizeof(arg), &p); |
| 4496 | if (stream) { | 4495 | if (stream) { |
| 4497 | video_enc.qmin = atoi(arg); | 4496 | video_enc.qmin = atoi(arg); |
| @@ -4499,39 +4498,39 @@ static int parse_ffconfig(const char *filename) · 1 unmodified line |
| 4499 | ERROR("VideoQMin out of range\n"); | 4498 | ERROR("VideoQMin out of range\n"); |
| 4500 | } | 4499 | } |
| 4501 | } | 4500 | } |
| 4502 | } else if (!strcasecmp(cmd, "LumaElim")) { | 4501 | } else if (!av_strcasecmp(cmd, "LumaElim")) { |
| 4503 | get_arg(arg, sizeof(arg), &p); | 4502 | get_arg(arg, sizeof(arg), &p); |
| 4504 | if (stream) | 4503 | if (stream) |
| 4505 | video_enc.luma_elim_threshold = atoi(arg); | 4504 | video_enc.luma_elim_threshold = atoi(arg); |
| 4506 | } else if (!strcasecmp(cmd, "ChromaElim")) { | 4505 | } else if (!av_strcasecmp(cmd, "ChromaElim")) { |
| 4507 | get_arg(arg, sizeof(arg), &p); | 4506 | get_arg(arg, sizeof(arg), &p); |
| 4508 | if (stream) | 4507 | if (stream) |
| 4509 | video_enc.chroma_elim_threshold = atoi(arg); | 4508 | video_enc.chroma_elim_threshold = atoi(arg); |
| 4510 | } else if (!strcasecmp(cmd, "LumiMask")) { | 4509 | } else if (!av_strcasecmp(cmd, "LumiMask")) { |
| 4511 | get_arg(arg, sizeof(arg), &p); | 4510 | get_arg(arg, sizeof(arg), &p); |
| 4512 | if (stream) | 4511 | if (stream) |
| 4513 | video_enc.lumi_masking = atof(arg); | 4512 | video_enc.lumi_masking = atof(arg); |
| 4514 | } else if (!strcasecmp(cmd, "DarkMask")) { | 4513 | } else if (!av_strcasecmp(cmd, "DarkMask")) { |
| 4515 | get_arg(arg, sizeof(arg), &p); | 4514 | get_arg(arg, sizeof(arg), &p); |
| 4516 | if (stream) | 4515 | if (stream) |
| 4517 | video_enc.dark_masking = atof(arg); | 4516 | video_enc.dark_masking = atof(arg); |
| 4518 | } else if (!strcasecmp(cmd, "NoVideo")) { | 4517 | } else if (!av_strcasecmp(cmd, "NoVideo")) { |
| 4519 | video_id = CODEC_ID_NONE; | 4518 | video_id = CODEC_ID_NONE; |
| 4520 | } else if (!strcasecmp(cmd, "NoAudio")) { | 4519 | } else if (!av_strcasecmp(cmd, "NoAudio")) { |
| 4521 | audio_id = CODEC_ID_NONE; | 4520 | audio_id = CODEC_ID_NONE; |
| 4522 | } else if (!strcasecmp(cmd, "ACL")) { | 4521 | } else if (!av_strcasecmp(cmd, "ACL")) { |
| 4523 | parse_acl_row(stream, feed, NULL, p, filename, line_num); | 4522 | parse_acl_row(stream, feed, NULL, p, filename, line_num); |
| 4524 | } else if (!strcasecmp(cmd, "DynamicACL")) { | 4523 | } else if (!av_strcasecmp(cmd, "DynamicACL")) { |
| 4525 | if (stream) { | 4524 | if (stream) { |
| 4526 | get_arg(stream->dynamic_acl, sizeof(stream->dynamic_acl), &p); | 4525 | get_arg(stream->dynamic_acl, sizeof(stream->dynamic_acl), &p); |
| 4527 | } | 4526 | } |
| 4528 | } else if (!strcasecmp(cmd, "RTSPOption")) { | 4527 | } else if (!av_strcasecmp(cmd, "RTSPOption")) { |
| 4529 | get_arg(arg, sizeof(arg), &p); | 4528 | get_arg(arg, sizeof(arg), &p); |
| 4530 | if (stream) { | 4529 | if (stream) { |
| 4531 | av_freep(&stream->rtsp_option); | 4530 | av_freep(&stream->rtsp_option); |
| 4532 | stream->rtsp_option = av_strdup(arg); | 4531 | stream->rtsp_option = av_strdup(arg); |
| 4533 | } | 4532 | } |
| 4534 | } else if (!strcasecmp(cmd, "MulticastAddress")) { | 4533 | } else if (!av_strcasecmp(cmd, "MulticastAddress")) { |
| 4535 | get_arg(arg, sizeof(arg), &p); | 4534 | get_arg(arg, sizeof(arg), &p); |
| 4536 | if (stream) { | 4535 | if (stream) { |
| 4537 | if (resolve_host(&stream->multicast_ip, arg) != 0) { | 4536 | if (resolve_host(&stream->multicast_ip, arg) != 0) { |
| @@ -4540,18 +4539,18 @@ static int parse_ffconfig(const char *filename) · 2 unmodified lines |
| 4540 | stream->is_multicast = 1; | 4539 | stream->is_multicast = 1; |
| 4541 | stream->loop = 1; /* default is looping */ | 4540 | stream->loop = 1; /* default is looping */ |
| 4542 | } | 4541 | } |
| 4543 | } else if (!strcasecmp(cmd, "MulticastPort")) { | 4542 | } else if (!av_strcasecmp(cmd, "MulticastPort")) { |
| 4544 | get_arg(arg, sizeof(arg), &p); | 4543 | get_arg(arg, sizeof(arg), &p); |
| 4545 | if (stream) | 4544 | if (stream) |
| 4546 | stream->multicast_port = atoi(arg); | 4545 | stream->multicast_port = atoi(arg); |
| 4547 | } else if (!strcasecmp(cmd, "MulticastTTL")) { | 4546 | } else if (!av_strcasecmp(cmd, "MulticastTTL")) { |
| 4548 | get_arg(arg, sizeof(arg), &p); | 4547 | get_arg(arg, sizeof(arg), &p); |
| 4549 | if (stream) | 4548 | if (stream) |
| 4550 | stream->multicast_ttl = atoi(arg); | 4549 | stream->multicast_ttl = atoi(arg); |
| 4551 | } else if (!strcasecmp(cmd, "NoLoop")) { | 4550 | } else if (!av_strcasecmp(cmd, "NoLoop")) { |
| 4552 | if (stream) | 4551 | if (stream) |
| 4553 | stream->loop = 0; | 4552 | stream->loop = 0; |
| 4554 | } else if (!strcasecmp(cmd, "</Stream>")) { | 4553 | } else if (!av_strcasecmp(cmd, "</Stream>")) { |
| 4555 | if (!stream) { | 4554 | if (!stream) { |
| 4556 | ERROR("No corresponding <Stream> for </Stream>\n"); | 4555 | ERROR("No corresponding <Stream> for </Stream>\n"); |
| 4557 | } else { | 4556 | } else { |
| @@ -4569,7 +4568,7 @@ static int parse_ffconfig(const char *filename) · 11 unmodified lines |
| 4569 | } | 4568 | } |
| 4570 | stream = NULL; | 4569 | stream = NULL; |
| 4571 | } | 4570 | } |
| 4572 | } else if (!strcasecmp(cmd, "<Redirect")) { | 4571 | } else if (!av_strcasecmp(cmd, "<Redirect")) { |
| 4573 | /*********************************************/ | 4572 | /*********************************************/ |
| 4574 | char *q; | 4573 | char *q; |
| 4575 | if (stream || feed || redirect) { | 4574 | if (stream || feed || redirect) { |
| @@ -4585,10 +4584,10 @@ static int parse_ffconfig(const char *filename) · 9 unmodified lines |
| 4585 | *q = '\0'; | 4584 | *q = '\0'; |
| 4586 | redirect->stream_type = STREAM_TYPE_REDIRECT; | 4585 | redirect->stream_type = STREAM_TYPE_REDIRECT; |
| 4587 | } | 4586 | } |
| 4588 | } else if (!strcasecmp(cmd, "URL")) { | 4587 | } else if (!av_strcasecmp(cmd, "URL")) { |
| 4589 | if (redirect) | 4588 | if (redirect) |
| 4590 | get_arg(redirect->feed_filename, sizeof(redirect->feed_filename), &p); | 4589 | get_arg(redirect->feed_filename, sizeof(redirect->feed_filename), &p); |
| 4591 | } else if (!strcasecmp(cmd, "</Redirect>")) { | 4590 | } else if (!av_strcasecmp(cmd, "</Redirect>")) { |
| 4592 | if (!redirect) { | 4591 | if (!redirect) { |
| 4593 | ERROR("No corresponding <Redirect> for </Redirect>\n"); | 4592 | ERROR("No corresponding <Redirect> for </Redirect>\n"); |
| 4594 | } else { | 4593 | } else { |
| @@ -4597,7 +4596,7 @@ static int parse_ffconfig(const char *filename) · 2 unmodified lines |
| 4597 | } | 4596 | } |
| 4598 | redirect = NULL; | 4597 | redirect = NULL; |
| 4599 | } | 4598 | } |
| 4600 | } else if (!strcasecmp(cmd, "LoadModule")) { | 4599 | } else if (!av_strcasecmp(cmd, "LoadModule")) { |
| 4601 | get_arg(arg, sizeof(arg), &p); | 4600 | get_arg(arg, sizeof(arg), &p); |
| 4602 | #if HAVE_DLOPEN | 4601 | #if HAVE_DLOPEN |
| 4603 | load_module(arg); | 4602 | load_module(arg); |