You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	af_compand: replace strtok_r() with av_get_token()
This commit is contained in:
		
							
								
								
									
										1
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								configure
									
									
									
									
										vendored
									
									
								
							| @@ -2015,7 +2015,6 @@ unix_protocol_select="network" | ||||
| # filters | ||||
| blackframe_filter_deps="gpl" | ||||
| boxblur_filter_deps="gpl" | ||||
| compand_filter_deps="strtok_r" | ||||
| cropdetect_filter_deps="gpl" | ||||
| delogo_filter_deps="gpl" | ||||
| drawtext_filter_deps="libfreetype" | ||||
|   | ||||
| @@ -29,6 +29,7 @@ | ||||
|  | ||||
| #include <string.h> | ||||
|  | ||||
| #include "libavutil/avstring.h" | ||||
| #include "libavutil/channel_layout.h" | ||||
| #include "libavutil/common.h" | ||||
| #include "libavutil/mathematics.h" | ||||
| @@ -330,7 +331,7 @@ static int config_output(AVFilterLink *outlink) | ||||
|     CompandContext *s     = ctx->priv; | ||||
|     const int sample_rate = outlink->sample_rate; | ||||
|     double radius         = s->curve_dB * M_LN10 / 20.0; | ||||
|     char *p, *saveptr     = NULL; | ||||
|     const char *p; | ||||
|     const int channels    = | ||||
|         av_get_channel_layout_nb_channels(outlink->channel_layout); | ||||
|     int nb_attacks, nb_decays, nb_points; | ||||
| @@ -368,25 +369,34 @@ static int config_output(AVFilterLink *outlink) | ||||
|  | ||||
|     p = s->attacks; | ||||
|     for (i = 0, new_nb_items = 0; i < nb_attacks; i++) { | ||||
|         char *tstr = strtok_r(p, "|", &saveptr); | ||||
|         p = NULL; | ||||
|         char *tstr = av_get_token(&p, "|"); | ||||
|         if (!tstr) | ||||
|             return AVERROR(ENOMEM); | ||||
|  | ||||
|         new_nb_items += sscanf(tstr, "%f", &s->channels[i].attack) == 1; | ||||
|         av_freep(&tstr); | ||||
|         if (s->channels[i].attack < 0) { | ||||
|             uninit(ctx); | ||||
|             return AVERROR(EINVAL); | ||||
|         } | ||||
|         if (*p) | ||||
|             p++; | ||||
|     } | ||||
|     nb_attacks = new_nb_items; | ||||
|  | ||||
|     p = s->decays; | ||||
|     for (i = 0, new_nb_items = 0; i < nb_decays; i++) { | ||||
|         char *tstr = strtok_r(p, "|", &saveptr); | ||||
|         p = NULL; | ||||
|         char *tstr = av_get_token(&p, "|"); | ||||
|         if (!tstr) | ||||
|             return AVERROR(ENOMEM); | ||||
|         new_nb_items += sscanf(tstr, "%f", &s->channels[i].decay) == 1; | ||||
|         av_freep(&tstr); | ||||
|         if (s->channels[i].decay < 0) { | ||||
|             uninit(ctx); | ||||
|             return AVERROR(EINVAL); | ||||
|         } | ||||
|         if (*p) | ||||
|             p++; | ||||
|     } | ||||
|     nb_decays = new_nb_items; | ||||
|  | ||||
| @@ -401,9 +411,13 @@ static int config_output(AVFilterLink *outlink) | ||||
| #define S(x) s->segments[2 * ((x) + 1)] | ||||
|     p = s->points; | ||||
|     for (i = 0, new_nb_items = 0; i < nb_points; i++) { | ||||
|         char *tstr = strtok_r(p, "|", &saveptr); | ||||
|         p = NULL; | ||||
|         if (sscanf(tstr, "%f/%f", &S(i).x, &S(i).y) != 2) { | ||||
|         char *tstr = av_get_token(&p, "|"); | ||||
|         if (!tstr) | ||||
|             return AVERROR(ENOMEM); | ||||
|  | ||||
|         err = sscanf(tstr, "%f/%f", &S(i).x, &S(i).y); | ||||
|         av_freep(&tstr); | ||||
|         if (err != 2) { | ||||
|             av_log(ctx, AV_LOG_ERROR, | ||||
|                     "Invalid and/or missing input/output value.\n"); | ||||
|             uninit(ctx); | ||||
| @@ -418,6 +432,8 @@ static int config_output(AVFilterLink *outlink) | ||||
|         S(i).y -= S(i).x; | ||||
|         av_log(ctx, AV_LOG_DEBUG, "%d: x=%f y=%f\n", i, S(i).x, S(i).y); | ||||
|         new_nb_items++; | ||||
|         if (*p) | ||||
|             p++; | ||||
|     } | ||||
|     num = new_nb_items; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user