Solve possible glitch after seeking in mpc files. Documented the special treatment after seek.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17829 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
3d0c81db95
commit
25ffa8b198
2 changed files with 11 additions and 3 deletions
|
@ -43,7 +43,15 @@
|
|||
#include "reader.h"
|
||||
#include "streaminfo.h"
|
||||
|
||||
// define this to enable/disable support for streamversion SV4-6
|
||||
//#define MPC_SUPPORT_SV456
|
||||
|
||||
// SCF_HACK is used to avoid possible distortion after seeking with mpc files
|
||||
// background: scf's are coded differential in time domain. if you seek to the
|
||||
// desired postion it might happen that the baseline is missed and the resulting
|
||||
// scf is much too high (hissing noise). this hack uses the lowest scaling until
|
||||
// a non-differential scf could be decoded after seek. through this hack subbands
|
||||
// are faded out until there was at least a single non-differential scf found.
|
||||
#define SCF_HACK
|
||||
|
||||
enum {
|
||||
|
|
|
@ -65,7 +65,7 @@ extern const HuffmanTyp mpc_table_Region_C [ 4];
|
|||
#endif
|
||||
|
||||
#ifdef SCF_HACK
|
||||
#define SCF_DIFF(SCF, D) (SCF == -128 ? -128 : SCF + D)
|
||||
#define SCF_DIFF(SCF, D) (SCF == 127 ? 127 : SCF + D)
|
||||
#else
|
||||
#define SCF_DIFF(SCF, D) SCF + D
|
||||
#endif
|
||||
|
@ -1565,8 +1565,8 @@ void mpc_decoder_reset_state(mpc_decoder *d) {
|
|||
memset(d->Y_L , 0, sizeof Y_L );
|
||||
memset(d->Y_R , 0, sizeof Y_R );
|
||||
#ifdef SCF_HACK
|
||||
memset(d->SCF_Index_L , -128, sizeof d->SCF_Index_L );
|
||||
memset(d->SCF_Index_R , -128, sizeof d->SCF_Index_R );
|
||||
memset(d->SCF_Index_L , 127, sizeof d->SCF_Index_L );
|
||||
memset(d->SCF_Index_R , 127, sizeof d->SCF_Index_R );
|
||||
#else
|
||||
memset(d->SCF_Index_L , 0, sizeof d->SCF_Index_L );
|
||||
memset(d->SCF_Index_R , 0, sizeof d->SCF_Index_R );
|
||||
|
|
Loading…
Reference in a new issue