1<html>
2
3<head>
4<meta http-equiv="Content-Type"
5content="text/html; charset=iso-8859-1">
6<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
7<title>Lame-</title>
8</head>
9
10<body bgcolor="#FFFFFF">
11
12<p align="center">&nbsp; </p>
13
14<p align="center"><font size="7">Lame-enc DLL</font> <br>
15<font size="5">Interface version 1.32</font> (and above)<br>
16(Lame engine version: 3.93 or higher) <br>
17<font size="6">Programmers Manual</font></p>
18
19<p align="center"><i>The lame_enc.dll and this manual is
20copyright by Albert L Faber<br>
21Originally the the DLL interface is modeled after the BladeEnc
22DLL interface<br>
23which is copyrighted by Tord Jansson and Jukka Poikolainen<br>
24This document and the DLL interface may be distributed freely</i>
25<br>
26<i>as long as modifications are released under the LGPL license.</i>
27</p>
28
29<p align="center">&nbsp; </p>
30
31<p align="center"><b>Homepage</b>: <a
32href="http://www.cdex.n3.net">http://www.cdex.n3.net</a><br>
33<b>E-mail:</b> mailto: <a
34href="mailto:afaber@users.sourceforge.net">afaber@users.sourceforge.net</a>
35</p>
36
37<p><br>
38<br>
39<br>
40<br>
41</p>
42
43<p><font size="5">Distribution</font> </p>
44
45<p>People and companies&nbsp; who wants to distribute
46lame_enc.dll with their commercial products are free to do so as
47far as I'm concerned (LGPL license), but should be aware that
48lame_enc.dll might infringe certain MP3 related software patents
49held by Fraunhofer IIS in certain countries. </p>
50
51<p><br>
52&nbsp; </p>
53
54<p><font size="5">Disclaimer</font> </p>
55
56<p>lame_enc.dll and this manual is distributed 'as is' with no
57warranty of any kind. The Author is not to be held responsible
58for the result of any use or misuse of this product. <br>
59&nbsp; <br>
60&nbsp; </p>
61
62<p><font size="5">Current Bugs and Limitations</font> </p>
63
64<p>Although the interface is designed to be able to handle
65multiple parallel streams it can't be done yet due to limitations
66in the engine, only one stream is allowed. <br>
67&nbsp; </p>
68
69<p><font size="5">Future Compatibility</font> </p>
70
71<p>This interface should be compatible with all future versions
72of lame_enc.DLL without any need to recompile your programs. You
73should therefore <b>not</b> check the version number upon start
74and prevent users from running your program with a later version
75of lame_enc.DLL. <br>
76&nbsp; </p>
77
78<hr>
79
80<p><font size="5">How to use the DLL</font> </p>
81
82<p>1. Fill in a <a href="#The BE_CONFIG Structure">BE_CONFIG </a>structure
83and send it to <a href="#beInitStream()">beInitStream()</a>. Make
84sure that BE_ERR_SUCCESSFUL is returned. </p>
85
86<p>2. Reserve at least the amount of memory returned in
87dwBufferSize as your output buffer. </p>
88
89<p>3. Call <a href="#beEncodeChunk()">beEncodeChunk()</a> until
90you've encoded everything you want. </p>
91
92<p>4. Call <a href="#beDeinitStream()">beDeinitStream()</a> to
93make sure that all encoded data is flushed out before closing the
94stream. </p>
95
96<p>5. Close the stream using <a href="#beCloseStream()">beCloseStream()
97</a></p>
98
99<p>6. Finally, call the <a href="#beWriteVBRHeader()">beWriteVBRHeader()</a>
100functions, to insert the INFO tag MP3 Header. This is an
101extension of the Xing VBR tag which is also used for CBR
102encodings. This call can only be omitted if the INFO tag was
103explicilty disabled in the BE_CONFIG Structure.</p>
104
105<p>A handy feature is the available <a
106href="#Lame_enc.dll debug option">Lame_enc.dll debug option</a>,
107which will dump the important lame internal settings to a text
108file.<br>
109&nbsp; </p>
110
111<p>&nbsp;</p>
112
113<p><font size="5">Return Values</font> </p>
114
115<p>See the header-file for a complete list of function return
116values. All functions should return BE_ERR_SUCCESSFUL unless
117something went wrong. <br>
118&nbsp; </p>
119
120<hr>
121
122<h1><a name="Type definitions"><font size="5">Type definitions</font></a></h1>
123
124<p>The DLL is by default compiled with the MS Visual C/C++
125compiler, which has the following type definitions:</p>
126
127<table border="0">
128    <tr>
129        <td>Type </td>
130        <td>Description</td>
131    </tr>
132    <tr>
133        <td>CHAR</td>
134        <td>signed char (8 bits)</td>
135    </tr>
136    <tr>
137        <td>BYTE</td>
138        <td>unsigned char (8 bits)</td>
139    </tr>
140    <tr>
141        <td>SHORT</td>
142        <td>signed short (16 bits)</td>
143    </tr>
144    <tr>
145        <td>WORD</td>
146        <td>unsigned short (16 bits)</td>
147    </tr>
148    <tr>
149        <td>INT</td>
150        <td>signed long (32 bits)</td>
151    </tr>
152    <tr>
153        <td>LONG</td>
154        <td>signed long (32 bits)</td>
155    </tr>
156    <tr>
157        <td>BOOL</td>
158        <td>signed long (32 bits) (YES, 32 bits for a one bit
159        value)<br>
160        TRUE = 0<br>
161        FALSE=-1</td>
162    </tr>
163    <tr>
164        <td>DWORD</td>
165        <td>unsigned long (32 bits)</td>
166    </tr>
167    <tr>
168        <td>FLOAT</td>
169        <td>floating point (32 bits)</td>
170    </tr>
171    <tr>
172        <td>DOUBLE</td>
173        <td>float point (64 bits)</td>
174    </tr>
175    <tr>
176        <td>LPCSTR</td>
177        <td>const char* (32 bits pointer to zero terminated
178        character string)</td>
179    </tr>
180</table>
181
182<p>Within the lame_enc.dll All the structure elements are one
183byte alligned (due to backwards compatibility with BladEnc.DLL!</p>
184
185<p>&nbsp;</p>
186
187<hr>
188
189<h1><a name="The BE_CONFIG Structure"><font size="5">The
190BE_CONFIG Structure </font></a></h1>
191
192<p><font size="3">Currently there the BE_CONFIG structure has to
193varians, the old MP3 config structure that is truly compatible
194with the old BladeEnc interface, and the new defined LHV1
195structure, which can set far more options in the lame encoder</font></p>
196
197<p>&nbsp;</p>
198
199<h2><font size="5">The MP3 BE_CONFIG - structure (OBSOLETE)</font></h2>
200
201<p>This is the old structure as it was originally defined by the
202BladeEnc.DLL interface. However, I do highly recommend to use the
203new Lame specific config structure, since it gives you more
204control over the Lame encoder settings.</p>
205
206<p>These are the members of the BE_CONFIG structure you need to
207fill in before you call beInitStream(): <br>
208&nbsp; </p>
209
210<table border="0">
211    <tr>
212        <td><b>dwConfig</b></td>
213        <td>Specifies what kind of output you want. Since only
214        MP3 currently is supported you must set this to <b>BE_CONFIG_MP3</b></td>
215    </tr>
216    <tr>
217        <td><b>format.mp3.dwSampleRate</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
218        <td>Samplerate in Hz for MP3 file. This can be set to
219        either <b>32000</b>, <b>44100</b> or <b>48000</b>.</td>
220    </tr>
221    <tr>
222        <td><b>format.mp3.byMode</b></td>
223        <td>Stereomode for MP3 file. This can be either <b>BE_MP3_MODE_STEREO</b>,
224        <b>BE_MP3_MODE_DUALCHANNEL</b> or <b>BE_MP3_MODE_MONO.</b></td>
225    </tr>
226    <tr>
227        <td><b>format.mp3.bitrate</b></td>
228        <td>Bitrate (i.e. size) of MP3 file in kBit/s. Allowed
229        bitrates are: <b>32, 40, 48, 56, 64, 80, 96, 112, 128,
230        160, 192, 224, 256</b> and <b>320</b>.</td>
231    </tr>
232    <tr>
233        <td><b>format.mp3.bCopyright</b></td>
234        <td>If this is set to TRUE the Copyright bit in the MP3
235        stream will be set.</td>
236    </tr>
237    <tr>
238        <td><b>format.mp3.bCRC</b></td>
239        <td>Set this to TRUE in order to enable CRC-checksum in
240        the bitstream.</td>
241    </tr>
242    <tr>
243        <td><b>format.mp3.bOriginal</b></td>
244        <td>If this is set to TRUE the Original bit in the MP3
245        stream will be set.</td>
246    </tr>
247    <tr>
248        <td><b>format.mp3.bPrivate</b></td>
249        <td>If this is set to TRUE the Private bit in the MP3
250        stream will be set.</td>
251    </tr>
252</table>
253
254<p>&nbsp;</p>
255
256<h2><font size="5">The LHV1 BE_CONFIG - structure (recommended)</font></h2>
257
258<p>These are the members of the LHV1 BE_CONFIG structure, you
259need to fill in before you call beInitStream(): <br>
260</p>
261
262<table border="0">
263    <tr>
264        <td><b>dwConfig</b></td>
265        <td>Specifies what kind of output you want. Since only
266        MP3 currently is supported you must set this to <b>BE_CONFIG_LAME</b></td>
267    </tr>
268    <tr>
269        <td>&nbsp;</td>
270        <td>&nbsp;</td>
271    </tr>
272    <tr>
273        <td><b>format.LHV1.dwStructVersion</b></td>
274        <td>Indicates the version number of the structure,
275        current version number is 1</td>
276    </tr>
277    <tr>
278        <td><b>format.LHV1.dwStructSize</b></td>
279        <td>Specifies the size of the BE_CONFIG structure
280        (currently 331 bytes)</td>
281    </tr>
282    <tr>
283        <td>&nbsp;</td>
284        <td>&nbsp;</td>
285    </tr>
286    <tr>
287        <td><b>format.LHV1.dwSampleRate</b>&nbsp;</td>
288        <td>Samplerate in Hz for MP3 file. This can be set to
289        either:<br>
290        <b>32000</b>, <b>44100</b> or <b>48000</b> for MPEG-I<br>
291        <b>16000</b>, <b>22050</b> or <b>24000</b> for MPEG-I<br>
292        <b>8000</b>, <b>11025</b> or <b>12000</b> for MPEG-II.5</td>
293    </tr>
294    <tr>
295        <td><b>format.LHV1.dwReSampleRate</b></td>
296        <td>Specifies to which sample rate the input stream has
297        to be resampled, if set to 0, the encoder will decide
298        which ReSample rate to use</td>
299    </tr>
300    <tr>
301        <td><b>format.LHV1.nMode</b></td>
302        <td>Stereomode for MP3 file. This can be either <b>BE_MP3_MODE_STEREO</b>,
303        <b>BE_MP3_MODE_JSTEREO, BE_MP3_MODE_DUALCHANNEL</b> or <b>BE_MP3_MODE_MONO.</b></td>
304    </tr>
305    <tr>
306        <td><strong>format.LHV1.dwBitrate</strong></td>
307        <td>For CBR, this specifies the actual bitrate, for VBR,
308        it specifies the minimum bitrate<br>
309        Allowed bitrates are: <b>32, 40, 48, 56, 64, 80, 96, 112,
310        128, 160, 192, 224, 256</b> and <b>320</b>.for MPEG-I<br>
311        Allowed bitrates are: <b>8, 16, 24, 32, 40, 48, 56, 64,
312        80, 96, 112, 128, 144 </b>and<b> 160</b>.for MPEG-II<p><strong>Note:</strong>
313        dwBitrate is used as the minimum bitrate in the case of
314        using a VBR mode.</p>
315        </td>
316    </tr>
317    <tr>
318        <td><strong>format.LHV1.dwMaxBitrate</strong></td>
319        <td>When VBR mode is enabled, it specifies the maximum
320        allowed bitrate (see also dwBitrate to specify the minium
321        bitrate), for CBR mode this setting is ignored.</td>
322    </tr>
323    <tr>
324        <td><strong>format.LHV1.nPreset</strong></td>
325        <td>Keep in mind that the presets can overwrite some of
326        the other settings, since it is called right before the
327        encoder is initialized<br>
328        <table border="0">
329            <tr>
330                <td>The nPreset option can be set to one of the
331                following presets values::</td>
332            </tr>
333        </table>
334        <p>LQP_NOPRESET (don't use any presets)<br>
335        LQP_NORMAL_QUALITY (quality is set to 5)<br>
336        LQP_LOW_QUALITY (quality is set to 9)<br>
337        LQP_HIGH_QUALITY (quality is set to 2)<br>
338        LQP_VOICE_QUALITY (use for voice encoding)<br>
339        LQP_R3MIX (r3mix preset option)<br>
340        LQP_VERYHIGH_QUALITY (quality is set to 0)<br>
341        LQP_STANDARD (lame command line alt-preset standard)<br>
342        LQP_FAST_STANDARD (lame command line alt-preset fast
343        standard)<br>
344        LQP_EXTREME (lame command line alt-preset extreme)<br>
345        LQP_FAST_EXTREME (lame command line alt-preset fast
346        extreme)<br>
347        LQP_INSANE (lame command line alt-preset insane)<br>
348        LQP_ABR (lame command line alt-preset abr)<br>
349        LQP_CBR(lame command line alt-preset cbr)<br>
350        <br>
351        <strong>(old lame preset options)</strong><br>
352        LQP_PHONE <br>
353        LQP_SW<br>
354        LQP_AM<br>
355        LQP_FM<br>
356        LQP_VOICE<br>
357        LQP_RADIO<br>
358        LQP_TAPE<br>
359        LQP_HIFI<br>
360        LQP_CD<br>
361        LQP_STUDIO</p>
362        </td>
363    </tr>
364    <tr>
365        <td>&nbsp;</td>
366    </tr>
367    <tr>
368        <td><b>format.LHV1.bCopyright</b></td>
369        <td>If this is set to TRUE the Copyright bit in the MP3
370        stream will be set.</td>
371    </tr>
372    <tr>
373        <td><b>format.LHV1.bCRC</b></td>
374        <td>Set this to TRUE in order to enable CRC-checksum in
375        the bitstream.</td>
376    </tr>
377    <tr>
378        <td><b>format.LHV1.bOriginal</b></td>
379        <td>If this is set to TRUE the Original bit in the MP3
380        stream will be set.</td>
381    </tr>
382    <tr>
383        <td><b>format.LHV1.bPrivate</b></td>
384        <td>If this is set to TRUE the Private bit in the MP3
385        stream will be set.</td>
386    </tr>
387    <tr>
388        <td>&nbsp;</td>
389        <td>&nbsp;</td>
390    </tr>
391    <tr>
392        <td><strong>format.LHV1.nVbrMethod</strong></td>
393        <td>Sepecifes if the VBR method to use, currently the
394        following settings are supported:<p><font size="3">VBR_METHOD_NONE
395        (don't use VBR, use CBR encoding instead),<br>
396        VBR_METHOD_DEFAULT (default VBR method)<br>
397        VBR_METHOD_OLD (old VBR method, proven to be reliable)<br>
398        VBR_METHOD_NEW (new VBR method, faster than
399        VBR_METHOD_OLD)<br>
400        VBR_METHOD_MTRH (depreciated, same as VBR_METHOD_NEW)<br>
401        VBR_METHOD_ABR (Average Bitrate Encoding, see also </font><strong>format.LHV1.dwVbrAbr_bps</strong><font
402        size="3">)</font></p>
403        </td>
404    </tr>
405    <tr>
406        <td><strong>format.LHV1.bWriteVBRHeader</strong></td>
407        <td>Sepecifes if the a XING VBR header should be written
408        or not. When this option is enabled, you have to call the
409        <font size="3">beWriteVBRHeader function when encoding
410        has been completed. Keep in mind that the VBR info tag
411        can also be written for CBR encoded files, the TAG info
412        can be useful for additional info like encoder delay and
413        the like.</font></td>
414    </tr>
415    <tr>
416        <td><strong>format.LHV1.bEnableVBR</strong></td>
417        <td>Specifies if VBR encoding option shall be used or
418        not, possible values are TRUE/FALSE</td>
419    </tr>
420    <tr>
421        <td><strong>format.LHV1.nVBRQuality</strong></td>
422        <td>Quality option if VBR is enabled (0=highest quality,
423        9 is lowest quality)</td>
424    </tr>
425    <tr>
426        <td><strong>format.LHV1.dwVbrAbr_bps</strong></td>
427        <td>If the Average Bit Rate is specified, the lame
428        encoder ignores the nVBRQuality settings (However, <strong>bEnableVBR</strong>
429        must be set to TRUE and the <strong>format.LHV1.nVbrMethod
430        </strong>parameter should be set to<strong> </strong><font
431        size="3"><strong>VBR_METHOD_ABR</strong>). The allowed
432        range for the </font><strong>format.LHV1.dwVbrAbr_bps </strong>parameter<strong>
433        </strong>any integer value <font size="3">between:</font><p><strong>MPEG-I:</strong>
434        32000 .. 320000 bps<b><br>
435        </b><strong>MPEG-II:</strong> 8000 .. 160000 bps</p>
436        </td>
437    </tr>
438    <tr>
439        <td>&nbsp;</td>
440        <td>&nbsp;</td>
441    </tr>
442    <tr>
443        <td><strong>format.LHV1.bNoBitRes</strong></td>
444        <td>Disables the bit-resorvoir and disables the insertion
445        of padded frames</td>
446    </tr>
447    <tr>
448        <td><strong>format.LHV1.nQuality</strong></td>
449        <td>Quality Setting, HIGH BYTE should be NOT LOW byte,
450        otherwhise quality is set to 5. This is done to be
451        backward compatible. So to set quality to 3, you have to
452        set the nQuality parameter to 0xFC03.</td>
453    </tr>
454    <tr>
455        <td><b>format.mp3.btReserved</b></td>
456        <td>For future use, set all elements to zero</td>
457    </tr>
458</table>
459
460<p>&nbsp;</p>
461
462<p>&nbsp; </p>
463
464<hr>
465
466<h1><a name="beInitStream()"><font size="5">beInitStream()</font></a>
467</h1>
468
469<table border="0" cellspacing="16" width="100%">
470    <tr>
471        <td valign="top" width="20%"><b>Synopsis:</b></td>
472        <td valign="top" width="80%">BE_ERR beInitStream(
473        PBE_CONFIG <i>pbeConfig</i>, PDWORD <i>dwSamples</i>,
474        PDWORD <i>dwBufferSize</i>, PHBE_STREAM <i>phbeStream</i>
475        )</td>
476    </tr>
477    <tr>
478        <td valign="top" width="20%"><b>Parameters:</b></td>
479        <td valign="top" width="80%"><table border="0"
480        cellspacing="10" width="100%">
481            <tr>
482                <td valign="top" width="20%"><i>pbeConfig</i></td>
483                <td>Pointer at the struct containing encoder
484                settings.</td>
485            </tr>
486            <tr>
487                <td valign="top"><i>dwSamples</i></td>
488                <td>Pointer at double word where number of
489                samples to send to each <i>beEncodeChunk()</i> is
490                returned.</td>
491            </tr>
492            <tr>
493                <td valign="top"><i>dwBufferSize</i></td>
494                <td>Pointer at double word where minimum size in
495                bytes of output buffer is returned.</td>
496            </tr>
497            <tr>
498                <td valign="top"><i>phbeStream</i></td>
499                <td>Pointer at integer where Stream handle is
500                returned.</td>
501            </tr>
502        </table>
503        </td>
504    </tr>
505    <tr>
506        <td valign="top" width="20%"><b>Description:</b></td>
507        <td valign="top" width="80%">This function is the first
508        to call before starting an encoding stream.</td>
509    </tr>
510</table>
511
512<hr>
513
514<h1><a name="beEncodeChunk()"><font size="5">beEncodeChunk()</font>
515</a></h1>
516
517<table border="0" cellspacing="16" width="100%">
518    <tr>
519        <td valign="top" width="20%"><b>Synopsis:</b></td>
520        <td valign="top" width="80%">BE_ERR beEncodeChunk(
521        HBE_STREAM <i>hbeStream</i>, DWORD <i>nSamples</i>,
522        PSHORT <i>pSamples</i>, PBYTE <i>pOutput</i>, PDWORD <i>pdwOutput</i>
523        )</td>
524    </tr>
525    <tr>
526        <td valign="top" width="20%"><b>Parameters:</b></td>
527        <td valign="top"><table border="0" cellspacing="10"
528        width="100%">
529            <tr>
530                <td valign="top" width="20%"><i>hbeStream</i></td>
531                <td width="80%">Handle of the stream.</td>
532            </tr>
533            <tr>
534                <td valign="top" width="90"><i>nSamples</i></td>
535                <td>Number of samples to be encoded for this
536                call. This should be identical to what is
537                returned by <i>beInitStream()</i>, unless you are
538                encoding the last chunk, which might be smaller.</td>
539            </tr>
540            <tr>
541                <td valign="top" width="90"><i>pSamples</i></td>
542                <td>Pointer at the 16-bit signed samples to be
543                encoded. These should be in stereo when encoding
544                a stereo MP3 and mono when encoding a mono MP3.</td>
545            </tr>
546            <tr>
547                <td valign="top" width="90"><i>pOutput</i></td>
548                <td>Where to write the encoded data. This buffer
549                should be at least of the minimum size returned
550                by <i>beInitStream()</i>.</td>
551            </tr>
552            <tr>
553                <td valign="top" width="90"><i>pdwOutput</i></td>
554                <td>Where to return number of bytes of encoded
555                data written. The amount of data written might
556                vary from chunk to chunk.</td>
557            </tr>
558        </table>
559        </td>
560    </tr>
561    <tr>
562        <td valign="top" width="20%"><b>Description:</b></td>
563        <td valign="top">Encodes a chunk of samples. <i>Please
564        note that if you have set the output to generate mono MP3
565        files you must feed beEncodeChunk() with mono samples!</i></td>
566    </tr>
567</table>
568
569<hr>
570
571<h1><a name="beDeinitStream()"><font size="5">beDeinitStream()</font>
572</a></h1>
573
574<table border="0" cellspacing="16" width="100%">
575    <tr>
576        <td valign="top" width="20%"><b>Synopsis:</b></td>
577        <td valign="top" width="80%">BE_ERR beDeinitStream(
578        HBE_STREAM <i>hbeStream</i>, PBYTE <i>pOutput</i>, PDWORD
579        <i>pdwOutput</i> )</td>
580    </tr>
581    <tr>
582        <td valign="top" width="20%"><b>Parameters:</b></td>
583        <td valign="top"><table border="0" cellspacing="10"
584        width="100%">
585            <tr>
586                <td valign="top" width="20%"><i>hbeStream</i></td>
587                <td width="80%">Handle of the stream.</td>
588            </tr>
589            <tr>
590                <td valign="top"><i>pOutput</i></td>
591                <td>Where to write the encoded data. This buffer
592                should be at least of the minimum size returned
593                by <i>beInitStream()</i>.</td>
594            </tr>
595            <tr>
596                <td><i>pdwOutput</i></td>
597                <td>Where to return number of bytes of encoded
598                data written.</td>
599            </tr>
600        </table>
601        </td>
602    </tr>
603    <tr>
604        <td valign="top" width="20%"><b>Description:</b></td>
605        <td valign="top">This function should be called after
606        encoding the last chunk in order to flush the encoder. It
607        writes any encoded data that still might be left inside
608        the encoder to the output buffer. This function should
609        NOT be called unless you have encoded all of the chunks
610        in your stream.</td>
611    </tr>
612</table>
613
614<hr>
615
616<h1><a name="beCloseStream()"><font size="5">beCloseStream()</font></a>
617</h1>
618
619<table border="0" cellspacing="16" width="100%">
620    <tr>
621        <td valign="top" width="20%"><b>Synopsis:</b></td>
622        <td valign="top">BE_ERR beCloseStream( HBE_STREAM <i>hbeStream</i>
623        )</td>
624    </tr>
625    <tr>
626        <td valign="top" width="90"><b>Parameters:</b></td>
627        <td valign="top"><table border="0" cellspacing="10"
628        width="100%">
629            <tr>
630                <td width="20%"><i>hbeStream</i></td>
631                <td>Handle of the stream.</td>
632            </tr>
633        </table>
634        </td>
635    </tr>
636    <tr>
637        <td valign="top" width="90"><b>Description:</b></td>
638        <td valign="top">Last function to be called when finished
639        encoding a stream. Should unlike <i>beDeinitStream()</i>
640        also be called if the encoding is canceled.</td>
641    </tr>
642</table>
643
644<hr>
645
646<h1><a name="beVersion()"><font size="5">beVersion()</font> </a></h1>
647
648<table border="0" cellspacing="16" width="100%">
649    <tr>
650        <td valign="top" width="20%"><b>Synopsis:</b></td>
651        <td valign="top">VOID beVersion( PBE_VERSION <i>pbeVersion</i>
652        )</td>
653    </tr>
654    <tr>
655        <td valign="top"><b>Parameters:</b></td>
656        <td valign="top"><table border="0" cellspacing="10"
657        width="100%">
658            <tr>
659                <td valign="top" width="20%"><i>pbeVersion</i></td>
660                <td>Pointer at struct where version number,
661                release date and URL for homepage is returned.</td>
662            </tr>
663        </table>
664        </td>
665    </tr>
666    <tr>
667        <td valign="top"><b>Description:</b></td>
668        <td valign="top">Returns information like version numbers
669        (both of the DLL and encoding engine), release date and
670        URL for lame_enc's homepage. All this information should
671        be made available to the user of your product through a
672        dialog box or something similar.</td>
673    </tr>
674</table>
675
676<p>&nbsp;</p>
677
678<hr>
679
680<p>&nbsp;</p>
681
682<h1><a name="beWriteVBRHeader()"><font size="5">beWriteVBRHeader()</font>
683</a></h1>
684
685<table border="0" cellspacing="16" width="100%">
686    <tr>
687        <td valign="top" width="20%"><b>Synopsis:</b></td>
688        <td valign="top">VOID beWriteVBRHeader( LPCSTR <i>pszMP3FileName</i>
689        )</td>
690    </tr>
691    <tr>
692        <td valign="top"><b>Parameters:</b></td>
693        <td valign="top"><table border="0" cellspacing="10"
694        width="100%">
695            <tr>
696                <td valign="top" width="20%"><i>pszMP3FileName</i></td>
697                <td>Const Pointer zero terminated string, that
698                contains the MP3 file name.</td>
699            </tr>
700        </table>
701        </td>
702    </tr>
703    <tr>
704        <td valign="top"><b>Description:</b></td>
705        <td valign="top">Writes a Xing Header in front of the MP3
706        file. Make sure that the MP3 file is closed, and the the
707        beConfig.format.LHV1.bWriteVBRHeader has been set to
708        TRUE. In addition, it is always save to call
709        beWriteVBRHeader after the encoding has been finished,
710        even when the beConfig.format.LHV1.bWriteVBRHeader is not
711        set to TRUE</td>
712    </tr>
713</table>
714
715<p>&nbsp;</p>
716
717<p>&nbsp;</p>
718
719<hr>
720
721<p>&nbsp;</p>
722
723<h1><a name="Lame_enc.dll debug option">Lame_enc.dll debug option</a></h1>
724
725<p>The lame_enc.dll has a built-in debug option, that dumps all
726the important internal settings to a text file. To enable this
727feature, create a text file in the Windows directory which is
728named lame_enc.ini, and should contain the following two lines</p>
729
730<p>[debug]<br>
731WriteLogFile=1</p>
732
733<p>Save this text file, and each time you encode a file, the
734settings are added to a file name lame_enc.txt, that is located
735in the same directory as the lame_enc.dll</p>
736
737<p>&nbsp;</p>
738
739<p><br>
740&nbsp; </p>
741</body>
742</html>
743