static int Open (vlc_object_t *obj) { access_t *access = (access_t *)obj; access_sys_t *sys = malloc (sizeof (*sys)); if (unlikely(sys == NULL)) return VLC_ENOMEM; var_LocationParse (obj, access->psz_location, "dvb-"); dvb_device_t *dev = dvb_open (obj); if (dev == NULL) { free (sys); return VLC_EGENERIC; } sys->dev = dev; sys->signal_poll = 0; access->p_sys = sys; uint64_t freq = var_InheritFrequency (obj); if (freq != 0) { const delsys_t *delsys = GuessSystem (access->psz_access, dev); if (delsys == NULL || Tune (obj, dev, delsys, freq)) { msg_Err (obj, "tuning to %"PRIu64" Hz failed", freq); dialog_Fatal (obj, N_("Digital broadcasting"), N_("The selected digital tuner does not support " "the specified parameters.\n" "Please check the preferences.")); goto error; } } dvb_add_pid (dev, 0); access->pf_block = Read; access->pf_control = Control; if (access->psz_demux == NULL || !access->psz_demux[0]) { free (access->psz_demux); access->psz_demux = strdup ("ts"); } return VLC_SUCCESS; error: Close (obj); access->p_sys = NULL; return VLC_EGENERIC; }
static int Open (vlc_object_t *obj) { access_t *access = (access_t *)obj; access_sys_t *sys = malloc (sizeof (*sys)); if (unlikely(sys == NULL)) return VLC_ENOMEM; var_LocationParse (obj, access->psz_location, "dvb-"); dvb_device_t *dev = dvb_open (obj); if (dev == NULL) { free (sys); return VLC_EGENERIC; } sys->dev = dev; sys->signal_poll = 0; sys->pf_setup = NULL; access->p_sys = sys; uint64_t freq = var_InheritFrequency (obj); if (freq != 0) { dtv_delivery_t d = GuessSystem (access->psz_name, dev); if(d != DTV_DELIVERY_NONE) sys->pf_setup = dtv_get_delivery_tuner_setup(d); if (sys->pf_setup == NULL || Tune (obj, dev, sys->pf_setup, freq)) { msg_Err (obj, "tuning to %"PRIu64" Hz failed", freq); vlc_dialog_display_error (obj, N_("Digital broadcasting"), N_("The selected digital tuner does not support " "the specified parameters.\n" "Please check the preferences.")); goto error; } } dvb_add_pid (dev, 0); access->pf_block = Read; access->pf_control = Control; return VLC_SUCCESS; error: Close (obj); access->p_sys = NULL; return VLC_EGENERIC; }