44 #define OFFSET(x) offsetof(ZMQContext, x)
45 #define FLAGS AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_AUDIO_PARAM | AV_OPT_FLAG_VIDEO_PARAM
56 zmq->
zmq = zmq_ctx_new();
59 "Could not create ZMQ context: %s\n", zmq_strerror(errno));
66 "Could not create ZMQ socket: %s\n", zmq_strerror(errno));
72 "Could not bind ZMQ socket to address '%s': %s\n",
86 zmq_ctx_destroy(zmq->
zmq);
93 #define SPACES " \f\t\n\r"
97 const char **
buf = &command_str;
102 "No target specified in command '%s'\n", command_str);
109 "No command specified in command '%s'\n", command_str);
123 if (zmq_msg_init(&msg) == -1) {
125 "Could not initialize receive message: %s\n", zmq_strerror(errno));
129 if (zmq_msg_recv(&msg, zmq->
responder, ZMQ_DONTWAIT) == -1) {
132 "Could not receive message: %s\n", zmq_strerror(errno));
137 *buf_size = zmq_msg_size(&msg) + 1;
143 memcpy(*buf, zmq_msg_data(&msg), *buf_size);
144 (*buf)[*buf_size-1] = 0;
158 char *recv_buf, *send_buf;
164 if (
recv_msg(ctx, &recv_buf, &recv_buf_size) < 0)
176 "Processing command #%d target:%s command:%s arg:%s\n",
180 cmd_buf,
sizeof(cmd_buf),
183 -ret,
av_err2str(ret), cmd_buf[0] ?
"\n" :
"", cmd_buf);
189 "Sending command reply for command #%d:\n%s\n",
191 if (zmq_send(zmq->
responder, send_buf, strlen(send_buf), 0) == -1)
207 #if CONFIG_ZMQ_FILTER
209 #define zmq_options options
231 .description =
NULL_IF_CONFIG_SMALL(
"Receive commands through ZMQ and broker them to filters."),
237 .priv_class = &zmq_class,
242 #if CONFIG_AZMQ_FILTER
244 #define azmq_options options
266 .description =
NULL_IF_CONFIG_SMALL(
"Receive commands through ZMQ and broker them to filters."),
272 .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 outputs[]
static const AVFilterPad inputs[]
static int command(AVFilterContext *ctx, const char *cmd, const char *arg, char *res, int res_len, int flags)
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 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.