You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	ffserver: use new avformat_open_* API.
This commit is contained in:
		
							
								
								
									
										37
									
								
								ffserver.c
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								ffserver.c
									
									
									
									
									
								
							| @@ -205,7 +205,7 @@ typedef struct FFStream { | ||||
|     char filename[1024];     /* stream filename */ | ||||
|     struct FFStream *feed;   /* feed we are using (can be null if | ||||
|                                 coming from file) */ | ||||
|     AVFormatParameters *ap_in; /* input parameters */ | ||||
|     AVDictionary *in_opts;   /* input parameters */ | ||||
|     AVInputFormat *ifmt;       /* if non NULL, force input format */ | ||||
|     AVOutputFormat *fmt; | ||||
|     IPAddressACL *acl; | ||||
| @@ -2126,7 +2126,7 @@ static int open_input_stream(HTTPContext *c, const char *info) | ||||
| { | ||||
|     char buf[128]; | ||||
|     char input_filename[1024]; | ||||
|     AVFormatContext *s; | ||||
|     AVFormatContext *s = NULL; | ||||
|     int buf_size, i, ret; | ||||
|     int64_t stream_pos; | ||||
|  | ||||
| @@ -2157,8 +2157,7 @@ static int open_input_stream(HTTPContext *c, const char *info) | ||||
|         return -1; | ||||
|  | ||||
|     /* open stream */ | ||||
|     if ((ret = av_open_input_file(&s, input_filename, c->stream->ifmt, | ||||
|                                   buf_size, c->stream->ap_in)) < 0) { | ||||
|     if ((ret = avformat_open_input(&s, input_filename, c->stream->ifmt, &c->stream->in_opts)) < 0) { | ||||
|         http_log("could not open %s: %d\n", input_filename, ret); | ||||
|         return -1; | ||||
|     } | ||||
| @@ -2268,8 +2267,7 @@ static int http_prepare_data(HTTPContext *c) | ||||
|         c->fmt_ctx.preload   = (int)(0.5*AV_TIME_BASE); | ||||
|         c->fmt_ctx.max_delay = (int)(0.7*AV_TIME_BASE); | ||||
|  | ||||
|         av_set_parameters(&c->fmt_ctx, NULL); | ||||
|         if (av_write_header(&c->fmt_ctx) < 0) { | ||||
|         if (avformat_write_header(&c->fmt_ctx, NULL) < 0) { | ||||
|             http_log("Error writing output header\n"); | ||||
|             return -1; | ||||
|         } | ||||
| @@ -2709,11 +2707,14 @@ static int http_receive_data(HTTPContext *c) | ||||
|             } | ||||
|         } else { | ||||
|             /* We have a header in our hands that contains useful data */ | ||||
|             AVFormatContext *s = NULL; | ||||
|             AVFormatContext *s = avformat_alloc_context(); | ||||
|             AVIOContext *pb; | ||||
|             AVInputFormat *fmt_in; | ||||
|             int i; | ||||
|  | ||||
|             if (!s) | ||||
|                 goto fail; | ||||
|  | ||||
|             /* use feed output format name to find corresponding input format */ | ||||
|             fmt_in = av_find_input_format(feed->fmt->name); | ||||
|             if (!fmt_in) | ||||
| @@ -2723,7 +2724,8 @@ static int http_receive_data(HTTPContext *c) | ||||
|                                     0, NULL, NULL, NULL, NULL); | ||||
|             pb->seekable = 0; | ||||
|  | ||||
|             if (av_open_input_stream(&s, pb, c->stream->feed_filename, fmt_in, NULL) < 0) { | ||||
|             s->pb = pb; | ||||
|             if (avformat_open_input(&s, c->stream->feed_filename, fmt_in, NULL) < 0) { | ||||
|                 av_free(pb); | ||||
|                 goto fail; | ||||
|             } | ||||
| @@ -3442,8 +3444,7 @@ static int rtp_new_av_stream(HTTPContext *c, | ||||
|         /* XXX: close stream */ | ||||
|         goto fail; | ||||
|     } | ||||
|     av_set_parameters(ctx, NULL); | ||||
|     if (av_write_header(ctx) < 0) { | ||||
|     if (avformat_write_header(ctx, NULL) < 0) { | ||||
|     fail: | ||||
|         if (h) | ||||
|             url_close(h); | ||||
| @@ -3597,28 +3598,25 @@ static void extract_mpeg4_header(AVFormatContext *infile) | ||||
| static void build_file_streams(void) | ||||
| { | ||||
|     FFStream *stream, *stream_next; | ||||
|     AVFormatContext *infile; | ||||
|     int i, ret; | ||||
|  | ||||
|     /* gather all streams */ | ||||
|     for(stream = first_stream; stream != NULL; stream = stream_next) { | ||||
|         AVFormatContext *infile = NULL; | ||||
|         stream_next = stream->next; | ||||
|         if (stream->stream_type == STREAM_TYPE_LIVE && | ||||
|             !stream->feed) { | ||||
|             /* the stream comes from a file */ | ||||
|             /* try to open the file */ | ||||
|             /* open stream */ | ||||
|             stream->ap_in = av_mallocz(sizeof(AVFormatParameters)); | ||||
|             if (stream->fmt && !strcmp(stream->fmt->name, "rtp")) { | ||||
|                 /* specific case : if transport stream output to RTP, | ||||
|                    we use a raw transport stream reader */ | ||||
|                 stream->ap_in->mpeg2ts_raw = 1; | ||||
|                 stream->ap_in->mpeg2ts_compute_pcr = 1; | ||||
|                 av_dict_set(&stream->in_opts, "mpeg2ts_compute_pcr", "1", 0); | ||||
|             } | ||||
|  | ||||
|             http_log("Opening file '%s'\n", stream->feed_filename); | ||||
|             if ((ret = av_open_input_file(&infile, stream->feed_filename, | ||||
|                                           stream->ifmt, 0, stream->ap_in)) < 0) { | ||||
|             if ((ret = avformat_open_input(&infile, stream->feed_filename, stream->ifmt, &stream->in_opts)) < 0) { | ||||
|                 http_log("Could not open '%s': %d\n", stream->feed_filename, ret); | ||||
|                 /* remove stream (no need to spend more time on it) */ | ||||
|             fail: | ||||
| @@ -3678,10 +3676,10 @@ static void build_feed_streams(void) | ||||
|  | ||||
|         if (avio_check(feed->feed_filename, AVIO_FLAG_READ) > 0) { | ||||
|             /* See if it matches */ | ||||
|             AVFormatContext *s; | ||||
|             AVFormatContext *s = NULL; | ||||
|             int matches = 0; | ||||
|  | ||||
|             if (av_open_input_file(&s, feed->feed_filename, NULL, FFM_PACKET_SIZE, NULL) >= 0) { | ||||
|             if (avformat_open_input(&s, feed->feed_filename, NULL, NULL) >= 0) { | ||||
|                 /* Now see if it matches */ | ||||
|                 if (s->nb_streams == feed->nb_streams) { | ||||
|                     matches = 1; | ||||
| @@ -3767,8 +3765,7 @@ static void build_feed_streams(void) | ||||
|             s->oformat = feed->fmt; | ||||
|             s->nb_streams = feed->nb_streams; | ||||
|             s->streams = feed->streams; | ||||
|             av_set_parameters(s, NULL); | ||||
|             if (av_write_header(s) < 0) { | ||||
|             if (avformat_write_header(s, NULL) < 0) { | ||||
|                 http_log("Container doesn't supports the required parameters\n"); | ||||
|                 exit(1); | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user