[MPlayer-dev-eng] [PATCH] af_pan.c: Avoid zero output channels when reinit af pan
Zuxy Meng
zuxy.meng at gmail.com
Wed Jun 13 11:10:19 CEST 2007
Hi,
2007/6/13, Reimar Doeffinger <Reimar.Doeffinger at stud.uni-karlsruhe.de>:
> Hello,
> On Wed, Jun 13, 2007 at 09:53:47AM +0800, Zuxy Meng wrote:
> > Index: libaf/af_pan.c
> > ===================================================================
> > --- libaf/af_pan.c ?????? 23545??
> > +++ libaf/af_pan.c ????????????
> > @@ -22,6 +22,7 @@
> > // Data for specific instances of this filter
> > typedef struct af_pan_s
> > {
> > + int nch; // Number of output channels; zero means same as input
> > float level[AF_NCH][AF_NCH]; // Gain level for each channel
> > }af_pan_t;
> >
> > @@ -38,6 +39,7 @@
> > af->data->rate = ((af_data_t*)arg)->rate;
> > af->data->format = AF_FORMAT_FLOAT_NE;
> > af->data->bps = 4;
> > + af->data->nch = s->nch ? s->nch: ((af_data_t*)arg)->nch;
> > af->mul.n = af->data->nch;
> > af->mul.d = ((af_data_t*)arg)->nch;
> > af_frac_cancel(&af->mul);
> > @@ -48,7 +50,7 @@
> > ((af_data_t*)arg)->bps = af->data->bps;
> > return AF_FALSE;
> > }
> > - return control(af,AF_CONTROL_PAN_NOUT | AF_CONTROL_SET, &af->data->nch);
> > + return AF_OK;
> > case AF_CONTROL_COMMAND_LINE:{
> > int nch = 0;
> > int n = 0;
> > @@ -104,7 +106,7 @@
> > " between 1 and %i. Current value is %i\n",AF_NCH,((int*)arg)[0]);
> > return AF_ERROR;
> > }
> > - af->data->nch=((int*)arg)[0];
> > + s->nch=af->data->nch=((int*)arg)[0];
>
> Hmm.. why is it necessary to set af->data->nch here?
No it isn't since a REINIT is required after NOUT being set.
>
> > Index: libaf/af_pan.c
> > ===================================================================
> > --- libaf/af_pan.c ?????? 23545??
> > +++ libaf/af_pan.c ????????????
> > @@ -183,6 +185,6 @@
> > "pan",
> > "Anders",
> > "",
> > - AF_FLAGS_NOT_REENTRANT,
> > + AF_FLAGS_REENTRANT,
>
> Seems ok to me, I'd say go ahead.
OK. Thanks.
--
Zuxy
Beauty is truth,
While truth is beauty.
PGP KeyID: E8555ED6
More information about the MPlayer-dev-eng
mailing list