BambuStudio/src/slic3r/GUI/Printer/BambuTunnel.h

150 lines
3.0 KiB
C
Raw Normal View History

#pragma once
#ifdef BAMBU_DYNAMIC
# define BAMBU_EXPORT
# define BAMBU_FUNC(x) (*x)
#else
# ifdef __WIN32__
# define BAMBU_EXPORT __declspec(dllexport)
# else
# define BAMBU_EXPORT
# endif // __WIN32__
# define BAMBU_FUNC(x) x
#endif
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
struct Bambu_Session;
#ifdef __WIN32__
typedef wchar_t Bambu_Message;
#else
typedef char Bambu_Message;
#endif
typedef void (*Logger)(Bambu_Session * session, int level, Bambu_Message const * msg);
enum Bambu_StreamType
{
VIDE,
AUDI
};
enum Bambu_VideoSubType
{
AVC1,
};
enum Bambu_AudioSubType
{
MP4A
};
enum Bambu_FormatType
{
video_avc_packet,
video_avc_byte_stream,
audio_raw,
audio_adts
};
struct Bambu_StreamInfo
{
Bambu_StreamType type;
int sub_type;
union {
struct
{
int width;
int height;
int frame_rate;
} video;
struct
{
int sample_rate;
int channel_count;
int sample_size;
} audio;
} format;
int format_type;
int format_size;
unsigned char const * format_buffer;
};
enum Bambu_SampleFlag
{
f_sync = 1
};
struct Bambu_Sample
{
int itrack;
int size;
int flags;
unsigned char const * buffer;
unsigned long long decode_time;
};
enum Bambu_Error
{
Bambu_success,
Bambu_stream_end,
Bambu_would_block
};
struct Bambu_Session
{
int gSID = -1;
int avIndex = -1;
int block = 0;
int block_next = 0;
Logger logger = nullptr;
void * buffer = nullptr;
int buffer_size = 0;
void * extra = 0;
void * dump_file1 = nullptr;
void * dump_file2 = nullptr;
void Log(int unused, int level, wchar_t const * format, ...);
};
#ifdef BAMBU_DYNAMIC
struct BambuLib {
#endif
BAMBU_EXPORT int BAMBU_FUNC(Bambu_Open)(Bambu_Session* session, char const* uid);
BAMBU_EXPORT int BAMBU_FUNC(Bambu_StartStream)(Bambu_Session* session);
BAMBU_EXPORT int BAMBU_FUNC(Bambu_GetStreamCount)(Bambu_Session* session);
BAMBU_EXPORT int BAMBU_FUNC(Bambu_GetStreamInfo)(Bambu_Session* session, int index, Bambu_StreamInfo* info);
BAMBU_EXPORT unsigned long BAMBU_FUNC(Bambu_GetDuration)(Bambu_Session* session);
BAMBU_EXPORT int BAMBU_FUNC(Bambu_Seek)(Bambu_Session* session, unsigned long time);
BAMBU_EXPORT int BAMBU_FUNC(Bambu_ReadSample)(Bambu_Session* session, Bambu_Sample* sample);
BAMBU_EXPORT int BAMBU_FUNC(Bambu_SendMessage)(Bambu_Session* session, int ctrl, char const* data, int len);
BAMBU_EXPORT int BAMBU_FUNC(Bambu_RecvMessage)(Bambu_Session* session, int* ctrl, char* data, int* len);
BAMBU_EXPORT void BAMBU_FUNC(Bambu_Close)(Bambu_Session* session);
BAMBU_EXPORT int BAMBU_FUNC(Bambu_Init)();
BAMBU_EXPORT void BAMBU_FUNC(Bambu_Deinit)();
BAMBU_EXPORT char const* BAMBU_FUNC(Bambu_GetLastErrorMsg)();
BAMBU_EXPORT void BAMBU_FUNC(Bambu_FreeLogMsg)(Bambu_Message const* msg);
#ifdef BAMBU_DYNAMIC
};
#endif
#ifdef __cplusplus
}
#endif // __cplusplus