Commit bd7cf6ad authored by Fabrice Bellard's avatar Fabrice Bellard

use new api (NOT TESTED) - suppressed strlcpy

Originally committed as revision 549 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 79fdaa4c
...@@ -113,7 +113,7 @@ typedef struct FFStream { ...@@ -113,7 +113,7 @@ typedef struct FFStream {
enum StreamType stream_type; enum StreamType stream_type;
char filename[1024]; /* stream filename */ char filename[1024]; /* stream filename */
struct FFStream *feed; struct FFStream *feed;
AVFormat *fmt; AVOutputFormat *fmt;
int nb_streams; int nb_streams;
int prebuffer; /* Number of millseconds early to start */ int prebuffer; /* Number of millseconds early to start */
int send_on_key; int send_on_key;
...@@ -474,7 +474,7 @@ static int http_parse_request(HTTPContext *c) ...@@ -474,7 +474,7 @@ static int http_parse_request(HTTPContext *c)
} }
*q = '\0'; *q = '\0';
strlcpy(c->method, cmd, sizeof(c->method)); pstrcpy(c->method, sizeof(c->method), cmd);
if (!strcmp(cmd, "GET")) if (!strcmp(cmd, "GET"))
post = 0; post = 0;
...@@ -492,7 +492,7 @@ static int http_parse_request(HTTPContext *c) ...@@ -492,7 +492,7 @@ static int http_parse_request(HTTPContext *c)
} }
*q = '\0'; *q = '\0';
strlcpy(c->url, url, sizeof(c->url)); pstrcpy(c->url, sizeof(c->url), url);
while (isspace(*p)) p++; while (isspace(*p)) p++;
q = protocol; q = protocol;
...@@ -505,7 +505,7 @@ static int http_parse_request(HTTPContext *c) ...@@ -505,7 +505,7 @@ static int http_parse_request(HTTPContext *c)
if (strcmp(protocol, "HTTP/1.0") && strcmp(protocol, "HTTP/1.1")) if (strcmp(protocol, "HTTP/1.0") && strcmp(protocol, "HTTP/1.1"))
return -1; return -1;
strlcpy(c->protocol, protocol, sizeof(c->protocol)); pstrcpy(c->protocol, sizeof(c->protocol), protocol);
/* find the filename and the optional info string in the request */ /* find the filename and the optional info string in the request */
p = url; p = url;
...@@ -514,7 +514,7 @@ static int http_parse_request(HTTPContext *c) ...@@ -514,7 +514,7 @@ static int http_parse_request(HTTPContext *c)
filename = p; filename = p;
p = strchr(p, '?'); p = strchr(p, '?');
if (p) { if (p) {
strlcpy(info, p, sizeof(info)); pstrcpy(info, sizeof(info), p);
*p = '\0'; *p = '\0';
} else { } else {
info[0] = '\0'; info[0] = '\0';
...@@ -784,7 +784,7 @@ static void compute_stats(HTTPContext *c) ...@@ -784,7 +784,7 @@ static void compute_stats(HTTPContext *c)
char *eosf; char *eosf;
if (stream->feed != stream) { if (stream->feed != stream) {
strlcpy(sfilename, stream->filename, sizeof(sfilename) - 1); pstrcpy(sfilename, sizeof(sfilename) - 1, stream->filename);
eosf = sfilename + strlen(sfilename); eosf = sfilename + strlen(sfilename);
if (eosf - sfilename >= 4) { if (eosf - sfilename >= 4) {
if (strcmp(eosf - 4, ".asf") == 0) { if (strcmp(eosf - 4, ".asf") == 0) {
...@@ -1001,13 +1001,12 @@ static int open_input_stream(HTTPContext *c, const char *info) ...@@ -1001,13 +1001,12 @@ static int open_input_stream(HTTPContext *c, const char *info)
return -1; return -1;
/* open stream */ /* open stream */
s = av_open_input_file(input_filename, NULL, buf_size, NULL); if (av_open_input_file(&s, input_filename, NULL, buf_size, NULL) < 0)
if (!s)
return -1; return -1;
c->fmt_in = s; c->fmt_in = s;
if (c->fmt_in->format->read_seek) { if (c->fmt_in->iformat->read_seek) {
c->fmt_in->format->read_seek(c->fmt_in, stream_pos); c->fmt_in->iformat->read_seek(c->fmt_in, stream_pos);
} }
// printf("stream %s opened pos=%0.6f\n", input_filename, stream_pos / 1000000.0); // printf("stream %s opened pos=%0.6f\n", input_filename, stream_pos / 1000000.0);
...@@ -1023,7 +1022,7 @@ static int http_prepare_data(HTTPContext *c) ...@@ -1023,7 +1022,7 @@ static int http_prepare_data(HTTPContext *c)
memset(&c->fmt_ctx, 0, sizeof(c->fmt_ctx)); memset(&c->fmt_ctx, 0, sizeof(c->fmt_ctx));
if (c->stream->feed) { if (c->stream->feed) {
/* open output stream by using specified codecs */ /* open output stream by using specified codecs */
c->fmt_ctx.format = c->stream->fmt; c->fmt_ctx.oformat = c->stream->fmt;
c->fmt_ctx.nb_streams = c->stream->nb_streams; c->fmt_ctx.nb_streams = c->stream->nb_streams;
for(i=0;i<c->fmt_ctx.nb_streams;i++) { for(i=0;i<c->fmt_ctx.nb_streams;i++) {
AVStream *st; AVStream *st;
...@@ -1040,7 +1039,7 @@ static int http_prepare_data(HTTPContext *c) ...@@ -1040,7 +1039,7 @@ static int http_prepare_data(HTTPContext *c)
c->got_key_frame = 0; c->got_key_frame = 0;
} else { } else {
/* open output stream by using codecs in specified file */ /* open output stream by using codecs in specified file */
c->fmt_ctx.format = c->stream->fmt; c->fmt_ctx.oformat = c->stream->fmt;
c->fmt_ctx.nb_streams = c->fmt_in->nb_streams; c->fmt_ctx.nb_streams = c->fmt_in->nb_streams;
for(i=0;i<c->fmt_ctx.nb_streams;i++) { for(i=0;i<c->fmt_ctx.nb_streams;i++) {
AVStream *st; AVStream *st;
...@@ -1056,7 +1055,7 @@ static int http_prepare_data(HTTPContext *c) ...@@ -1056,7 +1055,7 @@ static int http_prepare_data(HTTPContext *c)
1, c, NULL, http_write_packet, NULL); 1, c, NULL, http_write_packet, NULL);
c->fmt_ctx.pb.is_streamed = 1; c->fmt_ctx.pb.is_streamed = 1;
/* prepare header */ /* prepare header */
c->fmt_ctx.format->write_header(&c->fmt_ctx); av_write_header(&c->fmt_ctx);
c->state = HTTPSTATE_SEND_DATA; c->state = HTTPSTATE_SEND_DATA;
c->last_packet_sent = 0; c->last_packet_sent = 0;
break; break;
...@@ -1192,7 +1191,7 @@ static int http_prepare_data(HTTPContext *c) ...@@ -1192,7 +1191,7 @@ static int http_prepare_data(HTTPContext *c)
if (c->last_packet_sent) if (c->last_packet_sent)
return -1; return -1;
/* prepare header */ /* prepare header */
c->fmt_ctx.format->write_trailer(&c->fmt_ctx); av_write_trailer(&c->fmt_ctx);
c->last_packet_sent = 1; c->last_packet_sent = 1;
break; break;
} }
...@@ -1312,6 +1311,7 @@ static int http_receive_data(HTTPContext *c) ...@@ -1312,6 +1311,7 @@ static int http_receive_data(HTTPContext *c)
} else { } else {
/* We have a header in our hands that contains useful data */ /* We have a header in our hands that contains useful data */
AVFormatContext s; AVFormatContext s;
AVInputFormat *fmt_in;
ByteIOContext *pb = &s.pb; ByteIOContext *pb = &s.pb;
int i; int i;
...@@ -1321,7 +1321,12 @@ static int http_receive_data(HTTPContext *c) ...@@ -1321,7 +1321,12 @@ static int http_receive_data(HTTPContext *c)
pb->buf_end = c->buffer_end; /* ?? */ pb->buf_end = c->buffer_end; /* ?? */
pb->is_streamed = 1; pb->is_streamed = 1;
if (feed->fmt->read_header(&s, 0) < 0) { /* use feed output format name to find corresponding input format */
fmt_in = av_find_input_format(feed->fmt->name);
if (!fmt_in)
goto fail;
if (fmt_in->read_header(&s, 0) < 0) {
goto fail; goto fail;
} }
...@@ -1330,7 +1335,8 @@ static int http_receive_data(HTTPContext *c) ...@@ -1330,7 +1335,8 @@ static int http_receive_data(HTTPContext *c)
goto fail; goto fail;
} }
for (i = 0; i < s.nb_streams; i++) { for (i = 0; i < s.nb_streams; i++) {
memcpy(&feed->streams[i]->codec, &s.streams[i]->codec, sizeof(AVCodecContext)); memcpy(&feed->streams[i]->codec,
&s.streams[i]->codec, sizeof(AVCodecContext));
} }
} }
c->buffer_ptr = c->buffer; c->buffer_ptr = c->buffer;
...@@ -1424,15 +1430,16 @@ void build_feed_streams(void) ...@@ -1424,15 +1430,16 @@ void build_feed_streams(void)
feed->feed_filename); feed->feed_filename);
exit(1); exit(1);
} }
s->format = feed->fmt; s->oformat = feed->fmt;
s->nb_streams = feed->nb_streams; s->nb_streams = feed->nb_streams;
for(i=0;i<s->nb_streams;i++) { for(i=0;i<s->nb_streams;i++) {
AVStream *st; AVStream *st;
st = feed->streams[i]; st = feed->streams[i];
s->streams[i] = st; s->streams[i] = st;
} }
s->format->write_header(s); av_write_header(s);
/* XXX: need better api */
av_freep(&s->priv_data);
url_fclose(&s->pb); url_fclose(&s->pb);
} }
/* get feed size and write index */ /* get feed size and write index */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment