X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=ffserver.c;h=ab3e6e94eed2d18bcf5ef10b6e944596da8fc01c;hb=9f85c273a36d0db1c6c05759f6bb6eee763ad429;hp=933eb0ec6182d82f1bdfdacbb4ac85047a12a67f;hpb=bcccb2c2986bca9307b66a8d681addad54c786ff;p=ffmpeg diff --git a/ffserver.c b/ffserver.c index 933eb0ec618..ab3e6e94eed 100644 --- a/ffserver.c +++ b/ffserver.c @@ -201,6 +201,7 @@ static FFServerConfig config = { .nb_max_http_connections = 2000, .nb_max_connections = 5, .max_bandwidth = 1000, + .use_defaults = 1, }; static void new_connection(int server_fd, int is_rtsp); @@ -2253,6 +2254,7 @@ static int http_prepare_data(HTTPContext *c) c->state = HTTPSTATE_SEND_DATA_TRAILER; } + av_freep(&c->pb_buffer); len = avio_close_dyn_buf(ctx->pb, &c->pb_buffer); c->cur_frame_bytes = len; c->buffer_ptr = c->pb_buffer; @@ -3295,13 +3297,8 @@ static AVStream *add_av_stream1(FFServerStream *stream, AVCodecContext *codec, i if (!fst) return NULL; if (copy) { - fst->codec = avcodec_alloc_context3(NULL); - memcpy(fst->codec, codec, sizeof(AVCodecContext)); - if (codec->extradata_size) { - fst->codec->extradata = av_mallocz(codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE); - memcpy(fst->codec->extradata, codec->extradata, - codec->extradata_size); - } + fst->codec = avcodec_alloc_context3(codec->codec); + avcodec_copy_context(fst->codec, codec); } else { /* live streams must use the actual feed's codec since it may be * updated later to carry extradata needed by them. @@ -3325,8 +3322,7 @@ static int add_av_stream(FFServerStream *feed, AVStream *st) av = st->codec; for(i=0;inb_streams;i++) { - st = feed->streams[i]; - av1 = st->codec; + av1 = feed->streams[i]->codec; if (av1->codec_id == av->codec_id && av1->codec_type == av->codec_type && av1->bit_rate == av->bit_rate) { @@ -3354,6 +3350,9 @@ static int add_av_stream(FFServerStream *feed, AVStream *st) fst = add_av_stream1(feed, av, 0); if (!fst) return -1; + if (av_stream_get_recommended_encoder_configuration(st)) + av_stream_set_recommended_encoder_configuration(fst, + av_strdup(av_stream_get_recommended_encoder_configuration(st))); return feed->nb_streams - 1; } @@ -3660,7 +3659,7 @@ static void handle_child_exit(int sig) if (uptime < 30) /* Turn off any more restarts */ - feed->child_argv = 0; + ffserver_free_child_args(&feed->child_argv); } } }