A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 48 lines 1.9 kB view raw
1/*************************************************************************** 2 * __________ __ ___. 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 * \/ \/ \/ \/ \/ 8 * $Id$ 9 * 10 * PCM output buffer declarations 11 * 12 * Copyright (c) 2007 Michael Sevakis 13 * 14 * This program is free software; you can redistribute it and/or 15 * modify it under the terms of the GNU General Public License 16 * as published by the Free Software Foundation; either version 2 17 * of the License, or (at your option) any later version. 18 * 19 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 20 * KIND, either express or implied. 21 * 22 ****************************************************************************/ 23#ifndef PCM_OUTPUT_H 24#define PCM_OUTPUT_H 25 26#define PCM_HDR_SIZE (sizeof (struct pcm_frame_header)) 27struct pcm_frame_header /* Header added to pcm data every time a decoded 28 audio frame is sent out */ 29{ 30 uint32_t size; /* size of this frame - including header */ 31 uint32_t time; /* timestamp for this frame in audio ticks */ 32 unsigned char data[]; /* open array of audio data */ 33} ALIGNED_ATTR(4); 34 35bool pcm_output_init(void); 36void pcm_output_exit(void); 37void pcm_output_flush(void); 38void pcm_output_set_clock(uint32_t time); 39uint32_t pcm_output_get_clock(void); 40uint32_t pcm_output_get_ticks(uint32_t *start); 41void pcm_output_play_pause(bool play); 42void pcm_output_stop(void); 43void pcm_output_drain(void); 44void * pcm_output_get_buffer(ssize_t *size); 45bool pcm_output_commit_data(ssize_t size, uint32_t timestamp); 46bool pcm_output_empty(void); 47 48#endif /* PCM_OUTPUT_H */