File wfm_data.h¶
File List > doppler > wfm > wfm_data.h
Go to the documentation of this file
#ifndef WFM_DATA_H
#define WFM_DATA_H
#include <stddef.h>
#include <stdint.h>
#include "doppler/dp_state.h" /* DP_FOURCC, the state envelope */
#include "doppler/wfm/wfm_frame.h" /* wfm_seq_t */
#ifdef __cplusplus
extern "C"
{
#endif
typedef enum
{
WFM_DATA_FRAME = 0,
WFM_DATA_NOT_YET = 1,
WFM_DATA_END = 2,
WFM_DATA_ERROR = 3,
WFM_DATA_IDLE = 4
} wfm_data_status_t;
typedef enum
{
WFM_DATA_UNPACED = 0,
WFM_DATA_PACED = 1
} wfm_data_pacing_t;
typedef struct wfm_data_src wfm_data_src_t;
typedef struct
{
uint64_t frames;
uint64_t idle_frames;
uint64_t pad_bits;
uint64_t bits;
uint64_t total_bits;
uint64_t hash;
int hashed;
int stream;
} wfm_data_stats_t;
wfm_data_src_t *dp_wfm_data_create (const char *data, const char *path,
size_t len, const char *fill,
const char **why);
wfm_data_src_t *dp_wfm_data_create_fd (int fd, size_t len,
const char *fill, const char **why);
uint64_t dp_wfm_data_length_bits (const char *data, const char *path);
wfm_data_src_t *dp_wfm_data_create_seq (const wfm_seq_t *data,
const char *path, size_t len,
const wfm_seq_t *fill,
const char **why);
void dp_wfm_data_destroy (wfm_data_src_t *s);
wfm_data_status_t dp_wfm_data_next (wfm_data_src_t *s, size_t reps,
uint8_t *out, size_t max_out,
int timeout_ms);
wfm_data_status_t dp_wfm_data_idle (wfm_data_src_t *s, size_t reps,
uint8_t *out, size_t max_out);
wfm_data_status_t dp_wfm_data_frame (wfm_data_src_t *s,
wfm_data_pacing_t pacing, size_t reps,
uint8_t *out, size_t max_out);
void dp_wfm_data_stats (const wfm_data_src_t *s, wfm_data_stats_t *out);
int dp_wfm_data_file_identity (const char *path, uint64_t *bits,
uint64_t *h);
#define WFM_DATA_STATE_MAGIC DP_FOURCC ('W', 'F', 'D', 'S')
#define WFM_DATA_STATE_VERSION 1u
const char *dp_wfm_data_state_refusal (const wfm_data_src_t *s);
size_t dp_wfm_data_state_bytes (const wfm_data_src_t *s);
void dp_wfm_data_get_state (const wfm_data_src_t *s, void *blob);
int dp_wfm_data_set_state (wfm_data_src_t *s, const void *blob);
#ifdef __cplusplus
}
#endif
#endif /* WFM_DATA_H */