forked from Bananymous/banan-os
				
			userspace: Add `audio` utility to play audio files
This commit is contained in:
		
							parent
							
								
									3aea2c007d
								
							
						
					
					
						commit
						6b9dbf625d
					
				|  | @ -1,4 +1,5 @@ | ||||||
| set(USERSPACE_PROGRAMS | set(USERSPACE_PROGRAMS | ||||||
|  | 	audio | ||||||
| 	AudioServer | 	AudioServer | ||||||
| 	bananfetch | 	bananfetch | ||||||
| 	basename | 	basename | ||||||
|  |  | ||||||
|  | @ -0,0 +1,9 @@ | ||||||
|  | set(SOURCES | ||||||
|  | 	main.cpp | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | add_executable(audio ${SOURCES}) | ||||||
|  | banan_link_library(audio libc) | ||||||
|  | banan_link_library(audio libaudio) | ||||||
|  | 
 | ||||||
|  | install(TARGETS audio OPTIONAL) | ||||||
|  | @ -0,0 +1,36 @@ | ||||||
|  | #include <LibAudio/Audio.h> | ||||||
|  | 
 | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <unistd.h> | ||||||
|  | 
 | ||||||
|  | int main(int argc, char** argv) | ||||||
|  | { | ||||||
|  | 	if (argc != 2) | ||||||
|  | 	{ | ||||||
|  | 		fprintf(stderr, "usage: %s FILE\n", argv[0]); | ||||||
|  | 		return 1; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	auto audio_or_error = LibAudio::Audio::load(argv[1]); | ||||||
|  | 	if (audio_or_error.is_error()) | ||||||
|  | 	{ | ||||||
|  | 		fprintf(stderr, "failed to load %s: %s\n", argv[1], audio_or_error.error().get_message()); | ||||||
|  | 		return 1; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	auto audio = audio_or_error.release_value(); | ||||||
|  | 
 | ||||||
|  | 	if (auto ret = audio.start(); ret.is_error()) | ||||||
|  | 	{ | ||||||
|  | 		fprintf(stderr, "failed start playing audio: %s\n", ret.error().get_message()); | ||||||
|  | 		return 1; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	while (audio.is_playing()) | ||||||
|  | 	{ | ||||||
|  | 		usleep(10'000); | ||||||
|  | 		audio.update(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue