From d1bca9759de16fb07e5a418c3e222eb114581e51 Mon Sep 17 00:00:00 2001 From: Sean Bartell Date: Fri, 12 Aug 2011 01:27:13 -0400 Subject: [PATCH 5/6] rbcodec refactoring: get_audio_base_data_type --- apps/playback.c | 9 ++++----- lib/rbcodec/metadata/metadata.c | 12 ++++-------- lib/rbcodec/metadata/metadata.h | 2 +- lib/rbcodec/test/warble.c | 2 +- 4 files changed, 10 insertions(+), 15 deletions(-) diff --git a/apps/playback.c b/apps/playback.c index 3f6ee71..febf137 100644 --- a/apps/playback.c +++ b/apps/playback.c @@ -869,7 +869,7 @@ static void audio_update_filebuf_watermark(int seconds) if (id3) { - if (get_audio_base_data_type(id3->codectype) == TYPE_PACKET_AUDIO) + if (!audio_format_is_atomic(id3->codectype)) { bytes = id3->bitrate * (1000/8) * seconds; } @@ -1786,7 +1786,8 @@ static int audio_finish_load_track(struct track_info *info) calls it again, so we don't save it (and they shouldn't accumulate) */ size_t offset = resume_rewind_adjusted_offset(track_id3); - enum data_type audiotype = get_audio_base_data_type(track_id3->codectype); + enum data_type audiotype = audio_format_is_atomic(track_id3->codectype) ? + TYPE_ATOMIC_AUDIO : TYPE_PACKET_AUDIO; if (audiotype == TYPE_ATOMIC_AUDIO) logf("Loading atomic %d", track_id3->codectype); @@ -2248,9 +2249,7 @@ static void audio_on_codec_complete(int status) struct mp3entry *track_id3 = bufgetid3(info->id3_hid); - if (track_id3 && - get_audio_base_data_type(track_id3->codectype) - == TYPE_PACKET_AUDIO) + if (track_id3 && !audio_format_is_atomic(track_id3->codectype)) { /* Continue filling after this track */ audio_reset_and_rebuffer(TRACK_LIST_KEEP_CURRENT, 1); diff --git a/lib/rbcodec/metadata/metadata.c b/lib/rbcodec/metadata/metadata.c index e3f97bd..0db41df 100644 --- a/lib/rbcodec/metadata/metadata.c +++ b/lib/rbcodec/metadata/metadata.c @@ -305,10 +305,10 @@ int get_audio_base_codec_type(int type) } /* Get the basic audio type */ -enum data_type get_audio_base_data_type(int afmt) +bool audio_format_is_atomic(int afmt) { if ((unsigned)afmt >= AFMT_NUM_CODECS) - return TYPE_UNKNOWN; + return false; switch (get_audio_base_codec_type(afmt)) { @@ -325,15 +325,11 @@ enum data_type get_audio_base_data_type(int afmt) case AFMT_KSS: /* Type must be allocated and loaded in its entirety onto the buffer */ - return TYPE_ATOMIC_AUDIO; + return true; default: /* Assume type may be loaded and discarded incrementally */ - return TYPE_PACKET_AUDIO; - - case AFMT_UNKNOWN: - /* Have no idea at all */ - return TYPE_UNKNOWN; + return false; } } diff --git a/lib/rbcodec/metadata/metadata.h b/lib/rbcodec/metadata/metadata.h index e1f30c1..109febb 100644 --- a/lib/rbcodec/metadata/metadata.h +++ b/lib/rbcodec/metadata/metadata.h @@ -324,7 +324,7 @@ void wipe_mp3entry(struct mp3entry *id3); void fill_metadata_from_path(struct mp3entry *id3, const char *trackname); int get_audio_base_codec_type(int type); void strip_tags(int handle_id); -enum data_type get_audio_base_data_type(int afmt); +bool audio_format_is_atomic(int afmt); bool format_buffers_with_offset(int afmt); #endif diff --git a/lib/rbcodec/test/warble.c b/lib/rbcodec/test/warble.c index 8d239bf..3b0a956 100644 --- a/lib/rbcodec/test/warble.c +++ b/lib/rbcodec/test/warble.c @@ -464,7 +464,7 @@ static size_t ci_read_filebuf(void *ptr, size_t size) static void *ci_request_buffer(size_t *realsize, size_t reqsize) { free(input_buffer); - if (get_audio_base_data_type(ci.id3->codectype) == TYPE_PACKET_AUDIO) + if (!audio_format_is_atomic(ci.id3->codectype)) reqsize = MIN(reqsize, 32 * 1024); input_buffer = malloc(reqsize); *realsize = read(input_fd, input_buffer, reqsize); -- 1.7.6