From a321e6a54352e222ce8e2187281241b484cedc47 Mon Sep 17 00:00:00 2001 From: David Reid Date: Sun, 25 Feb 2018 18:25:18 +1000 Subject: [PATCH] Update the simple playback example. This makes the multi playback example obsolete and has thus been removed. --- examples/multi_playback.c | 108 ------------------------------------- examples/simple_playback.c | 46 +++++++--------- 2 files changed, 20 insertions(+), 134 deletions(-) delete mode 100644 examples/multi_playback.c diff --git a/examples/multi_playback.c b/examples/multi_playback.c deleted file mode 100644 index b288133c..00000000 --- a/examples/multi_playback.c +++ /dev/null @@ -1,108 +0,0 @@ -#define _CRT_SECURE_NO_WARNINGS - -// These are implemented at the bottom of this file. -#define STB_VORBIS_HEADER_ONLY -#include "../extras/stb_vorbis.c" -#include "../extras/dr_flac.h" -#include "../extras/dr_wav.h" -#include "../extras/dr_mp3.h" - -#define MAL_IMPLEMENTATION -#include "../mini_al.h" - -mal_uint32 on_send_frames_to_device(mal_device* pDevice, mal_uint32 frameCount, void* pFramesOut) -{ - mal_decoder* pDecoder = (mal_decoder*)pDevice->pUserData; - if (pDecoder == NULL) { - return 0; - } - - return (mal_uint32)mal_decoder_read(pDecoder, frameCount, pFramesOut); -} - -int main(int argc, char** argv) -{ - if (argc < 2) { - printf("No input file."); - return -1; - } - - mal_decoder decoder; - mal_result result = mal_decoder_init_file(argv[1], NULL, &decoder); - if (result != MAL_SUCCESS) { - return -2; - } - - - mal_context context; - if (mal_context_init(NULL, 0, NULL, &context) != MAL_SUCCESS) { - printf("Failed to initialize context.\n"); - mal_decoder_uninit(&decoder); - return -3; - } - - mal_device_config deviceConfig = mal_device_config_init_playback(decoder.outputFormat, decoder.outputChannels, decoder.outputSampleRate, on_send_frames_to_device); - mal_copy_memory(&deviceConfig.channelMap, decoder.outputChannelMap, sizeof(decoder.outputChannelMap)); - - mal_device device; - if (mal_device_init(&context, mal_device_type_playback, NULL, &deviceConfig, &decoder, &device) != MAL_SUCCESS) { - printf("Failed to initialize device.\n"); - mal_context_uninit(&context); - mal_decoder_uninit(&decoder); - return -4; - } - - if (mal_device_start(&device) != MAL_SUCCESS) { - printf("Failed to start playback device.\n"); - mal_device_uninit(&device); - mal_context_uninit(&context); - mal_decoder_uninit(&decoder); - return -5; - } - - - printf("Press Enter to quit..."); - getchar(); - - mal_device_uninit(&device); - mal_context_uninit(&context); - mal_decoder_uninit(&decoder); - - return 0; -} - - -#define DR_FLAC_IMPLEMENTATION -#include "../extras/dr_flac.h" - -#define DR_WAV_IMPLEMENTATION -#include "../extras/dr_wav.h" - -#define DR_MP3_IMPLEMENTATION -#include "../extras/dr_mp3.h" - -#if defined(_MSC_VER) - #pragma warning(push) - #pragma warning(disable:4456) - #pragma warning(disable:4457) - #pragma warning(disable:4100) - #pragma warning(disable:4244) - #pragma warning(disable:4701) - #pragma warning(disable:4245) -#endif -#if defined(__GNUC__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wunused-value" - #pragma GCC diagnostic ignored "-Wunused-parameter" - #ifndef __clang__ - #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" - #endif -#endif -#undef STB_VORBIS_HEADER_ONLY -#include "../extras/stb_vorbis.c" -#if defined(_MSC_VER) - #pragma warning(pop) -#endif -#if defined(__GNUC__) - #pragma GCC diagnostic pop -#endif diff --git a/examples/simple_playback.c b/examples/simple_playback.c index 7f97fceb..435f1ae3 100644 --- a/examples/simple_playback.c +++ b/examples/simple_playback.c @@ -1,20 +1,24 @@ +#define DR_FLAC_IMPLEMENTATION +#include "../extras/dr_flac.h" // Enables FLAC decoding. +#define DR_MP3_IMPLEMENTATION +#include "../extras/dr_mp3.h" // Enables MP3 decoding. +#define DR_WAV_IMPLEMENTATION +#include "../extras/dr_wav.h" // Enables WAV decoding. + #define MAL_IMPLEMENTATION #include "../mini_al.h" -#define DR_WAV_IMPLEMENTATION -#include "../extras/dr_wav.h" - #include // This is the function that's used for sending more data to the device for playback. mal_uint32 on_send_frames_to_device(mal_device* pDevice, mal_uint32 frameCount, void* pSamples) { - drwav* pWav = (drwav*)pDevice->pUserData; - if (pWav == NULL) { + mal_decoder* pDecoder = (mal_decoder*)pDevice->pUserData; + if (pDecoder == NULL) { return 0; } - return (mal_uint32)drwav_read_s16(pWav, frameCount * pDevice->channels, (mal_int16*)pSamples) / pDevice->channels; + return (mal_uint32)mal_decoder_read(pDecoder, frameCount, pSamples); } int main(int argc, char** argv) @@ -24,43 +28,33 @@ int main(int argc, char** argv) return -1; } - drwav wav; - if (!drwav_init_file(&wav, argv[1])) { - printf("Not a valid WAV file.\n"); + mal_decoder decoder; + mal_result result = mal_decoder_init_file(argv[1], NULL, &decoder); + if (result != MAL_SUCCESS) { return -2; } - mal_context context; - if (mal_context_init(NULL, 0, NULL, &context) != MAL_SUCCESS) { - printf("Failed to initialize context.\n"); - drwav_uninit(&wav); - return -3; - } - - mal_device_config config = mal_device_config_init_playback(mal_format_s16, wav.channels, wav.sampleRate, on_send_frames_to_device); + mal_device_config config = mal_device_config_init_playback(decoder.outputFormat, decoder.outputChannels, decoder.outputSampleRate, on_send_frames_to_device); mal_device device; - if (mal_device_init(&context, mal_device_type_playback, NULL, &config, &wav, &device) != MAL_SUCCESS) { + if (mal_device_init(NULL, mal_device_type_playback, NULL, &config, &decoder, &device) != MAL_SUCCESS) { printf("Failed to open playback device.\n"); - mal_context_uninit(&context); - drwav_uninit(&wav); - return -4; + mal_decoder_uninit(&decoder); + return -3; } if (mal_device_start(&device) != MAL_SUCCESS) { printf("Failed to start playback device.\n"); mal_device_uninit(&device); - mal_context_uninit(&context); - drwav_uninit(&wav); - return -5; + mal_decoder_uninit(&decoder); + return -4; } printf("Press Enter to quit..."); getchar(); mal_device_uninit(&device); - mal_context_uninit(&context); - drwav_uninit(&wav); + mal_decoder_uninit(&decoder); return 0; }