fx.compression: convert to new assembly build system
This commit is contained in:
+43
-19
@@ -1,15 +1,15 @@
|
||||
#include <assert.h>
|
||||
#include <fx/compress/compressor.h>
|
||||
#include <fx/core/ringbuffer.h>
|
||||
#include <fx/compression/compressor.h>
|
||||
#include <fx/ringbuffer.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#define COMPRESSOR_DISPATCH_STATIC(func, compressor, ...) \
|
||||
do { \
|
||||
struct compressor_data _compressor; \
|
||||
enum fx_status status \
|
||||
enum fx_status status \
|
||||
= compressor_get_data(compressor, &_compressor); \
|
||||
if (!FX_OK(status)) { \
|
||||
if (!FX_OK(status)) { \
|
||||
return status; \
|
||||
} \
|
||||
return func(&_compressor, __VA_ARGS__); \
|
||||
@@ -17,9 +17,9 @@
|
||||
#define COMPRESSOR_DISPATCH_STATIC_0(func, compressor) \
|
||||
do { \
|
||||
struct compressor_data _compressor; \
|
||||
enum fx_status status \
|
||||
enum fx_status status \
|
||||
= compressor_get_data(compressor, &_compressor); \
|
||||
if (!FX_OK(status)) { \
|
||||
if (!FX_OK(status)) { \
|
||||
return status; \
|
||||
} \
|
||||
return func(&_compressor); \
|
||||
@@ -36,16 +36,21 @@ struct compressor_data {
|
||||
/*** PRIVATE FUNCTIONS ********************************************************/
|
||||
|
||||
static enum fx_status compressor_get_data(
|
||||
fx_compressor *compressor, struct compressor_data *out)
|
||||
fx_compressor *compressor,
|
||||
struct compressor_data *out)
|
||||
{
|
||||
out->c_obj = compressor;
|
||||
return fx_object_get_data(
|
||||
compressor, FX_TYPE_COMPRESSOR, NULL, (void **)&out->c_data,
|
||||
compressor,
|
||||
FX_TYPE_COMPRESSOR,
|
||||
NULL,
|
||||
(void **)&out->c_data,
|
||||
(void **)&out->c_ops);
|
||||
}
|
||||
|
||||
static enum fx_status compressor_get_mode(
|
||||
struct compressor_data *p, enum fx_compressor_mode *out)
|
||||
struct compressor_data *p,
|
||||
enum fx_compressor_mode *out)
|
||||
{
|
||||
if (out) {
|
||||
*out = p->c_data->c_mode;
|
||||
@@ -55,7 +60,8 @@ static enum fx_status compressor_get_mode(
|
||||
}
|
||||
|
||||
static enum fx_status compressor_set_mode(
|
||||
struct compressor_data *p, enum fx_compressor_mode mode)
|
||||
struct compressor_data *p,
|
||||
enum fx_compressor_mode mode)
|
||||
{
|
||||
if (!p->c_ops->c_set_mode) {
|
||||
return FX_ERR_NOT_SUPPORTED;
|
||||
@@ -65,7 +71,9 @@ static enum fx_status compressor_set_mode(
|
||||
}
|
||||
|
||||
static enum fx_status compressor_set_buffer(
|
||||
struct compressor_data *p, fx_ringbuffer *inbuf, fx_ringbuffer *outbuf)
|
||||
struct compressor_data *p,
|
||||
fx_ringbuffer *inbuf,
|
||||
fx_ringbuffer *outbuf)
|
||||
{
|
||||
p->c_data->c_in = inbuf;
|
||||
p->c_data->c_out = outbuf;
|
||||
@@ -154,14 +162,18 @@ static bool compressor_eof(const struct compressor_data *p)
|
||||
/*** PUBLIC FUNCTIONS *********************************************************/
|
||||
|
||||
enum fx_status fx_compressor_get_buffer_size(
|
||||
fx_type type, fx_compressor_mode mode, size_t *inbuf_size, size_t *outbuf_size)
|
||||
fx_type type,
|
||||
fx_compressor_mode mode,
|
||||
size_t *inbuf_size,
|
||||
size_t *outbuf_size)
|
||||
{
|
||||
fx_class *c = fx_class_get(type);
|
||||
if (!c) {
|
||||
return FX_ERR_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
fx_compressor_class *ops = fx_class_get_interface(c, FX_TYPE_COMPRESSOR);
|
||||
fx_compressor_class *ops
|
||||
= fx_class_get_interface(c, FX_TYPE_COMPRESSOR);
|
||||
if (!ops) {
|
||||
return FX_ERR_INVALID_ARGUMENT;
|
||||
}
|
||||
@@ -174,22 +186,32 @@ enum fx_status fx_compressor_get_buffer_size(
|
||||
}
|
||||
|
||||
enum fx_status fx_compressor_get_mode(
|
||||
const fx_compressor *compressor, enum fx_compressor_mode *out)
|
||||
const fx_compressor *compressor,
|
||||
enum fx_compressor_mode *out)
|
||||
{
|
||||
COMPRESSOR_DISPATCH_STATIC(
|
||||
compressor_get_mode, (fx_compressor *)compressor, out);
|
||||
compressor_get_mode,
|
||||
(fx_compressor *)compressor,
|
||||
out);
|
||||
}
|
||||
|
||||
enum fx_status fx_compressor_set_mode(
|
||||
fx_compressor *compressor, enum fx_compressor_mode mode)
|
||||
fx_compressor *compressor,
|
||||
enum fx_compressor_mode mode)
|
||||
{
|
||||
COMPRESSOR_DISPATCH_STATIC(compressor_set_mode, compressor, mode);
|
||||
}
|
||||
|
||||
enum fx_status fx_compressor_set_buffer(
|
||||
fx_compressor *compressor, fx_ringbuffer *inbuf, fx_ringbuffer *outbuf)
|
||||
fx_compressor *compressor,
|
||||
fx_ringbuffer *inbuf,
|
||||
fx_ringbuffer *outbuf)
|
||||
{
|
||||
COMPRESSOR_DISPATCH_STATIC(compressor_set_buffer, compressor, inbuf, outbuf);
|
||||
COMPRESSOR_DISPATCH_STATIC(
|
||||
compressor_set_buffer,
|
||||
compressor,
|
||||
inbuf,
|
||||
outbuf);
|
||||
}
|
||||
|
||||
enum fx_status fx_compressor_step(fx_compressor *compressor)
|
||||
@@ -209,7 +231,9 @@ enum fx_status fx_compressor_reset(fx_compressor *compressor)
|
||||
|
||||
bool fx_compressor_eof(const fx_compressor *compressor)
|
||||
{
|
||||
COMPRESSOR_DISPATCH_STATIC_0(compressor_eof, (fx_compressor *)compressor);
|
||||
COMPRESSOR_DISPATCH_STATIC_0(
|
||||
compressor_eof,
|
||||
(fx_compressor *)compressor);
|
||||
}
|
||||
|
||||
/*** VIRTUAL FUNCTIONS ********************************************************/
|
||||
|
||||
Reference in New Issue
Block a user