vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Mar 11 18:55:37 2012 +0200| [0c9d696d4d2224a35b7e85c366e361a126352ce3] | committer: Rémi Denis-Courmont
Linux DVB: show libvlc and kernel API versions in debug > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0c9d696d4d2224a35b7e85c366e361a126352ce3 --- modules/access/dtv/linux.c | 38 ++++++++++++++++++++++++++++---------- 1 files changed, 28 insertions(+), 10 deletions(-) diff --git a/modules/access/dtv/linux.c b/modules/access/dtv/linux.c index 70ee4b0..2a07d62 100644 --- a/modules/access/dtv/linux.c +++ b/modules/access/dtv/linux.c @@ -435,12 +435,13 @@ void dvb_remove_pid (dvb_device_t *d, uint16_t pid) static unsigned dvb_probe_frontend (dvb_device_t *d, int fd) { #if DVBv5(5) - struct dtv_property prop = { - .cmd = DTV_ENUM_DELSYS + struct dtv_property prop[2] = { + { .cmd = DTV_API_VERSION }, + { .cmd = DTV_ENUM_DELSYS }, }; struct dtv_properties props = { - .num = 1, - .props = &prop + .num = 2, + .props = prop }; if (ioctl (fd, FE_GET_PROPERTY, &props) < 0) @@ -472,11 +473,13 @@ static unsigned dvb_probe_frontend (dvb_device_t *d, int fd) }; unsigned systems = 0; - msg_Dbg (d->obj, "probing frontend"); + msg_Dbg (d->obj, "probing frontend (kernel API v%u.%u, user API v%u.%u)", + prop[0].u.data >> 8, prop[0].u.data & 0xFF, + DVB_API_VERSION, DVB_API_VERSION_MINOR); - for (size_t i = 0; i < prop.u.buffer.len; i++) + for (size_t i = 0; i < prop[1].u.buffer.len; i++) { - unsigned sys = prop.u.buffer.data[i]; + unsigned sys = prop[1].u.buffer.data[i]; if (sys >= (sizeof (systab) / sizeof (systab[0])) || !systab[sys]) { @@ -487,15 +490,30 @@ static unsigned dvb_probe_frontend (dvb_device_t *d, int fd) systems |= systab[sys]; } #else - struct dvb_frontend_info info; + struct dtv_property prop[1] = { + { .cmd = DTV_API_VERSION }, + }; + struct dtv_properties props = { + .num = 1, + .props = prop + }; + if (ioctl (fd, FE_GET_PROPERTY, &props) < 0) + { + msg_Err (d->obj, "unsupported kernel DVB version 3 or older (%m)"); + return 0; + } + + msg_Dbg (d->obj, "probing frontend (kernel API v%u.%u, user API v%u.%u)", + prop[0].u.data >> 8, prop[0].u.data & 0xFF, + DVB_API_VERSION, DVB_API_VERSION_MINOR); + struct dvb_frontend_info info; if (ioctl (fd, FE_GET_INFO, &info) < 0) { msg_Err (d->obj, "cannot get frontend info: %m"); return 0; } - - msg_Dbg (d->obj, "probing frontend: %s", info.name); + msg_Dbg (d->obj, " name %s", info.name); msg_Dbg (d->obj, " type %u, capabilities 0x%08X", info.type, info.caps); msg_Dbg (d->obj, " frequencies %10"PRIu32" to %10"PRIu32, info.frequency_min, info.frequency_max); _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
