set_category( CAT_INPUT )
set_subcategory( SUBCAT_INPUT_DEMUX )
- add_bool( "mod-noisereduction", true, NULL, N_("Noise reduction"),
+ add_bool( "mod-noisereduction", true, N_("Noise reduction"),
NOISE_LONGTEXT, false )
- add_bool( "mod-reverb", false, NULL, N_("Reverb"),
+ add_bool( "mod-reverb", false, N_("Reverb"),
REVERB_LONGTEXT, false )
- add_integer_with_range( "mod-reverb-level", 0, 0, 100, NULL,
+ add_integer_with_range( "mod-reverb-level", 0, 0, 100,
N_("Reverberation level"), REVERB_LEVEL_LONGTEXT, true )
- add_integer_with_range( "mod-reverb-delay", 40, 0, 1000, NULL,
+ add_integer_with_range( "mod-reverb-delay", 40, 0, 1000,
N_("Reverberation delay"), REVERB_DELAY_LONGTEXT, true )
- add_bool( "mod-megabass", false, NULL, N_("Mega bass"),
+ add_bool( "mod-megabass", false, N_("Mega bass"),
MEGABASS_LONGTEXT, false )
- add_integer_with_range( "mod-megabass-level", 0, 0, 100, NULL,
+ add_integer_with_range( "mod-megabass-level", 0, 0, 100,
N_("Mega bass level"), MEGABASS_LEVEL_LONGTEXT, true )
- add_integer_with_range( "mod-megabass-range", 10, 10, 100, NULL,
+ add_integer_with_range( "mod-megabass-range", 10, 10, 100,
N_("Mega bass cutoff"), MEGABASS_RANGE_LONGTEXT, true )
- add_bool( "mod-surround", false, NULL, N_("Surround"), N_("Surround"),
+ add_bool( "mod-surround", false, N_("Surround"), N_("Surround"),
false )
- add_integer_with_range( "mod-surround-level", 0, 0, 100, NULL,
+ add_integer_with_range( "mod-surround-level", 0, 0, 100,
N_("Surround level"), SURROUND_LEVEL_LONGTEXT, true )
- add_integer_with_range( "mod-surround-delay", 5, 0, 1000, NULL,
+ add_integer_with_range( "mod-surround-delay", 5, 0, 1000,
N_("Surround delay (ms)"), SURROUND_DELAY_LONGTEXT, true )
set_callbacks( Open, Close )
/*****************************************************************************
* Local prototypes
*****************************************************************************/
+static vlc_mutex_t libmodplug_lock = VLC_STATIC_MUTEX;
struct demux_sys_t
{
/* We accept file based on extension match */
if( !p_demux->b_force )
{
- const char *psz_ext = strrchr( p_demux->psz_path, '.' );
+ if( !p_demux->psz_file )
+ return VLC_EGENERIC;
+ const char *psz_ext = strrchr( p_demux->psz_file, '.' );
int i;
if( !psz_ext )
}
/* Configure modplug before loading the file */
+ vlc_mutex_lock( &libmodplug_lock );
ModPlug_GetSettings( &settings );
settings.mFlags = MODPLUG_ENABLE_OVERSAMPLING;
settings.mChannels = 2;
settings.mFrequency = 44100;
settings.mResamplingMode = MODPLUG_RESAMPLE_FIR;
- if( var_CreateGetBool( p_demux, "mod-noisereduction" ) )
+ if( var_InheritBool( p_demux, "mod-noisereduction" ) )
settings.mFlags |= MODPLUG_ENABLE_NOISE_REDUCTION;
- if( var_CreateGetBool( p_demux, "mod-reverb" ) )
+ if( var_InheritBool( p_demux, "mod-reverb" ) )
settings.mFlags |= MODPLUG_ENABLE_REVERB;
- settings.mReverbDepth = var_CreateGetInteger( p_demux, "mod-reverb-level" );
- settings.mReverbDelay = var_CreateGetInteger( p_demux, "mod-reverb-delay" );
+ settings.mReverbDepth = var_InheritInteger( p_demux, "mod-reverb-level" );
+ settings.mReverbDelay = var_InheritInteger( p_demux, "mod-reverb-delay" );
- if( var_CreateGetBool( p_demux, "mod-megabass" ) )
+ if( var_InheritBool( p_demux, "mod-megabass" ) )
settings.mFlags |= MODPLUG_ENABLE_MEGABASS;
- settings.mBassAmount = var_CreateGetInteger( p_demux, "mod-megabass-level" );
- settings.mBassRange = var_CreateGetInteger( p_demux, "mod-megabass-range" );
+ settings.mBassAmount = var_InheritInteger( p_demux, "mod-megabass-level" );
+ settings.mBassRange = var_InheritInteger( p_demux, "mod-megabass-range" );
- if( var_CreateGetBool( p_demux, "mod-surround" ) )
+ if( var_InheritBool( p_demux, "mod-surround" ) )
settings.mFlags |= MODPLUG_ENABLE_SURROUND;
- settings.mSurroundDepth = var_CreateGetInteger( p_demux, "mod-surround-level" );
- settings.mSurroundDelay = var_CreateGetInteger( p_demux, "mod-surround-delay" );
+ settings.mSurroundDepth = var_InheritInteger( p_demux, "mod-surround-level" );
+ settings.mSurroundDelay = var_InheritInteger( p_demux, "mod-surround-delay" );
ModPlug_SetSettings( &settings );
- if( ( p_sys->f = ModPlug_Load( p_sys->p_data, p_sys->i_data ) ) == NULL )
+ p_sys->f = ModPlug_Load( p_sys->p_data, p_sys->i_data );
+ vlc_mutex_unlock( &libmodplug_lock );
+
+ if( !p_sys->f )
{
msg_Err( p_demux, "failed to understand the file" );
/* we try to seek to recover for other plugin */