55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
|
|
#ifndef _mkv_buffer_h_
|
||
|
|
#define _mkv_buffer_h_
|
||
|
|
|
||
|
|
#include <stdio.h>
|
||
|
|
#include <stdint.h>
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
|
||
|
|
struct mkv_buffer_t
|
||
|
|
{
|
||
|
|
/// read data from buffer
|
||
|
|
/// @param[in] param user-defined parameter
|
||
|
|
/// @param[out] data user buffer
|
||
|
|
/// @param[in] bytes data buffer size
|
||
|
|
/// @return 0-ok, <0-error
|
||
|
|
int (*read)(void* param, void* data, uint64_t bytes);
|
||
|
|
|
||
|
|
/// write data to buffer
|
||
|
|
/// @param[in] param user-defined parameter
|
||
|
|
/// @param[in] data user buffer
|
||
|
|
/// @param[in] bytes data buffer size
|
||
|
|
/// @return 0-ok, <0-error
|
||
|
|
int (*write)(void* param, const void* data, uint64_t bytes);
|
||
|
|
|
||
|
|
/// mkve buffer position
|
||
|
|
/// @param[in] param user-defined parameter
|
||
|
|
/// @param[in] offset >=0-seek buffer read/write position to offset(from buffer begin), <0-seek from file end(SEEK_END)
|
||
|
|
/// @return 0-ok, <0-error
|
||
|
|
int (*seek)(void* param, int64_t offset);
|
||
|
|
|
||
|
|
/// get buffer read/write position
|
||
|
|
/// @return <0-error, other-current read/write position
|
||
|
|
int64_t (*tell)(void* param);
|
||
|
|
};
|
||
|
|
|
||
|
|
struct mkv_file_cache_t
|
||
|
|
{
|
||
|
|
FILE* fp;
|
||
|
|
uint8_t ptr[800];
|
||
|
|
unsigned int len;
|
||
|
|
unsigned int off;
|
||
|
|
uint64_t tell;
|
||
|
|
};
|
||
|
|
|
||
|
|
const struct mkv_buffer_t* mkv_file_cache_buffer(void);
|
||
|
|
|
||
|
|
const struct mkv_buffer_t* mkv_file_buffer(void);
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
#endif /* !_mkv_buffer_h_ */
|