summaryrefslogtreecommitdiffstats
path: root/libaf/af.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-01-03 14:05:38 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-01-03 14:05:38 +0000
commit8f3e5a996cd6b314efb947441d816040171cd0ab (patch)
treebda12a7263a88f69b4b7ea0ab995ef5992dad067 /libaf/af.c
parent2543b1bf861af9e439600f76e39cc4f132973730 (diff)
downloadmpv-8f3e5a996cd6b314efb947441d816040171cd0ab.tar.bz2
mpv-8f3e5a996cd6b314efb947441d816040171cd0ab.tar.xz
Use lavcresample only when libavcodec is compiled in.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@14327 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libaf/af.c')
-rw-r--r--libaf/af.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/libaf/af.c b/libaf/af.c
index 79b44fcba9..05f271f668 100644
--- a/libaf/af.c
+++ b/libaf/af.c
@@ -380,21 +380,27 @@ int af_init(af_stream_t* s, int force_output)
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 @@ int af_init(af_stream_t* s, int force_output)
// 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;
}