improve resolution stream-length-in-millisecond calculation
authorJosh Coalson <jcoalson@users.sourceforce.net>
Wed, 26 Jan 2005 03:19:29 +0000 (03:19 +0000)
committerJosh Coalson <jcoalson@users.sourceforce.net>
Wed, 26 Jan 2005 03:19:29 +0000 (03:19 +0000)
src/plugin_winamp2/in_flac.c
src/plugin_winamp2/playback.c
src/plugin_xmms/plugin.c

index d6f1640..ed41dbb 100644 (file)
@@ -307,7 +307,7 @@ static void getfileinfo(char *filename, char *title, int *length_in_msec)
                filename = lastfn_;\r
                if (length_in_msec)\r
                {\r
-                       *length_in_msec = file_info_.length_in_msec;\r
+                       *length_in_msec = (int)file_info_.length_in_msec;\r
                        length_in_msec  = 0;    /* force skip in following code */\r
                }\r
        }\r
@@ -327,7 +327,7 @@ static void getfileinfo(char *filename, char *title, int *length_in_msec)
        }\r
 \r
        if (length_in_msec)\r
-               *length_in_msec = (int)(streaminfo.data.stream_info.total_samples*10 / (streaminfo.data.stream_info.sample_rate/100));\r
+               *length_in_msec = (int)((double)streaminfo.data.stream_info.total_samples / (double)streaminfo.data.stream_info.sample_rate * 1000.0 + 0.5);\r
 }\r
 \r
 /*\r
index ef510f7..9648c34 100644 (file)
@@ -72,7 +72,7 @@ static void metadata_callback(const FLAC__FileDecoder *decoder, const FLAC__Stre
                        file_info->abort_flag = true;\r
                        return;\r
                }\r
-               file_info->length_in_msec = file_info->total_samples * 10 / (file_info->sample_rate / 100);\r
+               file_info->length_in_msec = (unsigned)((double)file_info->total_samples / (double)file_info->sample_rate * 1000.0 + 0.5);\r
        }\r
        else if (metadata->type == FLAC__METADATA_TYPE_VORBIS_COMMENT)\r
        {\r
index c6020c5..62bdc24 100644 (file)
@@ -440,7 +440,7 @@ void FLAC_XMMS__get_song_info(char *filename, char **title, int *length_in_msec)
                *title = flac_format_song_title(filename);
        }
        if(length_in_msec)
-               *length_in_msec = streaminfo.data.stream_info.total_samples * 10 / (streaminfo.data.stream_info.sample_rate / 100);
+               *length_in_msec = (unsigned)((double)streaminfo.data.stream_info.total_samples / (double)streaminfo.data.stream_info.sample_rate * 1000.0 + 0.5);
 }
 
 /***********************************************************************
@@ -794,7 +794,7 @@ void metadata_callback_(const void *decoder, const FLAC__StreamMetadata *metadat
                file_info->bits_per_sample = metadata->data.stream_info.bits_per_sample;
                file_info->channels = metadata->data.stream_info.channels;
                file_info->sample_rate = metadata->data.stream_info.sample_rate;
-               file_info->length_in_msec = (FLAC__uint64)file_info->total_samples * 10 / (file_info->sample_rate / 100);
+               file_info->length_in_msec = (unsigned)((double)file_info->total_samples / (double)file_info->sample_rate * 1000.0 + 0.5);
        }
        else if(metadata->type == FLAC__METADATA_TYPE_VORBIS_COMMENT) {
                double gain, peak;