43 #define OFFSET(x) offsetof(ZMQContext, x)
44 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_VIDEO_PARAM
55 zmq->
zmq = zmq_ctx_new();
58 "Could not create ZMQ context: %s\n", zmq_strerror(errno));
65 "Could not create ZMQ socket: %s\n", zmq_strerror(errno));
71 "Could not bind ZMQ socket to address '%s': %s\n",
85 zmq_ctx_destroy(zmq->
zmq);
92 #define SPACES " \f\t\n\r"
96 const char **
buf = &command_str;
101 "No target specified in command '%s'\n", command_str);
108 "No command specified in command '%s'\n", command_str);
122 if (zmq_msg_init(&msg) == -1) {
124 "Could not initialize receive message: %s\n", zmq_strerror(errno));
128 if (zmq_msg_recv(&msg, zmq->
responder, ZMQ_DONTWAIT) == -1) {
131 "Could not receive message: %s\n", zmq_strerror(errno));
136 *buf_size = zmq_msg_size(&msg) + 1;
142 memcpy(*buf, zmq_msg_data(&msg), *buf_size);
143 (*buf)[*buf_size-1] = 0;
157 char *recv_buf, *send_buf;
163 if (
recv_msg(ctx, &recv_buf, &recv_buf_size) < 0)
175 "Processing command #%d target:%s command:%s arg:%s\n",
179 cmd_buf,
sizeof(cmd_buf),
182 -ret,
av_err2str(ret), cmd_buf[0] ?
"\n" :
"", cmd_buf);
188 "Sending command reply for command #%d:\n%s\n",
190 if (zmq_send(zmq->
responder, send_buf, strlen(send_buf), 0) == -1)
206 #if CONFIG_ZMQ_FILTER
208 #define zmq_options options
230 .description =
NULL_IF_CONFIG_SMALL(
"Receive commands through ZMQ and broker them to filters."),
236 .priv_class = &zmq_class,
241 #if CONFIG_AZMQ_FILTER
243 #define azmq_options options
265 .description =
NULL_IF_CONFIG_SMALL(
"Receive commands through ZMQ and broker them to filters."),
271 .priv_class = &azmq_class,
This structure describes decoded (raw) audio or video data.
#define AV_LOG_WARNING
Something somehow does not look correct.
Main libavfilter public API header.
static av_cold int init(AVFilterContext *ctx)
static int filter_frame(AVFilterLink *inlink, AVFrame *ref)
const char * name
Pad name.
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
static av_cold int end(AVCodecContext *avctx)
#define AV_LOG_VERBOSE
Detailed information.
static int recv_msg(AVFilterContext *ctx, char **buf, int *buf_size)
A filter pad used for either input or output.
A link between two filters.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static const AVOption options[]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
void * priv
private data for use by the filter
char * av_get_token(const char **buf, const char *term)
Unescape the given string until a non escaped terminating char, and return the token corresponding to...
char * av_asprintf(const char *fmt,...)
#define av_err2str(errnum)
Convenience macro, the return value should be used only directly in function arguments but never stan...
#define AVFILTER_CMD_FLAG_ONE
Stop once a filter understood the command (for target=all for example), fast filters are favored auto...
static const AVFilterPad inputs[]
static const AVFilterPad outputs[]
Describe the class of an AVClass context structure.
const char * name
Filter name.
AVFilterLink ** outputs
array of pointers to output links
static void av_cold uninit(AVFilterContext *ctx)
struct AVFilterGraph * graph
Graph the filter belongs to.
static int ref[MAX_W *MAX_W]
static int parse_command(Command *cmd, const char *command_str, void *log_ctx)
int avfilter_graph_send_command(AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags)
Send a command to one or more filter instances.
AVFilterContext * dst
dest filter
#define AVFILTER_DEFINE_CLASS(fname)
#define AVERROR_EXTERNAL
Generic error in an external library.