# HG changeset patch # User nenolod # Date 1150426529 25200 # Node ID a1bd63b7b24ff3c6b11ea59aba8b83207380545b # Parent bf0664762d4afa87ebbeac96b8e91946f3a55c1f [svn] - complete tuple for AAC files (tuple->length) diff -r bf0664762d4a -r a1bd63b7b24f ChangeLog --- a/ChangeLog Thu Jun 15 19:06:40 2006 -0700 +++ b/ChangeLog Thu Jun 15 19:55:29 2006 -0700 @@ -1,3 +1,12 @@ +2006-06-16 02:06:40 +0000 William Pitcock + revision [1434] + - remove unused code (causes a crash on some GTKs, eww!) + + + Changes: Modified: + +1 -4 trunk/Plugins/Input/mpg123/configure.c + + 2006-06-16 01:41:54 +0000 William Pitcock revision [1432] - I hate libflac's inconsistent API! diff -r bf0664762d4a -r a1bd63b7b24f Plugins/Input/aac/src/libmp4.c --- a/Plugins/Input/aac/src/libmp4.c Thu Jun 15 19:06:40 2006 -0700 +++ b/Plugins/Input/aac/src/libmp4.c Thu Jun 15 19:55:29 2006 -0700 @@ -285,7 +285,43 @@ g_free(mp4cb); vfs_fclose(mp4fh); } else { + gint mp4track= getAACTrack(mp4file); + gint numSamples = mp4ff_num_samples(mp4file, mp4track); + guint framesize = 1024; + gulong samplerate; + gchar channels; + gint msDuration; + mp4AudioSpecificConfig mp4ASC; gchar *tmpval; + guchar *buffer = NULL; + guint bufferSize = 0; + faacDecHandle decoder; + + decoder = faacDecOpen(); + mp4ff_get_decoder_config(mp4file, mp4track, &buffer, &bufferSize); + + if ( !buffer ) { + faacDecClose(decoder); + return FALSE; + } + if ( faacDecInit2(decoder, buffer, bufferSize, + &samplerate, &channels) < 0 ) { + faacDecClose(decoder); + + return FALSE; + } + + /* Add some hacks for SBR profile */ + if (AudioSpecificConfig(buffer, bufferSize, &mp4ASC) >= 0) { + if (mp4ASC.frameLengthFlag == 1) framesize = 960; + if (mp4ASC.sbr_present_flag == 1) framesize *= 2; + } + + g_free(buffer); + + faacDecClose(decoder); + + msDuration = ((float)numSamples * (float)(framesize - 1.0)/(float)samplerate) * 1000; input = bmp_title_input_new(); @@ -304,6 +340,7 @@ input->file_name = g_path_get_basename(filename); input->file_path = g_path_get_dirname(filename); input->file_ext = extname(filename); + input->length = msDuration; free (mp4cb); vfs_fclose(mp4fh); @@ -408,8 +445,6 @@ if(xmmstitle == NULL) xmmstitle = g_strdup(filename); - mp4_ip.set_info(xmmstitle, -1, -1, samplerate, channels); - decoder = faacDecOpen(); mp4ff_get_decoder_config(mp4file, mp4track, &buffer, &bufferSize); if ( !buffer ) { @@ -431,7 +466,6 @@ g_free(buffer); if( !channels ) { - g_print("Number of Channels not supported\n"); faacDecClose(decoder); return FALSE;