return -E_STSZ;
}
-static ssize_t aac_compute_chunk_table(struct audio_format_info *afi,
+static ssize_t aac_compute_chunk_table(struct afh_info *afi,
unsigned char *map, size_t numbytes)
{
int ret, i;
return skip;
}
-static int aac_set_chunk_tv(struct audio_format_info *afi,
+static int aac_set_chunk_tv(struct afh_info *afi,
mp4AudioSpecificConfig *mp4ASC, long unsigned *seconds)
{
float tmp = mp4ASC->sbr_present_flag == 1? 2047 : 1023;
* Init m4a file and write some tech data to given pointers.
*/
static int aac_get_file_info(char *map, size_t numbytes,
- struct audio_format_info *afi)
+ struct afh_info *afi)
{
int i;
size_t skip;
* Audio format dependent information. Details vary between each audio format
* handler.
*/
-struct audio_format_info {
+struct afh_info {
/** The number of chunks this audio file contains. */
long unsigned chunks_total;
/** The length of the audio file in seconds. */
* valid for this audio format. A negative return value indicates that
* this audio format handler is unable to decode the given file. On
* success, the function must return a positive value and fill in the
- * given struct audio_format_info.
+ * given struct afh_info.
*
- * \sa struct audio_format_info
+ * \sa struct afh_info
*/
int (*get_file_info)(char *map, size_t numbytes,
- struct audio_format_info *afi);
+ struct afh_info *afi);
};
void afh_init(void);
int guess_audio_format(const char *name);
int compute_afhi(const char *path, char *data, size_t size,
- struct audio_format_info *afhi);
+ struct afh_info *afhi);
const char *audio_format_name(int);
* one is found that can handle the file.
*/
int compute_afhi(const char *path, char *data, size_t size,
- struct audio_format_info *afhi)
+ struct afh_info *afhi)
{
int ret, i, format = guess_audio_format(path);
int fd;
long score;
struct afs_info afsi;
- struct audio_format_info afhi;
+ struct afh_info afhi;
};
enum afs_server_code {
int load_afsi(struct afs_info *afsi, struct osl_object *obj);
void save_afsi(struct afs_info *afsi, struct osl_object *obj);
int get_afsi_of_row(const struct osl_row *row, struct afs_info *afsi);
-int get_afhi_of_row(const struct osl_row *row, struct audio_format_info *afhi);
+int get_afhi_of_row(const struct osl_row *row, struct afh_info *afhi);
int get_afsi_of_path(const char *path, struct afs_info *afsi);
int get_audio_file_path_of_row(const struct osl_row *row, char **path);
int get_afsi_object_of_row(const struct osl_row *row, struct osl_object *obj);
/** Data passed to the different compare functions (called by qsort()). */
struct ls_data {
/** Usual audio format handler information. */
- struct audio_format_info afhi;
+ struct afh_info afhi;
/** Audio file selector information. */
struct afs_info afsi;
/** The full path of the audio file. */
MIN_AFHI_SIZE = 14
};
-static unsigned sizeof_afhi_buf(const struct audio_format_info *afhi)
+static unsigned sizeof_afhi_buf(const struct afh_info *afhi)
{
if (!afhi)
return 0;
return strlen(afhi->info_string) + MIN_AFHI_SIZE;
}
-static void save_afhi(struct audio_format_info *afhi, char *buf)
+static void save_afhi(struct afh_info *afhi, char *buf)
{
if (!afhi)
return;
PARA_DEBUG_LOG("last byte written: %p\n", buf + AFHI_INFO_STRING_OFFSET + strlen(afhi->info_string));
}
-static void load_afhi(const char *buf, struct audio_format_info *afhi)
+static void load_afhi(const char *buf, struct afh_info *afhi)
{
afhi->seconds_total = read_u32(buf + AFHI_SECONDS_TOTAL_OFFSET);
afhi->bitrate = read_u32(buf + AFHI_BITRATE_OFFSET);
//#define SIZEOF_CHUNK_TABLE(afhi) (((afhi)->chunks_total + 1) * sizeof(uint32_t))
-static unsigned sizeof_chunk_info_buf(struct audio_format_info *afhi)
+static unsigned sizeof_chunk_info_buf(struct afh_info *afhi)
{
if (!afhi)
return 0;
CHUNK_TABLE_OFFSET = 20,
};
-static void save_chunk_table(struct audio_format_info *afhi, char *buf)
+static void save_chunk_table(struct afh_info *afhi, char *buf)
{
int i;
write_u32(buf + 4 * i, afhi->chunk_table[i]);
}
-static void load_chunk_table(struct audio_format_info *afhi, char *buf)
+static void load_chunk_table(struct afh_info *afhi, char *buf)
{
int i;
for (i = 0; i <= afhi->chunks_total; i++)
}
/* TODO: audio format handlers could just produce this */
-static void save_chunk_info(struct audio_format_info *afhi, char *buf)
+static void save_chunk_info(struct afh_info *afhi, char *buf)
{
if (!afhi)
return;
save_chunk_table(afhi, buf + CHUNK_TABLE_OFFSET);
}
-static int load_chunk_info(struct osl_object *obj, struct audio_format_info *afhi)
+static int load_chunk_info(struct osl_object *obj, struct afh_info *afhi)
{
char *buf = obj->data;
*
* \sa get_chunk_table_of_row().
*/
-int get_afhi_of_row(const struct osl_row *row, struct audio_format_info *afhi)
+int get_afhi_of_row(const struct osl_row *row, struct afh_info *afhi)
{
struct osl_object obj;
int ret = osl_get_object(audio_file_table, row, AFTCOL_AFHI,
char duration_buf[30]; /* nobody has an audio file long enough to overflow this */
char score_buf[30] = "";
struct afs_info *afsi = &d->afsi;
- struct audio_format_info *afhi = &d->afhi;
+ struct afh_info *afhi = &d->afhi;
struct ls_widths *w = &opts->widths;
int have_score = opts->flags & LS_FLAG_ADMISSIBLE_ONLY;
char asc_hash[2 * HASH_SIZE + 1];
/* never save the afsi, as the server knows it too. Note that afhi might be NULL.
* In this case, afhi won't be stored in the buffer */
static void save_audio_file_info(HASH_TYPE *hash, const char *path,
- struct audio_format_info *afhi, uint32_t flags,
+ struct afh_info *afhi, uint32_t flags,
uint8_t audio_format_num, struct osl_object *obj)
{
size_t path_len = strlen(path) + 1;
int ret, ret2;
uint8_t format_num = -1;
const struct private_add_data *pad = private_data;
- struct audio_format_info afhi, *afhi_ptr = NULL;
+ struct afh_info afhi, *afhi_ptr = NULL;
struct osl_row *pb = NULL, *hs = NULL; /* path brother/hash sister */
struct osl_object map, obj = {.data = NULL}, query, result = {.data = NULL};
HASH_TYPE hash[HASH_SIZE];
* \sa struct mood_method, mood_parser.
*/
typedef int mood_score_function(const char *path, const struct afs_info *afsi,
- const struct audio_format_info *afhi, const void *data);
+ const struct afh_info *afhi, const void *data);
/**
* Pre-process a mood line.
static int mm_no_attributes_set_score_function(__a_unused const char *path,
const struct afs_info *afsi,
- __a_unused const struct audio_format_info *afhi,
+ __a_unused const struct afh_info *afhi,
__a_unused const void *data)
{
if (!afsi->attributes)
static int mm_played_rarely_score_function(__a_unused const char *path,
const struct afs_info *afsi,
- __a_unused const struct audio_format_info *afhi,
+ __a_unused const struct afh_info *afhi,
__a_unused const void *data)
{
unsigned num;
static int mm_name_like_score_function(const char *path,
__a_unused const struct afs_info *afsi,
- __a_unused const struct audio_format_info *afhi,
+ __a_unused const struct afh_info *afhi,
const void *data)
{
if (fnmatch(data, path, 0))
static int mm_is_set_score_function(__a_unused const char *path,
__a_unused const struct afs_info *afsi,
- __a_unused const struct audio_format_info *afhi,
+ __a_unused const struct afh_info *afhi,
const void *data)
{
const unsigned char *bn = data;
long *score_arg_sum)
{
struct afs_info afsi;
- struct audio_format_info afhi;
+ struct afh_info afhi;
char *path;
int ret;
+ header->padding;
}
-static void write_info_str(struct audio_format_info *afi)
+static void write_info_str(struct afh_info *afi)
{
int v = mp3.id3_isvalid;
}
static int mp3_read_info(unsigned char *map, size_t numbytes,
- struct audio_format_info *afi)
+ struct afh_info *afi)
{
long fl_avg = 0, freq_avg = 0, br_avg = 0;
int ret, len = 0, old_br = -1;
* Read mp3 information from audio file
*/
int mp3_get_file_info(char *map, size_t numbytes,
- struct audio_format_info *afi)
+ struct afh_info *afi)
{
int ret;
}
static int ogg_compute_header_len(char *map, size_t numbytes,
- struct audio_format_info *afi)
+ struct afh_info *afi)
{
int ret;
size_t len = PARA_MIN(numbytes, CHUNK_SIZE);
* CHUNK_TIME begins. Always successful.
*/
static long unsigned ogg_compute_chunk_table(OggVorbis_File *of,
- struct audio_format_info *afi, long unsigned time_total)
+ struct afh_info *afi, long unsigned time_total)
{
int i, ret, num;
ssize_t max_chunk_len, pos = 0, min = 0, old_pos;
* Init oggvorbis file and write some tech data to given pointers.
*/
static int ogg_get_file_info(char *map, size_t numbytes,
- struct audio_format_info *afi)
+ struct afh_info *afi)
{
int ret;
vorbis_info *vi;
* - dccp: \ref dccp_recv.c, \ref dccp_send.c,
* - Audio file selector: \ref afs.c, \ref aft.c, \ref mood.c,
* - Afs structures: \ref afs_table, \ref audio_file_data,
- * \ref afs_info \ref audio_format_info,
+ * \ref afs_info \ref afh_info,
* - Afs tables: \ref aft.c, \ref mood.c, \ref playlist.c,
* \ref attribute.c, \ref score.c,
* - The virtual streaming system: \ref vss.c, \ref chunk_queue.c.
return tv;
if (!map && vss_playing() &&
!(mmd->new_vss_status_flags & VSS_NOMORE)) {
- PARA_DEBUG_LOG("%s", "ready and playing, but no audio file\n");
+ PARA_DEBUG_LOG("ready and playing, but no audio file\n");
if (afsss == AFS_SOCKET_READY) {
para_fd_set(afs_socket, wfds, max_fileno);
afsss = AFS_SOCKET_CHECK_FOR_WRITE;