Initial import of mp3encode version 1.10.

An MPEG layer I, II, and III audio file encoder.

PR:		7735
Submitted by:	Joel Sutton <jsutton@webnet.com.au>
This commit is contained in:
Steve Price 1998-12-24 06:59:44 +00:00
parent 70369d768b
commit 340ec2166a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=15561
9 changed files with 394 additions and 0 deletions

44
audio/mp3encode/Makefile Normal file
View File

@ -0,0 +1,44 @@
# New ports collection makefile for: mp3encode
# Version required: 1.10
# Date created: 5th August, 1998
# Whom: Joel Sutton <jsutton@webnet.com.au>
#
# $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 <bsd.port.mk>

1
audio/mp3encode/distinfo Normal file
View File

@ -0,0 +1 @@
MD5 (dist10.tar.gz) = 62cee8daa6041b8a2d0a9a1ef18163b4

View File

@ -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

View File

@ -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 <required>: ");
! 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 <required>: ");
! 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: (<s>)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: (<s>)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: (<n>)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: (<n>)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/<n>): ");
! 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/<n>): ");
! 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/<n>): ");
! 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/<n>): ");
! 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/<n>): ");
! 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/<n>): ");
! 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/<n>): ");
! 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/<n>): ");
! 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/<n>): ");
! 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/<n>): ");
! fgets(t,255,stdin);
if (*t == 'y' || *t == 'Y') exit(0);
}

View File

@ -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 */

View File

@ -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 */

View File

@ -0,0 +1 @@
MPEG layer I, II and III audio file encoder.

38
audio/mp3encode/pkg-descr Normal file
View File

@ -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

39
audio/mp3encode/pkg-plist Normal file
View File

@ -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