⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asademux.h

📁 VLC Player Source Code
💻 H
字号:
/***************************************************************************** * asademux.c: asa demuxer VM ***************************************************************************** * Copyright (C) 2007 the VideoLAN team * * Originated from asa: portable digital subtitle renderer * * Authors: David Lamparter <equinox at diac24 dot net> * * 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA ****************************************************************************//**************************************************************************** * Changes from asa version: *  - headers adapted *  - external definition file support dropped *  - integer timestamps **************************************************************************** * Please retain Linux kernel CodingStyle for sync. * base commit d8c269b0fae9a8f8904e16e92313da165d664c74 ****************************************************************************/#ifndef _ASADEMUX_H#define _ASADEMUX_H#include <pcre.h>/** parser reuse. imports-to-C uses char *, real VM uses pcre * */typedef union {	pcre *pcre;	char *str;} asa_pcre;/** pcre_compile wrapper. * used to allow loading differently for imports-to-C conversion. * @param out output (parsed pcre) * @param str regular expression string * @return 0 on success, any other on error */extern int asa_pcre_compile(asa_pcre *out, const char *str);/** import instruction code */enum asa_import_insn_type {	ASAI_COMMIT = 0,	/**< put current buffer as line */	ASAI_DISCARD,		/**< discard current buffer */	ASAI_BREAK,		/**< leave child group */	ASAI_SELECT,		/**< select source matchgroup */	ASAI_SG,		/**< execute search & replace on selected */	ASAI_SGU,		/**< like ASAI_SG, but update matchgroups */	ASAI_APPEND,		/**< append selected source to buffer */	ASAI_FPS,		/**< set fixed fps */	ASAI_SHOW,		/**< set start time */	ASAI_HIDE,		/**< set end time */	ASAI_CHILD		/**< child regex match */};/** replacement element for ASAI_SG / ASAI_SGU */struct asa_repl {	struct asa_repl *next;	/**< next element */	int group;		/**< -1 if fixed string, else source group */	char *text;		/**< fixed string for group == -1 */};/** time specification element */struct asa_tspec {	struct asa_tspec *next;	/**< next element */	int group;		/**< source matchgroup */	double	mult,		/**< ts multiplier. 1.0 = 1 second */		fps_mult;	/**< fps multiplier. probably 0.0 or 1.0 */};/** single import instruction */struct asa_import_insn {	struct asa_import_insn		*parent,	/**< owner insn, NULL if format child */		*next;		/**< next instruction */	enum asa_import_insn_type insn;	/**< instruction code */	/** instruction parameters */	union {		int break_depth;		/**< depth to break out */		int select;			/**< matchgroup to select */		/** search-replace parameters */		struct {			asa_pcre regex;		/**< search for */			struct asa_repl *repl;	/**< replace by */		} sg;		/** time specification */		struct {			struct asa_tspec *tsp;	/**< sources to sum up */			int delta_select;	/**< -1 or delta index */		} tspec;		/** child instructions */		struct {			asa_pcre regex;		/** <if this matches... */			struct asa_import_insn *insns;	/**< do this. */		} child;		double fps_value;		/**< fixed fps value */	} v;};/** destination format of import rules */enum asa_import_target {	ASAI_TARGET_TEXT = (1 << 0),		/**< plain text packets */	ASAI_TARGET_SSA = (1 << 1)		/**< MKV ASS packets */};/** importing instructions for format */struct asa_import_format {	struct asa_import_format *next,		/**< next format */		*prevtgt,			/**< previous target */		*nexttgt;			/**< next target of this*/	char *name;				/**< format name */	enum asa_import_target target;		/**< target */	struct asa_import_insn *insns;		/**< instructions */};/** format detection rules */struct asa_import_detect {	struct asa_import_detect *next;		/**< next rule */	asa_pcre re;				/**< if this matches... */	char *name;				/**< use this format */	struct asa_import_format *fmt;		/**< through this pointer */};extern struct asa_import_detect *asa_det_first, **asa_det_last;extern struct asa_import_format *asa_fmt_first, **asa_fmt_last;typedef int (asa_import_callback)(demux_t *demux, void *arg,	int64_t start, int64_t stop,	const char *buffer, size_t buffer_length);extern struct asa_import_detect *asa_imports_detect(const void *data,	size_t dlen);extern int asa_import(demux_t *d, const void *data, size_t dlen,	int64_t usecperframe, struct asa_import_detect *det,	asa_import_callback *callback, void *arg);extern void asa_init_import(void);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -