Update of /cvsroot/pure-data/externals/unauthorized/mp3cast~ In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28467/mp3cast~
Modified Files: mp3cast~.c Log Message: making mp3*~ work on windows
Index: mp3cast~.c =================================================================== RCS file: /cvsroot/pure-data/externals/unauthorized/mp3cast~/mp3cast~.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** mp3cast~.c 25 Sep 2003 20:58:54 -0000 1.3 --- mp3cast~.c 22 May 2004 14:04:13 -0000 1.4 *************** *** 27,37 **** /* ---------------------------------------------------------------------------- */
- - - #ifdef NT - #pragma warning( disable : 4244 ) - #pragma warning( disable : 4305 ) - #endif - #include "m_pd.h" /* standard pd stuff */
--- 27,30 ---- *************** *** 54,59 **** #include <time.h> #include <sys/time.h> - #include <lame/lame.h> /* lame encoder stuff */ - #include "mpg123.h" #define SOCKET_ERROR -1 #else --- 47,50 ---- *************** *** 62,68 **** #include <winsock.h> #include <windef.h> - #include "lame_enc.h" /* lame encoder stuff */ #endif !
#define MY_MP3_MALLOC_IN_SIZE 65536 --- 53,59 ---- #include <winsock.h> #include <windef.h> #endif ! #include <lame/lame.h> ! #include "mpg123.h"
#define MY_MP3_MALLOC_IN_SIZE 65536 *************** *** 75,88 **** static char *mp3cast_version = "mp3cast~: mp3 streamer version 0.3, written by Yves Degoyon";
- #ifndef UNIX - static HINSTANCE dll = NULL; - static BEINITSTREAM initStream = NULL; - static BEENCODECHUNK encodeChunk = NULL; - static BEDEINITSTREAM deinitStream = NULL; - static BECLOSESTREAM closeStream = NULL; - static BEVERSION dllVersion = NULL; - static BEWRITEVBRHEADER writeVBRHeader = NULL; - #endif - static t_class *mp3cast_class;
--- 66,69 ---- *************** *** 121,127 **** t_float x_f; /* float needed for signal input */
- #ifdef UNIX lame_global_flags *lgfp; /* lame encoder configuration */ - #endif
} t_mp3cast; --- 102,106 ---- *************** *** 189,213 ****
/* encode mp3 data */ - #ifndef UNIX - err = encodeChunk(x->x_lame, x->x_lamechunk, x->x_mp3inbuf, x->x_mp3outbuf, &x->x_mp3size); - #else x->x_mp3size = lame_encode_buffer_interleaved(x->lgfp, x->x_mp3inbuf, x->x_lamechunk/lame_get_num_channels(x->lgfp), x->x_mp3outbuf, MY_MP3_MALLOC_OUT_SIZE); // post( "mp3cast~ : encoding returned %d frames", x->x_mp3size ); - #endif
/* check result */ - #ifndef UNIX - if(err != BE_ERR_SUCCESSFUL) - { - closeStream(x->x_lame); - error("mp3cast~: lameEncodeChunk() failed (%lu)", err); - #else if(x->x_mp3size<0) { lame_close( x->lgfp ); error("mp3cast~: lame_encode_buffer_interleaved failed (%d)", x->x_mp3size); - #endif x->x_lame = -1; } --- 168,181 ---- *************** *** 225,233 **** { error("mp3cast~: could not send encoded data to server (%d)", err); - #ifndef UNIX - closeStream(x->x_lame); - #else lame_close( x->lgfp ); - #endif x->x_lame = -1; #ifndef UNIX --- 193,197 ---- *************** *** 345,363 **** static void mp3cast_tilde_lame_init(t_mp3cast *x) { - #ifndef UNIX - /* encoder related stuff (calculating buffer size) */ - BE_VERSION lameVersion = {0,}; /* version number of LAME */ - BE_CONFIG lameConfig = {0,}; /* config structure of LAME */ - unsigned int ret; - #else int ret; x->lgfp = lame_init(); /* set default parameters for now */ - #endif
#ifndef UNIX /* load lame_enc.dll library */ ! ! dll=LoadLibrary("lame_enc.dll"); ! if(dll==NULL) { error("mp3cast~: error loading lame_enc.dll"); --- 309,320 ---- static void mp3cast_tilde_lame_init(t_mp3cast *x) { int ret; x->lgfp = lame_init(); /* set default parameters for now */
#ifndef UNIX /* load lame_enc.dll library */ ! HINSTANCE dll; ! dll = LoadLibrary("lame_enc.dll"); ! if(!dll) { error("mp3cast~: error loading lame_enc.dll"); *************** *** 368,440 **** return; }
- /* get Interface functions */ - initStream = (BEINITSTREAM) GetProcAddress(dll, TEXT_BEINITSTREAM); - encodeChunk = (BEENCODECHUNK) GetProcAddress(dll, TEXT_BEENCODECHUNK); - deinitStream = (BEDEINITSTREAM) GetProcAddress(dll, TEXT_BEDEINITSTREAM); - closeStream = (BECLOSESTREAM) GetProcAddress(dll, TEXT_BECLOSESTREAM); - dllVersion = (BEVERSION) GetProcAddress(dll, TEXT_BEVERSION); - writeVBRHeader = (BEWRITEVBRHEADER) GetProcAddress(dll,TEXT_BEWRITEVBRHEADER); - - /* check if all interfaces are present */ - if(!initStream || !encodeChunk || !deinitStream || !closeStream || !dllVersion || !writeVBRHeader) - { - - error("mp3cast~: unable to get LAME interfaces"); - closesocket(x->x_fd); - x->x_fd = -1; - outlet_float(x->x_obj.ob_outlet, 0); - post("mp3cast~: connection closed"); - return; - } - - /* get LAME version number */ - dllVersion(&lameVersion); - - post( "mp3cast~: lame_enc.dll version %u.%02u (%u/%u/%u)\n" - " lame_enc engine %u.%02u", - lameVersion.byDLLMajorVersion, lameVersion.byDLLMinorVersion, - lameVersion.byDay, lameVersion.byMonth, lameVersion.wYear, - lameVersion.byMajorVersion, lameVersion.byMinorVersion); - - memset(&lameConfig,0,sizeof(lameConfig)); /* clear all fields */ - #else { const char *lameVersion = get_lame_version(); post( "mp3cast~ : using lame version : %s", lameVersion ); } - #endif - - #ifndef UNIX - - /* use the LAME config structure */ - lameConfig.dwConfig = BE_CONFIG_LAME; - - /* set the mpeg format flags */ - lameConfig.format.LHV1.dwStructVersion = 1; - lameConfig.format.LHV1.dwStructSize = sizeof(lameConfig); - lameConfig.format.LHV1.dwSampleRate = (int)sys_getsr(); /* input frequency - pd's sample rate */ - lameConfig.format.LHV1.dwReSampleRate = x->x_samplerate; /* output s/r - resample if necessary */ - lameConfig.format.LHV1.nMode = x->x_mp3mode; /* output mode */ - lameConfig.format.LHV1.dwBitrate = x->x_bitrate; /* mp3 bitrate */ - lameConfig.format.LHV1.nPreset = x->x_mp3quality; /* mp3 encoding quality */ - lameConfig.format.LHV1.dwMpegVersion = MPEG1; /* use MPEG1 */ - lameConfig.format.LHV1.dwPsyModel = 0; /* USE DEFAULT PSYCHOACOUSTIC MODEL */ - lameConfig.format.LHV1.dwEmphasis = 0; /* NO EMPHASIS TURNED ON */ - lameConfig.format.LHV1.bOriginal = TRUE; /* SET ORIGINAL FLAG */ - lameConfig.format.LHV1.bCopyright = TRUE; /* SET COPYRIGHT FLAG */ - lameConfig.format.LHV1.bNoRes = TRUE; /* no bit resorvoir */ - - /* init the MP3 stream */ - ret = initStream(&lameConfig, &x->x_lamechunk, &x->x_mp3size, &x->x_lame); - - /* check result */ - if(ret != BE_ERR_SUCCESSFUL) - { - post("mp3cast~: error opening encoding stream (%lu)", ret); - return; - } - - #else /* setting lame parameters */ lame_set_num_channels( x->lgfp, 2); --- 325,334 ---- return; } + #endif
{ const char *lameVersion = get_lame_version(); post( "mp3cast~ : using lame version : %s", lameVersion ); } /* setting lame parameters */ lame_set_num_channels( x->lgfp, 2); *************** *** 460,466 **** } lame_init_bitstream( x->lgfp ); - #endif - - }
--- 354,357 ---- *************** *** 489,498 **** struct timeval tv; int sockfd; - - #ifndef UNIX - unsigned int ret; - #else int ret; - #endif
if(x->x_icecast == 0)portno++; /* use SHOUTcast, portno is one higher */ --- 380,384 ---- *************** *** 549,552 **** --- 435,439 ----
ret = select(sockfd + 1, &fdset, NULL, NULL, &tv); + if(ret < 0) { *************** *** 559,574 **** return; } ret = select(sockfd + 1, NULL, &fdset, NULL, &tv); if(ret < 0) { error("mp3cast~: can not write to socket"); - #ifndef UNIX - closesocket(sockfd); - #else close(sockfd); - #endif return; } ! if(x->x_icecast == 0) /* SHOUTCAST */ { --- 446,458 ---- return; } + #ifndef NT ret = select(sockfd + 1, NULL, &fdset, NULL, &tv); if(ret < 0) { error("mp3cast~: can not write to socket"); close(sockfd); return; } ! #endif if(x->x_icecast == 0) /* SHOUTCAST */ { *************** *** 718,732 **** if(x->x_lame >= 0) { - #ifndef UNIX - /* deinit the stream */ - err = deinitStream(x->x_lame, x->x_mp3outbuf, &x->x_mp3size); - - /* check result */ - if(err != BE_ERR_SUCCESSFUL) - { - error("exiting mp3 stream failed (%lu)", err); - } - closeStream(x->x_lame); /* close mp3 encoder stream */ - #else /* ignore remaining bytes */ if ( x->x_mp3size = lame_encode_flush( x->lgfp, x->x_mp3outbuf, 0) < 0 ) { --- 602,605 ---- *************** *** 734,738 **** } lame_close( x->lgfp ); ! #endif x->x_lame = -1; post("mp3cast~: encoder stream closed"); --- 607,611 ---- } lame_close( x->lgfp ); ! x->x_lame = -1; post("mp3cast~: encoder stream closed"); *************** *** 801,809 **** post(" mode: %s\n" " quality: %d", buf, x->x_mp3quality); - #ifndef UNIX - if(x->x_lamechunk!=0)post(" calculated mp3 chunk size: %d", x->x_lamechunk); - #else post(" mp3 chunk size: %d", x->x_lamechunk); - #endif if(x->x_samplerate!=sys_getsr()) { --- 674,678 ---- *************** *** 852,860 **** { if(x->x_lame >= 0) ! #ifndef UNIX ! closeStream(x->x_lame); ! #else ! lame_close( x->lgfp ); ! #endif if(x->x_fd >= 0) #ifndef UNIX --- 721,725 ---- { if(x->x_lame >= 0) ! lame_close( x->lgfp ); if(x->x_fd >= 0) #ifndef UNIX