Mercurial > audlegacy-plugins
diff src/aac/src/libmp4.c @ 692:a77e766e332d trunk
[svn] - fix another potential synchronization problem
- be more efficient wrt fds
author | nenolod |
---|---|
date | Tue, 20 Feb 2007 07:00:10 -0800 |
parents | 0305b3165a01 |
children | a7ba9d27c7b5 |
line wrap: on
line diff
--- a/src/aac/src/libmp4.c Tue Feb 20 06:38:03 2007 -0800 +++ b/src/aac/src/libmp4.c Tue Feb 20 07:00:10 2007 -0800 @@ -639,10 +639,8 @@ return TRUE; } -static void my_decode_aac( InputPlayback *playback, char *filename ) +static void my_decode_aac( InputPlayback *playback, char *filename, VFSFile *file ) { - // WE ARE READING AN AAC FILE - VFSFile *file = NULL; faacDecHandle decoder = 0; guchar *buffer = 0; gulong bufferconsumed = 0; @@ -655,12 +653,7 @@ gchar *xmmstitle = NULL; faacDecConfigurationPtr config; - if((file = vfs_fopen(filename, "rb")) == 0){ - g_print("AAC: can't find file %s\n", filename); - buffer_playing = FALSE; - g_static_mutex_unlock(&mutex); - g_thread_exit(NULL); - } + vfs_rewind(file); if((decoder = faacDecOpen()) == NULL){ g_print("AAC: Open Decoder Error\n"); vfs_fclose(file); @@ -802,15 +795,16 @@ buffer_playing= TRUE; g_static_mutex_unlock(&mutex); + if (mp4fh == NULL) + g_thread_exit(NULL); + ret = parse_aac_stream(mp4fh); vfs_rewind(mp4fh); mp4file= mp4ff_open_read(mp4cb); if( ret == TRUE ) { - my_decode_aac( playback, filename ); - mp4cfg.file_type = FILE_AAC; - vfs_fclose(mp4fh); g_free(mp4cb); + my_decode_aac( playback, filename, mp4fh ); } else my_decode_mp4( playback, filename, mp4file );