int avfilter_default_query_formats(AVFilterContext *ctx) { avfilter_set_common_pixel_formats(ctx, avfilter_all_formats(AVMEDIA_TYPE_VIDEO)); avfilter_set_common_sample_formats(ctx, avfilter_all_formats(AVMEDIA_TYPE_AUDIO)); avfilter_set_common_channel_layouts(ctx, avfilter_all_channel_layouts()); avfilter_set_common_packing_formats(ctx, avfilter_all_packing_formats()); return 0; }
int avfilter_default_query_formats(AVFilterContext *ctx) { enum AVMediaType type = ctx->inputs && ctx->inputs [0] ? ctx->inputs [0]->type : ctx->outputs && ctx->outputs[0] ? ctx->outputs[0]->type : AVMEDIA_TYPE_VIDEO; avfilter_set_common_formats(ctx, avfilter_all_formats(type)); return 0; }
static int query_formats(AVFilterContext *ctx) { AVFilterLink *inlink = ctx->inputs[0]; AVFilterLink *outlink = ctx->outputs[0]; AVFilterFormats *in_formats = avfilter_all_formats(AVMEDIA_TYPE_AUDIO); AVFilterFormats *out_formats = avfilter_all_formats(AVMEDIA_TYPE_AUDIO); AVFilterFormats *in_samplerates = ff_all_samplerates(); AVFilterFormats *out_samplerates = ff_all_samplerates(); AVFilterChannelLayouts *in_layouts = ff_all_channel_layouts(); AVFilterChannelLayouts *out_layouts = ff_all_channel_layouts(); avfilter_formats_ref(in_formats, &inlink->out_formats); avfilter_formats_ref(out_formats, &outlink->in_formats); avfilter_formats_ref(in_samplerates, &inlink->out_samplerates); avfilter_formats_ref(out_samplerates, &outlink->in_samplerates); ff_channel_layouts_ref(in_layouts, &inlink->out_channel_layouts); ff_channel_layouts_ref(out_layouts, &outlink->in_channel_layouts); return 0; }
static int query_formats(AVFilterContext *ctx) { AResampleContext *aresample = ctx->priv; int out_rate = av_get_int(aresample->swr, "osr", NULL); uint64_t out_layout = av_get_int(aresample->swr, "ocl", NULL); enum AVSampleFormat out_format = av_get_int(aresample->swr, "osf", NULL); AVFilterLink *inlink = ctx->inputs[0]; AVFilterLink *outlink = ctx->outputs[0]; AVFilterFormats *in_formats = avfilter_all_formats(AVMEDIA_TYPE_AUDIO); AVFilterFormats *out_formats; AVFilterFormats *in_samplerates = ff_all_samplerates(); AVFilterFormats *out_samplerates; AVFilterChannelLayouts *in_layouts = ff_all_channel_layouts(); AVFilterChannelLayouts *out_layouts; avfilter_formats_ref (in_formats, &inlink->out_formats); avfilter_formats_ref (in_samplerates, &inlink->out_samplerates); ff_channel_layouts_ref(in_layouts, &inlink->out_channel_layouts); if(out_rate > 0) { out_samplerates = avfilter_make_format_list((int[]){ out_rate, -1 });
static int mpsink_query_formats(AVFilterContext *ctx) { struct mpsink_priv *c = ctx->priv; struct vf_instance *vf = c->vf; AVFilterFormats *all; enum AVPixelFormat *sup; unsigned i, nsup = 0; int ifmt; all = avfilter_all_formats(AVMEDIA_TYPE_VIDEO); sup = av_mallocz(sizeof(*sup) * (all->format_count + 1)); if (!sup) return AVERROR(errno); for(i = 0; i < all->format_count; i++) { ifmt = pixfmt2imgfmt(all->formats[i]); if (vf->next->query_format(vf->next, ifmt) > 0) sup[nsup++] = all->formats[i]; } sup[nsup++] = AV_PIX_FMT_NONE; avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(sup)); av_free(sup); return 0; }