for (i = 0; i < filter->input_count; i ++) {
AVFilterLink *link = filter->inputs[i];
+ AVFilterLink *inlink = link->src->input_count ?
+ link->src->inputs[0] : NULL;
if (!link) continue;
switch (link->type) {
case AVMEDIA_TYPE_VIDEO:
if (!link->time_base.num && !link->time_base.den)
- link->time_base = link->src->input_count ?
- link->src->inputs[0]->time_base : AV_TIME_BASE_Q;
+ link->time_base = inlink ? inlink->time_base : AV_TIME_BASE_Q;
if (!link->sample_aspect_ratio.num && !link->sample_aspect_ratio.den)
- link->sample_aspect_ratio = link->src->input_count ?
- link->src->inputs[0]->sample_aspect_ratio : (AVRational){1,1};
+ link->sample_aspect_ratio = inlink ?
+ inlink->sample_aspect_ratio : (AVRational){1,1};
- if (link->src->input_count) {
+ if (inlink) {
if (!link->w)
- link->w = link->src->inputs[0]->w;
+ link->w = inlink->w;
if (!link->h)
- link->h = link->src->inputs[0]->h;
+ link->h = inlink->h;
} else if (!link->w || !link->h) {
av_log(link->src, AV_LOG_ERROR,
"Video source filters must set their output link's "
break;
case AVMEDIA_TYPE_AUDIO:
- if (link->src->input_count) {
+ if (inlink) {
if (!link->sample_rate)
- link->sample_rate = link->src->inputs[0]->sample_rate;
+ link->sample_rate = inlink->sample_rate;
+ if (!link->time_base.num && !link->time_base.den)
+ link->time_base = inlink->time_base;
} else if (!link->sample_rate) {
av_log(link->src, AV_LOG_ERROR,
"Audio source filters must set their output link's "
"sample_rate\n");
return AVERROR(EINVAL);
}
+
+ if (!link->time_base.num && !link->time_base.den)
+ link->time_base = (AVRational) {1, link->sample_rate};
}
if ((config_link = link->dstpad->config_props))
av_get_channel_layout_string(buf, sizeof(buf), -1, link->channel_layout);
av_dlog(ctx,
- "link[%p r:%"PRId64" cl:%s fmt:%-16s %-16s->%-16s]%s",
- link, link->sample_rate, buf,
+ "link[%p r:%d cl:%s fmt:%-16s %-16s->%-16s]%s",
+ link, (int)link->sample_rate, buf,
av_get_sample_fmt_name(link->format),
link->src ? link->src->filter->name : "",
link->dst ? link->dst->filter->name : "",
picref->type = AVMEDIA_TYPE_VIDEO;
pic->format = picref->format = format;
- memcpy(pic->data, data, sizeof(pic->data));
- memcpy(pic->linesize, linesize, sizeof(pic->linesize));
+ memcpy(pic->data, data, 4*sizeof(data[0]));
+ memcpy(pic->linesize, linesize, 4*sizeof(linesize[0]));
memcpy(picref->data, pic->data, sizeof(picref->data));
memcpy(picref->linesize, pic->linesize, sizeof(picref->linesize));
return NULL;
}
-AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link, int perms,
- enum AVSampleFormat sample_fmt, int nb_samples,
- int64_t channel_layout, int planar)
+AVFilterBufferRef *avfilter_get_audio_buffer(AVFilterLink *link,
+ int perms, int nb_samples)
{
AVFilterBufferRef *ret = NULL;
if (link->dstpad->get_audio_buffer)
- ret = link->dstpad->get_audio_buffer(link, perms, sample_fmt, nb_samples, channel_layout, planar);
+ ret = link->dstpad->get_audio_buffer(link, perms, nb_samples);
if (!ret)
- ret = avfilter_default_get_audio_buffer(link, perms, sample_fmt, nb_samples, channel_layout, planar);
+ ret = avfilter_default_get_audio_buffer(link, perms, nb_samples);
if (ret)
ret->type = AVMEDIA_TYPE_AUDIO;
link->cur_buf = picref;
while(cmd && cmd->time <= picref->pts * av_q2d(link->time_base)){
+ av_log(link->dst, AV_LOG_DEBUG,
+ "Processing command time:%f command:%s arg:%s\n",
+ cmd->time, cmd->command, cmd->arg);
avfilter_process_command(link->dst, cmd->command, cmd->arg, 0, 0, cmd->flags);
command_queue_pop(link->dst);
cmd= link->dst->command_queue;
samplesref->perms, link->dstpad->min_perms, link->dstpad->rej_perms);
link->cur_buf = avfilter_default_get_audio_buffer(link, dst->min_perms,
- samplesref->format,
- samplesref->audio->nb_samples,
- samplesref->audio->channel_layout,
- samplesref->audio->planar);
+ samplesref->audio->nb_samples);
link->cur_buf->pts = samplesref->pts;
link->cur_buf->audio->sample_rate = samplesref->audio->sample_rate;