X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=grab_client.h;h=04e0a75b15a32f5ccf13ec1c2fe40ddde6336acc;hp=5b1fa74b436654b442bd5b613cdd4b8ab721042b;hb=f24f82d9a9134562abc331558b9e21feff91b93b;hpb=a041c8f444140dca47109371c4ede6b32b33be60 diff --git a/grab_client.h b/grab_client.h index 5b1fa74b..04e0a75b 100644 --- a/grab_client.h +++ b/grab_client.h @@ -1,60 +1,59 @@ /* * Copyright (C) 2006 Andre Noll * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Licensed under the GPL v2. For licencing details see COPYING. */ /** \file grab_client.h exported symbols from grab_client.c */ #include "config.h" + /** - * handle blocking writes for the grab client fds - * - * - pedantic: close fd if write would block - * - sloppy: ignore the data and do not write - * - aggressive: write anyway (default) - * + * How to handle blocking writes for the grab client fds. */ -enum grab_mode {GRAB_SLOPPY, GRAB_AGGRESSIVE, GRAB_PEDANTIC}; +enum grab_mode { + /** Ignore the data and do not write. */ + GM_SLOPPY, + /** Write anyway (default). */ + GM_AGGRESSIVE, + /** Close fd if write would block. */ + GM_PEDANTIC, +}; -/** describes one active grab client +/** Flags specified as arguments to the grab command. */ +enum grab_flags { + /** Grab the filter input instead of its output. */ + GF_INPUT_GRAB = 1, + /** Stop grabbing if audio file changes. */ + GF_ONE_SHOT = 2, +}; + +/** + * Describes one active grab client. * - * \sa filter_callback, filter_node::callbacks + * \sa filter_callback, filter_node::callbacks. */ struct grab_client { -/** the file descriptor to send the grabbed stream to */ + /** The file descriptor to send the grabbed stream to. */ int fd; -/** the command line options for this grab client */ - struct grab_client_args_info *conf; -/** pedantic, sloppy, or aggressive, computed from command line */ - enum grab_mode mode; -/** non-zero if the write() to \a fd failed */ + /** Non-zero if the write() to \a fd failed. */ int error; -/** the number of the desired audio format, computed from command line */ + /** See \ref grab_mode. */ + enum grab_mode mode; + /** Point of filter chain to grab. */ + int32_t filter_num; + /** The number of the desired audio format. */ int audio_format_num; -/** the callback data which gets attached to a suitable filter_node */ + /** Flags given at the command line. */ + enum grab_flags flags; + /** The callback data which gets attached to a suitable filter_node. */ struct filter_callback fcb; -/** all grab clients belong either to a filter node or to the inactive list */ + /** All grab clients belong either to a filter node or to the inactive list. */ struct list_head node; -/** the number of command line options */ - int argc; -/** pointers to the command line options */ - char **argv; }; -__malloc struct grab_client *grab_client_new(int fd, char *line, int *err); -void activate_inactive_grab_clients(int slot, int audio_format_num, struct list_head *filter_list); +int grab_client_new(int fd, int argc, char **argv); +void activate_inactive_grab_clients(int audio_format_num, + struct filter_chain *fc); void activate_grab_client(struct grab_client *gc, struct filter_node *fn); void init_grabbing(void);