mirror of
				https://github.com/cookiengineer/audacity
				synced 2025-10-31 14:13:50 +01:00 
			
		
		
		
	Using LAME 3.10 Windows project files substantially changed from original, and included into audacity solution.
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *      Xing VBR tagging for LAME.
 | |
|  *
 | |
|  *      Copyright (c) 1999 A.L. Faber
 | |
|  *
 | |
|  * This library is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU Library General Public
 | |
|  * License as published by the Free Software Foundation; either
 | |
|  * version 2 of the License, or (at your option) any later version.
 | |
|  *
 | |
|  * This library is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | |
|  * Library General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU Library General Public
 | |
|  * License along with this library; if not, write to the
 | |
|  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | |
|  * Boston, MA 02111-1307, USA.
 | |
|  */
 | |
| 
 | |
| #ifndef LAME_VRBTAG_H
 | |
| #define LAME_VRBTAG_H
 | |
| 
 | |
| 
 | |
| /* -----------------------------------------------------------
 | |
|  * A Vbr header may be present in the ancillary
 | |
|  * data field of the first frame of an mp3 bitstream
 | |
|  * The Vbr header (optionally) contains
 | |
|  *      frames      total number of audio frames in the bitstream
 | |
|  *      bytes       total number of bytes in the bitstream
 | |
|  *      toc         table of contents
 | |
| 
 | |
|  * toc (table of contents) gives seek points
 | |
|  * for random access
 | |
|  * the ith entry determines the seek point for
 | |
|  * i-percent duration
 | |
|  * seek point in bytes = (toc[i]/256.0) * total_bitstream_bytes
 | |
|  * e.g. half duration seek point = (toc[50]/256.0) * total_bitstream_bytes
 | |
|  */
 | |
| 
 | |
| 
 | |
| #define FRAMES_FLAG     0x0001
 | |
| #define BYTES_FLAG      0x0002
 | |
| #define TOC_FLAG        0x0004
 | |
| #define VBR_SCALE_FLAG  0x0008
 | |
| 
 | |
| #define NUMTOCENTRIES 100
 | |
| 
 | |
| #ifndef lame_internal_flags_defined
 | |
| #define lame_internal_flags_defined
 | |
| struct lame_internal_flags;
 | |
| typedef struct lame_internal_flags lame_internal_flags;
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /*structure to receive extracted header */
 | |
| /* toc may be NULL*/
 | |
| typedef struct {
 | |
|     int     h_id;            /* from MPEG header, 0=MPEG2, 1=MPEG1 */
 | |
|     int     samprate;        /* determined from MPEG header */
 | |
|     int     flags;           /* from Vbr header data */
 | |
|     int     frames;          /* total bit stream frames from Vbr header data */
 | |
|     int     bytes;           /* total bit stream bytes from Vbr header data */
 | |
|     int     vbr_scale;       /* encoded vbr scale from Vbr header data */
 | |
|     unsigned char toc[NUMTOCENTRIES]; /* may be NULL if toc not desired */
 | |
|     int     headersize;      /* size of VBR header, in bytes */
 | |
|     int     enc_delay;       /* encoder delay */
 | |
|     int     enc_padding;     /* encoder paddign added at end of stream */
 | |
| } VBRTAGDATA;
 | |
| 
 | |
| int     GetVbrTag(VBRTAGDATA * pTagData, const unsigned char *buf);
 | |
| 
 | |
| int     InitVbrTag(lame_global_flags * gfp);
 | |
| int     PutVbrTag(lame_global_flags const *gfp, FILE * fid);
 | |
| void    AddVbrFrame(lame_internal_flags * gfc);
 | |
| void    UpdateMusicCRC(uint16_t * crc, const unsigned char *buffer, int size);
 | |
| 
 | |
| #endif
 |