70 lines
2.3 KiB
C
70 lines
2.3 KiB
C
|
#ifndef _amf0_h_
|
||
|
#define _amf0_h_
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <stddef.h>
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
enum AMFDataType
|
||
|
{
|
||
|
AMF_NUMBER = 0x00,
|
||
|
AMF_BOOLEAN,
|
||
|
AMF_STRING,
|
||
|
AMF_OBJECT,
|
||
|
AMF_MOVIECLIP,
|
||
|
AMF_NULL,
|
||
|
AMF_UNDEFINED,
|
||
|
AMF_REFERENCE,
|
||
|
AMF_ECMA_ARRAY,
|
||
|
AMF_OBJECT_END,
|
||
|
AMF_STRICT_ARRAY,
|
||
|
AMF_DATE,
|
||
|
AMF_LONG_STRING,
|
||
|
AMF_UNSUPPORTED,
|
||
|
AMF_RECORDSET,
|
||
|
AMF_XML_DOCUMENT,
|
||
|
AMF_TYPED_OBJECT,
|
||
|
AMF_AVMPLUS_OBJECT,
|
||
|
};
|
||
|
|
||
|
uint8_t* AMFWriteNull(uint8_t* ptr, const uint8_t* end);
|
||
|
uint8_t* AMFWriteUndefined(uint8_t* ptr, const uint8_t* end);
|
||
|
uint8_t* AMFWriteObject(uint8_t* ptr, const uint8_t* end);
|
||
|
uint8_t* AMFWriteObjectEnd(uint8_t* ptr, const uint8_t* end);
|
||
|
uint8_t* AMFWriteTypedObject(uint8_t* ptr, const uint8_t* end);
|
||
|
uint8_t* AMFWriteECMAArarry(uint8_t* ptr, const uint8_t* end);
|
||
|
|
||
|
uint8_t* AMFWriteBoolean(uint8_t* ptr, const uint8_t* end, uint8_t value);
|
||
|
uint8_t* AMFWriteDouble(uint8_t* ptr, const uint8_t* end, double value);
|
||
|
uint8_t* AMFWriteString(uint8_t* ptr, const uint8_t* end, const char* string, size_t length);
|
||
|
uint8_t* AMFWriteDate(uint8_t* ptr, const uint8_t* end, double milliseconds, int16_t timezone);
|
||
|
|
||
|
uint8_t* AMFWriteNamedString(uint8_t* ptr, const uint8_t* end, const char* name, size_t length, const char* value, size_t length2);
|
||
|
uint8_t* AMFWriteNamedDouble(uint8_t* ptr, const uint8_t* end, const char* name, size_t length, double value);
|
||
|
uint8_t* AMFWriteNamedBoolean(uint8_t* ptr, const uint8_t* end, const char* name, size_t length, uint8_t value);
|
||
|
|
||
|
const uint8_t* AMFReadNull(const uint8_t* ptr, const uint8_t* end);
|
||
|
const uint8_t* AMFReadUndefined(const uint8_t* ptr, const uint8_t* end);
|
||
|
const uint8_t* AMFReadBoolean(const uint8_t* ptr, const uint8_t* end, uint8_t* value);
|
||
|
const uint8_t* AMFReadDouble(const uint8_t* ptr, const uint8_t* end, double* value);
|
||
|
const uint8_t* AMFReadString(const uint8_t* ptr, const uint8_t* end, int isLongString, char* string, size_t length);
|
||
|
const uint8_t* AMFReadDate(const uint8_t* ptr, const uint8_t* end, double *milliseconds, int16_t *timezone);
|
||
|
|
||
|
|
||
|
struct amf_object_item_t
|
||
|
{
|
||
|
enum AMFDataType type;
|
||
|
const char* name;
|
||
|
void* value;
|
||
|
size_t size;
|
||
|
};
|
||
|
const uint8_t* amf_read_items(const uint8_t* data, const uint8_t* end, struct amf_object_item_t* items, size_t count);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
#endif /* !_amf0_h_ */
|