Mercurial > mplayer.hg
changeset 14326:9261d7dcf5e7
Use lavcresample only when libavcodec is compiled in.
author | reimar |
---|---|
date | Mon, 03 Jan 2005 14:05:38 +0000 |
parents | 000250ff9516 |
children | 54e42c7eb713 |
files | libaf/af.c |
diffstat | 1 files changed, 21 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/libaf/af.c Mon Jan 03 13:56:48 2005 +0000 +++ b/libaf/af.c Mon Jan 03 14:05:38 2005 +0000 @@ -380,21 +380,27 @@ af_instance_t* af = NULL; // New filter // Check output frequency if not OK fix with resample if(s->last->data->rate!=s->output.rate){ - if(NULL==(af=af_get(s,"lavcresample")) && - NULL==(af=af_get(s,"resample"))){ + // try to find a filter that can change samplrate + af = af_control_any_rev(s, AF_CONTROL_RESAMPLE_RATE | AF_CONTROL_SET, + &(s->output.rate)); + if (!af) { + char *resampler = "resample"; +#ifdef USE_LIBAVCODEC + if ((AF_INIT_TYPE_MASK & s->cfg.force) == AF_INIT_SLOW) + resampler = "lavcresample"; +#endif if((AF_INIT_TYPE_MASK & s->cfg.force) == AF_INIT_SLOW){ if(!strcmp(s->first->info->name,"format")) - af = af_append(s,s->first,"lavcresample"); + af = af_append(s,s->first,resampler); else - af = af_prepend(s,s->first,"lavcresample"); + af = af_prepend(s,s->first,resampler); } else{ if(!strcmp(s->last->info->name,"format")) - af = af_prepend(s,s->last,"resample"); + af = af_prepend(s,s->last,resampler); else - af = af_append(s,s->last,"resample"); + af = af_append(s,s->last,resampler); } - } // Init the new filter if(!af || (AF_OK != af->control(af,AF_CONTROL_RESAMPLE_RATE, &(s->output.rate)))) @@ -402,9 +408,16 @@ // Use lin int if the user wants fast if ((AF_INIT_TYPE_MASK & s->cfg.force) == AF_INIT_FAST) { char args[32]; - sprintf(args, "%d:0:0", s->output.rate); + sprintf(args, "%d", s->output.rate); +#ifdef USE_LIBAVCODEC + if (strcmp(resampler, "lavcresample") == 0) + strcat(args, ":1"); + else +#endif + strcat(args, ":0:0"); af->control(af, AF_CONTROL_COMMAND_LINE, args); } + } if(AF_OK != af_reinit(s,af)) return -1; }