diff --git a/audio/mp3encode/Makefile b/audio/mp3encode/Makefile new file mode 100644 index 000000000000..5ee7f69bf453 --- /dev/null +++ b/audio/mp3encode/Makefile @@ -0,0 +1,44 @@ +# New ports collection makefile for: mp3encode +# Version required: 1.10 +# Date created: 5th August, 1998 +# Whom: Joel Sutton +# +# $Id$ +# + +DISTNAME= dist10 +PKGNAME= mp3encode-1.10 +CATEGORIES= audio +MASTER_SITES= ftp://ftp.sunet.se/pub/multimedia/Berkeley/mpeg2/conformance-bitstreams/audio/mpeg2/software/technical_report/ + +MAINTAINER= jsutton@webnet.com.au + +WRKSRC= ${WRKDIR}/${DISTNAME}/lsf/encoder +ALL_TARGET= encode +HAS_CONFIGURE= yes +USE_GMAKE= yes + +# Directories and extra files +# +TABLE_LIB= ${PREFIX}/lib/mp3encode +TABLE_LIB_SED= ${TABLE_LIB:S/\//\\\//g} +TABLE_FILES= 1cb0 1cb1 1cb2 1cb4 1cb5 1cb6 1th0 1th1 1th2 1th4 1th5 1th6 \ + 2cb0 2cb1 2cb2 2cb4 2cb5 2cb6 2th0 2th1 2th2 2th4 2th5 2th6 \ + absthr_0 absthr_1 absthr_2 alloc_0 alloc_1 alloc_2 alloc_3 \ + alloc_4 dewindow enwindow huffcode huffdec psy_data + +post-patch: + @${ECHO} "===> Specifing table path " + ${SED} "s/ZAP/${TABLE_LIB_SED}/g" < ${WRKSRC}/common.h >${WRKSRC}/common.h.sed + ${CP} -f ${WRKSRC}/common.h.sed ${WRKSRC}/common.h + +do-install: + @${ECHO} "===> Installing binaries" + ${INSTALL_PROGRAM} ${WRKSRC}/encode ${PREFIX}/bin + @${ECHO} "===> Installing table files" + -${MKDIR} ${TABLE_LIB} + for file in ${TABLE_FILES} ; do \ + ${INSTALL_DATA} ${WRKSRC}/tables/$$file ${TABLE_LIB}/ ;\ + done + +.include diff --git a/audio/mp3encode/distinfo b/audio/mp3encode/distinfo new file mode 100644 index 000000000000..6aa45183a0fb --- /dev/null +++ b/audio/mp3encode/distinfo @@ -0,0 +1 @@ +MD5 (dist10.tar.gz) = 62cee8daa6041b8a2d0a9a1ef18163b4 diff --git a/audio/mp3encode/files/patch-aa b/audio/mp3encode/files/patch-aa new file mode 100644 index 000000000000..c84422453a5d --- /dev/null +++ b/audio/mp3encode/files/patch-aa @@ -0,0 +1,19 @@ +*** Makefile.in.orig Wed May 20 22:00:23 1998 +--- Makefile.in Wed May 20 22:07:53 1998 +*************** +*** 40,46 **** + + NINT_SWITCH = @NINTSW@ + +! CC_SWITCHES = -g -O -DUNIX -DBS_FORMAT=BINARY $(NINT_SWITCH) -DNDEBUG + + PGM = encode + +--- 40,46 ---- + + NINT_SWITCH = @NINTSW@ + +! CC_SWITCHES = -g -O3 -DUNIX -DBS_FORMAT=BINARY $(NINT_SWITCH) -DNDEBUG + + PGM = encode + diff --git a/audio/mp3encode/files/patch-ab b/audio/mp3encode/files/patch-ab new file mode 100644 index 000000000000..37abff2eae6f --- /dev/null +++ b/audio/mp3encode/files/patch-ab @@ -0,0 +1,214 @@ +*** musicin.c.orig Wed May 20 22:09:24 1998 +--- musicin.c Wed May 20 22:15:02 1998 +*************** +*** 161,167 **** + + do { + printf("Enter PCM input file name : "); +! gets(original_file_name); + if (original_file_name[0] == NULL_CHAR) + printf("PCM input file name is required.\n"); + } while (original_file_name[0] == NULL_CHAR); +--- 161,167 ---- + + do { + printf("Enter PCM input file name : "); +! fgets(original_file_name,255,stdin); + if (original_file_name[0] == NULL_CHAR) + printf("PCM input file name is required.\n"); + } while (original_file_name[0] == NULL_CHAR); +*************** +*** 182,188 **** + original_file_name, DFLT_EXT); + #endif + +! gets(encoded_file_name); + + if (encoded_file_name[0] == NULL_CHAR) { + #ifdef MS_DOS +--- 182,188 ---- + original_file_name, DFLT_EXT); + #endif + +! fgets(encoded_file_name,255,stdin); + + if (encoded_file_name[0] == NULL_CHAR) { + #ifdef MS_DOS +*************** +*** 227,233 **** + else { /* Not using Audio IFF sound file headers. */ + + printf("What is the sampling frequency? <44100>[Hz]: "); +! gets(t); + freq = atol(t); + switch (freq) { + case 48000 : info->sampling_frequency = 1; +--- 227,233 ---- + else { /* Not using Audio IFF sound file headers. */ + + printf("What is the sampling frequency? <44100>[Hz]: "); +! fgets(t,255,stdin); + freq = atol(t); + switch (freq) { + case 48000 : info->sampling_frequency = 1; +*************** +*** 268,274 **** + + printf("Which layer do you want to use?\n"); + printf("Available: Layer (1), Layer (<2>), Layer (3): "); +! gets(t); + switch(*t){ + case '1': info->lay = 1; printf(">>> Using Layer %s\n",t); break; + case '2': info->lay = 2; printf(">>> Using Layer %s\n",t); break; +--- 268,274 ---- + + printf("Which layer do you want to use?\n"); + printf("Available: Layer (1), Layer (<2>), Layer (3): "); +! fgets(t,255,stdin); + switch(*t){ + case '1': info->lay = 1; printf(">>> Using Layer %s\n",t); break; + case '2': info->lay = 2; printf(">>> Using Layer %s\n",t); break; +*************** +*** 279,285 **** + printf("Which mode do you want?\n"); + printf("Available: ()tereo, (j)oint stereo, "); + printf("(d)ual channel, s(i)ngle Channel: "); +! gets(t); + switch(*t){ + case 's': + case 'S': +--- 279,285 ---- + printf("Which mode do you want?\n"); + printf("Available: ()tereo, (j)oint stereo, "); + printf("(d)ual channel, s(i)ngle Channel: "); +! fgets(t,255,stdin); + switch(*t){ + case 's': + case 'S': +*************** +*** 308,314 **** + } + + printf("Which psychoacoustic model do you want to use? <1>: "); +! gets(t); + model = atoi(t); + if (model > 2 || model < 1) { + printf(">>> Default model 1 selected\n"); +--- 308,314 ---- + } + + printf("Which psychoacoustic model do you want to use? <1>: "); +! fgets(t,255,stdin); + model = atoi(t); + if (model > 2 || model < 1) { + printf(">>> Default model 1 selected\n"); +*************** +*** 322,328 **** + /* set default bitrate to highest allowed, which is index 14 */ + brt = bitrate[info->version][info->lay-1][14]; + printf( "What is the total bitrate? <%u>[kbps]: ", brt ); +! gets( t ); + brt = atoi( t ); + if ( brt == 0 ) + j = 15; +--- 322,328 ---- + /* set default bitrate to highest allowed, which is index 14 */ + brt = bitrate[info->version][info->lay-1][14]; + printf( "What is the total bitrate? <%u>[kbps]: ", brt ); +! fgets(t,255,stdin); + brt = atoi( t ); + if ( brt == 0 ) + j = 15; +*************** +*** 348,354 **** + + printf("What type of de-emphasis should the decoder use?\n"); + printf("Available: ()one, (5)0/15 microseconds, (c)citt j.17: "); +! gets(t); + if (*t != 'n' && *t != '5' && *t != 'c') { + printf(">>> Using default no de-emphasis\n"); + info->emphasis = 0; +--- 348,354 ---- + + printf("What type of de-emphasis should the decoder use?\n"); + printf("Available: ()one, (5)0/15 microseconds, (c)citt j.17: "); +! fgets(t,255,stdin); + if (*t != 'n' && *t != '5' && *t != 'c') { + printf(">>> Using default no de-emphasis\n"); + info->emphasis = 0; +*************** +*** 363,369 **** + /* Start 2. Part changes for CD Ver 3.2; jsp; 22-Aug-1991 */ + + printf("Do you want to set the private bit? (y/): "); +! gets(t); + if (*t == 'y' || *t == 'Y') info->extension = 1; + else info->extension = 0; + if(info->extension) printf(">>> Private bit set\n"); +--- 363,369 ---- + /* Start 2. Part changes for CD Ver 3.2; jsp; 22-Aug-1991 */ + + printf("Do you want to set the private bit? (y/): "); +! fgets(t,255,stdin); + if (*t == 'y' || *t == 'Y') info->extension = 1; + else info->extension = 0; + if(info->extension) printf(">>> Private bit set\n"); +*************** +*** 372,399 **** + /* End changes for CD Ver 3.2; jsp; 22-Aug-1991 */ + + printf("Do you want error protection? (y/): "); +! gets(t); + if (*t == 'y' || *t == 'Y') info->error_protection = TRUE; + else info->error_protection = FALSE; + if(info->error_protection) printf(">>> Error protection used\n"); + else printf(">>> Error protection not used\n"); + + printf("Is the material copyrighted? (y/): "); +! gets(t); + if (*t == 'y' || *t == 'Y') info->copyright = 1; + else info->copyright = 0; + if(info->copyright) printf(">>> Copyrighted material\n"); + else printf(">>> Material not copyrighted\n"); + + printf("Is this the original? (y/): "); +! gets(t); + if (*t == 'y' || *t == 'Y') info->original = 1; + else info->original = 0; + if(info->original) printf(">>> Original material\n"); + else printf(">>> Material not original\n"); + + printf("Do you wish to exit (last chance before encoding)? (y/): "); +! gets(t); + if (*t == 'y' || *t == 'Y') exit(0); + } + +--- 372,399 ---- + /* End changes for CD Ver 3.2; jsp; 22-Aug-1991 */ + + printf("Do you want error protection? (y/): "); +! fgets(t,255,stdin); + if (*t == 'y' || *t == 'Y') info->error_protection = TRUE; + else info->error_protection = FALSE; + if(info->error_protection) printf(">>> Error protection used\n"); + else printf(">>> Error protection not used\n"); + + printf("Is the material copyrighted? (y/): "); +! fgets(t,255,stdin); + if (*t == 'y' || *t == 'Y') info->copyright = 1; + else info->copyright = 0; + if(info->copyright) printf(">>> Copyrighted material\n"); + else printf(">>> Material not copyrighted\n"); + + printf("Is this the original? (y/): "); +! fgets(t,255,stdin); + if (*t == 'y' || *t == 'Y') info->original = 1; + else info->original = 0; + if(info->original) printf(">>> Original material\n"); + else printf(">>> Material not original\n"); + + printf("Do you wish to exit (last chance before encoding)? (y/): "); +! fgets(t,255,stdin); + if (*t == 'y' || *t == 'Y') exit(0); + } + diff --git a/audio/mp3encode/files/patch-ac b/audio/mp3encode/files/patch-ac new file mode 100644 index 000000000000..5d09cc01663b --- /dev/null +++ b/audio/mp3encode/files/patch-ac @@ -0,0 +1,19 @@ +*** common.h.orig Wed Jan 22 20:43:13 1997 +--- common.h Thu May 21 14:12:52 1998 +*************** +*** 93,99 **** + #endif + + #ifdef UNIX +! #define TABLES_PATH "tables" /* to find data files */ + /* name of environment variable holding path of table files */ + #define MPEGTABENV "MPEGTABLES" + #define PATH_SEPARATOR "/" /* how to build paths */ +--- 93,99 ---- + #endif + + #ifdef UNIX +! #define TABLES_PATH "ZAP" /* to find data files */ + /* name of environment variable holding path of table files */ + #define MPEGTABENV "MPEGTABLES" + #define PATH_SEPARATOR "/" /* how to build paths */ diff --git a/audio/mp3encode/files/patch-ad b/audio/mp3encode/files/patch-ad new file mode 100644 index 000000000000..41bf19dbb7b8 --- /dev/null +++ b/audio/mp3encode/files/patch-ad @@ -0,0 +1,19 @@ +*** encoder.h.orig Fri Jul 3 20:20:57 1998 +--- encoder.h Fri Jul 3 20:21:56 1998 +*************** +*** 62,68 **** + + #define DFLT_LAY 2 /* default encoding layer is II */ + #define DFLT_MOD 's' /* default mode is stereo */ +! #define DFLT_PSY 1 /* default psych model is 1 */ + #define DFLT_SFQ 44.1 /* default input sampling rate is 44.1 kHz */ + #define DFLT_EMP 'n' /* default de-emphasis is none */ + #define DFLT_EXT ".mpg" /* default output file extension */ +--- 62,68 ---- + + #define DFLT_LAY 2 /* default encoding layer is II */ + #define DFLT_MOD 's' /* default mode is stereo */ +! #define DFLT_PSY 2 /* default psych model is 1 */ + #define DFLT_SFQ 44.1 /* default input sampling rate is 44.1 kHz */ + #define DFLT_EMP 'n' /* default de-emphasis is none */ + #define DFLT_EXT ".mpg" /* default output file extension */ diff --git a/audio/mp3encode/pkg-comment b/audio/mp3encode/pkg-comment new file mode 100644 index 000000000000..1f33ba3e6637 --- /dev/null +++ b/audio/mp3encode/pkg-comment @@ -0,0 +1 @@ +MPEG layer I, II and III audio file encoder. diff --git a/audio/mp3encode/pkg-descr b/audio/mp3encode/pkg-descr new file mode 100644 index 000000000000..133b7b866c63 --- /dev/null +++ b/audio/mp3encode/pkg-descr @@ -0,0 +1,38 @@ +INTRODUCTION +============ +mp3encode is a package for encoding MPEG layer I, II and III audio +files. This is the reference implementation so don't expect +spectacular performance. + +Driving encode is pretty simple although it may take some practice to +work out an optimal compression rate. AIFF files are the only type of +files that seem to work with this version so you may need to install a +port like "sox" to convert your file types. I use the "nas" port to +record and edit all of my audio files but so long as you have a valid +AIFF file it shouldn't matter what you use. + +Although the source code includes a decoder I have decided not to port +it because we already have a couple of top class mpeg decoders in the +ports collection. + +HINTS & TIPS +============ +Physcoacoustic model 2 is the only supported model in layer III +encoding. A bit-rate of 128Kbps is adequate for most forms of music but +you may need to turn down the compression to 160Kbps if the music is +particularly atmospheric. + +Vocal spoken recordings are best encoded using a 32Kbps bit-rate with +layer II (layer III makes you sound like a Dalek under digital water) +with a 32kHz sample rate in mono. Using this method I have managed to +get about 5 minutes of AM Radio quality audio into around 1 MB. + +MISC +==== +If anyone finds any bugs in this software please let me know and +include patches to fix them. + +Share and enjoy, + +Joel... +jsutton@webnet.com.au diff --git a/audio/mp3encode/pkg-plist b/audio/mp3encode/pkg-plist new file mode 100644 index 000000000000..6651cccf3043 --- /dev/null +++ b/audio/mp3encode/pkg-plist @@ -0,0 +1,39 @@ +bin/encode +lib/mp3encode/1cb0 +lib/mp3encode/1cb1 +lib/mp3encode/1cb2 +lib/mp3encode/1cb4 +lib/mp3encode/1cb5 +lib/mp3encode/1cb6 +lib/mp3encode/1th0 +lib/mp3encode/1th1 +lib/mp3encode/1th2 +lib/mp3encode/1th4 +lib/mp3encode/1th5 +lib/mp3encode/1th6 +lib/mp3encode/2cb0 +lib/mp3encode/2cb1 +lib/mp3encode/2cb2 +lib/mp3encode/2cb4 +lib/mp3encode/2cb5 +lib/mp3encode/2cb6 +lib/mp3encode/2th0 +lib/mp3encode/2th1 +lib/mp3encode/2th2 +lib/mp3encode/2th4 +lib/mp3encode/2th5 +lib/mp3encode/2th6 +lib/mp3encode/absthr_0 +lib/mp3encode/absthr_1 +lib/mp3encode/absthr_2 +lib/mp3encode/alloc_0 +lib/mp3encode/alloc_1 +lib/mp3encode/alloc_2 +lib/mp3encode/alloc_3 +lib/mp3encode/alloc_4 +lib/mp3encode/dewindow +lib/mp3encode/enwindow +lib/mp3encode/huffcode +lib/mp3encode/huffdec +lib/mp3encode/psy_data +@dirrm lib/mp3encode