summaryrefslogtreecommitdiff
path: root/apps/codecs/libmusepack/reader.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/libmusepack/reader.h')
-rw-r--r--apps/codecs/libmusepack/reader.h66
1 files changed, 41 insertions, 25 deletions
diff --git a/apps/codecs/libmusepack/reader.h b/apps/codecs/libmusepack/reader.h
index 397319b..60a0ef9 100644
--- a/apps/codecs/libmusepack/reader.h
+++ b/apps/codecs/libmusepack/reader.h
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2005, The Musepack Development Team
+ Copyright (c) 2005-2009, The Musepack Development Team
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -31,52 +31,68 @@
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-
/// \file reader.h
+#ifndef _MPCDEC_READER_H_
+#define _MPCDEC_READER_H_
+#ifdef WIN32
+#pragma once
+#endif
+
+#include "mpc_types.h"
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
-#ifndef _mpcdec_reader_h_
-#define _mpcdec_reader_h_
/// \brief Stream reader interface structure.
///
/// This is the structure you must supply to the musepack decoding library
/// to feed it with raw data. Implement the five member functions to provide
/// a functional reader.
-typedef struct mpc_reader_t {
+typedef struct mpc_reader_t mpc_reader;
+struct mpc_reader_t {
/// Reads size bytes of data into buffer at ptr.
- mpc_int32_t (*read)(void *t, void *ptr, mpc_int32_t size);
+ mpc_int32_t (*read)(mpc_reader *p_reader, void *ptr, mpc_int32_t size);
/// Seeks to byte position offset.
- mpc_bool_t (*seek)(void *t, mpc_int32_t offset);
+ mpc_bool_t (*seek)(mpc_reader *p_reader, mpc_int32_t offset);
/// Returns the current byte offset in the stream.
- mpc_int32_t (*tell)(void *t);
+ mpc_int32_t (*tell)(mpc_reader *p_reader);
/// Returns the total length of the source stream, in bytes.
- mpc_int32_t (*get_size)(void *t);
+ mpc_int32_t (*get_size)(mpc_reader *p_reader);
/// True if the stream is a seekable stream.
- mpc_bool_t (*canseek)(void *t);
+ mpc_bool_t (*canseek)(mpc_reader *p_reader);
/// Field that can be used to identify a particular instance of
/// reader or carry along data associated with that reader.
void *data;
-
-} mpc_reader;
-/* No standard STDIO based reader in Rockbox
-typedef struct mpc_reader_file_t {
- mpc_reader reader;
-
- FILE *file;
- long file_size;
- mpc_bool_t is_seekable;
-} mpc_reader_file;
-*/
+};
+/* rockbox: not used
/// Initializes reader with default stdio file reader implementation. Use
/// this if you're just reading from a plain file.
///
-/// \param r reader struct to initalize
-/// \param input input stream to attach to the reader
-/* void mpc_reader_setup_file_reader(mpc_reader_file *r, FILE *input); */
+/// \param r p_reader handle to initialize
+/// \param filename input filename to attach to the reader
+MPC_API mpc_status mpc_reader_init_stdio(mpc_reader *p_reader, const char *filename);
-#endif // _mpcdec_reader_h_
+/// Initializes reader with default stdio file reader implementation. Use
+/// this if you prefer to open the file yourself.
+///
+/// \param r p_reader handle to initialize
+/// \param p_file input file handle (already open)
+MPC_API mpc_status mpc_reader_init_stdio_stream(mpc_reader * p_reader, FILE * p_file);
+
+/// Release reader with default stdio file reader implementation.
+///
+/// \param r reader handle to release
+MPC_API void mpc_reader_exit_stdio(mpc_reader *p_reader);
+*/
+#ifdef __cplusplus
+}
+#endif
+#endif