mirror of
https://github.com/clangen/musikcube.git
synced 2025-02-11 09:40:26 +00:00
Upgraded mpg123 and SQLite.
Added component selection in installer.
This commit is contained in:
parent
34d2d196be
commit
960918a130
@ -11,8 +11,8 @@ SetCompressor /SOLID lzma
|
||||
!define MUI_BGCOLOR "FFFFFF"
|
||||
|
||||
!define PROJECT_NAME "musikCube 2"
|
||||
!define SUB_NAME "developers milestone 2"
|
||||
!define INSTALLER_NAME "mC2dm2"
|
||||
!define SUB_NAME "developers milestone 3"
|
||||
!define INSTALLER_NAME "mC2dm3"
|
||||
!define INSTALL_DIR "musikCube 2"
|
||||
|
||||
;----------------------------------------------------------------
|
||||
@ -36,43 +36,70 @@ InstallDirRegKey HKCU "Software\${INSTALL_DIR}" ""
|
||||
!insertmacro MUI_PAGE_LICENSE "..\LICENSE.txt"
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
Page custom RemoveOldFilesPage RemoveOldFilesLeave ;Custom page
|
||||
;!insertmacro MUI_PAGE_COMPONENTS
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
||||
|
||||
Section "mC2installation" main
|
||||
Section "!mC2" main
|
||||
|
||||
SectionIn RO
|
||||
|
||||
SetShellVarContext current
|
||||
|
||||
SetOverwrite on
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "..\bin\release\mC2.exe"
|
||||
File /r "..\bin\release\musikServer.exe"
|
||||
File /r "..\LICENSE.txt"
|
||||
File /r "..\bin\release\resources"
|
||||
|
||||
SetOutPath "$INSTDIR\plugins"
|
||||
Delete "*.dll"
|
||||
File /r "..\bin\release\plugins\*.dll"
|
||||
|
||||
SetAutoClose false
|
||||
|
||||
File /r "..\bin\release\plugins\httpstream_plugin.dll"
|
||||
File /r "..\bin\release\plugins\waveout.dll"
|
||||
File /r "..\bin\release\plugins\taglib_plugin.dll"
|
||||
|
||||
IntCmpU $RemoveOldDatabases 0 DoNotRemoveDBFiles
|
||||
; Remove the app data
|
||||
RMDir /r "${MC2_DB_DIR}"
|
||||
DoNotRemoveDBFiles:
|
||||
|
||||
|
||||
CreateDirectory "$SMPROGRAMS\${PROJECT_NAME} ${SUB_NAME}"
|
||||
CreateShortCut "$SMPROGRAMS\${PROJECT_NAME} ${SUB_NAME}\${PROJECT_NAME}.lnk" "$INSTDIR\mC2.exe"
|
||||
CreateShortCut "$SMPROGRAMS\${PROJECT_NAME} ${SUB_NAME}\musikServer.lnk" "$INSTDIR\musikServer.exe"
|
||||
|
||||
SectionEnd
|
||||
|
||||
Section "musikServer"
|
||||
SetShellVarContext current
|
||||
SetOverwrite on
|
||||
SetOutPath "$INSTDIR"
|
||||
File /r "..\bin\release\musikServer.exe"
|
||||
CreateShortCut "$SMPROGRAMS\${PROJECT_NAME} ${SUB_NAME}\musikServer.lnk" "$INSTDIR\musikServer.exe"
|
||||
SectionEnd
|
||||
|
||||
SubSection Plugins plugins
|
||||
Section "MP3 decoder"
|
||||
SetOutPath "$INSTDIR\plugins"
|
||||
File /r "..\bin\release\plugins\mpg123decoder.dll"
|
||||
SectionEnd
|
||||
Section "OGG decoder"
|
||||
SetOutPath "$INSTDIR\plugins"
|
||||
File /r "..\bin\release\plugins\oggdecoder.dll"
|
||||
SectionEnd
|
||||
Section "FLAC decoder"
|
||||
SetOutPath "$INSTDIR\plugins"
|
||||
File /r "..\bin\release\plugins\flacdecoder.dll"
|
||||
SectionEnd
|
||||
Section /o "BPM analyzer"
|
||||
SetOutPath "$INSTDIR\plugins"
|
||||
File /r "..\bin\release\plugins\bpm_analyzer.dll"
|
||||
SectionEnd
|
||||
Section /o "DSP echo test"
|
||||
SetOutPath "$INSTDIR\plugins"
|
||||
File /r "..\bin\release\plugins\dsp_example_echo.dll"
|
||||
SectionEnd
|
||||
|
||||
SubSectionEnd
|
||||
|
||||
|
||||
Section -Post
|
||||
WriteRegStr HKCU "Software\${INSTALL_DIR}" "" $INSTDIR
|
||||
WriteUninstaller "$INSTDIR\uninst.exe"
|
||||
|
4
src/3rdparty/include/sqlite/sqlite3.h
vendored
4
src/3rdparty/include/sqlite/sqlite3.h
vendored
@ -107,8 +107,8 @@ extern "C" {
|
||||
** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z
|
||||
** are the major version, minor version, and release number.
|
||||
*/
|
||||
#define SQLITE_VERSION "3.6.8"
|
||||
#define SQLITE_VERSION_NUMBER 3006008
|
||||
#define SQLITE_VERSION "3.6.10"
|
||||
#define SQLITE_VERSION_NUMBER 3006010
|
||||
|
||||
/*
|
||||
** CAPI3REF: Run-Time Library Version Numbers {H10020} <S60100>
|
||||
|
170
src/3rdparty/src/sqlite/sqlite3.c
vendored
170
src/3rdparty/src/sqlite/sqlite3.c
vendored
@ -1,6 +1,6 @@
|
||||
/******************************************************************************
|
||||
** This file is an amalgamation of many separate C source files from SQLite
|
||||
** version 3.6.8. By combining all the individual C code files into this
|
||||
** version 3.6.10. By combining all the individual C code files into this
|
||||
** single large file, the entire code can be compiled as a one translation
|
||||
** unit. This allows many compilers to do optimizations that would not be
|
||||
** possible if the files were compiled separately. Performance improvements
|
||||
@ -17,7 +17,7 @@
|
||||
** is also in a separate file. This file contains only code for the core
|
||||
** SQLite library.
|
||||
**
|
||||
** This amalgamation was generated on 2009-01-12 15:45:58 UTC.
|
||||
** This amalgamation was generated on 2009-01-15 16:00:39 UTC.
|
||||
*/
|
||||
#define SQLITE_CORE 1
|
||||
#define SQLITE_AMALGAMATION 1
|
||||
@ -41,7 +41,7 @@
|
||||
*************************************************************************
|
||||
** Internal interface definitions for SQLite.
|
||||
**
|
||||
** @(#) $Id: sqliteInt.h,v 1.823 2009/01/10 16:15:22 drh Exp $
|
||||
** @(#) $Id: sqliteInt.h,v 1.824 2009/01/14 23:03:41 drh Exp $
|
||||
*/
|
||||
#ifndef _SQLITEINT_H_
|
||||
#define _SQLITEINT_H_
|
||||
@ -424,16 +424,22 @@
|
||||
** where multiple cases go to the same block of code, testcase()
|
||||
** can insure that all cases are evaluated.
|
||||
**
|
||||
** The TESTONLY macro is used to enclose variable declarations or
|
||||
** other bits of code that are needed to support the arguments
|
||||
** within testcase() macros.
|
||||
*/
|
||||
#ifdef SQLITE_COVERAGE_TEST
|
||||
SQLITE_PRIVATE void sqlite3Coverage(int);
|
||||
# define testcase(X) if( X ){ sqlite3Coverage(__LINE__); }
|
||||
# define TESTONLY(X) X
|
||||
#else
|
||||
# define testcase(X)
|
||||
#endif
|
||||
|
||||
/*
|
||||
** The TESTONLY macro is used to enclose variable declarations or
|
||||
** other bits of code that are needed to support the arguments
|
||||
** within testcase() and assert() macros.
|
||||
*/
|
||||
#if !defined(NDEBUG) || defined(SQLITE_COVERAGE_TEST)
|
||||
# define TESTONLY(X) X
|
||||
#else
|
||||
# define TESTONLY(X)
|
||||
#endif
|
||||
|
||||
@ -603,8 +609,8 @@ extern "C" {
|
||||
** with the value (X*1000000 + Y*1000 + Z) where X, Y, and Z
|
||||
** are the major version, minor version, and release number.
|
||||
*/
|
||||
#define SQLITE_VERSION "3.6.8"
|
||||
#define SQLITE_VERSION_NUMBER 3006008
|
||||
#define SQLITE_VERSION "3.6.10"
|
||||
#define SQLITE_VERSION_NUMBER 3006010
|
||||
|
||||
/*
|
||||
** CAPI3REF: Run-Time Library Version Numbers {H10020} <S60100>
|
||||
@ -8748,7 +8754,7 @@ SQLITE_PRIVATE void sqlite3PCacheSetDefault(void);
|
||||
** This header file is #include-ed by sqliteInt.h and thus ends up
|
||||
** being included by every source file.
|
||||
**
|
||||
** $Id: os.h,v 1.106 2008/12/08 18:19:18 drh Exp $
|
||||
** $Id: os.h,v 1.107 2009/01/14 23:03:41 drh Exp $
|
||||
*/
|
||||
#ifndef _SQLITE_OS_H_
|
||||
#define _SQLITE_OS_H_
|
||||
@ -8976,6 +8982,7 @@ SQLITE_PRIVATE int sqlite3OsLock(sqlite3_file*, int);
|
||||
SQLITE_PRIVATE int sqlite3OsUnlock(sqlite3_file*, int);
|
||||
SQLITE_PRIVATE int sqlite3OsCheckReservedLock(sqlite3_file *id, int *pResOut);
|
||||
SQLITE_PRIVATE int sqlite3OsFileControl(sqlite3_file*,int,void*);
|
||||
#define SQLITE_FCNTL_DB_UNCHANGED 0xca093fa0
|
||||
SQLITE_PRIVATE int sqlite3OsSectorSize(sqlite3_file *id);
|
||||
SQLITE_PRIVATE int sqlite3OsDeviceCharacteristics(sqlite3_file *id);
|
||||
|
||||
@ -21582,7 +21589,7 @@ SQLITE_API int sqlite3_os_end(void){
|
||||
** * Definitions of sqlite3_vfs objects for all locking methods
|
||||
** plus implementations of sqlite3_os_init() and sqlite3_os_end().
|
||||
**
|
||||
** $Id: os_unix.c,v 1.235 2009/01/09 21:41:17 drh Exp $
|
||||
** $Id: os_unix.c,v 1.237 2009/01/15 04:30:03 drh Exp $
|
||||
*/
|
||||
#if SQLITE_OS_UNIX /* This file is used on unix only */
|
||||
|
||||
@ -21727,6 +21734,18 @@ struct unixFile {
|
||||
int isDelete; /* Delete on close if true */
|
||||
struct vxworksFileId *pId; /* Unique file ID */
|
||||
#endif
|
||||
#ifndef NDEBUG
|
||||
/* The next group of variables are used to track whether or not the
|
||||
** transaction counter in bytes 24-27 of database files are updated
|
||||
** whenever any part of the database changes. An assertion fault will
|
||||
** occur if a file is updated without also updating the transaction
|
||||
** counter. This test is made to avoid new problems similar to the
|
||||
** one described by ticket #3584.
|
||||
*/
|
||||
unsigned char transCntrChng; /* True if the transaction counter changed */
|
||||
unsigned char dbUpdate; /* True if any part of database file changed */
|
||||
unsigned char inNormalWrite; /* True if in a normal write operation */
|
||||
#endif
|
||||
#ifdef SQLITE_TEST
|
||||
/* In test mode, increase the size of this structure a bit so that
|
||||
** it is larger than the struct CrashFile defined in test6.c.
|
||||
@ -23086,6 +23105,24 @@ static int unixLock(sqlite3_file *id, int locktype){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#ifndef NDEBUG
|
||||
/* Set up the transaction-counter change checking flags when
|
||||
** transitioning from a SHARED to a RESERVED lock. The change
|
||||
** from SHARED to RESERVED marks the beginning of a normal
|
||||
** write operation (not a hot journal rollback).
|
||||
*/
|
||||
if( rc==SQLITE_OK
|
||||
&& pFile->locktype<=SHARED_LOCK
|
||||
&& locktype==RESERVED_LOCK
|
||||
){
|
||||
pFile->transCntrChng = 0;
|
||||
pFile->dbUpdate = 0;
|
||||
pFile->inNormalWrite = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if( rc==SQLITE_OK ){
|
||||
pFile->locktype = locktype;
|
||||
pLock->locktype = locktype;
|
||||
@ -23135,6 +23172,23 @@ static int unixUnlock(sqlite3_file *id, int locktype){
|
||||
SimulateIOErrorBenign(1);
|
||||
SimulateIOError( h=(-1) )
|
||||
SimulateIOErrorBenign(0);
|
||||
|
||||
#ifndef NDEBUG
|
||||
/* When reducing a lock such that other processes can start
|
||||
** reading the database file again, make sure that the
|
||||
** transaction counter was updated if any part of the database
|
||||
** file changed. If the transaction counter is not updated,
|
||||
** other connections to the same file might not realize that
|
||||
** the file has changed and hence might not know to flush their
|
||||
** cache. The use of a stale cache can lead to database corruption.
|
||||
*/
|
||||
assert( pFile->inNormalWrite==0
|
||||
|| pFile->dbUpdate==0
|
||||
|| pFile->transCntrChng==1 );
|
||||
pFile->inNormalWrite = 0;
|
||||
#endif
|
||||
|
||||
|
||||
if( locktype==SHARED_LOCK ){
|
||||
lock.l_type = F_RDLCK;
|
||||
lock.l_whence = SEEK_SET;
|
||||
@ -24467,6 +24521,29 @@ static int unixWrite(
|
||||
int wrote = 0;
|
||||
assert( id );
|
||||
assert( amt>0 );
|
||||
|
||||
#ifndef NDEBUG
|
||||
/* If we are doing a normal write to a database file (as opposed to
|
||||
** doing a hot-journal rollback or a write to some file other than a
|
||||
** normal database file) then record the fact that the database
|
||||
** has changed. If the transaction counter is modified, record that
|
||||
** fact too.
|
||||
*/
|
||||
if( ((unixFile*)id)->inNormalWrite ){
|
||||
unixFile *pFile = (unixFile*)id;
|
||||
pFile->dbUpdate = 1; /* The database has been modified */
|
||||
if( offset<=24 && offset+amt>=27 ){
|
||||
char oldCntr[4];
|
||||
SimulateIOErrorBenign(1);
|
||||
seekAndRead(pFile, 24, oldCntr, 4);
|
||||
SimulateIOErrorBenign(0);
|
||||
if( memcmp(oldCntr, &((char*)pBuf)[24-offset], 4)!=0 ){
|
||||
pFile->transCntrChng = 1; /* The transaction counter has changed */
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
while( amt>0 && (wrote = seekAndWrite((unixFile*)id, offset, pBuf, amt))>0 ){
|
||||
amt -= wrote;
|
||||
offset += wrote;
|
||||
@ -24576,9 +24653,11 @@ static int full_fsync(int fd, int fullSync, int dataOnly){
|
||||
#else
|
||||
if( dataOnly ){
|
||||
rc = fdatasync(fd);
|
||||
if( OS_VXWORKS && rc==-1 && errno==ENOTSUP ){
|
||||
#if OS_VXWORKS
|
||||
if( rc==-1 && errno==ENOTSUP ){
|
||||
rc = fsync(fd);
|
||||
}
|
||||
#endif
|
||||
}else{
|
||||
rc = fsync(fd);
|
||||
}
|
||||
@ -24726,6 +24805,17 @@ static int unixFileControl(sqlite3_file *id, int op, void *pArg){
|
||||
*(int*)pArg = ((unixFile*)id)->lastErrno;
|
||||
return SQLITE_OK;
|
||||
}
|
||||
#ifndef NDEBUG
|
||||
/* The pager calls this method to signal that it has done
|
||||
** a rollback and that the database is therefore unchanged and
|
||||
** it hence it is OK for the transaction change counter to be
|
||||
** unchanged.
|
||||
*/
|
||||
case SQLITE_FCNTL_DB_UNCHANGED: {
|
||||
((unixFile*)id)->dbUpdate = 0;
|
||||
return SQLITE_OK;
|
||||
}
|
||||
#endif
|
||||
#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__)
|
||||
case SQLITE_SET_LOCKPROXYFILE:
|
||||
case SQLITE_GET_LOCKPROXYFILE: {
|
||||
@ -30447,6 +30537,8 @@ SQLITE_PRIVATE void sqlite3PcacheStats(
|
||||
**
|
||||
** Big chunks of rowid/next-ptr pairs are allocated at a time, to
|
||||
** reduce the malloc overhead.
|
||||
**
|
||||
** $Id: rowset.c,v 1.3 2009/01/13 20:14:16 drh Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -30679,7 +30771,7 @@ SQLITE_PRIVATE int sqlite3RowSetNext(RowSet *p, i64 *pRowid){
|
||||
** file simultaneously, or one process from reading the database while
|
||||
** another is writing.
|
||||
**
|
||||
** @(#) $Id: pager.c,v 1.548 2009/01/11 17:00:02 drh Exp $
|
||||
** @(#) $Id: pager.c,v 1.551 2009/01/14 23:03:41 drh Exp $
|
||||
*/
|
||||
#ifndef SQLITE_OMIT_DISKIO
|
||||
|
||||
@ -31645,10 +31737,7 @@ static int addToSavepointBitvecs(Pager *pPager, Pgno pgno){
|
||||
*/
|
||||
static void pager_unlock(Pager *pPager){
|
||||
if( !pPager->exclusiveMode ){
|
||||
int rc = osUnlock(pPager->fd, NO_LOCK);
|
||||
if( rc ) pPager->errCode = rc;
|
||||
pPager->dbSizeValid = 0;
|
||||
IOTRACE(("UNLOCK %p\n", pPager))
|
||||
int rc;
|
||||
|
||||
/* Always close the journal file when dropping the database lock.
|
||||
** Otherwise, another connection with journal_mode=delete might
|
||||
@ -31663,6 +31752,11 @@ static void pager_unlock(Pager *pPager){
|
||||
pPager->pAlwaysRollback = 0;
|
||||
}
|
||||
|
||||
rc = osUnlock(pPager->fd, NO_LOCK);
|
||||
if( rc ) pPager->errCode = rc;
|
||||
pPager->dbSizeValid = 0;
|
||||
IOTRACE(("UNLOCK %p\n", pPager))
|
||||
|
||||
/* If Pager.errCode is set, the contents of the pager cache cannot be
|
||||
** trusted. Now that the pager file is unlocked, the contents of the
|
||||
** cache can be discarded and the error code safely cleared.
|
||||
@ -31763,6 +31857,7 @@ static int pager_end_transaction(Pager *pPager, int hasMaster){
|
||||
if( !pPager->exclusiveMode ){
|
||||
rc2 = osUnlock(pPager->fd, SHARED_LOCK);
|
||||
pPager->state = PAGER_SHARED;
|
||||
pPager->changeCountDone = 0;
|
||||
}else if( pPager->state==PAGER_SYNCED ){
|
||||
pPager->state = PAGER_EXCLUSIVE;
|
||||
}
|
||||
@ -32380,6 +32475,16 @@ static int pager_playback(Pager *pPager, int isHot){
|
||||
assert( 0 );
|
||||
|
||||
end_playback:
|
||||
/* Following a rollback, the database file should be back in its original
|
||||
** state prior to the start of the transaction, so invoke the
|
||||
** SQLITE_FCNTL_DB_UNCHANGED file-control method to disable the
|
||||
** assertion that the transaction counter was modified.
|
||||
*/
|
||||
assert(
|
||||
pPager->fd->pMethods==0 ||
|
||||
sqlite3OsFileControl(pPager->fd,SQLITE_FCNTL_DB_UNCHANGED,0)>=SQLITE_OK
|
||||
);
|
||||
|
||||
if( rc==SQLITE_OK ){
|
||||
zMaster = pPager->pTmpSpace;
|
||||
rc = readMasterJournal(pPager->jfd, zMaster, pPager->pVfs->mxPathname+1);
|
||||
@ -48619,7 +48724,7 @@ SQLITE_API int sqlite3_stmt_status(sqlite3_stmt *pStmt, int op, int resetFlag){
|
||||
** in this file for details. If in doubt, do not deviate from existing
|
||||
** commenting and indentation practices when changing or adding code.
|
||||
**
|
||||
** $Id: vdbe.c,v 1.810 2009/01/05 22:30:39 drh Exp $
|
||||
** $Id: vdbe.c,v 1.811 2009/01/14 00:55:10 drh Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -52572,6 +52677,7 @@ case OP_Last: { /* jump */
|
||||
rc = sqlite3BtreeLast(pCrsr, &res);
|
||||
pC->nullRow = (u8)res;
|
||||
pC->deferredMoveto = 0;
|
||||
pC->rowidIsValid = 0;
|
||||
pC->cacheStatus = CACHE_STALE;
|
||||
if( res && pOp->p2>0 ){
|
||||
pc = pOp->p2 - 1;
|
||||
@ -52622,6 +52728,7 @@ case OP_Rewind: { /* jump */
|
||||
pC->atFirst = res==0 ?1:0;
|
||||
pC->deferredMoveto = 0;
|
||||
pC->cacheStatus = CACHE_STALE;
|
||||
pC->rowidIsValid = 0;
|
||||
}else{
|
||||
res = 1;
|
||||
}
|
||||
@ -70040,7 +70147,7 @@ SQLITE_PRIVATE int sqlite3AutoLoadExtensions(sqlite3 *db){
|
||||
*************************************************************************
|
||||
** This file contains code used to implement the PRAGMA command.
|
||||
**
|
||||
** $Id: pragma.c,v 1.200 2009/01/09 21:41:17 drh Exp $
|
||||
** $Id: pragma.c,v 1.201 2009/01/13 20:14:16 drh Exp $
|
||||
*/
|
||||
|
||||
/* Ignore this whole file if pragmas are disabled
|
||||
@ -70552,7 +70659,7 @@ SQLITE_PRIVATE void sqlite3Pragma(
|
||||
** PRAGMA [database.]journal_size_limit
|
||||
** PRAGMA [database.]journal_size_limit=N
|
||||
**
|
||||
** Get or set the (boolean) value of the database 'auto-vacuum' parameter.
|
||||
** Get or set the size limit on rollback journal files.
|
||||
*/
|
||||
if( sqlite3StrICmp(zLeft,"journal_size_limit")==0 ){
|
||||
Pager *pPager = sqlite3BtreePager(pDb->pBt);
|
||||
@ -70574,7 +70681,8 @@ SQLITE_PRIVATE void sqlite3Pragma(
|
||||
** PRAGMA [database.]auto_vacuum
|
||||
** PRAGMA [database.]auto_vacuum=N
|
||||
**
|
||||
** Get or set the (boolean) value of the database 'auto-vacuum' parameter.
|
||||
** Get or set the value of the database 'auto-vacuum' parameter.
|
||||
** The value is one of: 0 NONE 1 FULL 2 INCREMENTAL
|
||||
*/
|
||||
#ifndef SQLITE_OMIT_AUTOVACUUM
|
||||
if( sqlite3StrICmp(zLeft,"auto_vacuum")==0 ){
|
||||
@ -79368,7 +79476,7 @@ SQLITE_PRIVATE void sqlite3VtabMakeWritable(Parse *pParse, Table *pTab){
|
||||
** so is applicable. Because this module is responsible for selecting
|
||||
** indices, you might also think of this module as the "query optimizer".
|
||||
**
|
||||
** $Id: where.c,v 1.363 2009/01/10 15:34:12 drh Exp $
|
||||
** $Id: where.c,v 1.364 2009/01/14 00:55:10 drh Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -81197,6 +81305,7 @@ static void bestIndex(
|
||||
WhereClause *pOrWC = &pTerm->u.pOrInfo->wc;
|
||||
WhereTerm *pOrTerm;
|
||||
int j;
|
||||
int sortable = 0;
|
||||
double rTotal = 0;
|
||||
nRow = 0;
|
||||
for(j=0, pOrTerm=pOrWC->a; j<pOrWC->nTerm; j++, pOrTerm++){
|
||||
@ -81216,6 +81325,14 @@ static void bestIndex(
|
||||
nRow += sTermCost.nRow;
|
||||
if( rTotal>=pCost->rCost ) break;
|
||||
}
|
||||
if( pOrderBy!=0 ){
|
||||
if( sortableByRowid(iCur, pOrderBy, pWC->pMaskSet, &rev) && !rev ){
|
||||
sortable = 1;
|
||||
}else{
|
||||
rTotal += nRow*estLog(nRow);
|
||||
WHERETRACE(("... sorting increases OR cost to %.9g\n", rTotal));
|
||||
}
|
||||
}
|
||||
WHERETRACE(("... multi-index OR cost=%.9g nrow=%.9g\n",
|
||||
rTotal, nRow));
|
||||
if( rTotal<pCost->rCost ){
|
||||
@ -81223,10 +81340,7 @@ static void bestIndex(
|
||||
pCost->nRow = nRow;
|
||||
pCost->plan.wsFlags = WHERE_MULTI_OR;
|
||||
pCost->plan.u.pTerm = pTerm;
|
||||
if( pOrderBy!=0
|
||||
&& sortableByRowid(iCur, pOrderBy, pWC->pMaskSet, &rev)
|
||||
&& !rev
|
||||
){
|
||||
if( sortable ){
|
||||
pCost->plan.wsFlags = WHERE_ORDERBY|WHERE_MULTI_OR;
|
||||
}
|
||||
}
|
||||
@ -89498,8 +89612,8 @@ SQLITE_API int sqlite3_test_control(int op, ...){
|
||||
**
|
||||
**
|
||||
**** Segment merging ****
|
||||
** To amortize update costs, segments are groups into levels and
|
||||
** merged in matches. Each increase in level represents exponentially
|
||||
** To amortize update costs, segments are grouped into levels and
|
||||
** merged in batches. Each increase in level represents exponentially
|
||||
** more documents.
|
||||
**
|
||||
** New documents (actually, document updates) are tokenized and
|
||||
|
@ -1,3 +1,14 @@
|
||||
2009-01-10 14:45 thor
|
||||
|
||||
* tags/1.6.4: tagging 1.6.4 ... going to include the ntom / bad
|
||||
frame fill fix
|
||||
|
||||
2008-12-20 16:32 thor
|
||||
|
||||
* tags/1.6.3/ChangeLog: yeah, adding it again... so that the one
|
||||
here is at least not outdated... do not get used to full
|
||||
changelog in svn
|
||||
|
||||
2008-12-20 15:57 thor
|
||||
|
||||
* tags/1.6.3/NEWS, tags/1.6.3/configure.ac: fix fifo default
|
||||
|
@ -1,3 +1,8 @@
|
||||
1.6.4
|
||||
---
|
||||
- Fix NtoM resampling behaviour with the broken frame fillup (especiall false alarms after seeking).
|
||||
As a side effect, the resampled output now should be consistent with seeks (always the same sample value at a certain sample offset).
|
||||
|
||||
1.6.3
|
||||
---
|
||||
|
||||
|
22
src/contrib/mpg123decoder/mpg123/configure
vendored
22
src/contrib/mpg123decoder/mpg123/configure
vendored
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.63 for mpg123 1.6.3.
|
||||
# Generated by GNU Autoconf 2.63 for mpg123 1.6.4.
|
||||
#
|
||||
# Report bugs to <mpg123-devel@lists.sourceforge.net>.
|
||||
#
|
||||
@ -746,8 +746,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='mpg123'
|
||||
PACKAGE_TARNAME='mpg123'
|
||||
PACKAGE_VERSION='1.6.3'
|
||||
PACKAGE_STRING='mpg123 1.6.3'
|
||||
PACKAGE_VERSION='1.6.4'
|
||||
PACKAGE_STRING='mpg123 1.6.4'
|
||||
PACKAGE_BUGREPORT='mpg123-devel@lists.sourceforge.net'
|
||||
|
||||
ac_unique_file="src/mpg123.c"
|
||||
@ -1606,7 +1606,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures mpg123 1.6.3 to adapt to many kinds of systems.
|
||||
\`configure' configures mpg123 1.6.4 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1677,7 +1677,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of mpg123 1.6.3:";;
|
||||
short | recursive ) echo "Configuration of mpg123 1.6.4:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1851,7 +1851,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
mpg123 configure 1.6.3
|
||||
mpg123 configure 1.6.4
|
||||
generated by GNU Autoconf 2.63
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||
@ -1865,7 +1865,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by mpg123 $as_me 1.6.3, which was
|
||||
It was created by mpg123 $as_me 1.6.4, which was
|
||||
generated by GNU Autoconf 2.63. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -2233,7 +2233,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
|
||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||
|
||||
|
||||
LIBMPG123_VERSION=11:3:11
|
||||
LIBMPG123_VERSION=11:4:11
|
||||
|
||||
|
||||
|
||||
@ -2693,7 +2693,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='mpg123'
|
||||
VERSION='1.6.3'
|
||||
VERSION='1.6.4'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
@ -23969,7 +23969,7 @@ exec 6>&1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by mpg123 $as_me 1.6.3, which was
|
||||
This file was extended by mpg123 $as_me 1.6.4, which was
|
||||
generated by GNU Autoconf 2.63. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -24032,7 +24032,7 @@ Report bugs to <bug-autoconf@gnu.org>."
|
||||
_ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_version="\\
|
||||
mpg123 config.status 1.6.3
|
||||
mpg123 config.status 1.6.4
|
||||
configured by $0, generated by GNU Autoconf 2.63,
|
||||
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||
|
||||
|
@ -10,8 +10,8 @@ AC_PREREQ(2.57)
|
||||
|
||||
dnl ############# Initialisation
|
||||
|
||||
AC_INIT([mpg123], [1.6.3], [mpg123-devel@lists.sourceforge.net])
|
||||
LIBMPG123_VERSION=11:3:11
|
||||
AC_INIT([mpg123], [1.6.4], [mpg123-devel@lists.sourceforge.net])
|
||||
LIBMPG123_VERSION=11:4:11
|
||||
AC_SUBST(LIBMPG123_VERSION)
|
||||
|
||||
AC_CONFIG_SRCDIR(src/mpg123.c)
|
||||
|
@ -4,7 +4,7 @@
|
||||
# - devel packages for alsa, sdl, etc... to build the respective output modules.
|
||||
Summary: The fast console mpeg audio decoder/player.
|
||||
Name: mpg123
|
||||
Version: 1.6.3
|
||||
Version: 1.6.4
|
||||
Release: 1
|
||||
URL: http://www.mpg123.org/
|
||||
License: GPL
|
||||
|
@ -9,7 +9,9 @@
|
||||
#define HAVE_STDLIB_H
|
||||
#define HAVE_STRING_H
|
||||
|
||||
#define INDEX_SIZE 10000
|
||||
#define FRAME_INDEX
|
||||
#define GAPLESS
|
||||
/* We want some frame index, eh? */
|
||||
#define FRAME_INDEX 1
|
||||
#define INDEX_SIZE 1000
|
||||
|
||||
/* also gapless playback! */
|
||||
#define GAPLESS 1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -561,6 +561,9 @@ static int get_next_frame(mpg123_handle *mh)
|
||||
debug1("ignoring frame %li", (long)mh->num);
|
||||
/* Decoder structure must be current! decode_update has been called before... */
|
||||
(mh->do_layer)(mh); mh->buffer.fill = 0;
|
||||
/* The ignored decoding may have failed. Make sure ntom stays consistent. */
|
||||
if(mh->down_sample == 3) ntom_set_ntom(mh, mh->num+1);
|
||||
|
||||
mh->to_ignore = mh->to_decode = FALSE;
|
||||
}
|
||||
/* Read new frame data; possibly breaking out here for MPG123_NEED_MORE. */
|
||||
@ -625,6 +628,7 @@ static int get_next_frame(mpg123_handle *mh)
|
||||
void decode_the_frame(mpg123_handle *fr)
|
||||
{
|
||||
size_t needed_bytes = samples_to_bytes(fr, frame_outs(fr, fr->num+1)-frame_outs(fr, fr->num));
|
||||
|
||||
fr->clip += (fr->do_layer)(fr);
|
||||
/* There could be less data than promised. */
|
||||
if(fr->buffer.fill < needed_bytes)
|
||||
@ -634,6 +638,8 @@ void decode_the_frame(mpg123_handle *fr)
|
||||
/* One could do a loop with individual samples instead... but zero is zero. */
|
||||
memset(fr->buffer.data + fr->buffer.fill, 0, needed_bytes - fr->buffer.fill);
|
||||
fr->buffer.fill = needed_bytes;
|
||||
/* ntom_val will be wrong when the decoding wasn't carried out completely */
|
||||
if(fr->down_sample == 3) ntom_set_ntom(fr, fr->num+1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -903,13 +909,20 @@ static int do_the_seek(mpg123_handle *mh)
|
||||
int b;
|
||||
off_t fnum = SEEKFRAME(mh);
|
||||
mh->buffer.fill = 0;
|
||||
|
||||
if(mh->num < mh->firstframe) mh->to_decode = FALSE;
|
||||
|
||||
if(mh->num == fnum && mh->to_decode) return MPG123_OK;
|
||||
if(mh->num == fnum-1)
|
||||
{
|
||||
mh->to_decode = FALSE;
|
||||
return MPG123_OK;
|
||||
}
|
||||
if(mh->down_sample == 3)
|
||||
{
|
||||
ntom_set_ntom(mh, fnum);
|
||||
debug3("fixed ntom for frame %"OFF_P" to %i, num=%"OFF_P, fnum, mh->ntom_val[0], mh->num);
|
||||
}
|
||||
b = mh->rd->seek_frame(mh, fnum);
|
||||
debug1("seek_frame returned: %i", b);
|
||||
if(b<0) return b;
|
||||
|
@ -7,6 +7,7 @@
|
||||
#ifndef MPG123_MSVC_H
|
||||
#define MPG123_MSVC_H
|
||||
|
||||
#include <tchar.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
|
@ -259,10 +259,6 @@
|
||||
RelativePath=".\mpg123\src\libmpg123\decode_sse3d.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\mpg123\src\libmpg123\dnoise.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\mpg123\src\libmpg123\equalizer.c"
|
||||
>
|
||||
|
Loading…
x
Reference in New Issue
Block a user