[PD-cvs] pd/src s_audio_asio.cpp,1.1.4.19,1.1.4.20

Tim Blechmann timblech at users.sourceforge.net
Tue Dec 14 10:48:10 CET 2004


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20802

Modified Files:
      Tag: devel_0_38
	s_audio_asio.cpp 
Log Message:
make callback scheduler selectable by user


Index: s_audio_asio.cpp
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/s_audio_asio.cpp,v
retrieving revision 1.1.4.19
retrieving revision 1.1.4.20
diff -C2 -d -r1.1.4.19 -r1.1.4.20
*** s_audio_asio.cpp	11 Dec 2004 10:42:40 -0000	1.1.4.19
--- s_audio_asio.cpp	14 Dec 2004 09:48:08 -0000	1.1.4.20
***************
*** 7,11 ****
   */
  
- #define CALLBACK_SCHEDULER
  
  #ifdef USEAPI_ASIO
--- 7,10 ----
***************
*** 60,64 ****
  extern "C" void asio_open_audio(int naudioindev, int *audioindev, int nchindev, 
  					 int *chindev, int naudiooutdev, int *audiooutdev,
! 					 int nchoutdev, int *choutdev, int srate);
  extern "C" void asio_close_audio(void);
  extern "C" void asio_getdevs(char *indevlist, int *nindevs,
--- 59,63 ----
  extern "C" void asio_open_audio(int naudioindev, int *audioindev, int nchindev, 
  					 int *chindev, int naudiooutdev, int *audiooutdev,
! 					 int nchoutdev, int *choutdev, int srate, int scheduler);
  extern "C" void asio_close_audio(void);
  extern "C" void asio_getdevs(char *indevlist, int *nindevs,
***************
*** 195,199 ****
  void asio_open_audio(int naudioindev, int *audioindev, int nchindev, 
  					 int *chindev, int naudiooutdev, int *audiooutdev,
! 					 int nchoutdev, int *choutdev, int srate)
  {
  	ASIOError status;
--- 194,198 ----
  void asio_open_audio(int naudioindev, int *audioindev, int nchindev, 
  					 int *chindev, int naudiooutdev, int *audiooutdev,
! 					 int nchoutdev, int *choutdev, int srate, int scheduler)
  {
  	ASIOError status;
***************
*** 233,242 ****
  	asio_driver = (ASIODriverInfo*) getbytes (sizeof(ASIODriverInfo));
  	asio_driver->asioVersion = ASIOVERSION;
- 	
- #ifdef MSW
  	asio_driver->sysRef = GetDesktopWindow();
! #else
! 	asio_driver->sysRef = 0;
! #endif
  
  	status = ASIOInit(asio_driver);
--- 232,237 ----
  	asio_driver = (ASIODriverInfo*) getbytes (sizeof(ASIODriverInfo));
  	asio_driver->asioVersion = ASIOVERSION;
  	asio_driver->sysRef = GetDesktopWindow();
! 
  
  	status = ASIOInit(asio_driver);
***************
*** 247,255 ****
  	post("driverversion: %d", asio_driver->driverVersion);
  	post("name: %s", asio_driver->name);
- 	if(status) post("error: %s", asio_driver->errorMessage);
  #endif
  
  	switch (status)
  	{
  	case ASE_NotPresent:
  		error("ASIO: ASE_NotPresent");
--- 242,250 ----
  	post("driverversion: %d", asio_driver->driverVersion);
  	post("name: %s", asio_driver->name);
  #endif
  
  	switch (status)
  	{
+ 		if(status) post("error: %s", asio_driver->errorMessage);
  	case ASE_NotPresent:
  		error("ASIO: ASE_NotPresent");
***************
*** 285,289 ****
  	
  	status = ASIOGetBufferSize(&asio_minbufsize, &asio_maxbufsize, &asio_prefbufsize,
! 					  &asio_granularity);
      if(status != ASE_OK) 
      {
--- 280,284 ----
  	
  	status = ASIOGetBufferSize(&asio_minbufsize, &asio_maxbufsize, &asio_prefbufsize,
! 							   &asio_granularity);
      if(status != ASE_OK) 
      {
***************
*** 301,316 ****
  	asio_bufsize = asio_prefbufsize; 
  
! #ifdef CALLBACK_SCHEDULER
! 	if ( asio_bufsize % sys_dacblocksize == 0 )
  	{
! 		/* use callback scheduler */
! 		sys_keepsched = 0;
! 		sys_callbackscheduler = 1;
! 		asio_ticks_per_callback = asio_bufsize / sys_dacblocksize;
! 		post("ASIO: using callback-based scheduler");
  	}
  	else
  		post("ASIO: using traditional scheduler");
- #endif
  	
  	
--- 296,312 ----
  	asio_bufsize = asio_prefbufsize; 
  
! 	if (scheduler)
  	{
! 		if ( asio_bufsize % sys_dacblocksize == 0 )
! 		{
! 			/* use callback scheduler */
! 			sys_keepsched = 0;
! 			sys_callbackscheduler = 1;
! 			asio_ticks_per_callback = asio_bufsize / sys_dacblocksize;
! 			post("ASIO: using callback-based scheduler");
! 		}
  	}
  	else
  		post("ASIO: using traditional scheduler");
  	
  	
***************
*** 358,363 ****
  	asio_bufferinfo  = (ASIOBufferInfo*) getbytes (channels *
  												   sizeof (ASIOBufferInfo));
! 	asio_channelinfo = (ASIOChannelInfo*)  getbytes(channels * 
! 													sizeof (ASIOChannelInfo));
  	if (!(asio_bufferinfo && asio_channelinfo))
  	{
--- 354,359 ----
  	asio_bufferinfo  = (ASIOBufferInfo*) getbytes (channels *
  												   sizeof (ASIOBufferInfo));
! 	asio_channelinfo = (ASIOChannelInfo*) getbytes(channels * 
! 												   sizeof (ASIOChannelInfo));
  	if (!(asio_bufferinfo && asio_channelinfo))
  	{





More information about the Pd-cvs mailing list