#define __STDC_FORMAT_MACROS 1
#define CFG_PREFIX "dshow-"
#include <inttypes.h>
+#include <list>
+#include <string>
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_dialog.h> /* dialog_Fatal */
#include <vlc_charset.h> /* FromWide */
-#include "common.h"
+#include <initguid.h>
+#include "vlc_dshow.h"
+
+#include "access.h"
#include "filter.h"
/*****************************************************************************
"PAL_N_COMBO"
};
-#define CACHING_TEXT N_("Caching value in ms")
-#define CACHING_LONGTEXT N_( \
- "Caching value for DirectShow streams. " \
- "This value should be set in milliseconds." )
#define VDEV_TEXT N_("Video device name")
#define VDEV_LONGTEXT N_( \
"Name of the video device that will be used by the " \
set_description( N_("DirectShow input") )
set_category( CAT_INPUT )
set_subcategory( SUBCAT_INPUT_ACCESS )
- add_integer( CFG_PREFIX "caching", (mtime_t)(0.2*CLOCK_FREQ) / 1000, NULL,
- CACHING_TEXT, CACHING_LONGTEXT, true )
- add_string( CFG_PREFIX "vdev", NULL, NULL, VDEV_TEXT, VDEV_LONGTEXT, false)
+ add_string( CFG_PREFIX "vdev", NULL, VDEV_TEXT, VDEV_LONGTEXT, false)
change_string_list( ppsz_vdev, ppsz_vdev_text, FindDevicesCallback )
change_action_add( FindDevicesCallback, N_("Refresh list") )
change_action_add( ConfigDevicesCallback, N_("Configure") )
- add_string( CFG_PREFIX "adev", NULL, NULL, ADEV_TEXT, ADEV_LONGTEXT, false)
+ add_string( CFG_PREFIX "adev", NULL, ADEV_TEXT, ADEV_LONGTEXT, false)
change_string_list( ppsz_adev, ppsz_adev_text, FindDevicesCallback )
change_action_add( FindDevicesCallback, N_("Refresh list") )
change_action_add( ConfigDevicesCallback, N_("Configure") )
- add_string( CFG_PREFIX "size", NULL, NULL, SIZE_TEXT, SIZE_LONGTEXT, false)
+ add_string( CFG_PREFIX "size", NULL, SIZE_TEXT, SIZE_LONGTEXT, false)
+ change_safe()
- add_string( CFG_PREFIX "aspect-ratio", "4:3", NULL, ASPECT_TEXT, ASPECT_LONGTEXT, false)
+ add_string( CFG_PREFIX "aspect-ratio", "4:3", ASPECT_TEXT, ASPECT_LONGTEXT, false)
+ change_safe()
- add_string( CFG_PREFIX "chroma", NULL, NULL, CHROMA_TEXT, CHROMA_LONGTEXT, true )
+ add_string( CFG_PREFIX "chroma", NULL, CHROMA_TEXT, CHROMA_LONGTEXT, true )
+ change_safe()
- add_float( CFG_PREFIX "fps", 0.0f, NULL, FPS_TEXT, FPS_LONGTEXT, true )
+ add_float( CFG_PREFIX "fps", 0.0f, FPS_TEXT, FPS_LONGTEXT, true )
+ change_safe()
- add_bool( CFG_PREFIX "config", false, NULL, CONFIG_TEXT, CONFIG_LONGTEXT, true )
+ add_bool( CFG_PREFIX "config", false, CONFIG_TEXT, CONFIG_LONGTEXT, true )
- add_bool( CFG_PREFIX "tuner", false, NULL, TUNER_TEXT, TUNER_LONGTEXT, true )
+ add_bool( CFG_PREFIX "tuner", false, TUNER_TEXT, TUNER_LONGTEXT, true )
- add_integer( CFG_PREFIX "tuner-channel", 0, NULL, CHANNEL_TEXT, CHANNEL_LONGTEXT,
+ add_integer( CFG_PREFIX "tuner-channel", 0, CHANNEL_TEXT, CHANNEL_LONGTEXT,
true )
+ change_safe()
- add_integer( CFG_PREFIX "tuner-frequency", 0, NULL, TVFREQ_TEXT, TVFREQ_LONGTEXT,
+ add_integer( CFG_PREFIX "tuner-frequency", 0, TVFREQ_TEXT, TVFREQ_LONGTEXT,
true )
+ change_safe()
- add_integer( CFG_PREFIX "tuner-country", 0, NULL, COUNTRY_TEXT, COUNTRY_LONGTEXT,
+ add_integer( CFG_PREFIX "tuner-country", 0, COUNTRY_TEXT, COUNTRY_LONGTEXT,
true )
- add_integer( CFG_PREFIX "tuner-standard", 0, NULL, STANDARD_TEXT, STANDARD_LONGTEXT,
+ add_integer( CFG_PREFIX "tuner-standard", 0, STANDARD_TEXT, STANDARD_LONGTEXT,
false )
change_integer_list( i_standards_list, ppsz_standards_list_text )
+ change_safe()
- add_integer( CFG_PREFIX "tuner-input", 0, NULL, TUNER_INPUT_TEXT,
+ add_integer( CFG_PREFIX "tuner-input", 0, TUNER_INPUT_TEXT,
TUNER_INPUT_LONGTEXT, true )
change_integer_list( pi_tuner_input, ppsz_tuner_input_text )
+ change_safe()
- add_integer( CFG_PREFIX "video-input", -1, NULL, VIDEO_IN_TEXT,
+ add_integer( CFG_PREFIX "video-input", -1, VIDEO_IN_TEXT,
VIDEO_IN_LONGTEXT, true )
+ change_safe()
- add_integer( CFG_PREFIX "video-output", -1, NULL, VIDEO_OUT_TEXT,
+ add_integer( CFG_PREFIX "video-output", -1, VIDEO_OUT_TEXT,
VIDEO_OUT_LONGTEXT, true )
- add_integer( CFG_PREFIX "audio-input", -1, NULL, AUDIO_IN_TEXT,
+ add_integer( CFG_PREFIX "audio-input", -1, AUDIO_IN_TEXT,
AUDIO_IN_LONGTEXT, true )
+ change_safe()
- add_integer( CFG_PREFIX "audio-output", -1, NULL, AUDIO_OUT_TEXT,
+ add_integer( CFG_PREFIX "audio-output", -1, AUDIO_OUT_TEXT,
AUDIO_OUT_LONGTEXT, true )
- add_integer( CFG_PREFIX "amtuner-mode", AMTUNER_MODE_TV, NULL,
+ add_integer( CFG_PREFIX "amtuner-mode", AMTUNER_MODE_TV,
AMTUNER_MODE_TEXT, AMTUNER_MODE_LONGTEXT, false)
change_integer_list( pi_amtuner_mode, ppsz_amtuner_mode_text )
+ change_safe()
- add_integer( CFG_PREFIX "audio-channels", 0, NULL, AUDIO_CHANNELS_TEXT,
+ add_integer( CFG_PREFIX "audio-channels", 0, AUDIO_CHANNELS_TEXT,
AUDIO_CHANNELS_LONGTEXT, true )
- add_integer( CFG_PREFIX "audio-samplerate", 0, NULL, AUDIO_SAMPLERATE_TEXT,
+ add_integer( CFG_PREFIX "audio-samplerate", 0, AUDIO_SAMPLERATE_TEXT,
AUDIO_SAMPLERATE_LONGTEXT, true )
- add_integer( CFG_PREFIX "audio-bitspersample", 0, NULL, AUDIO_BITSPERSAMPLE_TEXT,
+ add_integer( CFG_PREFIX "audio-bitspersample", 0, AUDIO_BITSPERSAMPLE_TEXT,
AUDIO_BITSPERSAMPLE_LONGTEXT, true )
add_shortcut( "dshow" )
var_Create( p_this, CFG_PREFIX "amtuner-mode",
VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
- var_Create( p_this, CFG_PREFIX "caching", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
-
var_Create( p_this, CFG_PREFIX "video-input", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Create( p_this, CFG_PREFIX "audio-input", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
var_Create( p_this, CFG_PREFIX "video-output", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
/* Enumerate devices and display their names */
FindCaptureDevice( p_this, NULL, &list_devices, b_audio );
- if( !list_devices.size() )
+ if( list_devices.empty() )
return VLC_EGENERIC;
list<string>::iterator iter;
- for( iter = list_devices.begin(); iter != list_devices.end(); iter++ )
+ for( iter = list_devices.begin(); iter != list_devices.end(); ++iter )
msg_Dbg( p_this, "found device: %s", iter->c_str() );
/* If no device name was specified, pick the 1st one */
/* */
case ACCESS_GET_PTS_DELAY:
pi_64 = (int64_t*)va_arg( args, int64_t * );
- *pi_64 = var_GetInteger( p_access, CFG_PREFIX "caching" ) * 1000;
+ *pi_64 =
+ INT64_C(1000) * var_InheritInteger( p_access, "live-caching" );
break;
/* */
case DEMUX_GET_PTS_DELAY:
pi64 = (int64_t*)va_arg( args, int64_t * );
- *pi64 = var_GetInteger( p_demux, CFG_PREFIX "caching" ) * 1000;
+ *pi64 =
+ INT64_C(1000) * var_InheritInteger( p_demux, "live-caching" );
return VLC_SUCCESS;
case DEMUX_GET_TIME:
* config variable callback
*****************************************************************************/
static int FindDevicesCallback( vlc_object_t *p_this, char const *psz_name,
- vlc_value_t newval, vlc_value_t oldval, void * )
+ vlc_value_t, vlc_value_t, void * )
{
module_config_t *p_item;
bool b_audio = false;
list<string>::iterator iter;
for( iter = list_devices.begin(), i = 2; iter != list_devices.end();
- iter++, i++ )
+ ++iter, i++ )
{
p_item->ppsz_list[i] = strdup( iter->c_str() );
p_item->ppsz_list_text[i] = NULL;
}
static int ConfigDevicesCallback( vlc_object_t *p_this, char const *psz_name,
- vlc_value_t newval, vlc_value_t oldval, void * )
+ vlc_value_t newval, vlc_value_t, void * )
{
module_config_t *p_item;
bool b_audio = false;
static void ConfigTuner( vlc_object_t *p_this, ICaptureGraphBuilder2 *p_graph,
IBaseFilter *p_device_filter )
{
- int i_channel, i_country, i_input, i_amtuner_mode, i_standard, i_frequency;
+ int i_channel, i_country, i_input, i_amtuner_mode, i_standard;
long l_modes = 0;
+ unsigned i_frequency;
IAMTVTuner *p_TV;
HRESULT hr;
goto free_on_error;
}
- msg_Dbg( p_this, "Frequency range supproted from %d to %d.", ModeCaps.MinFrequency, ModeCaps.MaxFrequency);
- msg_Dbg( p_this, "Video standards supproted by the tuner: ");
- for(int i = 0 ; i < ARRAY_SIZE(ppsz_standards_list_text); i++) {
+ msg_Dbg( p_this, "Frequency range supported from %ld to %ld.",
+ ModeCaps.MinFrequency, ModeCaps.MaxFrequency);
+ msg_Dbg( p_this, "Video standards supported by the tuner: ");
+ for(size_t i = 0 ; i < ARRAY_SIZE(ppsz_standards_list_text); i++) {
if(ModeCaps.StandardsSupported & i_standards_list[i])
msg_Dbg( p_this, "%s, ", ppsz_standards_list_text[i]);
}