mirror of
				https://github.com/nyanmisaka/ffmpeg-rockchip.git
				synced 2025-11-01 04:53:04 +08:00 
			
		
		
		
	avformat/gifdec: correct r_frame_rate for single frame gifs
Fixes Ticket4650 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		| @@ -52,6 +52,9 @@ typedef struct GIFDemuxContext { | ||||
|     int total_iter; | ||||
|     int iter_count; | ||||
|     int ignore_loop; | ||||
|  | ||||
|     int nb_frames; | ||||
|     int last_duration; | ||||
| } GIFDemuxContext; | ||||
|  | ||||
| /** | ||||
| @@ -279,6 +282,9 @@ parse_keyframe: | ||||
|             pkt->stream_index = 0; | ||||
|             pkt->duration = gdc->delay; | ||||
|  | ||||
|             gdc->nb_frames ++; | ||||
|             gdc->last_duration = pkt->duration; | ||||
|  | ||||
|             /* Graphic Control Extension's scope is single frame. | ||||
|              * Remove its influence. */ | ||||
|             gdc->delay = gdc->default_delay; | ||||
| @@ -299,6 +305,9 @@ resync: | ||||
|     } | ||||
|  | ||||
|     if ((ret >= 0 && !frame_parsed) || ret == AVERROR_EOF) { | ||||
|         if (gdc->nb_frames == 1) { | ||||
|             s->streams[0]->r_frame_rate = (AVRational) {100, gdc->last_duration}; | ||||
|         } | ||||
|         /* This might happen when there is no image block | ||||
|          * between extension blocks and GIF_TRAILER or EOF */ | ||||
|         if (!gdc->ignore_loop && (block_label == GIF_TRAILER || avio_feof(pb)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Michael Niedermayer
					Michael Niedermayer