51 lines
1.5 KiB
C
51 lines
1.5 KiB
C
|
|
/**
|
||
|
|
* fc_writer.h — Lightweight framecache slot writer for deltacast-bridge.
|
||
|
|
*
|
||
|
|
* Registers a slot with the framecache HTTP API on signal lock, then writes
|
||
|
|
* raw UYVY422 frames directly into the shared memory ring buffer.
|
||
|
|
*
|
||
|
|
* Compile with -DLEGACY_FIFO to disable shm writes and fall back to the
|
||
|
|
* original named-FIFO path (useful during transition / on nodes without the
|
||
|
|
* framecache container running).
|
||
|
|
*/
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <stdint.h>
|
||
|
|
#include <stddef.h>
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
|
||
|
|
typedef struct fc_writer fc_writer_t;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Register a slot with the framecache service and open the shm region for
|
||
|
|
* writing. fc_url is the HTTP base URL, e.g. "http://localhost:7435".
|
||
|
|
* slot_id must be unique per port, e.g. "deltacast-0-3" (device-port).
|
||
|
|
*
|
||
|
|
* Returns writer handle on success, NULL on failure (falls back to FIFO).
|
||
|
|
*/
|
||
|
|
fc_writer_t *fc_writer_open(const char *fc_url,
|
||
|
|
const char *slot_id,
|
||
|
|
uint32_t width, uint32_t height,
|
||
|
|
uint32_t fps_num, uint32_t fps_den);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Write one raw UYVY422 frame into the ring buffer.
|
||
|
|
* Non-blocking — slow consumers are skipped, not waited on.
|
||
|
|
* pts_us: presentation timestamp in microseconds (0 if unknown).
|
||
|
|
*/
|
||
|
|
void fc_writer_write(fc_writer_t *w,
|
||
|
|
const uint8_t *data, uint32_t size,
|
||
|
|
uint64_t pts_us);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Deregister slot from framecache service and unmap shm.
|
||
|
|
*/
|
||
|
|
void fc_writer_close(fc_writer_t *w);
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|