From e3abdb1a52a2e9ae7469a6ce1b0e5900ac58d89b Mon Sep 17 00:00:00 2001 From: Andree Buschmann Date: Tue, 15 Feb 2011 20:10:50 +0000 Subject: Undo unwanted commit r29310. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29311 a1c6a512-1295-4272-9138-f99709370657 --- apps/menus/main_menu.c | 2 +- apps/metadata/id3tags.c | 12 ++++-------- apps/metadata/metadata_common.c | 5 +---- apps/metadata/mp4.c | 31 +++++++++++++++++-------------- apps/plugins/SOURCES | 2 +- apps/plugins/test_codec.c | 3 ++- apps/screens.c | 2 +- apps/talk.c | 12 +++++++----- apps/talk.h | 3 ++- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c index 6ee7ba4156..902e14b819 100644 --- a/apps/menus/main_menu.c +++ b/apps/menus/main_menu.c @@ -303,7 +303,7 @@ static int info_speak_item(int selected_item, void * data) { talk_id(LANG_BATTERY_TIME, false); talk_value(battery_level(), UNIT_PERCENT, true); - talk_value(battery_time() *60, UNIT_TIME, true); + talk_value(battery_time() *60, UNIT_TIME_EXACT, true); } else talk_id(VOICE_BLANK, false); break; diff --git a/apps/metadata/id3tags.c b/apps/metadata/id3tags.c index 9143f8ad25..9ee183a1b3 100644 --- a/apps/metadata/id3tags.c +++ b/apps/metadata/id3tags.c @@ -358,7 +358,8 @@ static int parseuser( struct mp3entry* entry, char* tag, int bufferpos ) if ((tag - entry->id3v2buf + desc_len + 2) < bufferpos) { /* At least part of the value was read, so we can safely try to - * parse it */ + * parse it + */ value = tag + desc_len + 1; value_len = bufferpos - (tag - entry->id3v2buf); @@ -367,7 +368,8 @@ static int parseuser( struct mp3entry* entry, char* tag, int bufferpos ) entry->albumartist = tag; #if CONFIG_CODEC == SWCODEC } else { - value_len = parse_replaygain(tag, value, entry, tag, value_len); + value_len = parse_replaygain(tag, value, entry, tag, + value_len); #endif } } @@ -1038,12 +1040,6 @@ void setid3v2title(int fd, struct mp3entry *entry) #endif if( tr->ppFunc ) bufferpos = tr->ppFunc(entry, tag, bufferpos); - - /* Trim. Take into account that multiple string contents will - * only be displayed up to their first null termination. All - * content after this null termination is obsolete and can be - * overwritten. */ - bufferpos -= (bytesread - strlen(tag)); /* Seek to the next frame */ if(framelen < totframelen) diff --git a/apps/metadata/metadata_common.c b/apps/metadata/metadata_common.c index 4f001775f3..e1ef9a0d62 100644 --- a/apps/metadata/metadata_common.c +++ b/apps/metadata/metadata_common.c @@ -337,10 +337,7 @@ long parse_tag(const char* name, char* value, struct mp3entry* id3, p = NULL; } - /* Do not overwrite already available metadata. Especially when reading - * tags with e.g. multiple genres / artists. This way only the first - * of multiple entries is used, all following are dropped. */ - if (p!=NULL && *p==NULL) + if (p) { len = strlen(value); len = MIN(len, buf_remaining - 1); diff --git a/apps/metadata/mp4.c b/apps/metadata/mp4.c index 26ab7cc30a..1ef3701e30 100644 --- a/apps/metadata/mp4.c +++ b/apps/metadata/mp4.c @@ -73,6 +73,9 @@ #define MP4_udta FOURCC('u', 'd', 't', 'a') #define MP4_extra FOURCC('-', '-', '-', '-') +/* Used to correct id3->samples, if SBR upsampling was detected in esds atom. */ +static bool SBR_upsampling_used = false; + /* Read the tag data from an MP4 file, storing up to buffer_size bytes in * buffer. */ @@ -117,17 +120,11 @@ static unsigned int read_mp4_tag_string(int fd, int size_left, char** buffer, if (bytes_read) { - /* Do not overwrite already available metadata. Especially when reading - * tags with e.g. multiple genres / artists. This way only the first - * of multiple entries is used, all following are dropped. */ - if (*dest == NULL) - { - (*buffer)[bytes_read] = 0; - *dest = *buffer; - length = strlen(*buffer) + 1; - *buffer_left -= length; - *buffer += length; - } + (*buffer)[bytes_read] = 0; + *dest = *buffer; + length = strlen(*buffer) + 1; + *buffer_left -= length; + *buffer += length; } else { @@ -346,6 +343,11 @@ static bool read_mp4_esds(int fd, struct mp3entry* id3, uint32_t* size) * decoding (parts of) the file. */ id3->frequency *= 2; + + /* Set this to true to be able to calculate the correct runtime + * and bitrate. */ + SBR_upsampling_used = true; + sbr = true; } } @@ -638,7 +640,7 @@ static bool read_mp4_container(int fd, struct mp3entry* id3, unsigned int i; /* Reset to false. */ - id3->needs_upsampling_correction = false; + id3->needs_upsampling_correction = true; lseek(fd, 4, SEEK_CUR); read_uint32be(fd, &entries); @@ -652,12 +654,12 @@ static bool read_mp4_container(int fd, struct mp3entry* id3, read_uint32be(fd, &n); read_uint32be(fd, &l); - /* Some AAC file use HE profile. In this case the number + /* Some SBR files use upsampling. In this case the number * of output samples is doubled to a maximum of 2048 * samples per frame. This means that files which already * report a frame size of 2048 in their header will not * need any further special handling. */ - if (id3->codectype==AFMT_MP4_AAC_HE && l<=1024) + if (SBR_upsampling_used && l<=1024) { id3->samples += n * l * 2; id3->needs_upsampling_correction = true; @@ -772,6 +774,7 @@ static bool read_mp4_container(int fd, struct mp3entry* id3, bool get_mp4_metadata(int fd, struct mp3entry* id3) { + SBR_upsampling_used = false; id3->codectype = AFMT_UNKNOWN; id3->filesize = 0; errno = 0; diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES index 4d7434d771..7afd97309f 100644 --- a/apps/plugins/SOURCES +++ b/apps/plugins/SOURCES @@ -217,7 +217,7 @@ superdom.c -#if 1//#ifdef HAVE_TEST_PLUGINS /* enable in advanced build options */ +#ifdef HAVE_TEST_PLUGINS /* enable in advanced build options */ #ifdef HAVE_ADJUSTABLE_CPU_FREQ test_boost.c #endif diff --git a/apps/plugins/test_codec.c b/apps/plugins/test_codec.c index 56aedda1c8..9b00fdbb95 100644 --- a/apps/plugins/test_codec.c +++ b/apps/plugins/test_codec.c @@ -883,7 +883,8 @@ menu: boost_settings, 2, NULL); goto menu; } - rb->cpu_boost(boost ? true: false); + if(boost) + rb->cpu_boost(true); #endif if (result == QUIT) diff --git a/apps/screens.c b/apps/screens.c index 81472e6cc7..a11c4333ea 100644 --- a/apps/screens.c +++ b/apps/screens.c @@ -805,7 +805,7 @@ static int runtime_speak_data(int selected_item, void* data) talk_ids(false, (selected_item < 2) ? LANG_RUNNING_TIME : LANG_TOP_TIME, TALK_ID((selected_item < 2) ? global_status.runtime - : global_status.topruntime, UNIT_TIME)); + : global_status.topruntime, UNIT_TIME_EXACT)); return 0; } diff --git a/apps/talk.c b/apps/talk.c index 8c0f1f3a07..5fddf85986 100644 --- a/apps/talk.c +++ b/apps/talk.c @@ -1015,7 +1015,7 @@ int talk_number(long n, bool enqueue) /* Say time duration/interval. Input is time in seconds, say hours,minutes,seconds. */ -static int talk_time_unit(long secs, bool enqueue) +static int talk_time_unit(long secs, bool exact, bool enqueue) { int hours, mins; if (!enqueue) @@ -1026,9 +1026,11 @@ static int talk_time_unit(long secs, bool enqueue) } if((mins = secs/60)) { secs %= 60; - talk_value(mins, UNIT_MIN, true); + if(exact || !hours) + talk_value(mins, UNIT_MIN, true); + else talk_number(mins, true); /* don't say "minutes" */ } - if((secs) || (!hours && !mins)) + if((exact && secs) || (!hours && !mins)) talk_value(secs, UNIT_SEC, true); else if(!hours && secs) talk_number(secs, true); @@ -1108,8 +1110,8 @@ int talk_value_decimal(long n, int unit, int decimals, bool enqueue) #endif /* special case for time duration */ - if (unit == UNIT_TIME) - return talk_time_unit(n, enqueue); + if (unit == UNIT_TIME || unit == UNIT_TIME_EXACT) + return talk_time_unit(n, unit == UNIT_TIME_EXACT, enqueue); if (unit < 0 || unit >= UNIT_LAST) unit_id = -1; diff --git a/apps/talk.h b/apps/talk.h index a2a9f44e4e..fc1bfe5a2d 100644 --- a/apps/talk.h +++ b/apps/talk.h @@ -50,7 +50,8 @@ enum { UNIT_MB, /* Megabytes */ UNIT_KBIT, /* kilobits per sec */ UNIT_PM_TICK, /* peak meter units per tick */ - UNIT_TIME, /* time duration/interval in seconds, says hours,mins,secs */ + UNIT_TIME_EXACT,/* time duration/interval in seconds, says hours,mins,secs*/ + UNIT_TIME, /* as above but less verbose */ UNIT_LAST /* END MARKER */ }; -- cgit v1.2.3