mirror of
				https://github.com/webmproject/libwebp.git
				synced 2025-10-31 18:35:41 +01:00 
			
		
		
		
	gif2webp: kmin = 0 should suppress key-frame addition.
This is to conform to man/gif2webp.1 Earlier, one needed to give both '-kmin 0' and '-kmax 0' for this to work. Also, suppress further warnings for kmin = 0 and/or kmax = 0 case. Change-Id: I6f5eeb609aeffc159d0252a40a5734162f7e4e7d
This commit is contained in:
		| @@ -42,27 +42,42 @@ static void SanitizeKeyFrameIntervals(size_t* const kmin_ptr, | |||||||
|                                       size_t* const kmax_ptr) { |                                       size_t* const kmax_ptr) { | ||||||
|   size_t kmin = *kmin_ptr; |   size_t kmin = *kmin_ptr; | ||||||
|   size_t kmax = *kmax_ptr; |   size_t kmax = *kmax_ptr; | ||||||
|  |   int print_warning = 1; | ||||||
|  |  | ||||||
|   if (kmin == 0) kmin = ~0;  // Disable keyframe insertion. |   if (kmin == 0) {  // Disable keyframe insertion. | ||||||
|   if (kmax == 0) kmax = ~0; |     kmax = ~0; | ||||||
|  |     kmin = kmax - 1; | ||||||
|  |     print_warning = 0; | ||||||
|  |   } | ||||||
|  |   if (kmax == 0) { | ||||||
|  |     kmax = ~0; | ||||||
|  |     print_warning = 0; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   if (kmin >= kmax) { |   if (kmin >= kmax) { | ||||||
|     kmin = kmax - 1; |     kmin = kmax - 1; | ||||||
|  |     if (print_warning) { | ||||||
|       fprintf(stderr, |       fprintf(stderr, | ||||||
|               "WARNING: Setting kmin = %zu, so that kmin < kmax.\n", kmin); |               "WARNING: Setting kmin = %zu, so that kmin < kmax.\n", kmin); | ||||||
|  |     } | ||||||
|   } else if (kmin < (kmax / 2 + 1)) { |   } else if (kmin < (kmax / 2 + 1)) { | ||||||
|     // This ensures that cache.keyframe + kmin >= kmax is always true. So, we |     // This ensures that cache.keyframe + kmin >= kmax is always true. So, we | ||||||
|     // can flush all the frames in the ‘count_since_key_frame == kmax’ case. |     // can flush all the frames in the ‘count_since_key_frame == kmax’ case. | ||||||
|     kmin = (kmax / 2 + 1); |     kmin = (kmax / 2 + 1); | ||||||
|  |     if (print_warning) { | ||||||
|       fprintf(stderr, |       fprintf(stderr, | ||||||
|               "WARNING: Setting kmin = %zu, so that kmin >= kmax / 2 + 1.\n", |               "WARNING: Setting kmin = %zu, so that kmin >= kmax / 2 + 1.\n", | ||||||
|               kmin); |               kmin); | ||||||
|     } |     } | ||||||
|  |   } | ||||||
|   // Limit the max number of frames that are allocated. |   // Limit the max number of frames that are allocated. | ||||||
|   if (kmax - kmin > MAX_CACHE_SIZE) { |   if (kmax - kmin > MAX_CACHE_SIZE) { | ||||||
|     kmin = kmax - MAX_CACHE_SIZE; |     kmin = kmax - MAX_CACHE_SIZE; | ||||||
|  |     if (print_warning) { | ||||||
|       fprintf(stderr, |       fprintf(stderr, | ||||||
|             "WARNING: Setting kmin = %zu, so that kmax - kmin <= 30.\n", kmin); |               "WARNING: Setting kmin = %zu, so that kmax - kmin <= 30.\n", | ||||||
|  |               kmin); | ||||||
|  |     } | ||||||
|   } |   } | ||||||
|   *kmin_ptr = kmin; |   *kmin_ptr = kmin; | ||||||
|   *kmax_ptr = kmax; |   *kmax_ptr = kmax; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user