device: add a few capability-related methods
diff --git a/lib/examples/vicodec_test/device_api.rs b/lib/examples/vicodec_test/device_api.rs
index d2ce37c..d104eb2 100644
--- a/lib/examples/vicodec_test/device_api.rs
+++ b/lib/examples/vicodec_test/device_api.rs
@@ -27,7 +27,7 @@
     mut save_output: F,
 ) {
     let device = Device::open(device_path, DeviceConfig::new()).expect("Failed to open device");
-    let caps = &device.capability;
+    let caps = device.caps();
     println!(
         "Opened device: {}\n\tdriver: {}\n\tbus: {}\n\tcapabilities: {}",
         caps.card, caps.driver, caps.bus_info, caps.capabilities
diff --git a/lib/src/device.rs b/lib/src/device.rs
index f44924c..c69290d 100644
--- a/lib/src/device.rs
+++ b/lib/src/device.rs
@@ -52,7 +52,7 @@
 
 /// An opened V4L2 device. `Queue` objects can be instantiated from it.
 pub struct Device {
-    pub capability: Capability,
+    capability: Capability,
     fd: File,
     used_queues: Mutex<BTreeSet<QueueType>>,
 }
@@ -91,6 +91,11 @@
         // Safe because we are constructing a file from Fd we just opened.
         Ok(Device::new(unsafe { File::from_raw_fd(fd) })?)
     }
+
+    /// Returns the capabilities of the device, i.e. the result of QUERYCAPS.
+    pub fn caps(&self) -> &Capability {
+        &self.capability
+    }
 }
 
 impl AsRawFd for Device {
diff --git a/lib/src/ioctl/querycap.rs b/lib/src/ioctl/querycap.rs
index f7b0dfd..1e6b164 100644
--- a/lib/src/ioctl/querycap.rs
+++ b/lib/src/ioctl/querycap.rs
@@ -85,6 +85,19 @@
     pub device_caps: Option<Capabilities>,
 }
 
+impl Capability {
+    /// Returns the set of capabilities of the hardware as a whole.
+    pub fn capabilities(&self) -> Capabilities {
+        self.capabilities
+    }
+
+    /// Returns the capabilities that apply to the currently opened V4L2 node.
+    pub fn device_caps(&self) -> Capabilities {
+        self.device_caps
+            .unwrap_or_else(|| self.capabilities.difference(Capabilities::DEVICE_CAPS))
+    }
+}
+
 impl QueryCap for Capability {
     fn from(qcap: bindings::v4l2_capability) -> Self {
         Capability {