gps/GPSResources/tcpmp/tta/ttalib/ttalib.h

154 lines
5.3 KiB
C
Executable File

/*
* ttalib.h
*
* Description: TTAv1 player library prototypes
* Developed by: Alexander Djourik <ald@true-audio.com>
* Pavel Zhilin <pzh@true-audio.com>
*
* Copyright (c) 2004 True Audio Software. All rights reserved.
*
*/
/*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the True Audio Software nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef TTALIB_H_
#define TTALIB_H_
#include "..\..\common\common.h"
#if _MSC_VER > 1000
#pragma warning(pop)
#endif
//#define _BIG_ENDIAN
#define MAX_BPS 24 // Max supported Bit resolution
#define MAX_NCH 8 // Max supported number of channels
#define MAX_LINE 1024
// return codes
#define NO_ERROR 0 // No errors found
#define OPEN_ERROR 1 // Can't open file
#define FORMAT_ERROR 2 // Unknown TTA format version
#define PLAYER_ERROR 3 // Not supported file format
#define FILE_ERROR 4 // File is corrupted
#define READ_ERROR 5 // Can't read from file
#define MEMORY_ERROR 6 // Insufficient memory available
#define FRAME_TIME 1.04489795918367346939
#define SEEK_STEP (int)(FRAME_TIME * 1000)
#define ISO_BUFFER_LENGTH (1024*32)
#define ISO_NBUFFERS (8)
#define ISO_BUFFERS_SIZE (ISO_BUFFER_LENGTH*ISO_NBUFFERS)
#define PCM_BUFFER_LENGTH (4608)
typedef struct {
unsigned char name[MAX_LINE];
unsigned char title[MAX_LINE];
unsigned char artist[MAX_LINE];
unsigned char album[MAX_LINE];
unsigned char comment[MAX_LINE];
unsigned char year[5];
unsigned char track[3];
unsigned char genre[256];
unsigned int size;
unsigned char id3has;
} id3_info;
typedef struct {
format_reader* Reader; // file handle
unsigned int FILESIZE; // compressed size
unsigned short NCH; // number of channels
unsigned short BPS; // bits per sample
unsigned short BSIZE; // byte size
unsigned short FORMAT; // audio format
unsigned int SAMPLERATE; // samplerate (sps)
unsigned int DATALENGTH; // data length in samples
unsigned int FRAMELEN; // frame length
unsigned int LENGTH; // playback time (sec)
unsigned int STATE; // return code
unsigned int DATAPOS; // size of ID3v2 header
unsigned int BITRATE; // average bitrate (kbps)
double COMPRESS; // compression ratio
id3_info ID3; // ID3 information
} tta_info;
/*********************** Library functions *************************/
int open_tta_file ( // FUNCTION: opens TTA file
//const char *filename, // file to open
tta_info *info, // file info structure
unsigned int offset); // ID3v2 header size
/*
* RETURN VALUE
* This function returns 0 if success. Otherwise, -1 is returned
* and the variable STATE of the currently using info structure
* is set to indicate the error.
*
*/
void close_tta_file ( // FUNCTION: closes currently playing file
tta_info *info); // file info structure
int set_position ( // FUNCTION: sets playback position
unsigned int pos); // seek position = seek_time_ms / SEEK_STEP
/*
* RETURN VALUE
* This function returns 0 if success. Otherwise, -1 is returned
* and the variable STATE of the currently using info structure
* is set to indicate the error.
*
*/
int player_init ( // FUNCTION: initializes TTA player
tta_info *info); // file info structure
/*
* RETURN VALUE
* This function returns 0 if success. Otherwise, -1 is returned
* and the variable STATE of the currently using info structure
* is set to indicate the error.
*
*/
void player_stop (void); // FUNCTION: destroys memory pools
int get_samples ( // FUNCTION: decode PCM_BUFFER_LENGTH samples
unsigned char *buffer); // into the current PCM buffer position
/*
* RETURN VALUE
* This function returns the number of samples successfully decoded.
* Otherwise, -1 is returned and the variable STATE of the currently
* using info structure is set to indicate the error.
*
*/
const char *get_error_str (int error); // FUNCTION: get error description
#endif /* TTALIB_H_ */