X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=afh.c;h=aa6570e1abc33bfe38e9ce87bf87316707263473;hp=8279c577b9afde0354b2a9b8a8f6744c83523905;hb=686310d4b954efec5d5dcc8b4a143c294bb02739;hpb=37fa57410c415be3b00d99c373b004959c6586fe diff --git a/afh.c b/afh.c index 8279c577..aa6570e1 100644 --- a/afh.c +++ b/afh.c @@ -1,8 +1,4 @@ -/* - * Copyright (C) 2008 Andre Noll - * - * Licensed under the GPL v2. For licencing details see COPYING. - */ +/* Copyright (C) 2008 Andre Noll , see file COPYING. */ /** \file afh.c Paraslash's standalone audio format handler tool. */ @@ -20,7 +16,7 @@ /** Array of error strings. */ DEFINE_PARA_ERRLIST; -struct lls_parse_result *lpr; +static struct lls_parse_result *lpr; #define CMD_PTR (lls_cmd(0, afh_suite)) #define OPT_RESULT(_name) (lls_opt_result(LSG_AFH_PARA_AFH_OPT_ ## _name, lpr)) @@ -135,29 +131,38 @@ static void print_info(int audio_format_num, struct afh_info *afhi) free(msg); } -static void print_chunk_table(struct afh_info *afhi) +static void print_chunk_table(struct afh_info *afhi, int audio_format_id, + const void *map, size_t mapsize) { - int i; + int i, ret; + void *ctx = NULL; - if (OPT_GIVEN(PARSER_FRIENDLY)) { - printf("chunk_table: "); - for (i = 0; i <= afhi->chunks_total; i++) - printf("%u ", afhi->chunk_table[i]); - printf("\n"); - return; - } - for (i = 1; i <= afhi->chunks_total; i++) { + for (i = 0; i < afhi->chunks_total; i++) { struct timeval tv; long unsigned from, to; - tv_scale(i - 1, &afhi->chunk_tv, &tv); - from = tv2ms(&tv); + const char *buf; + size_t len; tv_scale(i, &afhi->chunk_tv, &tv); + from = tv2ms(&tv); + tv_scale(i + 1, &afhi->chunk_tv, &tv); to = tv2ms(&tv); - printf("%d [%lu.%03lu - %lu.%03lu] %u - %u (%u)\n", i - 1, - from / 1000, from % 1000, to / 1000, to % 1000, - afhi->chunk_table[i - 1], afhi->chunk_table[i], - afhi->chunk_table[i] - afhi->chunk_table[i - 1]); + ret = afh_get_chunk(i, afhi, audio_format_id, map, mapsize, + &buf, &len, &ctx); + if (ret < 0) { + PARA_ERROR_LOG("fatal: chunk %d: %s\n", i, + para_strerror(-ret)); + return; + } + if (!OPT_GIVEN(PARSER_FRIENDLY)) + printf("%d [%lu.%03lu - %lu.%03lu] ", i, from / 1000, + from % 1000, to / 1000, to % 1000); + printf("%td - %td", buf - (const char *)map, + buf + len - (const char *)map); + if (!OPT_GIVEN(PARSER_FRIENDLY)) + printf(" (%zu)", len); + printf("\n"); } + afh_close(ctx, audio_format_id); } static void handle_help_flags(void) @@ -219,8 +224,8 @@ int main(int argc, char **argv) printf("File %d: %s\n", i + 1, path); print_info(audio_format_num, &afhi); if (OPT_GIVEN(CHUNK_TABLE)) - print_chunk_table(&afhi); - printf("\n"); + print_chunk_table(&afhi, audio_format_num, + audio_file_data, audio_file_size); } clear_afhi(&afhi); }