|  | @@ -20,6 +20,7 @@ | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | #include "libavutil/avassert.h" |  |  | #include "libavutil/avassert.h" | 
														
													
														
															
																|  |  | #include "libavutil/avstring.h" |  |  | #include "libavutil/avstring.h" | 
														
													
														
															
																|  |  |  |  |  | #include "libavutil/bprint.h" | 
														
													
														
															
																|  |  | #include "libavutil/intreadwrite.h" |  |  | #include "libavutil/intreadwrite.h" | 
														
													
														
															
																|  |  | #include "libavutil/opt.h" |  |  | #include "libavutil/opt.h" | 
														
													
														
															
																|  |  | #include "libavutil/parseutils.h" |  |  | #include "libavutil/parseutils.h" | 
														
													
												
													
														
															
																|  | @@ -386,18 +387,18 @@ static int concat_read_close(AVFormatContext *avf) | 
														
													
														
															
																|  |  | static int concat_read_header(AVFormatContext *avf) |  |  | static int concat_read_header(AVFormatContext *avf) | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | ConcatContext *cat = avf->priv_data; |  |  | ConcatContext *cat = avf->priv_data; | 
														
													
														
															
																|  |  | uint8_t buf[4096]; |  |  |  | 
														
													
														
															
																|  |  |  |  |  | AVBPrint bp; | 
														
													
														
															
																|  |  | uint8_t *cursor, *keyword; |  |  | uint8_t *cursor, *keyword; | 
														
													
														
															
																|  |  | int ret, line = 0, i; |  |  |  | 
														
													
														
															
																|  |  |  |  |  | int line = 0, i; | 
														
													
														
															
																|  |  | unsigned nb_files_alloc = 0; |  |  | unsigned nb_files_alloc = 0; | 
														
													
														
															
																|  |  | ConcatFile *file = NULL; |  |  | ConcatFile *file = NULL; | 
														
													
														
															
																|  |  | int64_t time = 0; |  |  |  | 
														
													
														
															
																|  |  |  |  |  | int64_t ret, time = 0; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | while (1) { |  |  |  | 
														
													
														
															
																|  |  | if ((ret = ff_get_line(avf->pb, buf, sizeof(buf))) <= 0) |  |  |  | 
														
													
														
															
																|  |  | break; |  |  |  | 
														
													
														
															
																|  |  |  |  |  | av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED); | 
														
													
														
															
																|  |  |  |  |  |  | 
														
													
														
															
																|  |  |  |  |  | while ((ret = ff_read_line_to_bprint_overwrite(avf->pb, &bp)) >= 0) { | 
														
													
														
															
																|  |  | line++; |  |  | line++; | 
														
													
														
															
																|  |  | cursor = buf; |  |  |  | 
														
													
														
															
																|  |  |  |  |  | cursor = bp.str; | 
														
													
														
															
																|  |  | keyword = get_keyword(&cursor); |  |  | keyword = get_keyword(&cursor); | 
														
													
														
															
																|  |  | if (!*keyword || *keyword == '#') |  |  | if (!*keyword || *keyword == '#') | 
														
													
														
															
																|  |  | continue; |  |  | continue; | 
														
													
												
													
														
															
																|  | @@ -473,7 +474,7 @@ static int concat_read_header(AVFormatContext *avf) | 
														
													
														
															
																|  |  | FAIL(AVERROR_INVALIDDATA); |  |  | FAIL(AVERROR_INVALIDDATA); | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
														
															
																|  |  | if (ret < 0) |  |  |  | 
														
													
														
															
																|  |  |  |  |  | if (ret != AVERROR_EOF && ret < 0) | 
														
													
														
															
																|  |  | goto fail; |  |  | goto fail; | 
														
													
														
															
																|  |  | if (!cat->nb_files) |  |  | if (!cat->nb_files) | 
														
													
														
															
																|  |  | FAIL(AVERROR_INVALIDDATA); |  |  | FAIL(AVERROR_INVALIDDATA); | 
														
													
												
													
														
															
																|  | @@ -499,9 +500,11 @@ static int concat_read_header(AVFormatContext *avf) | 
														
													
														
															
																|  |  | MATCH_ONE_TO_ONE; |  |  | MATCH_ONE_TO_ONE; | 
														
													
														
															
																|  |  | if ((ret = open_file(avf, 0)) < 0) |  |  | if ((ret = open_file(avf, 0)) < 0) | 
														
													
														
															
																|  |  | goto fail; |  |  | goto fail; | 
														
													
														
															
																|  |  |  |  |  | av_bprint_finalize(&bp, NULL); | 
														
													
														
															
																|  |  | return 0; |  |  | return 0; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | fail: |  |  | fail: | 
														
													
														
															
																|  |  |  |  |  | av_bprint_finalize(&bp, NULL); | 
														
													
														
															
																|  |  | concat_read_close(avf); |  |  | concat_read_close(avf); | 
														
													
														
															
																|  |  | return ret; |  |  | return ret; | 
														
													
														
															
																|  |  | } |  |  | } | 
														
													
												
													
														
															
																|  | 
 |