49 #define INPUT_INACTIVE 2
51 #define DURATION_LONGEST 0
52 #define DURATION_SHORTEST 1
53 #define DURATION_FIRST 2
80 while (frame_list->
list) {
93 if (!frame_list->
list)
100 if (!frame_list->
list)
111 while (samples > 0) {
117 if (!frame_list->
list)
141 if (!frame_list->
list) {
142 frame_list->
list = info;
143 frame_list->
end = info;
147 frame_list->
end = info;
176 #define OFFSET(x) offsetof(MixContext, x)
177 #define A AV_OPT_FLAG_AUDIO_PARAM
179 {
"inputs",
"Number of inputs.",
181 {
"duration",
"How to determine the end-of-stream.",
186 {
"dropout_transition",
"Transition time, in seconds, for volume "
187 "renormalization when an input stream ends.",
266 "inputs:%d fmt:%s srate:%d cl:%s\n", s->
nb_inputs,
296 int planes, plane_size, p;
303 plane_size =
FFALIGN(plane_size, 16);
305 for (p = 0; p < planes; p++) {
328 int available_samples = INT_MAX;
337 available_samples =
FFMIN(available_samples, nb_samples);
339 if (available_samples == INT_MAX)
341 return available_samples;
380 int active_inputs = 0;
385 if (!active_inputs ||
397 int wanted_samples, available_samples;
413 if (!available_samples)
446 if (!available_samples)
448 available_samples =
FFMIN(available_samples, wanted_samples);
450 available_samples = wanted_samples;
467 if (ctx->
inputs[i] == inlink)
501 snprintf(name,
sizeof(name),
"input%d", i);
558 .priv_class = &amix_class,
565 .
outputs = avfilter_af_amix_outputs,