avformat/segment: use AV_OPT_TYPE_DICT for segment_format_options
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
		
							parent
							
								
									5d35a6e8e2
								
							
						
					
					
						commit
						7c3125133f
					
				| @ -75,7 +75,6 @@ typedef struct SegmentContext { | |||||||
|     ff_const59 AVOutputFormat *oformat; |     ff_const59 AVOutputFormat *oformat; | ||||||
|     AVFormatContext *avf; |     AVFormatContext *avf; | ||||||
|     char *format;              ///< format to use for output segment files
 |     char *format;              ///< format to use for output segment files
 | ||||||
|     char *format_options_str;  ///< format options to use for output segment files
 |  | ||||||
|     AVDictionary *format_options; |     AVDictionary *format_options; | ||||||
|     char *list;            ///< filename for the segment list file
 |     char *list;            ///< filename for the segment list file
 | ||||||
|     int   list_flags;      ///< flags affecting list generation
 |     int   list_flags;      ///< flags affecting list generation
 | ||||||
| @ -720,15 +719,6 @@ static int seg_init(AVFormatContext *s) | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (seg->format_options_str) { |  | ||||||
|         ret = av_dict_parse_string(&seg->format_options, seg->format_options_str, "=", ":", 0); |  | ||||||
|         if (ret < 0) { |  | ||||||
|             av_log(s, AV_LOG_ERROR, "Could not parse format options list '%s'\n", |  | ||||||
|                    seg->format_options_str); |  | ||||||
|             return ret; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (seg->list) { |     if (seg->list) { | ||||||
|         if (seg->list_type == LIST_TYPE_UNDEFINED) { |         if (seg->list_type == LIST_TYPE_UNDEFINED) { | ||||||
|             if      (av_match_ext(seg->list, "csv" )) seg->list_type = LIST_TYPE_CSV; |             if      (av_match_ext(seg->list, "csv" )) seg->list_type = LIST_TYPE_CSV; | ||||||
| @ -791,7 +781,7 @@ static int seg_init(AVFormatContext *s) | |||||||
|     ret = avformat_init_output(oc, &options); |     ret = avformat_init_output(oc, &options); | ||||||
|     if (av_dict_count(options)) { |     if (av_dict_count(options)) { | ||||||
|         av_log(s, AV_LOG_ERROR, |         av_log(s, AV_LOG_ERROR, | ||||||
|                "Some of the provided format options in '%s' are not recognized\n", seg->format_options_str); |                "Some of the provided format options are not recognized\n"); | ||||||
|         av_dict_free(&options); |         av_dict_free(&options); | ||||||
|         return AVERROR(EINVAL); |         return AVERROR(EINVAL); | ||||||
|     } |     } | ||||||
| @ -1017,7 +1007,6 @@ fail: | |||||||
|     if (seg->list) |     if (seg->list) | ||||||
|         ff_format_io_close(s, &seg->list_pb); |         ff_format_io_close(s, &seg->list_pb); | ||||||
| 
 | 
 | ||||||
|     av_dict_free(&seg->format_options); |  | ||||||
|     av_opt_free(seg); |     av_opt_free(seg); | ||||||
|     av_freep(&seg->times); |     av_freep(&seg->times); | ||||||
|     av_freep(&seg->frames); |     av_freep(&seg->frames); | ||||||
| @ -1060,7 +1049,7 @@ static int seg_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt) | |||||||
| static const AVOption options[] = { | static const AVOption options[] = { | ||||||
|     { "reference_stream",  "set reference stream", OFFSET(reference_stream_specifier), AV_OPT_TYPE_STRING, {.str = "auto"}, CHAR_MIN, CHAR_MAX, E }, |     { "reference_stream",  "set reference stream", OFFSET(reference_stream_specifier), AV_OPT_TYPE_STRING, {.str = "auto"}, CHAR_MIN, CHAR_MAX, E }, | ||||||
|     { "segment_format",    "set container format used for the segments", OFFSET(format),  AV_OPT_TYPE_STRING, {.str = NULL},  0, 0,       E }, |     { "segment_format",    "set container format used for the segments", OFFSET(format),  AV_OPT_TYPE_STRING, {.str = NULL},  0, 0,       E }, | ||||||
|     { "segment_format_options", "set list of options for the container format used for the segments", OFFSET(format_options_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E }, |     { "segment_format_options", "set list of options for the container format used for the segments", OFFSET(format_options), AV_OPT_TYPE_DICT, {.str = NULL}, 0, 0, E }, | ||||||
|     { "segment_list",      "set the segment list filename",              OFFSET(list),    AV_OPT_TYPE_STRING, {.str = NULL},  0, 0,       E }, |     { "segment_list",      "set the segment list filename",              OFFSET(list),    AV_OPT_TYPE_STRING, {.str = NULL},  0, 0,       E }, | ||||||
|     { "segment_header_filename", "write a single file containing the header", OFFSET(header_filename), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E }, |     { "segment_header_filename", "write a single file containing the header", OFFSET(header_filename), AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, E }, | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user