X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess%2Fpvr.c;h=87c9bdc3a17839cc2bc21915bcfa8d360a270cb8;hb=e1ad2bf94fa81023c96db1f99e52d50efff5211c;hp=ce0da917ae976c678c43b187a3d932bc686b3d24;hpb=a52793e9241068899a36f4e73a125a2fbb81e1a9;p=vlc diff --git a/modules/access/pvr.c b/modules/access/pvr.c index ce0da917ae..87c9bdc3a1 100644 --- a/modules/access/pvr.c +++ b/modules/access/pvr.c @@ -32,14 +32,15 @@ #include #include #include -#include +#include +#include +#include #include #include #include #include #include -#include #ifdef HAVE_NEW_LINUX_VIDEODEV2_H # ifdef VIDEODEV2_H_FILE # include VIDEODEV2_H_FILE @@ -131,38 +132,38 @@ vlc_module_begin () set_capability( "access", 0 ) add_shortcut( "pvr" ) - add_integer( "pvr-caching", DEFAULT_PTS_DELAY / 1000, NULL, CACHING_TEXT, + add_integer( "pvr-caching", DEFAULT_PTS_DELAY / 1000, CACHING_TEXT, CACHING_LONGTEXT, true ) - add_string( "pvr-device", "/dev/video0", NULL, DEVICE_TEXT, + add_string( "pvr-device", "/dev/video0", DEVICE_TEXT, DEVICE_LONGTEXT, false ) - add_string( "pvr-radio-device", "/dev/radio0", NULL, RADIO_DEVICE_TEXT, + add_string( "pvr-radio-device", "/dev/radio0", RADIO_DEVICE_TEXT, RADIO_DEVICE_LONGTEXT, false ) - add_integer( "pvr-norm", V4L2_STD_UNKNOWN , NULL, NORM_TEXT, + add_integer( "pvr-norm", V4L2_STD_UNKNOWN , NORM_TEXT, NORM_LONGTEXT, false ) - change_integer_list( i_norm_list, psz_norm_list_text, NULL ) - add_integer( "pvr-width", -1, NULL, WIDTH_TEXT, WIDTH_LONGTEXT, true ) - add_integer( "pvr-height", -1, NULL, HEIGHT_TEXT, HEIGHT_LONGTEXT, + change_integer_list( i_norm_list, psz_norm_list_text ) + add_integer( "pvr-width", -1, WIDTH_TEXT, WIDTH_LONGTEXT, true ) + add_integer( "pvr-height", -1, HEIGHT_TEXT, HEIGHT_LONGTEXT, true ) - add_integer( "pvr-frequency", -1, NULL, FREQUENCY_TEXT, FREQUENCY_LONGTEXT, + add_integer( "pvr-frequency", -1, FREQUENCY_TEXT, FREQUENCY_LONGTEXT, false ) - add_integer( "pvr-framerate", -1, NULL, FRAMERATE_TEXT, FRAMERATE_LONGTEXT, + add_integer( "pvr-framerate", -1, FRAMERATE_TEXT, FRAMERATE_LONGTEXT, true ) - add_integer( "pvr-keyint", -1, NULL, KEYINT_TEXT, KEYINT_LONGTEXT, + add_integer( "pvr-keyint", -1, KEYINT_TEXT, KEYINT_LONGTEXT, true ) - add_integer( "pvr-bframes", -1, NULL, FRAMERATE_TEXT, FRAMERATE_LONGTEXT, + add_integer( "pvr-bframes", -1, FRAMERATE_TEXT, FRAMERATE_LONGTEXT, true ) - add_integer( "pvr-bitrate", -1, NULL, BITRATE_TEXT, BITRATE_LONGTEXT, + add_integer( "pvr-bitrate", -1, BITRATE_TEXT, BITRATE_LONGTEXT, false ) - add_integer( "pvr-bitrate-peak", -1, NULL, BITRATE_PEAK_TEXT, + add_integer( "pvr-bitrate-peak", -1, BITRATE_PEAK_TEXT, BITRATE_PEAK_LONGTEXT, true ) - add_integer( "pvr-bitrate-mode", -1, NULL, BITRATE_MODE_TEXT, + add_integer( "pvr-bitrate-mode", -1, BITRATE_MODE_TEXT, BITRATE_MODE_LONGTEXT, true ) - change_integer_list( i_bitrates, psz_bitrates_list_text, NULL ) - add_integer( "pvr-audio-bitmask", -1, NULL, BITMASK_TEXT, + change_integer_list( i_bitrates, psz_bitrates_list_text ) + add_integer( "pvr-audio-bitmask", -1, BITMASK_TEXT, BITMASK_LONGTEXT, true ) - add_integer( "pvr-audio-volume", -1, NULL, VOLUME_TEXT, + add_integer( "pvr-audio-volume", -1, VOLUME_TEXT, VOLUME_LONGTEXT, true ) - add_integer( "pvr-channel", -1, NULL, CHAN_TEXT, CHAN_LONGTEXT, true ) + add_integer( "pvr-channel", -1, CHAN_TEXT, CHAN_LONGTEXT, true ) set_callbacks( Open, Close ) vlc_module_end () @@ -559,24 +560,24 @@ static int Open( vlc_object_t * p_this ) /* defaults values */ var_Create( p_access, "pvr-caching", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT ); - p_sys->psz_videodev = var_CreateGetString( p_access, "pvr-device" ); - p_sys->psz_radiodev = var_CreateGetString( p_access, "pvr-radio-device" ); - p_sys->i_standard = var_CreateGetInteger( p_access, "pvr-norm" ); - p_sys->i_width = var_CreateGetInteger( p_access, "pvr-width" ); - p_sys->i_height = var_CreateGetInteger( p_access, "pvr-height" ); - p_sys->i_frequency = var_CreateGetInteger( p_access, "pvr-frequency" ); - p_sys->i_framerate = var_CreateGetInteger( p_access, "pvr-framerate" ); - p_sys->i_keyint = var_CreateGetInteger( p_access, "pvr-keyint" ); - p_sys->i_bframes = var_CreateGetInteger( p_access, "pvr-bframes" ); - p_sys->i_bitrate = var_CreateGetInteger( p_access, "pvr-bitrate" ); - p_sys->i_bitrate_peak = var_CreateGetInteger( p_access, "pvr-bitrate-peak" ); - p_sys->i_bitrate_mode = var_CreateGetInteger( p_access, "pvr-bitrate-mode" ); - p_sys->i_audio_bitmask = var_CreateGetInteger( p_access, "pvr-audio-bitmask" ); - p_sys->i_volume = var_CreateGetInteger( p_access, "pvr-audio-volume" ); - p_sys->i_input = var_CreateGetInteger( p_access, "pvr-channel" ); + p_sys->psz_videodev = var_InheritString( p_access, "pvr-device" ); + p_sys->psz_radiodev = var_InheritString( p_access, "pvr-radio-device" ); + p_sys->i_standard = var_InheritInteger( p_access, "pvr-norm" ); + p_sys->i_width = var_InheritInteger( p_access, "pvr-width" ); + p_sys->i_height = var_InheritInteger( p_access, "pvr-height" ); + p_sys->i_frequency = var_InheritInteger( p_access, "pvr-frequency" ); + p_sys->i_framerate = var_InheritInteger( p_access, "pvr-framerate" ); + p_sys->i_keyint = var_InheritInteger( p_access, "pvr-keyint" ); + p_sys->i_bframes = var_InheritInteger( p_access, "pvr-bframes" ); + p_sys->i_bitrate = var_InheritInteger( p_access, "pvr-bitrate" ); + p_sys->i_bitrate_peak = var_InheritInteger( p_access, "pvr-bitrate-peak" ); + p_sys->i_bitrate_mode = var_InheritInteger( p_access, "pvr-bitrate-mode" ); + p_sys->i_audio_bitmask = var_InheritInteger( p_access, "pvr-audio-bitmask" ); + p_sys->i_volume = var_InheritInteger( p_access, "pvr-audio-volume" ); + p_sys->i_input = var_InheritInteger( p_access, "pvr-channel" ); /* parse command line options */ - psz_tofree = strdup( p_access->psz_path ); + psz_tofree = strdup( p_access->psz_location ); if( !psz_tofree ) { free( p_sys->psz_radiodev ); @@ -592,7 +593,7 @@ static int Open( vlc_object_t * p_this ) if( *psz_parser == '/' ) { free( p_sys->psz_videodev ); - p_sys->psz_videodev = strdup( psz_parser ); + p_sys->psz_videodev = decode_URI_duplicate( psz_parser ); break; } @@ -663,7 +664,7 @@ static int Open( vlc_object_t * p_this ) free( psz_tofree ); /* open the device */ - p_sys->i_fd = utf8_open( p_sys->psz_videodev, O_RDWR ); + p_sys->i_fd = vlc_open( p_sys->psz_videodev, O_RDWR ); if( p_sys->i_fd < 0 ) { msg_Err( p_access, "Cannot open device %s (%m).", @@ -773,7 +774,7 @@ static int Open( vlc_object_t * p_this ) if ( (p_sys->i_frequency >= pi_radio_range[0]) && (p_sys->i_frequency <= pi_radio_range[1]) ) { - p_sys->i_radio_fd = utf8_open( p_sys->psz_radiodev, O_RDWR ); + p_sys->i_radio_fd = vlc_open( p_sys->psz_radiodev, O_RDWR ); if( p_sys->i_radio_fd < 0 ) { msg_Err( p_access, "Cannot open radio device (%m)." ); @@ -904,31 +905,12 @@ static void Close( vlc_object_t * p_this ) static ssize_t Read( access_t * p_access, uint8_t * p_buffer, size_t i_len ) { access_sys_t *p_sys = (access_sys_t *) p_access->p_sys; - struct pollfd ufd; - int i_ret; - - ufd.fd = p_sys->i_fd; - ufd.events = POLLIN; + ssize_t i_ret; if( p_access->info.b_eof ) return 0; - do - { - if( !vlc_object_alive (p_access) ) - return 0; - - ufd.revents = 0; - } - while( ( i_ret = poll( &ufd, 1, 500 ) ) == 0 ); - - if( i_ret < 0 ) - { - msg_Err( p_access, "Polling error (%m)." ); - return -1; - } - - i_ret = read( p_sys->i_fd, p_buffer, i_len ); + i_ret = net_Read( p_access, p_sys->i_fd, NULL, p_buffer, i_len, false ); if( i_ret == 0 ) { p_access->info.b_eof = true; @@ -969,7 +951,7 @@ static int Control( access_t *p_access, int i_query, va_list args ) /* */ case ACCESS_GET_PTS_DELAY: pi_64 = (int64_t*)va_arg( args, int64_t * ); - *pi_64 = (int64_t)var_GetInteger( p_access, "pvr-caching" ) * 1000; + *pi_64 = var_GetInteger( p_access, "pvr-caching" ) * 1000; break; /* */