mirror of
https://github.com/clangen/musikcube.git
synced 2025-02-19 15:40:50 +00:00
Added decode/encode example and refactored main.c a bit.
This commit is contained in:
parent
6ed5a2b170
commit
66e849a0b5
@ -3,12 +3,55 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <core_c/musikcore_c.h>
|
#include <core_c/musikcore_c.h>
|
||||||
|
|
||||||
int main(int argc, char** argv) {
|
#define INPUT_FILE "/home/clangen/in.opus"
|
||||||
mcsdk_context* context = NULL;
|
#define OUTPUT_FILE "/home/clangen/out.flac"
|
||||||
mcsdk_context_init(&context);
|
|
||||||
if (context) {
|
static void test_decode_encode() {
|
||||||
printf("initialized\n");
|
mcsdk_data_stream in = mcsdk_env_open_data_stream(INPUT_FILE, mcsdk_stream_open_flags_read);
|
||||||
|
mcsdk_data_stream out = mcsdk_env_open_data_stream(OUTPUT_FILE, mcsdk_stream_open_flags_write);
|
||||||
|
if (mcsdk_handle_ok(in) && mcsdk_handle_ok(out)) {
|
||||||
|
printf("test_decode_encode: decoding from %s\n", INPUT_FILE);
|
||||||
|
printf("test_decode_encode: encoding to %s\n", OUTPUT_FILE);
|
||||||
|
mcsdk_decoder decoder = mcsdk_env_open_decoder(in);
|
||||||
|
mcsdk_encoder encoder = mcsdk_env_open_encoder(".ogg");
|
||||||
|
if (mcsdk_handle_ok(decoder) && mcsdk_handle_ok(encoder)) {
|
||||||
|
printf("test_decode_encode: encoder and decoder opened successfully. running...\n");
|
||||||
|
if (mcsdk_encoder_get_type(encoder) == mcsdk_encoder_type_blocking) {
|
||||||
|
mcsdk_blocking_encoder be = mcsdk_cast_handle(encoder);
|
||||||
|
mcsdk_audio_buffer buffer = mcsdk_env_create_audio_buffer(4096, 44100, 2);
|
||||||
|
if (mcsdk_blocking_encoder_initialize(be, out, 44100, 2, 192)) {
|
||||||
|
while (mcsdk_decoder_fill_buffer(decoder, buffer)) {
|
||||||
|
mcsdk_blocking_encoder_encode(be, buffer);
|
||||||
|
}
|
||||||
|
mcsdk_blocking_encoder_finalize(be);
|
||||||
|
}
|
||||||
|
mcsdk_audio_buffer_release(buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mcsdk_decoder_release(decoder);
|
||||||
|
mcsdk_encoder_release(encoder);
|
||||||
}
|
}
|
||||||
|
mcsdk_data_stream_release(in);
|
||||||
|
mcsdk_data_stream_release(out);
|
||||||
|
printf("test_decode_encode: done.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_playback(mcsdk_context* context) {
|
||||||
|
printf("test_playback: loading 'a day in the life' tracks\n");
|
||||||
|
mcsdk_track_list tl = mcsdk_svc_metadata_query_tracks(
|
||||||
|
context->metadata, "a day in the life", mcsdk_no_limit, mcsdk_no_offset);
|
||||||
|
mcsdk_svc_playback_play(context->playback, tl, 0);
|
||||||
|
mcsdk_track_list_release(tl);
|
||||||
|
printf("test_playback: playing for 5 seconds...\n");
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
usleep(1000000);
|
||||||
|
printf(" %d\n", i + 1);
|
||||||
|
}
|
||||||
|
printf("test_playback: done.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_metadata(mcsdk_context* context) {
|
||||||
|
printf("test_metadata: querying 'beatles' albums\n");
|
||||||
mcsdk_map_list ml = mcsdk_svc_metadata_query_albums(context->metadata, "beatles");
|
mcsdk_map_list ml = mcsdk_svc_metadata_query_albums(context->metadata, "beatles");
|
||||||
int count = mcsdk_map_list_get_count(ml);
|
int count = mcsdk_map_list_get_count(ml);
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
@ -16,21 +59,23 @@ int main(int argc, char** argv) {
|
|||||||
size_t len = mcsdk_map_get_string(m, "album", NULL, 0);
|
size_t len = mcsdk_map_get_string(m, "album", NULL, 0);
|
||||||
char* str = malloc(len * sizeof(char));
|
char* str = malloc(len * sizeof(char));
|
||||||
mcsdk_map_get_string(m, "album", str, len);
|
mcsdk_map_get_string(m, "album", str, len);
|
||||||
printf("%s\n", str);
|
printf(" %s\n", str);
|
||||||
free(str);
|
free(str);
|
||||||
}
|
}
|
||||||
mcsdk_map_list_release(ml);
|
mcsdk_map_list_release(ml);
|
||||||
mcsdk_track_list tl = mcsdk_svc_metadata_query_tracks(
|
printf("test_metadata: done.\n");
|
||||||
context->metadata, "a day in the life", mcsdk_no_limit, mcsdk_no_offset);
|
}
|
||||||
mcsdk_svc_playback_play(context->playback, tl, 0);
|
|
||||||
mcsdk_track_list_release(tl);
|
int main(int argc, char** argv) {
|
||||||
printf("playing for 5 seconds...");
|
mcsdk_context* context = NULL;
|
||||||
for (int i = 0; i < 5; i++) {
|
mcsdk_context_init(&context);
|
||||||
usleep(1000000);
|
if (context) {
|
||||||
printf(" %d\n", i + 1);
|
printf("main: context initialized\n");
|
||||||
|
test_metadata(context);
|
||||||
|
test_playback(context);
|
||||||
|
test_decode_encode(context);
|
||||||
|
mcsdk_context_release(&context);
|
||||||
|
printf("main: context released\n");
|
||||||
}
|
}
|
||||||
printf("done playing, shutting down...\n");
|
|
||||||
mcsdk_context_release(&context);
|
|
||||||
printf("dead\n");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user