summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libtta/ttalib.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/libtta/ttalib.h')
-rw-r--r--lib/rbcodec/codecs/libtta/ttalib.h157
1 files changed, 157 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libtta/ttalib.h b/lib/rbcodec/codecs/libtta/ttalib.h
new file mode 100644
index 0000000000..45da71813a
--- /dev/null
+++ b/lib/rbcodec/codecs/libtta/ttalib.h
@@ -0,0 +1,157 @@
1/*
2 * ttalib.h
3 *
4 * Description: TTAv1 player library prototypes
5 * Developed by: Alexander Djourik <ald@true-audio.com>
6 * Pavel Zhilin <pzh@true-audio.com>
7 *
8 * Copyright (c) 2004 True Audio Software. All rights reserved.
9 *
10 */
11
12/*
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 *
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
19 * 2. Redistributions in binary form must reproduce the above copyright
20 * notice, this list of conditions and the following disclaimer in the
21 * documentation and/or other materials provided with the distribution.
22 * 3. Neither the name of the True Audio Software nor the names of its
23 * contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 */
38
39#ifndef TTALIB_H_
40#define TTALIB_H_
41
42#define MAX_BPS 24 /* Max supported Bit resolution */
43#define MAX_NCH 2 /* Max supported number of channels (Rockbox changes: 8 -> 2) */
44
45#ifndef MAXLINE
46#define MAX_LINE 1024
47#endif
48
49/* decoded pcm sample depth (sample 28bit + sign 1bit) */
50#define TTA_OUTPUT_DEPTH 29
51
52/* return codes */
53#define NO_ERROR 0 /* No errors found */
54#define OPEN_ERROR 1 /* Can't open file */
55#define FORMAT_ERROR 2 /* Unknown TTA format version */
56#define PLAYER_ERROR 3 /* Not supported file format */
57#define FILE_ERROR 4 /* File is corrupted */
58#define READ_ERROR 5 /* Can't read from file */
59#define MEMORY_ERROR 6 /* Insufficient memory available */
60
61/* Rockbox speciffic: does not use FRAME_TIME */
62/* #define FRAME_TIME 1.04489795918367346939 */
63#define MULTIPLY_FRAME_TIME(x) (256 * (x) / 245) /* = FRAME_TIME * x */
64#define SEEK_STEP (int)MULTIPLY_FRAME_TIME(1000) /* (FRAME_TIME * 1000) */
65
66#define ISO_BUFFER_LENGTH (1024*32)
67#define ISO_NBUFFERS (8)
68#define ISO_BUFFERS_SIZE (4096) /* (ISO_BUFFER_LENGTH*ISO_NBUFFERS) */
69#define PCM_BUFFER_LENGTH (4608)
70#define MAX_SEEK_TABLE_SIZE (4096)
71
72typedef struct {
73 /* FILE *HANDLE; // file handle (Rockbox does not use) */
74 unsigned int FILESIZE; /* compressed size */
75 unsigned short NCH; /* number of channels */
76 unsigned short BPS; /* bits per sample */
77 unsigned short BSIZE; /* byte size */
78 unsigned short FORMAT; /* audio format */
79 unsigned int SAMPLERATE; /* samplerate (sps) */
80 unsigned int DATALENGTH; /* data length in samples */
81 unsigned int FRAMELEN; /* frame length */
82 unsigned int LENGTH; /* playback time (sec) */
83 unsigned int STATE; /* return code */
84 unsigned int DATAPOS; /* size of ID3v2 header */
85 unsigned int BITRATE; /* average bitrate (kbps) */
86 /* double COMPRESS; // compression ratio (Rockbox does not use) */
87 /* id3_info ID3; // ID3 information (Rockbox does not use) */
88} tta_info;
89
90enum tta_seek_type
91{
92 TTA_SEEK_TIME,
93 TTA_SEEK_POS,
94};
95
96/*********************** Library functions *************************/
97/* Rockbox speciffic: open_tta_file() does not use */
98
99/* Rockbox speciffic: It is used in place of open_tta_file(). */
100int set_tta_info( // FUNCTION: set tta file info structure
101 tta_info *info); // file info structure
102/*
103 * RETURN VALUE
104 * This function returns 0 if success. Otherwise, -1 is returned
105 * and the variable STATE of the currently using info structure
106 * is set to indicate the error.
107 *
108 */
109
110/* Rockbox speciffic: close_tta_file() does not use */
111
112/* Rockbox speciffic: set_position() change arguments and return value. */
113/*
114 * FUNCTION: sets playback position
115 * pos: seek position
116 * seek_time_ms / SEEK_STEP (when type is TTA_SEEK_TIME)
117 * file position (when type is TTA_SEEK_POS)
118 */
119int set_position (
120 unsigned int pos,
121 enum tta_seek_type type);
122
123/*
124 * RETURN VALUE
125 * This function returns the seeked data position (>= 0) if success. Otherwise, -1 is returned
126 * and the variable STATE of the currently using info structure
127 * is set to indicate the error.
128 *
129 */
130
131int player_init ( // FUNCTION: initializes TTA player
132 tta_info *info); // file info structure
133/*
134 * RETURN VALUE
135 * This function returns 0 if success. Otherwise, -1 is returned
136 * and the variable STATE of the currently using info structure
137 * is set to indicate the error.
138 *
139 */
140
141void player_stop (void); // FUNCTION: destroys memory pools
142
143/* Rockbox speciffic: unsigned char -> int32_t */
144int get_samples ( // FUNCTION: decode PCM_BUFFER_LENGTH samples
145 int32_t *buffer) ICODE_ATTR; // into the current PCM buffer position
146
147/*
148 * RETURN VALUE
149 * This function returns the number of samples successfully decoded.
150 * Otherwise, -1 is returned and the variable STATE of the currently
151 * using info structure is set to indicate the error.
152 *
153 */
154
155const char *get_error_str (int error); // FUNCTION: get error description
156
157#endif /* TTALIB_H_ */