openbsd-ports/x11/mplayer/patches/patch-libaf_af_c

54 lines
2.1 KiB
Plaintext

$OpenBSD: patch-libaf_af_c,v 1.2 2005/09/04 23:51:52 espie Exp $
--- libaf/af.c.orig Sat Aug 27 13:31:21 2005
+++ libaf/af.c Sun Sep 4 00:17:07 2005
@@ -370,7 +370,8 @@ int af_init(af_stream_t* s, int force_ou
// If force_output isn't set do not compensate for output format
if(!force_output){
- memcpy(&s->output, s->last->data, sizeof(af_data_t));
+ if (s->last)
+ memcpy(&s->output, s->last->data, sizeof(af_data_t));
return 0;
}
@@ -378,7 +379,7 @@ int af_init(af_stream_t* s, int force_ou
if((AF_INIT_TYPE_MASK & s->cfg.force) != AF_INIT_FORCE){
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(!s->last || s->last->data->rate!=s->output.rate){
// 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));
@@ -395,7 +396,7 @@ int af_init(af_stream_t* s, int force_ou
af = af_prepend(s,s->first,resampler);
}
else{
- if(!strcmp(s->last->info->name,"format"))
+ if(s->last && !strcmp(s->last->info->name,"format"))
af = af_prepend(s,s->last,resampler);
else
af = af_append(s,s->last,resampler);
@@ -423,8 +424,8 @@ int af_init(af_stream_t* s, int force_ou
// Check number of output channels fix if not OK
// If needed always inserted last -> easy to screw up other filters
- if(s->last->data->nch!=s->output.nch){
- if(!strcmp(s->last->info->name,"format"))
+ if(!s->last || s->last->data->nch!=s->output.nch){
+ if(s->last && !strcmp(s->last->info->name,"format"))
af = af_prepend(s,s->last,"channels");
else
af = af_append(s,s->last,"channels");
@@ -436,8 +437,8 @@ int af_init(af_stream_t* s, int force_ou
}
// Check output format fix if not OK
- if(s->last->data->format != s->output.format){
- if(strcmp(s->last->info->name,"format"))
+ if(!s->last || s->last->data->format != s->output.format){
+ if(!s->last || strcmp(s->last->info->name,"format"))
af = af_append(s,s->last,"format");
else
af = s->last;