diff --git a/configure.in b/configure.in
index 992a886da82b7c2017214591c3c508477d46035c..6d5a844a217e60c710816fa0ab97a4d524fbb45b 100644
--- a/configure.in
+++ b/configure.in
@@ -7,7 +7,7 @@ AM_DISABLE_STATIC
 dnl Library versioning
 LIB_CURRENT=1
 LIB_REVISION=0
-LIB_AGE=0
+LIB_AGE=1
 AC_SUBST(LIB_CURRENT)
 AC_SUBST(LIB_REVISION)
 AC_SUBST(LIB_AGE)
diff --git a/include/ao/ao.h b/include/ao/ao.h
index 08f1bd9b8b4ea3af345024eb5d5691dba5eb7df7..8f2029b129d319a2deb31a73af92584263d2f6a0 100644
--- a/include/ao/ao.h
+++ b/include/ao/ao.h
@@ -95,6 +95,7 @@ void ao_play(ao_device_t *device, void* output_samples, uint_32 num_bytes);
 void ao_close(ao_device_t *device);
 
 /* misc functions */
+int ao_get_driver_count(void);
 int ao_is_big_endian(void);
 
 #ifdef __cplusplus
diff --git a/src/audio_out.c b/src/audio_out.c
index 62002bba8866561125438043fd4079999c2bf2f6..0b504163131a1d7efdddc901c2bece1cabd60694 100644
--- a/src/audio_out.c
+++ b/src/audio_out.c
@@ -318,3 +318,17 @@ int ao_is_big_endian(void)
 	if (bytewise[0] == 0xba) return 1;
 	return 0;
 }
+
+int ao_get_driver_count(void)
+{
+	int i = 0;
+
+	driver_tree_t *driver = driver_head;
+
+	while (driver) {
+		i++;
+		driver = driver->next;
+	}
+
+	return i;
+}