[Mplayer-cvslog] CVS: main/libaf af_sweep.c, NONE, 1.1 Makefile, 1.16, 1.17 af.c, 1.32, 1.33

Michael Niedermayer CVS syncmail at mplayerhq.hu
Thu Oct 21 14:10:57 CEST 2004


CVS change done by Michael Niedermayer CVS

Update of /cvsroot/mplayer/main/libaf
In directory mail:/var2/tmp/cvs-serv18376

Modified Files:
	Makefile af.c 
Added Files:
	af_sweep.c 
Log Message:
sine sweep generator


--- NEW FILE ---
// Copyright (c) 2004 Michael Niedermayer <michaelni at gmx.at>
// #inlcude <GPL_v2.h>

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <math.h>

#include "../config.h"
#include "af.h"

typedef struct af_sweep_s{
    double x;
    double delta;
}af_sweept;


// Initialization and runtime control
static int control(struct af_instance_s* af, int cmd, void* arg)
{
  af_sweept* s   = (af_sweept*)af->setup; 
  af_data_t *data= (af_data_t*)arg;

  switch(cmd){
  case AF_CONTROL_REINIT:
    if(data->format != (AF_FORMAT_SI | AF_FORMAT_NE))
       return AF_ERROR;

    af->data->nch    = data->nch;
    af->data->format = AF_FORMAT_SI | AF_FORMAT_NE;
    af->data->bps    = 2;
    af->data->rate   = data->rate;

    return AF_OK;
  case AF_CONTROL_COMMAND_LINE:
    sscanf((char*)arg,"%lf", &s->delta);
    return AF_OK;
/*  case AF_CONTROL_RESAMPLE_RATE | AF_CONTROL_SET:
    af->data->rate = *(int*)arg;
    return AF_OK;*/
  }
  return AF_UNKNOWN;
}

// Deallocate memory 
static void uninit(struct af_instance_s* af)
{
    if(af->data)
        free(af->data);
    if(af->setup){
        af_sweept *s = af->setup;
        free(s);
    }
}

// Filter data through filter
static af_data_t* play(struct af_instance_s* af, af_data_t* data)
{    
  af_sweept *s = af->setup;
  int i, j;
  int16_t *in = (int16_t*)data->audio;
  int chans   = data->nch;
  int in_len  = data->len/(2*chans);

  for(i=0; i<in_len; i++){
      for(j=0; j<chans; j++)
          in[i*chans+j]= 32000*sin(s->x*s->x);
      s->x += s->delta;
      if(2*s->x*s->delta >= 3.141592) s->x=0;
  }

  return data;
}

static int open(af_instance_t* af){
  af->control=control;
  af->uninit=uninit;
  af->play=play;
  af->mul.n=1;
  af->mul.d=1;
  af->data=calloc(1,sizeof(af_data_t));
  af->setup=calloc(1,sizeof(af_sweept));
  return AF_OK;
}

af_info_t af_info_sweep = {
  "sine sweep",
  "sweep",
  "Michael Niedermayer",
  "",
  AF_FLAGS_REENTRANT,
  open
};


Index: Makefile
===================================================================
RCS file: /cvsroot/mplayer/main/libaf/Makefile,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- Makefile	21 Oct 2004 03:32:31 -0000	1.16
+++ Makefile	21 Oct 2004 12:10:55 -0000	1.17
@@ -2,7 +2,7 @@
 
 LIBNAME = libaf.a
 
-SRCS=af.c af_mp.c af_dummy.c af_delay.c af_channels.c af_format.c af_resample.c window.c filter.c af_volume.c af_equalizer.c af_tools.c af_comp.c af_gate.c af_pan.c af_surround.c af_sub.c af_export.c af_volnorm.c af_extrastereo.c af_lavcresample.c
+SRCS=af.c af_mp.c af_dummy.c af_delay.c af_channels.c af_format.c af_resample.c window.c filter.c af_volume.c af_equalizer.c af_tools.c af_comp.c af_gate.c af_pan.c af_surround.c af_sub.c af_export.c af_volnorm.c af_extrastereo.c af_lavcresample.c af_sweep.c
 
 OBJS=$(SRCS:.c=.o)
 

Index: af.c
===================================================================
RCS file: /cvsroot/mplayer/main/libaf/af.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- af.c	21 Oct 2004 03:32:31 -0000	1.32
+++ af.c	21 Oct 2004 12:10:55 -0000	1.33
@@ -26,6 +26,7 @@
 extern af_info_t af_info_volnorm;
 extern af_info_t af_info_extrastereo;
 extern af_info_t af_info_lavcresample;
+extern af_info_t af_info_sweep;
 
 static af_info_t* filter_list[]={ 
    &af_info_dummy,
@@ -48,6 +49,7 @@
 #ifdef USE_LIBAVCODEC
    &af_info_lavcresample,
 #endif
+   &af_info_sweep,
    NULL 
 };
 




More information about the MPlayer-cvslog mailing list