comparison src/Input/aac/mp4ff/mp4ff.h @ 0:13389e613d67 trunk

[svn] - initial import of audacious-plugins tree (lots to do)
author nenolod
date Mon, 18 Sep 2006 01:11:49 -0700
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:13389e613d67
1 /*
2 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
3 ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
4 **
5 ** This program is free software; you can redistribute it and/or modify
6 ** it under the terms of the GNU General Public License as published by
7 ** the Free Software Foundation; either version 2 of the License, or
8 ** (at your option) any later version.
9 **
10 ** This program is distributed in the hope that it will be useful,
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ** GNU General Public License for more details.
14 **
15 ** You should have received a copy of the GNU General Public License
16 ** along with this program; if not, write to the Free Software
17 ** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 **
19 ** Any non-GPL usage of this software or parts of this software is strictly
20 ** forbidden.
21 **
22 ** Commercial non-GPL licensing of this software is possible.
23 ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
24 **
25 ** $Id: mp4ff.h,v 1.19 2004/01/11 15:52:18 menno Exp $
26 **/
27
28 #ifndef MP4FF_H
29 #define MP4FF_H
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif /* __cplusplus */
34
35 #include "mp4ff_int_types.h"
36
37 /* file callback structure */
38 typedef struct
39 {
40 uint32_t (*read)(void *user_data, void *buffer, uint32_t length);
41 uint32_t (*write)(void *udata, void *buffer, uint32_t length);
42 uint32_t (*seek)(void *user_data, uint64_t position);
43 uint32_t (*truncate)(void *user_data);
44 void *user_data;
45 } mp4ff_callback_t;
46
47 /* mp4 main file structure */
48 typedef void* mp4ff_t;
49
50
51 /* API */
52
53 mp4ff_t *mp4ff_open_read(mp4ff_callback_t *f);
54 void mp4ff_close(mp4ff_t *f);
55 int32_t mp4ff_get_sample_duration(const mp4ff_t *f, const int32_t track, const int32_t sample);
56 int32_t mp4ff_get_sample_duration_use_offsets(const mp4ff_t *f, const int32_t track, const int32_t sample);
57 int64_t mp4ff_get_sample_position(const mp4ff_t *f, const int32_t track, const int32_t sample);
58 int32_t mp4ff_get_sample_offset(const mp4ff_t *f, const int32_t track, const int32_t sample);
59 int32_t mp4ff_find_sample(const mp4ff_t *f, const int32_t track, const int64_t offset,int32_t * toskip);
60 int32_t mp4ff_find_sample_use_offsets(const mp4ff_t *f, const int32_t track, const int64_t offset,int32_t * toskip);
61
62 int32_t mp4ff_read_sample(mp4ff_t *f, const int track, const int sample,
63 unsigned char **audio_buffer, unsigned int *bytes);
64
65 int32_t mp4ff_read_sample_v2(mp4ff_t *f, const int track, const int sample,unsigned char *buffer);//returns 0 on error, number of bytes read on success, use mp4ff_read_sample_getsize() to check buffer size needed
66 int32_t mp4ff_read_sample_getsize(mp4ff_t *f, const int track, const int sample);//returns 0 on error, buffer size needed for mp4ff_read_sample_v2() on success
67
68
69
70 int32_t mp4ff_get_decoder_config(const mp4ff_t *f, const int track,
71 unsigned char** ppBuf, unsigned int* pBufSize);
72 int32_t mp4ff_get_track_type(const mp4ff_t *f, const int track);
73 int32_t mp4ff_total_tracks(const mp4ff_t *f);
74 int32_t mp4ff_num_samples(const mp4ff_t *f, const int track);
75 int32_t mp4ff_time_scale(const mp4ff_t *f, const int track);
76
77 uint32_t mp4ff_get_avg_bitrate(const mp4ff_t *f, const int32_t track);
78 uint32_t mp4ff_get_max_bitrate(const mp4ff_t *f, const int32_t track);
79 int64_t mp4ff_get_track_duration(const mp4ff_t *f, const int32_t track); //returns (-1) if unknown
80 int64_t mp4ff_get_track_duration_use_offsets(const mp4ff_t *f, const int32_t track); //returns (-1) if unknown
81 uint32_t mp4ff_get_sample_rate(const mp4ff_t *f, const int32_t track);
82 uint32_t mp4ff_get_channel_count(const mp4ff_t * f,const int32_t track);
83 uint32_t mp4ff_get_audio_type(const mp4ff_t * f,const int32_t track);
84
85
86 /* metadata */
87 int mp4ff_meta_get_num_items(const mp4ff_t *f);
88 int mp4ff_meta_get_by_index(const mp4ff_t *f, unsigned int index,
89 char **item, char **value);
90 int mp4ff_meta_get_title(const mp4ff_t *f, char **value);
91 int mp4ff_meta_get_artist(const mp4ff_t *f, char **value);
92 int mp4ff_meta_get_writer(const mp4ff_t *f, char **value);
93 int mp4ff_meta_get_album(const mp4ff_t *f, char **value);
94 int mp4ff_meta_get_date(const mp4ff_t *f, char **value);
95 int mp4ff_meta_get_tool(const mp4ff_t *f, char **value);
96 int mp4ff_meta_get_comment(const mp4ff_t *f, char **value);
97 int mp4ff_meta_get_genre(const mp4ff_t *f, char **value);
98 int mp4ff_meta_get_track(const mp4ff_t *f, char **value);
99 int mp4ff_meta_get_disc(const mp4ff_t *f, char **value);
100 int mp4ff_meta_get_compilation(const mp4ff_t *f, char **value);
101 int mp4ff_meta_get_tempo(const mp4ff_t *f, char **value);
102 int32_t mp4ff_meta_get_coverart(const mp4ff_t *f, char **value);
103 #ifdef USE_TAGGING
104
105 /* metadata tag structure */
106 typedef struct
107 {
108 char *item;
109 char *value;
110 } mp4ff_tag_t;
111
112 /* metadata list structure */
113 typedef struct
114 {
115 mp4ff_tag_t *tags;
116 uint32_t count;
117 } mp4ff_metadata_t;
118
119 int32_t mp4ff_meta_update(mp4ff_callback_t *f,const mp4ff_metadata_t * data);
120
121 #endif
122
123
124 #ifdef __cplusplus
125 }
126 #endif /* __cplusplus */
127
128 #endif
129