Index: uspace/srv/audio/hound/audio_device.c
===================================================================
--- uspace/srv/audio/hound/audio_device.c	(revision f7b36bc174d9e4a64b3ec01f4e41c4900677d322)
+++ uspace/srv/audio/hound/audio_device.c	(revision 8e77b60eb9a6d9795e56ef452732a0eb498ca046)
@@ -197,11 +197,4 @@
 			return ret;
 		}
-		dev->sink.format = AUDIO_FORMAT_ANY;
-		ret = release_buffer(dev);
-		if (ret != EOK) {
-			log_error("Failed to release buffer: %s",
-			    str_error(ret));
-			return ret;
-		}
 	}
 	return EOK;
@@ -252,12 +245,4 @@
 			return ret;
 		}
-		source->format = AUDIO_FORMAT_ANY;
-		ret = release_buffer(dev);
-		if (ret != EOK) {
-			log_error("Failed to release buffer: %s",
-			    str_error(ret));
-			return ret;
-		}
-		audio_pcm_unregister_event_callback(dev->sess);
 	}
 
@@ -296,7 +281,26 @@
 			break;
 		}
-		case PCM_EVENT_PLAYBACK_TERMINATED:
-			log_verbose("Playback terminated!");
+		case PCM_EVENT_CAPTURE_TERMINATED: {
+			log_verbose("Capture terminated");
+			dev->source.format = AUDIO_FORMAT_ANY;
+			const int ret = release_buffer(dev);
+			if (ret != EOK) {
+				log_error("Failed to release buffer: %s",
+				    str_error(ret));
+			}
+			audio_pcm_unregister_event_callback(dev->sess);
 			break;
+		}
+		case PCM_EVENT_PLAYBACK_TERMINATED: {
+			log_verbose("Playback Terminated");
+			dev->sink.format = AUDIO_FORMAT_ANY;
+			const int ret = release_buffer(dev);
+			if (ret != EOK) {
+				log_error("Failed to release buffer: %s",
+				    str_error(ret));
+			}
+			audio_pcm_unregister_event_callback(dev->sess);
+			break;
+		}
 		case PCM_EVENT_FRAMES_CAPTURED: {
 			const int ret = audio_source_push_data(&dev->source,
@@ -307,9 +311,6 @@
 			break;
 		}
-		case PCM_EVENT_CAPTURE_TERMINATED:
-			log_verbose("Recording terminated!");
-			break;
 		case 0:
-			log_info("Device event call back hangup");
+			log_info("Device event callback hangup");
 			return;
 		}
