You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	libavformat/dashenc : Prevent writing manifest files multiple times
This commit is contained in:
		| @@ -145,6 +145,8 @@ typedef struct DASHContext { | ||||
|     int ignore_io_errors; | ||||
|     int lhls; | ||||
|     int master_publish_rate; | ||||
|     int nr_of_streams_to_flush; | ||||
|     int nr_of_streams_flushed; | ||||
| } DASHContext; | ||||
|  | ||||
| static struct codec_string { | ||||
| @@ -1089,6 +1091,7 @@ static int dash_init(AVFormatContext *s) | ||||
|     char *ptr; | ||||
|     char basename[1024]; | ||||
|  | ||||
|     c->nr_of_streams_to_flush = 0; | ||||
|     if (c->single_file_name) | ||||
|         c->single_file = 1; | ||||
|     if (c->single_file) | ||||
| @@ -1302,12 +1305,18 @@ static int dash_init(AVFormatContext *s) | ||||
|         os->max_pts = AV_NOPTS_VALUE; | ||||
|         os->last_dts = AV_NOPTS_VALUE; | ||||
|         os->segment_index = 1; | ||||
|  | ||||
|         if (s->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) | ||||
|             c->nr_of_streams_to_flush++; | ||||
|     } | ||||
|  | ||||
|     if (!c->has_video && c->seg_duration <= 0) { | ||||
|         av_log(s, AV_LOG_WARNING, "no video stream and no seg duration set\n"); | ||||
|         return AVERROR(EINVAL); | ||||
|     } | ||||
|  | ||||
|     c->nr_of_streams_flushed = 0; | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| @@ -1616,8 +1625,16 @@ static int dash_flush(AVFormatContext *s, int final, int stream) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     if (ret >= 0) | ||||
|     if (ret >= 0) { | ||||
|         if (c->has_video) { | ||||
|             c->nr_of_streams_flushed++; | ||||
|             if (c->nr_of_streams_flushed != c->nr_of_streams_to_flush) | ||||
|                 return ret; | ||||
|  | ||||
|             c->nr_of_streams_flushed = 0; | ||||
|         } | ||||
|         ret = write_manifest(s, final); | ||||
|     } | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user