From: <ny...@us...> - 2006-12-28 04:54:58
|
Revision: 214 http://svn.sourceforge.net/pmplib/?rev=214&view=rev Author: nyaochi Date: 2006-12-27 20:54:57 -0800 (Wed, 27 Dec 2006) Log Message: ----------- Libraries and DLLs are built with MSVC2005. - zlib 1.2.3 - libid3tag 0.15.1b - libogg 1.1.3 - libvorbis 1.1.2 - js 1.5 Modified Paths: -------------- trunk/pmplib/lib/gmi/contrib/id3tag/id3tag.h trunk/pmplib/lib/gmi/contrib/id3tag/win32/libid3tag.lib trunk/pmplib/lib/gmi/contrib/id3tag/win32/libid3tagd.lib trunk/pmplib/lib/gmi/contrib/id3tag/win32/zlib.lib trunk/pmplib/lib/gmi/contrib/id3tag/win32/zlibd.lib trunk/pmplib/lib/gmi/contrib/ogg/win32/ogg_static.lib trunk/pmplib/lib/gmi/contrib/ogg/win32/ogg_static_d.lib trunk/pmplib/lib/gmi/contrib/vorbis/win32/vorbis_static.lib trunk/pmplib/lib/gmi/contrib/vorbis/win32/vorbis_static_d.lib trunk/pmplib/lib/gmi/contrib/vorbis/win32/vorbisfile_static.lib trunk/pmplib/lib/gmi/contrib/vorbis/win32/vorbisfile_static_d.lib trunk/pmplib/lib/playlist/contrib/js/win32/js32.lib trunk/pmplib/lib/playlist/contrib/js/win32/js32d.lib Added Paths: ----------- trunk/pmplib/lib/playlist/contrib/js/win32/debug/ trunk/pmplib/lib/playlist/contrib/js/win32/debug/js32.dll trunk/pmplib/lib/playlist/contrib/js/win32/release/ trunk/pmplib/lib/playlist/contrib/js/win32/release/js32.dll Modified: trunk/pmplib/lib/gmi/contrib/id3tag/id3tag.h =================================================================== --- trunk/pmplib/lib/gmi/contrib/id3tag/id3tag.h 2006-12-28 03:48:26 UTC (rev 213) +++ trunk/pmplib/lib/gmi/contrib/id3tag/id3tag.h 2006-12-28 04:54:57 UTC (rev 214) @@ -248,13 +248,8 @@ struct id3_file *id3_file_fdopen(int, enum id3_file_mode); int id3_file_close(struct id3_file *); -id3_length_t id3_file_content_offset(struct id3_file const *file); - struct id3_tag *id3_file_tag(struct id3_file const *); -struct id3_tag *id3_file_gettag(struct id3_file const *, int); -int id3_file_getnumtag(struct id3_file const *); - int id3_file_update(struct id3_file *); /* tag interface */ Modified: trunk/pmplib/lib/gmi/contrib/id3tag/win32/libid3tag.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/id3tag/win32/libid3tagd.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/id3tag/win32/zlib.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/id3tag/win32/zlibd.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/ogg/win32/ogg_static.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/ogg/win32/ogg_static_d.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/vorbis/win32/vorbis_static.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/vorbis/win32/vorbis_static_d.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/vorbis/win32/vorbisfile_static.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/gmi/contrib/vorbis/win32/vorbisfile_static_d.lib =================================================================== (Binary files differ) Added: trunk/pmplib/lib/playlist/contrib/js/win32/debug/js32.dll =================================================================== (Binary files differ) Property changes on: trunk/pmplib/lib/playlist/contrib/js/win32/debug/js32.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/pmplib/lib/playlist/contrib/js/win32/js32.lib =================================================================== (Binary files differ) Modified: trunk/pmplib/lib/playlist/contrib/js/win32/js32d.lib =================================================================== (Binary files differ) Added: trunk/pmplib/lib/playlist/contrib/js/win32/release/js32.dll =================================================================== (Binary files differ) Property changes on: trunk/pmplib/lib/playlist/contrib/js/win32/release/js32.dll ___________________________________________________________________ Name: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2006-12-29 01:59:31
|
Revision: 222 http://svn.sourceforge.net/pmplib/?rev=222&view=rev Author: nyaochi Date: 2006-12-28 17:59:32 -0800 (Thu, 28 Dec 2006) Log Message: ----------- Some bug fixes: - Avoid id3_file_fdopen() since it will close files multiple times with fclose() and id_file_close(id3file) - Initialize new memory blocks allocated for db.dat - Avoid crossing a page boundary in db.idx - Change the algorithm to sort strings in db.idx to case-insensitive. Modified Paths: -------------- trunk/pmplib/lib/gmi/gmi_mp3.c trunk/pmplib/lib/pmp_iriverplus3/dat.c trunk/pmplib/lib/pmp_iriverplus3/idx.c Modified: trunk/pmplib/lib/gmi/gmi_mp3.c =================================================================== --- trunk/pmplib/lib/gmi/gmi_mp3.c 2006-12-28 17:40:06 UTC (rev 221) +++ trunk/pmplib/lib/gmi/gmi_mp3.c 2006-12-29 01:59:32 UTC (rev 222) @@ -334,16 +334,11 @@ ucs2char_t* ucs2 = NULL; struct id3_file *id3file = NULL; struct id3_tag *id3tag = NULL; + char* pathname = ucs2dupmbs(filename); - /* Open the file with UNICODE filename. This is for better compatibility. */ - fp = ucs2fopen(filename, "rb"); - if (!fp) { - return -1; - } - /* Open with libid3tag */ - /*id3file = id3_file_open(pathname, ID3_FILE_MODE_READONLY);*/ - id3file = id3_file_fdopen(fileno(fp), ID3_FILE_MODE_READONLY); + id3file = id3_file_open(pathname, ID3_FILE_MODE_READONLY); + ucs2free(pathname); if (!id3file) { fclose(fp); return -1; Modified: trunk/pmplib/lib/pmp_iriverplus3/dat.c =================================================================== --- trunk/pmplib/lib/pmp_iriverplus3/dat.c 2006-12-28 17:40:06 UTC (rev 221) +++ trunk/pmplib/lib/pmp_iriverplus3/dat.c 2006-12-29 01:59:32 UTC (rev 222) @@ -364,6 +364,7 @@ uint32_t page = ph.next_page++; buffer_size = PAGESIZE * page; buffer = (uint8_t*)realloc(buffer, sizeof(uint8_t) * buffer_size); + memset(buffer + PAGESIZE * (page - 1), 0, PAGESIZE); i += ph.num_entries; dat_list_write(&dat->objects, i, &ph, buffer, PAGESIZE * (page - 1)); dic->header.num_dat_pages += 1; @@ -386,6 +387,7 @@ uint32_t page = ph.next_page++; buffer_size = PAGESIZE * page; buffer = (uint8_t*)realloc(buffer, sizeof(uint8_t) * buffer_size); + memset(buffer + PAGESIZE * (page - 1), 0, PAGESIZE); i += ph.num_entries; dat_list_write(&dat->musics, i, &ph, buffer, PAGESIZE * (page - 1)); dic->header.num_dat_pages += 1; Modified: trunk/pmplib/lib/pmp_iriverplus3/idx.c =================================================================== --- trunk/pmplib/lib/pmp_iriverplus3/idx.c 2006-12-28 17:40:06 UTC (rev 221) +++ trunk/pmplib/lib/pmp_iriverplus3/idx.c 2006-12-29 01:59:32 UTC (rev 222) @@ -117,6 +117,10 @@ memset(avl->buffer + avl->size, 0, PAGESIZE); avl->offset = avl->size + sizeof(header_t); avl->size = newsize; + } else if (((avl->offset + size) / PAGESIZE) != (avl->offset / PAGESIZE)) { + /* Avoid crossing a page boundary. */ + uint32_t page = (avl->offset + size) / PAGESIZE; + avl->offset = PAGESIZE * page + sizeof(header_t); } /* Allocate a memory block. */ @@ -320,11 +324,18 @@ { ucs2char_t* x = (ucs2char_t*)(avl->buffer + _x); ucs2char_t* y = (ucs2char_t*)(avl->buffer + _y); - while (*x && *y && *x == *y) { + ucs2char_t a, b; + + do { + a = ucs2upper(*x); + b = ucs2upper(*y); + if (!*x || !*y) { + break; + } x++; y++; - } - return COMP(*x, *y); + } while (a == b); + return COMP(a, b); } static int avl_insert_key(avl_t* avl, const ip3db_variant_t* key, int type, uint32_t* offset, uint32_t* root) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2007-01-26 07:57:08
|
Revision: 284 http://svn.sourceforge.net/pmplib/?rev=284&view=rev Author: nyaochi Date: 2007-01-25 23:57:06 -0800 (Thu, 25 Jan 2007) Log Message: ----------- Removed unnecessary comments. Modified Paths: -------------- trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c Modified: trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c =================================================================== --- trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c 2007-01-26 07:55:48 UTC (rev 283) +++ trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c 2007-01-26 07:57:06 UTC (rev 284) @@ -609,83 +609,3 @@ return 0; } - -/* -static result_t pmpdb_read(pmp_music_t* pmpdb) -{ - pmp_music_internal_t* pmpdbi = (pmp_music_internal_t*)pmpdb->instance; - pmp_internal_t* pmpi = (pmp_internal_t*)pmpdb->pmp->instance; - return ip2db_read(&pmpdbi->ip2db, pmpi->env.dat_filename, pmpi->env.idx_filename); -} - -static result_t pmpdb_write(pmp_music_t* pmpdb) -{ - pmp_music_internal_t* pmpdbi = (pmp_music_internal_t*)pmpdb->instance; - pmp_internal_t* pmpi = (pmp_internal_t*)pmpdb->pmp->instance; - return ip2db_write(&pmpdbi->ip2db, pmpi->env.dat_filename, pmpi->env.idx_filename); -} - -static result_t pmpdb_set(pmp_music_t* pmpdb, const pmp_music_record_t* records, uint32_t num_records) -{ - pmp_music_internal_t* pmpdbi = (pmp_music_internal_t*)pmpdb->instance; - pmp_internal_t* pmpi = (pmp_internal_t*)pmpdb->pmp->instance; - return ip2db_set(&pmpdbi->ip2db, records, num_records, pmpi->env.path_to_root); -} - -static result_t pmpdb_get(pmp_music_t* pmpdb, pmp_music_record_t* records, uint32_t* num_records) -{ - pmp_music_internal_t* pmpdbi = (pmp_music_internal_t*)pmpdb->instance; - pmp_internal_t* pmpi = (pmp_internal_t*)pmpdb->pmp->instance; - return ip2db_get(&pmpdbi->ip2db, records, num_records, pmpi->env.path_to_root); -} - -static result_t pmpdb_dump(pmp_music_t* pmpdb, FILE *fp, int level) -{ - pmp_music_internal_t* pmpdbi = (pmp_music_internal_t*)pmpdb->instance; - if (level > 0) { - return ip2db_repr(&pmpdbi->ip2db, fp); - } else { - return ip2db_dump(&pmpdbi->ip2db, fp); - } -} - -static int pmpdb_is_supported_codec(pmp_music_t* pmpdb, uint32_t codec) -{ - return ip2db_is_supported_codec(codec); -} - -static int pmpdb_is_supported_ext(pmp_music_t* pmpdb, const ucs2char_t* filename) -{ - return ip2db_is_supported_ext(filename); -} - - - - - -static uint32_t pmppl_add_ref(pmp_playlist_t* pmppl) -{ - return pmplib_interlocked_increment(&pmppl->ref_count); -} - -static uint32_t pmppl_release(pmp_playlist_t* pmppl) -{ - uint32_t count = pmplib_interlocked_decrement(&pmppl->ref_count); - if (count == 0) { - pmppl_internal_t* pmppli = (pmppl_internal_t*)pmppl->instance; - free(pmppl->instance); - free(pmppl); - } - return count; -} - -static result_t pmppl_write(pmp_playlist_t* pmppl, const ucs2char_t* filename, ucs2char_t* const files[], uint32_t num_files) -{ - pmppl_internal_t* pmppli = (pmppl_internal_t*)pmppl->instance; - pmp_internal_t* pmpi = (pmp_internal_t*)pmppl->pmp->instance; - if (ip2db_playlist_write(&pmppli->ip2db, filename, files, num_files, pmpi->env.path_to_root) != 0) { - return PMPPLE_WRITE; - } - return 0; -} -*/ \ No newline at end of file Modified: trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c =================================================================== --- trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c 2007-01-26 07:55:48 UTC (rev 283) +++ trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c 2007-01-26 07:57:06 UTC (rev 284) @@ -607,14 +607,3 @@ return 0; } - -/* -static result_t pmppl_write(pmp_playlist_t* pmppl, const ucs2char_t* filename, ucs2char_t* const files[], uint32_t num_files) -{ - pmp_internal_t* pmpi = (pmp_internal_t*)pmppl->pmp->instance; - if (playlist_write(filename, files, num_files, pmpi->env.path_to_root) != 0) { - return PMPPLE_WRITE; - } - return 0; -} -*/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2007-02-10 17:34:16
|
Revision: 327 http://svn.sourceforge.net/pmplib/?rev=327&view=rev Author: nyaochi Date: 2007-02-10 09:34:14 -0800 (Sat, 10 Feb 2007) Log Message: ----------- Fix update mode for all driver modules. Modified Paths: -------------- trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c trunk/pmplib/lib/pmp_iriverplus3/pmp_iriverplus3.c trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c Modified: trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c =================================================================== --- trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c 2007-02-10 17:21:12 UTC (rev 326) +++ trunk/pmplib/lib/pmp_iriverplus2/pmp_iriverplus2.c 2007-02-10 17:34:14 UTC (rev 327) @@ -484,6 +484,9 @@ pmp_t* pmp = music->pmp; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; + // Initialize IP2DB. + ip2db_init(&pmpmi->ip2db); + // Free the existing records. pmplib_records_finish(pmpmi->records, pmpmi->num_records); pmpmi->records = 0; @@ -494,40 +497,36 @@ ucs2char_t sys[MAX_PATH], dat[MAX_PATH], idx[MAX_PATH]; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)pmp->music->instance; - // Initialize IP2DB. - ip2db_init(&pmpmi->ip2db); - // Read the music database. set_filenames(sys, dat, idx, pmp); ret = ip2db_read(&pmpmi->ip2db, dat, idx); if (ret) { - return ret; + goto exit_this; } // Obtain the number of records. ret = ip2db_get(&pmpmi->ip2db, NULL, &pmpmi->num_records, pmp->info.path_to_root); if (ret) { - return ret; + goto exit_this; } // Allocate record array. pmpmi->records = (pmp_music_record_t*)malloc(sizeof(pmp_music_record_t) * pmpmi->num_records); if (!pmpmi->records) { - return PMPERR_INSUFFICIENTMEMORY; + ret = PMPERR_INSUFFICIENTMEMORY; + goto exit_this; } ret = ip2db_get(&pmpmi->ip2db, pmpmi->records, &pmpmi->num_records, pmp->info.path_to_root); if (ret) { - return ret; + goto exit_this; } - - // Finish the IP2DB. - ip2db_finish(&pmpmi->ip2db); - - return ret; } - return 0; +exit_this: + // Finish the IP2DB. + ip2db_finish(&pmpmi->ip2db); + return ret; } static uint32_t pmpmusic_close(pmp_music_t* music) @@ -537,18 +536,18 @@ pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; static const ucs2char_t plp_ext[] = {'.','p','l','p',0}; + // Initialize IP2DB. + ip2db_init(&pmpmi->ip2db); + if (pmp->flag & PMPOF_MUSIC_DB_WRITE) { ucs2char_t sys[MAX_PATH], dat[MAX_PATH], idx[MAX_PATH]; - // Initialize IP2DB. - ip2db_init(&pmpmi->ip2db); - ip2db_set(&pmpmi->ip2db, pmpmi->records, pmpmi->num_records, pmp->info.path_to_root); set_filenames(sys, dat, idx, pmp); ret = ip2db_write(&pmpmi->ip2db, dat, idx); if (ret) { - return ret; + goto exit_this; } } @@ -566,14 +565,15 @@ pmp->info.path_to_playlist, plp_ext ) != 0) { - return PMPERR_WRITE; + ret = PMPERR_WRITE; + goto exit_this; } } } +exit_this: // Finish the IP2DB. ip2db_finish(&pmpmi->ip2db); - return ret; } Modified: trunk/pmplib/lib/pmp_iriverplus3/pmp_iriverplus3.c =================================================================== --- trunk/pmplib/lib/pmp_iriverplus3/pmp_iriverplus3.c 2007-02-10 17:21:12 UTC (rev 326) +++ trunk/pmplib/lib/pmp_iriverplus3/pmp_iriverplus3.c 2007-02-10 17:34:14 UTC (rev 327) @@ -448,7 +448,6 @@ free(music); return PMPERR_INSUFFICIENTMEMORY; } - ip3db_init(&pmpmi->ip3db); music->set_records = pmpmusic_set_records; music->get_records = pmpmusic_get_records; @@ -467,7 +466,6 @@ static uint32_t pmpmusic_release(pmp_music_t* music) { pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; - ip3db_finish(&pmpmi->ip3db); pmplib_records_finish(pmpmi->records, pmpmi->num_records); free(pmpmi->playlists); free(pmpmi); @@ -481,6 +479,9 @@ pmp_t* pmp = music->pmp; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; + // Initialize IP3DB. + ip3db_init(&pmpmi->ip3db); + // Free the existing records. pmplib_records_finish(pmpmi->records, pmpmi->num_records); pmpmi->records = 0; @@ -496,7 +497,7 @@ set_filenames(dat, dic, idx, pmp); ret = ip3db_read(&pmpmi->ip3db, dat, dic, idx); if (ret) { - return ret; + goto exit_this; } // The number of music records. @@ -546,7 +547,9 @@ } } - return 0; +exit_this: + ip3db_finish(&pmpmi->ip3db); + return ret; } static uint32_t pmpmusic_close(pmp_music_t* music) @@ -555,6 +558,9 @@ pmp_t* pmp = music->pmp; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; + // Initialize IP3DB. + ip3db_init(&pmpmi->ip3db); + if (pmp->flag & PMPOF_MUSIC_DB_WRITE) { int i; ucs2char_t dat[MAX_PATH], dic[MAX_PATH], idx[MAX_PATH]; @@ -615,7 +621,8 @@ free(records); } - return 0; + ip3db_finish(&pmpmi->ip3db); + return ret; } static ucs2char_t* _filepath_removeslash(ucs2char_t* path) Modified: trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c =================================================================== --- trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c 2007-02-10 17:21:12 UTC (rev 326) +++ trunk/pmplib/lib/pmp_irivnavi/pmp_irivnavi.c 2007-02-10 17:34:14 UTC (rev 327) @@ -318,7 +318,6 @@ free(music); return PMPERR_INSUFFICIENTMEMORY; } - irivnavi_init(&pmpmi->db); music->set_records = pmpmusic_set_records; music->get_records = pmpmusic_get_records; @@ -334,7 +333,6 @@ static uint32_t pmpmusic_release(pmp_music_t* music) { pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; - irivnavi_finish(&pmpmi->db); pmplib_records_finish(pmpmi->records, pmpmi->num_records); free(pmpmi->playlists); free(pmpmi); @@ -356,6 +354,8 @@ static const ucs2char_t ucs2cs_wma[] = {'.','w','m','a',0}; static const ucs2char_t ucs2cs_wav[] = {'.','w','a','v',0}; + irivnavi_init(&pmpmi->db); + if (music->pmp->flag & PMPOF_MUSIC_DB_READ) { // Open a database file in the root directory. ucs2cpy(filename, music->pmp->info.path_to_root); @@ -438,11 +438,13 @@ ++j; } } + irivnavi_finish(&pmpmi->db); return 0; error_exit: free(buffer); if (fp) fclose(fp); + irivnavi_finish(&pmpmi->db); return ret; } @@ -457,6 +459,8 @@ static const ucs2char_t ucs2cs_unknown[] = {'u','n','k','n','o','w','n',0}; static const ucs2char_t m3u_ext[] = {'.','m','3','u',0}; + irivnavi_init(&pmpmi->db); + if (music->pmp->flag & PMPOF_MUSIC_DB_WRITE) { // Clear the database. irivnavi_finish(&pmpmi->db); @@ -464,7 +468,8 @@ // Initialize the record array. if (irivnavi_init_records(&pmpmi->db, pmpmi->num_records) != 0) { - return PMPERR_INSUFFICIENTMEMORY; + ret = PMPERR_INSUFFICIENTMEMORY; + goto error_exit; } // Convert records from pmp_music_record_t to ip2db_record_t. @@ -493,7 +498,8 @@ filepath_removefile(filename); fp = ucs2fopen(filename, "wb"); if (!fp) { - return PMPERR_OPENFORREAD; + ret = PMPERR_OPENFORREAD; + goto error_exit; } irivnavi_update(&pmpmi->db); @@ -544,11 +550,13 @@ } } + irivnavi_finish(&pmpmi->db); return 0; error_exit: free(buffer); if (fp) fclose(fp); + irivnavi_finish(&pmpmi->db); return ret; } Modified: trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c 2007-02-10 17:21:12 UTC (rev 326) +++ trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c 2007-02-10 17:34:14 UTC (rev 327) @@ -592,7 +592,6 @@ free(music); return PMPERR_INSUFFICIENTMEMORY; } - pp1db_init(&pmpmi->pp1db, pmpi->decl->hdr_initproc); music->set_records = pmpmusic_set_records; music->get_records = pmpmusic_get_records; @@ -611,7 +610,6 @@ static uint32_t pmpmusic_release(pmp_music_t* music) { pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; - pp1db_finish(&pmpmi->pp1db); pmplib_records_finish(pmpmi->records, pmpmi->num_records); free(pmpmi->playlists); free(pmpmi); @@ -623,8 +621,12 @@ { result_t ret = 0; pmp_t* pmp = music->pmp; + pmp_internal_t* pmpi = (pmp_internal_t*)pmp->instance; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; + // Initialize PP1DB. + pp1db_init(&pmpmi->pp1db, pmpi->decl->hdr_initproc); + // Free the existing records. pmplib_records_finish(pmpmi->records, pmpmi->num_records); pmpmi->records = 0; @@ -639,34 +641,45 @@ set_filenames(hdr, pmp); ret = pp1db_read(&pmpmi->pp1db, hdr); if (ret) { - return ret; + goto exit_this; } // Obtain the number of records. ret = pp1db_get(&pmpmi->pp1db, NULL, &pmpmi->num_records, pmp->info.path_to_root); if (ret) { - return ret; + goto exit_this; } // Allocate record array. pmpmi->records = (pmp_music_record_t*)malloc(sizeof(pmp_music_record_t) * pmpmi->num_records); if (!pmpmi->records) { - return PMPERR_INSUFFICIENTMEMORY; + ret = PMPERR_INSUFFICIENTMEMORY; + goto exit_this; } - return pp1db_get(&pmpmi->pp1db, pmpmi->records, &pmpmi->num_records, pmp->info.path_to_root); + ret = pp1db_get(&pmpmi->pp1db, pmpmi->records, &pmpmi->num_records, pmp->info.path_to_root); + if (ret) { + goto exit_this; + } + } - return 0; +exit_this: + pp1db_finish(&pmpmi->pp1db); + return ret; } static uint32_t pmpmusic_close(pmp_music_t* music) { result_t ret = 0; pmp_t* pmp = music->pmp; + pmp_internal_t* pmpi = (pmp_internal_t*)pmp->instance; pmp_music_internal_t* pmpmi = (pmp_music_internal_t*)music->instance; static const ucs2char_t plp_ext[] = {'.','p','l','p',0}; + // Initialize PP1DB. + pp1db_init(&pmpmi->pp1db, pmpi->decl->hdr_initproc); + if (pmp->flag & PMPOF_MUSIC_DB_WRITE) { ucs2char_t hdr[MAX_PATH]; @@ -675,7 +688,7 @@ set_filenames(hdr, pmp); ret = pp1db_write(&pmpmi->pp1db, hdr); if (ret) { - return ret; + goto exit_this; } } @@ -693,11 +706,15 @@ pmp->info.path_to_playlist, plp_ext ) != 0) { - return PMPERR_WRITE; + pp1db_finish(&pmpmi->pp1db); + ret = PMPERR_WRITE; + goto exit_this; } } } +exit_this: + pp1db_finish(&pmpmi->pp1db); return ret; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ny...@us...> - 2007-02-17 15:38:00
|
Revision: 372 http://svn.sourceforge.net/pmplib/?rev=372&view=rev Author: nyaochi Date: 2007-02-17 07:37:59 -0800 (Sat, 17 Feb 2007) Log Message: ----------- Initial attempt to support MSI MEGA PLAYER 536. I will check the compatibility later. Modified Paths: -------------- trunk/pmplib/lib/pmp_portalplayer1/hdr_template.h trunk/pmplib/lib/pmp_portalplayer1/model_msi_megaplayer.c trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c trunk/pmplib/lib/pmp_portalplayer1/pp1db.c trunk/pmplib/lib/ucs2/ucs2char.c Modified: trunk/pmplib/lib/pmp_portalplayer1/hdr_template.h =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/hdr_template.h 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/pmp_portalplayer1/hdr_template.h 2007-02-17 15:37:59 UTC (rev 372) @@ -76,6 +76,7 @@ int medion_mdjuke220_parse_model(const ucs2char_t* firmware, pp1model_t* model); int samsung_parse_model(const ucs2char_t* firmware, pp1model_t* model); int philips_hdd6320_parse_model(const ucs2char_t* firmware, pp1model_t* model); -int megaplayer_parse_model(const ucs2char_t* firmware, pp1model_t* model); +int megaplayer_parse_model_536(const ucs2char_t* firmware, pp1model_t* model); +int megaplayer_parse_model_540(const ucs2char_t* firmware, pp1model_t* model); #endif/*__HDR_TEMPLATE_H__*/ Modified: trunk/pmplib/lib/pmp_portalplayer1/model_msi_megaplayer.c =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/model_msi_megaplayer.c 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/pmp_portalplayer1/model_msi_megaplayer.c 2007-02-17 15:37:59 UTC (rev 372) @@ -153,7 +153,7 @@ return 0; } -int megaplayer_parse_model(const ucs2char_t* firmware, pp1model_t* model) +static int megaplayer_parse_model(const ucs2char_t* firmware, pp1model_t* model, const char *identifier) { /* MSI MEGA PLAYER 540 01.00.16 @@ -176,6 +176,27 @@ 000002D0 68 74 73 20 72 65 73 65 72 76 65 64 2E 00 00 00 hts reserved.... 000002E0 00 01 00 00 EC 00 00 00 20 7F 39 00 00 10 A0 E1 ........ .9..... 000002F0 40 25 A0 E3 00 20 81 E5 01 00 A0 E3 0E F0 A0 E1 @%... .......... + + MSI MEGA PLAYER 536 01.00.16 + + ADDRESS 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF + ------------------------------------------------------------------------------ + 00000200 27 04 00 EA 14 04 00 EA 0E F0 B0 E1 18 04 00 EA '............... + 00000210 1D 04 00 EA FE FF FF EA 05 04 00 EA FB 03 00 EA ................ + 00000220 70 6F 72 74 61 6C 70 6C 61 79 65 72 00 30 2E 30 portalplayer.0.0 + 00000230 C0 00 39 7B FC 00 F1 ED 00 00 00 00 00 00 00 00 ..9{............ + 00000240 50 50 35 30 32 30 41 46 2D 30 35 2E 32 32 2D 50 PP5020AF-05.22-P + 00000250 50 30 37 2D 30 35 2E 32 32 2D 4D 4E 30 33 2D 30 P07-05.22-MN03-0 + 00000260 31 2E 30 30 2E 31 36 2D 44 54 00 00 32 30 30 35 1.00.16-DT..2005 + 00000270 2E 30 33 2E 31 36 00 00 28 42 75 69 6C 64 20 31 .03.16..(Build 1 + 00000280 32 39 29 00 44 69 67 69 74 61 6C 20 4D 65 64 69 29).Digital Medi + 00000290 61 20 50 6C 61 74 66 6F 72 6D 00 00 43 6F 70 79 a Platform..Copy + 000002A0 72 69 67 68 74 28 63 29 20 31 39 39 39 20 2D 20 right(c) 1999 - + 000002B0 32 30 30 33 20 50 6F 72 74 61 6C 50 6C 61 79 65 2003 PortalPlaye + 000002C0 72 2C 20 49 6E 63 2E 20 20 41 6C 6C 20 72 69 67 r, Inc. All rig + 000002D0 68 74 73 20 72 65 73 65 72 76 65 64 2E 00 00 00 hts reserved.... + 000002E0 00 01 00 00 EC 00 00 00 FC 7B 39 00 00 10 A0 E1 .........{9..... + 000002F0 40 25 A0 E3 00 20 81 E5 01 00 A0 E3 0E F0 A0 E1 @%... .......... */ FILE *fp = ucs2fopen(firmware, "rb"); if (fp) { @@ -198,12 +219,11 @@ fclose(fp); // Match the identifier string. - if (strncmp(buff, "PP5020AF-05.22-PP07-05.22-MN05-", 31) != 0) { + if (strncmp(buff, identifier, strlen(identifier)) != 0) { return 0; } // Obtain the model name. - strcpy(model->name, "MEGA PLAYER 540"); memset(model->version, 0, sizeof(model->version)); strncpy(model->version, buff+0x1F, 8); strcpy(model->language, ""); @@ -215,9 +235,27 @@ } } +int megaplayer_parse_model_536(const ucs2char_t* firmware, pp1model_t* model) +{ + int ret = megaplayer_parse_model(firmware, model, "PP5020AF-05.22-PP07-05.22-MN03-"); + if (ret) { + strcpy(model->name, "MEGA PLAYER 536"); + } + return ret; +} +int megaplayer_parse_model_540(const ucs2char_t* firmware, pp1model_t* model) +{ + int ret = megaplayer_parse_model(firmware, model, "PP5020AF-05.22-PP07-05.22-MN05-"); + if (ret) { + strcpy(model->name, "MEGA PLAYER 540"); + } + return ret; +} + + static fd_template_t hdrtmpl_fd_megaplayer540[] = { {0x0000F001, 2, 4, 0, 0, 1, 0, 0, "System\\DATA\\PP...@DE...x"}, {0x0000F002, 1, 128, 0, 0, 1, 0, 0, "System\\DATA\\PP5000_FPTH.idx"}, Modified: trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/pmp_portalplayer1/pmp_portalplayer1.c 2007-02-17 15:37:59 UTC (rev 372) @@ -221,6 +221,17 @@ hdr_init_philips_hdd6320, philips_hdd6320_parse_model }, { + "msi_megaplayer536", "MSI", "MEGA PLAYER 536", + 8, "UM", + "01.00.16", "01.00.16", + "SYSTEM\\PP5020.mi4", "System\\DATA\\PP5000.HDR", + ".mp3\0.wma\0", + {PMPCODEC_MPEGLAYER3, PMPCODEC_WMA, 0, 0, 0, 0}, + "SYSTEM", "MUSIC", "Playlists", + ".pla", + hdr_init_msi_megaplayer540, megaplayer_parse_model_536 + }, + { "msi_megaplayer540", "MSI", "MEGA PLAYER 540", 8, "UM", "01.00.16", "01.00.16", @@ -229,7 +240,7 @@ {PMPCODEC_MPEGLAYER3, PMPCODEC_WMA, 0, 0, 0, 0}, "SYSTEM", "MUSIC", "Playlists", ".pla", - hdr_init_msi_megaplayer540, megaplayer_parse_model + hdr_init_msi_megaplayer540, megaplayer_parse_model_540 }, #if 0 { Modified: trunk/pmplib/lib/pmp_portalplayer1/pp1db.c =================================================================== --- trunk/pmplib/lib/pmp_portalplayer1/pp1db.c 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/pmp_portalplayer1/pp1db.c 2007-02-17 15:37:59 UTC (rev 372) @@ -581,7 +581,6 @@ pmplib_record_init(dst); db->hdr->param.proc_dat_get(dst, src, path_to_root); - ++j; } Modified: trunk/pmplib/lib/ucs2/ucs2char.c =================================================================== --- trunk/pmplib/lib/ucs2/ucs2char.c 2007-02-17 15:35:46 UTC (rev 371) +++ trunk/pmplib/lib/ucs2/ucs2char.c 2007-02-17 15:37:59 UTC (rev 372) @@ -271,7 +271,7 @@ ucs2char_t* ucs2dup(const ucs2char_t* src) { - ucs2char_t* dst = (ucs2char_t*)malloc((ucs2len(src)+1) * sizeof(ucs2char_t)); + ucs2char_t* dst = (ucs2char_t*)ucs2malloc((ucs2len(src)+1) * sizeof(ucs2char_t)); ucs2cpy(dst, src); return dst; } @@ -283,7 +283,7 @@ if (length < src_length) { src_length = length; } - dst = (ucs2char_t*)malloc((src_length+1) * sizeof(ucs2char_t)); + dst = (ucs2char_t*)ucs2malloc((src_length+1) * sizeof(ucs2char_t)); if (dst) { size_t i; for (i = 0;i < src_length;i++) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |