summaryrefslogtreecommitdiffstats
path: root/debian/transcode/transcode-1.1.7/docs/tech
diff options
context:
space:
mode:
Diffstat (limited to 'debian/transcode/transcode-1.1.7/docs/tech')
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/Makefile.am22
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/Makefile.in727
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS145
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/architecture.txt262
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/avi_comments.txt117
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/clone.txt101
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/export-API.txt111
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/filter-API.txt136
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/filter_template.c294
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/Makefile.am15
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/Makefile.in520
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/index.html45
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/tc_basic.css96
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/tc_frame_buffer.html66
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/tc_input_rotation.html124
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/tc_libraries.html256
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/tc_logo.pngbin0 -> 13153 bytes
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/html/tc_template_page.html66
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/ibp_support.txt65
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/import-API.txt95
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/libraries.txt63
-rw-r--r--debian/transcode/transcode-1.1.7/docs/tech/module-system-API.txt660
22 files changed, 3986 insertions, 0 deletions
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/Makefile.am b/debian/transcode/transcode-1.1.7/docs/tech/Makefile.am
new file mode 100644
index 00000000..e0efc8ce
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/Makefile.am
@@ -0,0 +1,22 @@
+# # Process this file with automake to produce Makefile.in.
+
+EXTRA_DIST = \
+ $(docs_DATA)
+
+SUBDIRS = html
+
+docsdir = $(datadir)/doc/transcode/tech
+
+docs_DATA = \
+ OPTIMIZERS \
+ architecture.txt \
+ avi_comments.txt \
+ clone.txt \
+ export-API.txt \
+ filter-API.txt \
+ ibp_support.txt \
+ import-API.txt \
+ libraries.txt \
+ module-system-API.txt \
+ filter_template.c
+
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/Makefile.in b/debian/transcode/transcode-1.1.7/docs/tech/Makefile.in
new file mode 100644
index 00000000..d59f6aa6
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/Makefile.in
@@ -0,0 +1,727 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+# # Process this file with automake to produce Makefile.in.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = docs/tech
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+ install-dvi-recursive install-exec-recursive \
+ install-html-recursive install-info-recursive \
+ install-pdf-recursive install-ps-recursive install-recursive \
+ installcheck-recursive installdirs-recursive pdf-recursive \
+ ps-recursive uninstall-recursive
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(docsdir)"
+DATA = $(docs_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+ distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+ dir0=`pwd`; \
+ sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+ sed_rest='s,^[^/]*/*,,'; \
+ sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+ sed_butlast='s,/*[^/]*$$,,'; \
+ while test -n "$$dir1"; do \
+ first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+ if test "$$first" != "."; then \
+ if test "$$first" = ".."; then \
+ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+ else \
+ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+ if test "$$first2" = "$$first"; then \
+ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+ else \
+ dir2="../$$dir2"; \
+ fi; \
+ dir0="$$dir0"/"$$first"; \
+ fi; \
+ fi; \
+ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+ done; \
+ reldir="$$dir2"
+A52_CFLAGS = @A52_CFLAGS@
+A52_LIBS = @A52_LIBS@
+ACLIB_LIBS = @ACLIB_LIBS@
+ACLOCAL = @ACLOCAL@
+ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVILIB_LIBS = @AVILIB_LIBS@
+AWK = @AWK@
+BSDAV_CFLAGS = @BSDAV_CFLAGS@
+BSDAV_LIBS = @BSDAV_LIBS@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXXCPP = @CXXCPP@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLDARWIN_CFLAGS = @DLDARWIN_CFLAGS@
+DLDARWIN_LIBS = @DLDARWIN_LIBS@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FAAC_CFLAGS = @FAAC_CFLAGS@
+FAAC_LIBS = @FAAC_LIBS@
+FGREP = @FGREP@
+FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
+FREETYPE2_LIBS = @FREETYPE2_LIBS@
+GREP = @GREP@
+IBP_LIBS = @IBP_LIBS@
+ICONV_CFLAGS = @ICONV_CFLAGS@
+ICONV_LIBS = @ICONV_LIBS@
+IMAGEMAGICK_CFLAGS = @IMAGEMAGICK_CFLAGS@
+IMAGEMAGICK_LIBS = @IMAGEMAGICK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBAVCODEC_CFLAGS = @LIBAVCODEC_CFLAGS@
+LIBAVCODEC_LIBS = @LIBAVCODEC_LIBS@
+LIBAVFORMAT_CFLAGS = @LIBAVFORMAT_CFLAGS@
+LIBAVFORMAT_LIBS = @LIBAVFORMAT_LIBS@
+LIBDVDREAD_CFLAGS = @LIBDVDREAD_CFLAGS@
+LIBDVDREAD_LIBS = @LIBDVDREAD_LIBS@
+LIBDV_CFLAGS = @LIBDV_CFLAGS@
+LIBDV_LIBS = @LIBDV_LIBS@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBMPEG2CONVERT_CFLAGS = @LIBMPEG2CONVERT_CFLAGS@
+LIBMPEG2CONVERT_LIBS = @LIBMPEG2CONVERT_LIBS@
+LIBMPEG2_CFLAGS = @LIBMPEG2_CFLAGS@
+LIBMPEG2_LIBS = @LIBMPEG2_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPOSTPROC_CFLAGS = @LIBPOSTPROC_CFLAGS@
+LIBPOSTPROC_LIBS = @LIBPOSTPROC_LIBS@
+LIBQUICKTIME_CFLAGS = @LIBQUICKTIME_CFLAGS@
+LIBQUICKTIME_LIBS = @LIBQUICKTIME_LIBS@
+LIBS = @LIBS@
+LIBTCAUDIO_LIBS = @LIBTCAUDIO_LIBS@
+LIBTCVIDEO_LIBS = @LIBTCVIDEO_LIBS@
+LIBTC_LIBS = @LIBTC_LIBS@
+LIBTOOL = @LIBTOOL@
+LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
+LIBV4L2_LIBS = @LIBV4L2_LIBS@
+LIBV4LCONVERT_CFLAGS = @LIBV4LCONVERT_CFLAGS@
+LIBV4LCONVERT_LIBS = @LIBV4LCONVERT_LIBS@
+LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
+LIBXML2_LIBS = @LIBXML2_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LZO_CFLAGS = @LZO_CFLAGS@
+LZO_LIBS = @LZO_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MJPEGTOOLS_CFLAGS = @MJPEGTOOLS_CFLAGS@
+MJPEGTOOLS_LIBS = @MJPEGTOOLS_LIBS@
+MKDIR_P = @MKDIR_P@
+MOD_PATH = @MOD_PATH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PATH_TO_AWK = @PATH_TO_AWK@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PROF_PATH = @PROF_PATH@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PVM3_CFLAGS = @PVM3_CFLAGS@
+PVM3_LIBS = @PVM3_LIBS@
+PVM3_PVMGS = @PVM3_PVMGS@
+RANLIB = @RANLIB@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_LIBS = @SDL_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMD_FLAGS = @SIMD_FLAGS@
+STRIP = @STRIP@
+THEORA_CFLAGS = @THEORA_CFLAGS@
+THEORA_LIBS = @THEORA_LIBS@
+USE_DLDARWIN = @USE_DLDARWIN@
+VERSION = @VERSION@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+WAVLIB_LIBS = @WAVLIB_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XIO_CFLAGS = @XIO_CFLAGS@
+XIO_LIBS = @XIO_LIBS@
+XMKMF = @XMKMF@
+XVID_CFLAGS = @XVID_CFLAGS@
+XVID_LIBS = @XVID_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+a52_config = @a52_config@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+bsdav_config = @bsdav_config@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+faac_config = @faac_config@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+iconv_config = @iconv_config@
+imagemagick_config = @imagemagick_config@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lame_config = @lame_config@
+libdir = @libdir@
+libdvdread_config = @libdvdread_config@
+libexecdir = @libexecdir@
+libjpeg_config = @libjpeg_config@
+libjpegmmx_config = @libjpegmmx_config@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lzo_config = @lzo_config@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pvm3_config = @pvm3_config@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+xvid_config = @xvid_config@
+EXTRA_DIST = \
+ $(docs_DATA)
+
+SUBDIRS = html
+docsdir = $(datadir)/doc/transcode/tech
+docs_DATA = \
+ OPTIMIZERS \
+ architecture.txt \
+ avi_comments.txt \
+ clone.txt \
+ export-API.txt \
+ filter-API.txt \
+ ibp_support.txt \
+ import-API.txt \
+ libraries.txt \
+ module-system-API.txt \
+ filter_template.c
+
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tech/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tech/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-docsDATA: $(docs_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(docsdir)" || $(MKDIR_P) "$(DESTDIR)$(docsdir)"
+ @list='$(docs_DATA)'; test -n "$(docsdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docsdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docsdir)" || exit $$?; \
+ done
+
+uninstall-docsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(docs_DATA)'; test -n "$(docsdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(docsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(docsdir)" && rm -f $$files
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+# (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ target=`echo $@ | sed s/-recursive//`; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ dot_seen=yes; \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done; \
+ if test "$$dot_seen" = "no"; then \
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+$(RECURSIVE_CLEAN_TARGETS):
+ @fail= failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+ *=* | --[!k]*);; \
+ *k*) failcom='fail=yes';; \
+ esac; \
+ done; \
+ dot_seen=no; \
+ case "$@" in \
+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+ *) list='$(SUBDIRS)' ;; \
+ esac; \
+ rev=''; for subdir in $$list; do \
+ if test "$$subdir" = "."; then :; else \
+ rev="$$subdir $$rev"; \
+ fi; \
+ done; \
+ rev="$$rev ."; \
+ target=`echo $@ | sed s/-recursive//`; \
+ for subdir in $$rev; do \
+ echo "Making $$target in $$subdir"; \
+ if test "$$subdir" = "."; then \
+ local_target="$$target-am"; \
+ else \
+ local_target="$$target"; \
+ fi; \
+ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+ include_option=--etags-include; \
+ empty_fix=.; \
+ else \
+ include_option=--include; \
+ empty_fix=; \
+ fi; \
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test ! -f $$subdir/TAGS || \
+ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+ fi; \
+ done; \
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ fi; \
+ done
+ @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+ $(am__relativize); \
+ new_distdir=$$reldir; \
+ dir1=$$subdir; dir2="$(top_distdir)"; \
+ $(am__relativize); \
+ new_top_distdir=$$reldir; \
+ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+ ($(am__cd) $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$new_top_distdir" \
+ distdir="$$new_distdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ am__skip_mode_fix=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-recursive
+all-am: Makefile $(DATA)
+installdirs: installdirs-recursive
+installdirs-am:
+ for dir in "$(DESTDIR)$(docsdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-docsDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-docsDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
+ install-am install-strip tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ ctags ctags-recursive distclean distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-docsDATA install-dvi install-dvi-am \
+ install-exec install-exec-am install-html install-html-am \
+ install-info install-info-am install-man install-pdf \
+ install-pdf-am install-ps install-ps-am install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ tags tags-recursive uninstall uninstall-am uninstall-docsDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS b/debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS
new file mode 100644
index 00000000..089c57bf
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/OPTIMIZERS
@@ -0,0 +1,145 @@
+You want to improve you programming skills?
+You cannot stand wasted CPU cycles?
+You know how to write good/fast/efficient code?
+Then this might be for you.
+
+Transcode has a lot of filter plugins which are not optimized. Filters
+in transcode usually get a single video frame and do transformations on
+that frame. The filter API is as simple as efficient it is explained in
+great detail in /docs/filter-API.txt with sample code for a dummy
+filter.
+
+All filters in transcode are in the filter/ directory and are mostly a
+single C file. The variety of filters ranges from very simple filters
+-- like filter_invert.c -- to complex stuff like filter_yuvdenoise.c.
+
+The audio filters are per definition less CPU intensive than the video
+filters because they have to deal with less data.
+
+Here is an overview of filters which would be glad about a speedup
+(lexicographical order)
+
+* filter_32detect.c
+ Is a interlace detection plugin. The detection algorithm could be
+ improved as well as the speed.
+
+* filter_aclip.c
+ Audio filter which generate audio clips from source
+
+* filter_astat.c
+ Audio filter which collects statistics about the audio stream.
+
+* filter_cshift.c
+ A chroma-lag shifter. It shifts the color components of the video to
+ the left or right. For RGB mode, the filter converts the data to YUV and
+ back again.
+
+* filter_dnr.c
+ A denoiser with no SIMD optimizations It uses a different algorithm
+ than the yuvdenoiser.
+
+* filter_fields.c
+ A very efficient and well written filter.
+
+* filter_invert.c
+ Simple filter which inverts the video.
+
+* filter_logo.c
+ renders a logo into the video stream.
+
+* filter_logoaway.c
+ removes a logo from the video stream.
+
+* filter_mask.c
+ Filter through a rectangular mask, everything outside the masked will
+ be blacked out.
+
+* filter_normalize.c
+ Normalizes the audio stream. The filter is based on mplayers volnorm
+ filter.
+
+* filter_resample.c
+ Resamples to audio stream doing conversions from eg. 48000Hz to
+ 44100Hz. The code is based on code from the sox application.
+
+* filter_smartdeinter.c
+ This filter provides a smart, motion-based deinterlacing
+ capability. In static picture areas, interlacing artifacts do
+ not appear, so data from both fields is used to provide full
+ detail. In moving areas, deinterlacing is performed.
+
+ The filter was written for VirtualDub by Donald Graft. It produces
+ very good results. It was written with the RGB colorspace in mind. To
+ use it in transcode with YUV mode enabled a yuv2rgb and rgb2yuv
+ wrapper has been built around this filter. It would speed up a lot, if
+ rewritten for native YUV mode. There are probably other areas in this
+ filter which are a candidate for a speedup.
+
+* filter_smooth.c
+ Is a single-frame smoothing plugin. It is very CPU intensive
+
+* filter_testframe.c
+ It generates stream of testframes. Optimizing this filter is probably
+ not worth it but it is a good testbed for generating problematic
+ testframes.
+
+* filter_xsharpen.c
+ This filter performs a subtle but useful sharpening effect. The
+ result is a sharpening effect that not only avoids amplifying
+ noise, but also tends to reduce it. A welcome side effect is that
+ files processed with this filter tend to compress to smaller files.
+
+ The filter was written for VirtualDub by Donald Graft. It was written
+ with the RGB colorspace in mind. To be useful with transcodes YUV
+ mode, the filter has been partially rewritten.
+
+* filter_yuvdenoise.c
+ This filter comes from the mjpeg tools and denoises the video by doing
+ a motion analyse. There are some SIMD parts in this filter but it could
+ be much faster.
+
+* filter_yuvmedian.c
+ This filter comes from the mjpeg tools and smoothes the video by
+ appying a median algorithm. It is CPU intensive.
+
+
+/* ****************************************************************** */
+
+Colorspaces
+In transcode, the filter gets a char* which points to the raw video
+data. Only two colorspaces are possible in transcode.
+
+* RGB
+This is actually RGB24 meaning there are 24 bits or 3 Bytes available
+for each pixel. It is a packed format, each component is 1 byte large.
+The size of the image is Width*Height*3.
+The memory layout is
+
+ ___________________________________
+|__R__|__G__|__B__|__R__|__G__|__B__| ....
+ \_______________/ \_______________/
+ Pixel(0,0) Pixel(1,0)
+
+* YUV (4:2:0)
+This is actually YUV420P (I420) with 1+1/2 byte per pixel. It is a planar
+format meaning first all Y data then Cb and then Cr.
+The memory layout is
+
+ __________________ ... ______ ... _____
+|__Y__|__Y__|__Y__| ... |__Cb_| ... |__Cr_| ....
+ \___/ \___/ \___/
+ (0,0) (1,0) (2,0)
+
+There are Width*Height Y bytes, Width*Height/4 Cb bytes and
+Width*Height/4 Cr bytes. The size of the image is Width*Height*3/2.
+
+
+* YUV (4:2:2)
+This is YUV422 8-bit planar, with 2 bytes per pixel. The layout is the
+same as for YUV420P, but the Cb and Cr planes are twice as high (double
+vertical resolution).
+
+Size of the image is 2*W*H.
+
+(c) 2003 Tilmann Bitterberg <transcode@tibit.org>
+Modified: $Date: 2007-03-21 20:17:10 $
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/architecture.txt b/debian/transcode/transcode-1.1.7/docs/tech/architecture.txt
new file mode 100644
index 00000000..119c6222
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/architecture.txt
@@ -0,0 +1,262 @@
+====================================================
+A video frame in transcode -- Birth, life and death.
+====================================================
+
+This article has information about the generic stages of a frame in
+the transcode core. It may help you when you want to do a filter for
+transcode or just understand how transcode works.
+
+Transcode is a threaded application. The different threads which are
+of importance here are one decoder thread, one encoder thread and N
+frame processing threads. N is a number the user can control via
+the second argument of transcodes -u option.
+
+Each frame is put into a frame_list_t (/src/framebuffer.h)
+structure. The frames are buffered internally in a double linked
+list. The order of an frame in this list denotes the decoding (and
+therefore) the encoding order (/src/video_buffer.c)
+
+The import module decompresses a frame from the input file into a
+format the core of transcode likes. Just after the frame arrives in
+the decoder, the status of the frame is set to FRAME_WAIT.
+the first frame pre-processing takes place here.
+
+1) preprocess_vid_frame() (/src/frame_preprocess.c)
+ If the frame number is out-of-range as denoted by -c, the skipped
+ attribute is attached to the frame and it is ignored by further
+ processing routines. If the user has given --pre_clip, this will
+ happen here.
+
+After the very early clipping the filters get their draw with the tag:
+
+2) TC_PRE_S_PROCESS
+ The _S_ stands for synchronous. This means for the filter it will
+ recieve one frame after another in decoding order. The filter is
+ executed by the decoding thread and runs inside this thread
+ putting the decoder on halt for its execution time.
+
+When all filters are done with TC_PRE_S_PROCESS, the frame leaves
+the decoder and the sychronous part and now waits to be picked up by
+one of the frame processing threads (/src/frame_threads.c). One
+frame processing thread does the following: It grabs one frame from
+the frame_list and sets its state to FRAME_LOCK to make sure no
+other frame processing thread will take this frame. Now the frame
+enters the filters again:
+
+3) TC_PRE_M_PROCESS
+ The frame passes all the filters in the order specified on the
+ command line. The frame ordering is not garanteed any more; the
+ frames may arrive in the filter in any order. The filter must be
+ reentrant in some way.
+
+Next, the internal processing routines take place:
+
+4) process_vid_frame() (/src/video_trans.c)
+ The following operations are applied to the frame in the hereby
+ given order
+ -j (clip) -I (deinterlace) -X (fast scale up) -B (fast scale
+ down) -Z (slow zoom) -Y (clip) -r (scale half) -z (flip)
+ -l (mirror) -k (rgbswap) -K (make grayscale) -G (gamma)
+ -C (antialias)
+ short: "jIXBZYrzlkKGC"
+
+The frame wanders off into the filters a third time:
+
+5) TC_POST_M_PROCESS
+ (the same as for 3) applies here, too)
+
+The frame processing thread now sets the status of the frame to
+FRAME_READY which means the frame can now be picked up by the
+encoder. The encoder does again some processing and calls the
+filters for the fourth and last time.
+
+6) TC_POST_S_PROCESS
+ (the same as for 2) applies here, too)
+
+After this a internal post processing takes place:
+
+7) postprocess_vid_frame() (/src/frame_postprocess.c)
+ Very last clipping if the user wants this via --post_clip
+
+Finally, the processed frame is made available to preview filters with
+the tag:
+
+8) TC_PREVIEW
+ This tag is intended only for the "preview" and "pv" filters (and any
+ new ones created with the same purpose), and allows the final video
+ frame after clipping via --post_clip to be shown to the user. The
+ frame should not be modified here.
+
+When the frame has the skip flag set it will not be encoded, all
+other frames will encoded and freed.
+
+
+===================
+Graphical structure
+===================
+
+ decode()
+ |
+ 1) preprocess()
+ |
+ 2) filters(TC_PRE_S_PROCESS)
+ |
+ _____________/ | \______________
+ / | | | \
+ / | | | \
+ N F R A M E P R O C E S S I N G T H R E A D S
+ / . . . .
+ | . . . .
+ |
+ 3) filters(TC_PRE_M_PROCESS)
+ |
+ 4) process_vid_frame()
+ |
+ 5) filters(TC_POST_M_PROCESS)
+ |
+ | . . . .
+ \ . . . .
+ \ | | | /
+ \________|______ | ______|_______/
+ \ | /
+ |
+ 6) filters(TC_POST_S_PROCESS)
+ |
+ 7) postprocess()
+ |
+ 8) filters(TC_PREVIEW)
+ |
+ encode()
+
+
+==============
+Cloning Frames
+==============
+
+A filter can clone a frame. What this means and when it is possible
+to do it will be the topic of this section. We only consider the
+filters slots since non of the core video function does cloning.
+"Cloning a frame" means a frame gets duplicated (cloned) and encoded
+twice. Of course, if the cloned frame gets modified, a different
+cloned frame gets encoded. As the reader might know, there are four
+filter slots in transcode (excluding TC_PREVIEW, which is not
+relevant to this discussion). I'll abbrevate them for easier reading:
+
+ Slot | Abb. | Comment
+ ---------------------+------+----------------------------------
+ TC_PRE_S_PROCESS | ES | synchronous pre processing
+ TC_PRE_M_PROCESS | EM | multithreaded pre processing
+ TC_POST_M_PROCESS | OM | multithreaded post processing
+ TC_POST_S_PROCESS | OS | synchronous post processing
+
+Every filter in every slot can clone frames but the filter may not
+be called again with the cloned frame again. This depends on the
+slot the filter lives in. Note that a filter can live in several
+slots, for example, it can set the clone flag at ES time and catch
+the cloned frame at OM time if it likes to do so. The filter must
+keep in mind, that the cloned frame may have different geometry at
+OM time because it may be rescaled or resampled.
+
+How to read the following table. The field "Slot" denotes the slot
+the filter is in when it sets CLONE. The "Slots to pass" field tells
+the slots the cloned frame will pass.
+
+ Slot | Slots to pass | Slots NOT passed
+ ------+---------------+-----------------
+ ES | EM OM OS | ES
+ EM | EM OM OS | ES
+ OM | OS | ES EM OM
+ OS | OS | ES EM OM
+
+Example 1:
+A filter in ES sets CLONE. The filter itself will not see the cloned
+frame, but all filters in following slots will.
+
+Example 2:
+A filter in EM sets CLONE. The filter _will_ see the cloned frame
+again and all consecutive slots will get it again, too.
+
+Notes on Cloning.
+To clone a frame, the filter adds TC_FRAME_IS_CLONED to the frame
+pointer attributes. The frame ID never gets incremented to reflect
+the count of cloned frames. If the filter decides to clone a frame,
+it gets the frame back with the same ID but with TC_FRAME_WAS_CLONED
+set, so its easy to distinguish between the frame with the original
+ID and the duplicated ID.
+
+
+===============
+Skipping Frames
+===============
+
+A filter can apply the skipped attribute to a frame which tells
+transcode the frame is not to be encoded but dropped. Not all slots
+can skip a frame; only slots where there is asynchronous A/V are
+allowed to do so.
+
+ Slot | slot in which the frame will be dropped
+ ------+----------------------------------------
+ ES | Before EM
+ EM | After EM, before OM
+ OM | After OM, before OS
+ OS | After OS, before encode
+
+In other words, a skipped frame gets dropped right after the filter
+has returned.
+
+=================================
+Choosing the Slot for your Filter
+=================================
+
+If you want to do a filter you may not be sure in which slot it
+should be in. This section helps you in finding the correct slot for
+your filter.
+
+Multithreaded vs. Synchronous
+
+ You should try as hard as possible to put your filter into one of
+ the _M_ slots. An _M_ slot is usually faster than an _S_ slot.
+ Imagine the decoder waits for data to arrive from the harddrive and
+ the encoder is busy. Having your filter run in _M_ could use the
+ time while noone else is doing something to process the frame.
+ The _S_ stages are run directly by the decoder respectivly the
+ encoder and will block the de/encoder in doing their real work.
+
+ However, its not always possible to put a filter in _M_. In _M_
+ slots the filter may recieve the frames in any order. So if the
+ filter does depend on correct frame ordering it cannot be in _M_.
+ It may be possible to rewrite the filter in a way so that it does
+ not depend on the order of frames, check if it can be done for your
+ filter.
+
+PRE vs. POST
+
+ This decision is merely driven by the fact what your filter
+ actually does and which kind of data you want to have. Its usually
+ true, that a POST filter has to deal with less data than a PRE
+ filter. Of course, this is only true, if the user scales down and
+ not up but this is what most users do.
+
+ As an example, a deinterlace should always be run as a PRE filter
+ before the the up/down scaling of the frame happens in
+ transcode-core. A denoiser can be either run in PRE or in POST
+ because it just does not matter. One can assume that if the user
+ wants deinterlacing, in POST you can be pretty sure that you work
+ with progressive material.
+
+Always keep in mind that a filter can be in multiple slots. It
+depends on the filter which tag it wants.
+
+
+=================================
+Multiple Instances of your Filter
+=================================
+
+If your you want to be able to run XXX: see /filter/filter_32detect.c
+
+=======================
+Linked Framebuffer List
+=======================
+// XXX: WRITEME
+
+// vim: tw=68
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/avi_comments.txt b/debian/transcode/transcode-1.1.7/docs/tech/avi_comments.txt
new file mode 100644
index 00000000..b8a2709b
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/avi_comments.txt
@@ -0,0 +1,117 @@
+# INFO
+#
+# The AVI file format supports so-called tomb-stone data. It can be
+# used to write annotations into the AVI file.
+#
+# You can use this file as the argument to the transcode option
+# --avi_comments. When the file is read, empty lines and lines
+# starting with '#' are ignored.
+# The syntax is: "TAG<space>STRING". The order of the tags does not
+# matter. If a tag has no string following it, it is ignored. That
+# means, you can use this file as input and only fill out the fields
+# you want.
+#
+# A very simple example is:
+# ----------------snip----------------
+# INAM My 1st Birthday
+# ISBJ My first steps!
+# IART My proud family
+# ----------------snip----------------
+#
+# Keep in mind that there is no endless space in the AVI header,
+# most likely its around 1000 bytes.
+
+
+# INAM - Stores the title of the subject of the file, such as
+# "Seattle from Above."
+INAM
+
+# ISBJ - Describes the contents of the file, such as
+# "Aerial view of Seattle."
+ISBJ
+
+# Lists the artist of the original subject of the file;
+# for example, "Michaelangelo."
+IART
+
+# Records the copyright information for the file; for example,
+# "Copyright Encyclopedia International 1991." If there are multiple
+# copyrights, separate them by semicolon followed by a space.
+ICOP
+
+# Lists the name of the person or organization that commissioned
+# the subject of the file; for example "Pope Julian II."
+ICMS
+
+# Provides general comments about the file or the subject
+# of the file. If the comment is several sentences long, end each
+# sentence with a period. Do not include new-line characters.
+ICMT
+
+# Indicates where the subject of the file is archived
+IARL
+
+# Creation date. Specifies the date the subject of the file was created. List
+# dates in year-month-day format, padding one-digit months and days with
+# a zero on the left; for example, "1553-05-03" for May 3, 1553.
+ICRD
+
+# Describes whether an image has been cropped and, if so, how it
+# was cropped; for example, "lower-right corner."
+ICRP
+
+# Specifies the size of the original subject of the file; for
+# example, "8.5 in h, 11 in w."
+IDIM
+
+# Stores dots per inch setting of the digitizer used to
+# produce the file, such as "300."
+IDPI
+
+# Stores the of the engineer who worked on the file. If there are
+# multiple engineers, separate the names by a semicolon and a blank;
+# for example, "Smith, John; Adams, Joe."
+IENG
+
+# Describes the original work, such as "landscape,", "portrait,"
+# "still liefe," etc.
+IGNR
+
+# Provides a list of keywords that refer to the file or subject of the
+# file. Separate multiple keywords with a semicolon and a blank;
+# for example, "Seattle, aerial view; scenery."
+IKEY
+
+# ILGT - Describes the changes in the lightness settings on the digitizer
+# required to produce the file. Note that the format of this information
+# depends on the hardware used.
+ILGT
+
+# IMED - Decribes the original subject of the file, such as
+# "computer image," "drawing," "lithograph," and so on.
+IMED
+
+# IPLT - Specifies the number of colors requested when digitizing
+# an image, such as "256."
+IPLT
+
+# IPRD - Specifies the name of title the file was originally intended
+# for, such as "Encyclopedia of Pacific Northwest Geography."
+IPRD
+
+# ISHP - Identifies the change in sharpness for the digitizer
+# required to produce the file (the format depends on the hardware used).
+ISHP
+
+# ISRC - Identifies the name of the person or organization who
+# suplied the original subject of the file; for example, "Try Research."
+ISRC
+
+# ISRF - Identifies the original form of the material that was digitized,
+# such as "slide," "paper," "map," and so on. This is not necessarily
+# the same as IMED
+ISRF
+
+# ITCH - Identifies the technician who digitized the subject file;
+# for example, "Smith, John."
+ITCH
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/clone.txt b/debian/transcode/transcode-1.1.7/docs/tech/clone.txt
new file mode 100644
index 00000000..fa8ba9d1
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/clone.txt
@@ -0,0 +1,101 @@
+----------------------------------------------------
+More accurate and up-to-date information is in /docs/architecture.txt
+----------------------------------------------------
+
+HOWTO clone frames
+
+I want to contribute a quick how-to how to use the new attribute
+TC_FRAME_IS_CLONED.
+
+I have written two filters tc_video and tc_audio as an
+demonstration example of the clone flag doing actually something
+useful. These filters telecine a NTSC_FILM to NTSC_VIDEO
+(23.9->29.9 fps) for video and audio. The input material must be
+in 23.9 fps or weird results come out. Of course, you can use
+ivtc+decimate to reverse the process and restore the original
+video :)
+
+The best documentation is (as always) the source but let me
+summarize my experience.
+
+A filter can clone (duplicate) a frame by setting the clone flag
+to a frame by
+ ptr->attributes |= TC_FRAME_IS_CLONED;
+
+The encoder then deletes the flag and sets another flag named
+TC_FRAME_WAS_CLONED. This is necessary for the filter because
+frame IDs never get incremented.
+
+The filter has to live in the TC_POST_M_PROCESS or in the
+TC_POST_S_PROCESS (synchronous) slot for this to work and its
+quite a difference between TC_POST_M_PROCESS and TC_POST_S_PROCESS
+
+TC_POST_M_PROCESS:
+ The filter can set the the clone flag which causes the frame
+ to get encoded twice. The filter WON'T see the frame again, so
+ it cannot make modifications to the frame. This is what the
+ demo filter_clone uses.
+
+ import -> .. -> filter (set_clone) -> encoder (frame)-,
+ / /
+ \______<<<________/
+
+TC_POST_S_PROCESS:
+ The filter can set the clone flag which causes the frame to
+ get encoded and run through the filter again with the
+ was_cloned flag set. The filter can now check if this frame
+ already was cloned and not clone it again. This is very handy
+ when doing modulo insertions of frames.
+
+ import -> .. -> filter (if !was_cloned -> encoder (frame)-,
+ / then set_clone) /
+ \_________<<<________________<<<____________/
+
+
+Definitions:
+The frame ID never gets incremented to reflect the count of
+cloned frames. If the filter decides to clone a frame, it gets the
+frame back with the same ID but with TC_FRAME_WAS_CLONED set, so
+its easy to distinguish between the frame with the original ID
+and the duplicated ID.
+
+Limitations/Bugs:
+- It is not possible to rerun the frame through the complete
+ filter pipeline. TC_POST_S_PROCESS is the most far away point
+ the frame can get back.
+
+- transcode's encoding frame counter is wrong, but the final
+ message, ie
+ [transcode] encoded 331 frames (0 dropped), clip length 11.04 s
+ is correct.
+
+Notes:
+TC_FRAME_WAS_CLONED is introduced in this patch and is not
+available in earlier transcode versions.
+
+Notes on the included filters:
+The tc_video filter is pretty straight forward, doing a normal
+telecine. Thanks to Thanassis Tsiodras who explained very
+precise what telecine and what inverse telecine is. The code is
+commented to show its work flow and workings.
+
+The tc_audio filter is a bit trickier, because the audio frames
+have to get "repackaged". The audio import bufsize is tweaked to
+read the frames in chunks suitable for 23.9 fps and the filter
+then moves them back and forth to repackage them suitable for
+29.9 fps. Considering this example.
+
+ Import: 48000,16,2 @ 23.9 fps -> bufsize = 8008
+ export: 48000,16,2 @ 29.9 fps -> bufsize = 6408
+
+ The filter does a conversion from 4 frames * 8008 to
+ 5 frames * 6408
+
+No data is added or removed.
+
+I think this feature is now pretty usable so start hacking on
+frame rate conversion filters :)
+
+Version 0.1
+
+2002 Tilmann Bitterberg <transcode@tibit.org>
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/export-API.txt b/debian/transcode/transcode-1.1.7/docs/tech/export-API.txt
new file mode 100644
index 00000000..bb74c9ff
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/export-API.txt
@@ -0,0 +1,111 @@
+ EXPORT MODULE WRITING HOWTO
+ ---------------------------
+Changes: 2001-08-13: changed order of init/open
+ and stop/close calls.
+
+Some very short documentation on writing export modules for transcode
+
+include this file:
+------------------
+
+#include "transcode.h" //definition of vob_t and transfer_t structure
+
+data exchange structure for modules:
+------------------------------------
+
+typedef struct _vob_t {
+//see transcode.h for details
+} vob_t;
+
+typedef struct _transfer_t {
+
+ int flag; // specifies context: TC_VIDEO for video
+ TC_AUDIO for audio
+ // or passes an integer to the module
+
+ FILE *fd; // file handle for input stream
+ // NULL if import module performs reading
+ // unused in export module
+
+ int size; // total amount of bytes in the buffer
+
+ char *buffer; // pointer to data array with frame data
+
+} transfer_t;
+
+
+single function interface:
+--------------------------
+
+int tc_export(int option, void *para1, void *para2);
+
+exit codes: all handled by transcode
+TC_EXPORT_UNKNOWN option not supported
+TC_EXPORT_OK no error, hopefully the default
+TC_EXPORT_ERROR a critical error occured
+
+input parameter:
+option contains the requested action id
+para1/2 its actually meaning depends on option
+
+requested method:
+
+transcode calls the following routines in this order
+for both export modules, i.e., first for video and then for the
+audio context flag set. An export module should in general
+be able to deal with audio and video and write it to
+a common file. But the interface is more general.
+
+[1]
+option=TC_EXPORT_NAME
+para1=_transfer_t
+para2=NULL
+requested action: print out some general modules infos to stderr
+ and inherit transcode verbosity flag
+ (optional return capability flag)
+
+ //>0.3.3 of transcode interpret flag returned
+ //to read module capabilities for sanity checks
+status: optional
+
+[2]
+option=TC_EXPORT_INIT
+para1=_transfer_t
+para2=_vob_t
+requested action: initialize the encoder
+status: required
+
+
+[3]
+option=TC_EXPORT_OPEN
+para1=_transfer_t
+para2=_vob_t
+requested action: open outputfile
+status: required
+
+
+[4]
+option=TC_EXPORT_ENCODE
+para1=_transfer_t
+para2=NULL
+requested action: use this frame data to encode the next frame
+ in the sequence
+status: required
+
+
+[5]
+option:TC_EXPORT_CLOSE
+para1=_transfer_t
+para2=NULL
+requested action: close open files
+status: required
+
+
+[6]
+option=TC_EXPORT_STOP
+para1=_transfer_t
+para2=NULL
+requested action: stop the encoder, free memory and prepare for
+ module removal
+status: required
+
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/filter-API.txt b/debian/transcode/transcode-1.1.7/docs/tech/filter-API.txt
new file mode 100644
index 00000000..002b6fdf
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/filter-API.txt
@@ -0,0 +1,136 @@
+
+ // ================
+ // API explanation:
+ // ================
+ //
+ // (1) need more infos, than get pointer to transcode global
+ // information structure vob_t as defined in transcode.h.
+ //
+ // (2) 'tc_get_vob' and 'verbose' are exported by transcode.
+ //
+ // (3) filter is called first time with TC_FILTER_INIT flag set.
+ //
+ // (4) make sure to exit immediately if context (video/audio) or
+ // placement of call (pre/post) is not compatible with the filters
+ // intended purpose, since the filter is called 4 times per frame.
+ //
+ // (5) see framebuffer.h for a complete list of frame_list_t variables.
+ //
+ // (6) filter is last time with TC_FILTER_CLOSE flag set. This is important.
+ // The filter should be left in a state so that it could be called again
+ // with TC_FILTER_INIT.
+ //
+ // (Anytime) A filter may be called with TC_FILTER_GET_CONFIG to read the
+ // current config (optional) See /src/optstr.h for explanation
+
+
+ Notes and Hints about filter programming:
+ * Statics: All information and data you have calculated at INIT time and you
+ want to reuse later must be declared static (tables, flags, etc)
+ * The optstr_get function provides a convenient way for a developer to parse
+ human readable option strings. You are encouraged to use this function.
+ * If your filter shall be called multiple times during and encode session
+ (maybe first as a pre fileter and than as a post process filter) _you_ have
+ to take care to not overwrite your own data. A frame_list_t element has a
+ field called `instance' which will help you to keep your adress space clean.
+ See 32detect for an implementation.
+ * When TC_FILER_GET_CONFIG flag is set, the filter should return its
+ available parameters using the optstr_param and optstr_filter_desc funtions.
+ The last parameters of optstr_param are ranges with valid arguments for
+ this paramter. Sometimes it does not make sense to set the ranges, (e.g. if
+ the parameter "foo" is valid from 0 to "all frames in this file", so it is
+ considered good practice to use "oo" - the mathematical symbol for infinity
+ as the upper limit.
+
+Example filter code:
+
+#define MOD_NAME "filter_null.so"
+#define MOD_VERSION "v0.1 (2003-10-12)"
+#define MOD_CAP "demo filter plugin"
+#define MOD_AUTHOR "Jon Doe <me@there>"
+
+#include "filter.h"
+#include "optstr.h"
+
+int tc_filter(frame_list_t *ptr, char *options)
+{
+
+ int pre, vid;
+ static int dummy_option = 0;
+
+ static vob_t *vob=NULL;
+
+ //----------------------------------
+ //
+ // filter get config
+ //
+ //----------------------------------
+
+ if(ptr->tag & TC_FILTER_GET_CONFIG) {
+ if (options) {
+ optstr_filter_desc (MOD_NAME, MOP_CAP, MOD_VERSION, MOD_AUTHOR, "VARY", "1");
+
+ optstr_param (options, "dummy_options", // name
+ "This options does nothing", // comment
+ "%d", // format
+ "0", // default value
+ "0", // valid from
+ "255" // valid to
+ );
+ }
+ return (0);
+ }
+
+ //----------------------------------
+ //
+ // filter init
+ //
+ //----------------------------------
+
+ if(ptr->tag & TC_FILTER_INIT) {
+
+ if((vob = tc_get_vob())==NULL) return(-1);
+
+ if (options) {
+ optstr_get (options, "dummy_option", "%d", &dummy_option);
+ }
+
+ // filter init ok.
+ if(verbose) printf("[%s] %s %s\n", MOD_NAME, MOD_VERSION, MOD_CAP);
+
+ return(0);
+ }
+
+ //----------------------------------
+ //
+ // filter close
+ //
+ //----------------------------------
+
+
+ if(ptr->tag & TC_FILTER_CLOSE) {
+ // free memory, etc ..
+ return(0);
+ }
+
+ //----------------------------------
+ //
+ // filter frame routine
+ //
+ //----------------------------------
+
+ // tag variable indicates, if we are called before
+ // transcodes internal video/audo frame processing routines
+ // or after and determines video/audio context
+
+
+ if(ptr->tag & TC_PRE_M_PROCESS) pre=1;
+ if(ptr->tag & TC_POST_M_PROCESS) pre=0;
+
+ if(ptr->tag & TC_VIDEO) vid=1;
+ if(ptr->tag & TC_AUDIO) vid=0;
+
+ printf("[%s] frame [%06d] %s %16s call\n", MOD_NAME, ptr->id, (vid)?"(video)":"(audio)", (pre)?"pre-process filter":"post-process filter");
+
+ return(0);
+}
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/filter_template.c b/debian/transcode/transcode-1.1.7/docs/tech/filter_template.c
new file mode 100644
index 00000000..4f754a9f
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/filter_template.c
@@ -0,0 +1,294 @@
+/*
+ * filter_template.c -- template code for NMS and back compatible
+ * transcode filters
+ * Written by Andrew Church <achurch@achurch.org>
+ * Templatized by Francesco Romani <fromani at gmail dot com>
+ *
+ * This file is part of transcode, a video stream processing tool.
+ * transcode is free software, distributable under the terms of the GNU
+ * General Public License (version 2 or later). See the file COPYING
+ * for details.
+ */
+
+#define MOD_NAME "filter_template.so"
+#define MOD_VERSION "v1.1.0 (2007-05-31)"
+#define MOD_CAP "WRITE SUMMARY OF THE MODULE HERE"
+#define MOD_AUTHOR "Andrew Church, Francesco Romani"
+
+#define MOD_FEATURES \
+ TC_MODULE_FEATURE_FILTER|TC_MODULE_FEATURE_VIDEO|TC_MODULE_FEATURE_AUDIO
+#define MOD_FLAGS \
+ TC_MODULE_FLAG_RECONFIGURABLE
+
+#include "transcode.h"
+#include "filter.h"
+#include "libtc/libtc.h"
+#include "libtc/optstr.h"
+#include "libtc/tcmodule-plugin.h"
+
+static const char help_string[] = \
+ "WRITE LONG AND DETAILED DESCRIPTION OF THE MODULE HERE";
+
+/*************************************************************************/
+
+typedef struct {
+ ;
+} PrivateData;
+
+/*************************************************************************/
+/*************************************************************************/
+
+/* Module interface routines and data. */
+
+/*************************************************************************/
+
+/**
+ * template_init: Initialize this instance of the module. See
+ * tcmodule-data.h for function details.
+ */
+
+static int template_init(TCModuleInstance *self, uint32_t features)
+{
+ PrivateData *pd;
+
+ TC_MODULE_SELF_CHECK(self, "init");
+ TC_MODULE_INIT_CHECK(self, MOD_FEATURES, features);
+
+ pd = tc_malloc(sizeof(PrivateData));
+ if (!pd) {
+ tc_log_error(MOD_NAME, "init: out of memory!");
+ return TC_ERROR;
+ }
+ self->userdata = pd;
+
+ /* initialize data */
+
+ if (verbose) {
+ tc_log_info(MOD_NAME, "%s %s", MOD_VERSION, MOD_CAP);
+ }
+ return TC_OK;
+}
+
+/*************************************************************************/
+
+/**
+ * template_fini: Clean up after this instance of the module. See
+ * tcmodule-data.h for function details.
+ */
+
+static int template_fini(TCModuleInstance *self)
+{
+ PrivateData *pd;
+
+ TC_MODULE_SELF_CHECK(self, "fini");
+
+ pd = self->userdata;
+
+ /* free data allocated in _init */
+
+ tc_free(self->userdata);
+ self->userdata = NULL;
+ return TC_OK;
+}
+
+/*************************************************************************/
+
+/**
+ * template_configure: Configure this instance of the module. See
+ * tcmodule-data.h for function details.
+ */
+
+static int template_configure(TCModuleInstance *self,
+ const char *options, vob_t *vob)
+{
+ PrivateData *pd = NULL;
+
+ TC_MODULE_SELF_CHECK(self, "configure");
+
+ pd = self->userdata;
+
+ if (options) {
+ /* optstr_get() them */
+ }
+
+ /* handle other options */
+
+ return TC_OK;
+}
+
+/*************************************************************************/
+
+/**
+ * template_stop: Reset this instance of the module. See tcmodule-data.h
+ * for function details.
+ */
+
+static int template_stop(TCModuleInstance *self)
+{
+ PrivateData *pd = NULL;
+
+ TC_MODULE_SELF_CHECK(self, "stop");
+
+ pd = self->userdata;
+
+ /* reverse all stuff done in _configure */
+
+ return TC_OK;
+}
+
+/*************************************************************************/
+
+/**
+ * template_inspect: Return the value of an option in this instance of
+ * the module. See tcmodule-data.h for function details.
+ */
+
+static int template_inspect(TCModuleInstance *self,
+ const char *param, const char **value)
+{
+ PrivateData *pd = NULL;
+
+ TC_MODULE_SELF_CHECK(self, "inspect");
+ TC_MODULE_SELF_CHECK(param, "inspect");
+ TC_MODULE_SELF_CHECK(value, "inspect");
+
+ pd = self->userdata;
+
+ if (optstr_lookup(param, "help")) {
+ *value = help_string;
+ }
+ /* put back configurable options */
+
+ return TC_OK;
+}
+
+/*************************************************************************/
+
+/**
+ * template_filter_video: Perform the filter operation on the video
+ * stream. See tcmodule-data.h for function details.
+ */
+
+static int template_filter_video(TCModuleInstance *self, vframe_list_t *frame)
+{
+ PrivateData *pd = NULL;
+
+ TC_MODULE_SELF_CHECK(self, "filter_video");
+ TC_MODULE_SELF_CHECK(frame, "filter_video");
+
+ pd = self->userdata;
+
+ /* do the magic */
+
+ return TC_OK;
+}
+
+/*************************************************************************/
+
+/**
+ * template_filter_audio: Perform the filter operation on the audio
+ * stream. See tcmodule-data.h for function details.
+ */
+
+static int template_filter_audio(TCModuleInstance *self, aframe_list_t *frame)
+{
+ PrivateData *pd = NULL;
+
+ TC_MODULE_SELF_CHECK(self, "filter_audio");
+ TC_MODULE_SELF_CHECK(frame, "filter_audio");
+
+ pd = self->userdata;
+
+ /* do the magic */
+
+ return TC_OK;
+}
+
+/*************************************************************************/
+
+static const TCCodecID template_codecs_in[] = {
+ TC_CODEC_ERROR
+};
+static const TCCodecID template_codecs_out[] = {
+ TC_CODEC_ERROR
+};
+static const TCFormatID template_formats[] = {
+ TC_FORMAT_ERROR
+};
+
+static const TCModuleInfo template_info = {
+ .features = MOD_FEATURES,
+ .flags = MOD_FLAGS,
+ .name = MOD_NAME,
+ .version = MOD_VERSION,
+ .description = MOD_CAP,
+ .codecs_in = template_codecs_in,
+ .codecs_out = template_codecs_out,
+ .formats_in = template_formats,
+ .formats_out = template_formats
+};
+
+static const TCModuleClass template_class = {
+ .info = &template_info,
+
+ .init = template_init,
+ .fini = template_fini,
+ .configure = template_configure,
+ .stop = template_stop,
+ .inspect = template_inspect,
+
+ .filter_video = template_filter_video,
+ /* We have to handle the audio too! */
+ .filter_audio = template_filter_audio,
+};
+
+extern const TCModuleClass *tc_plugin_setup(void)
+{
+ return &template_class;
+}
+
+/*************************************************************************/
+
+static int template_get_config(TCModuleInstance *self, char *options)
+{
+ PrivateData *pd = NULL;
+
+ TC_MODULE_SELF_CHECK(self, "get_config");
+
+ pd = self->userdata;
+
+ optstr_filter_desc(options, MOD_NAME, MOD_CAP, MOD_VERSION,
+ MOD_AUTHOR, "VAMEO", "1");
+
+ /* use optstr_param to do introspection */
+
+ return TC_OK;
+}
+
+static int template_process(TCModuleInstance *self,
+ frame_list_t *frame)
+{
+ TC_MODULE_SELF_CHECK(self, "process");
+
+ /* choose what to do by frame->tag */
+
+ return TC_OK;
+}
+
+/*************************************************************************/
+
+/* Old-fashioned module interface. */
+
+TC_FILTER_OLDINTERFACE(template)
+
+/*************************************************************************/
+
+/*
+ * Local variables:
+ * c-file-style: "stroustrup"
+ * c-file-offsets: ((case-label . *) (statement-case-intro . *))
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vim: expandtab shiftwidth=4:
+ */
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/Makefile.am b/debian/transcode/transcode-1.1.7/docs/tech/html/Makefile.am
new file mode 100644
index 00000000..e64cd267
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/Makefile.am
@@ -0,0 +1,15 @@
+EXTRA_DIST = \
+ $(docs_DATA)
+
+docsdir = \
+ $(datadir)/doc/transcode/tech/html
+
+docs_DATA = \
+ index.html \
+ tc_basic.css \
+ tc_frame_buffer.html \
+ tc_input_rotation.html \
+ tc_libraries.html \
+ tc_logo.png
+
+
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/Makefile.in b/debian/transcode/transcode-1.1.7/docs/tech/html/Makefile.in
new file mode 100644
index 00000000..bc597711
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/Makefile.in
@@ -0,0 +1,520 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = docs/tech/html
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
+ $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(docsdir)"
+DATA = $(docs_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+A52_CFLAGS = @A52_CFLAGS@
+A52_LIBS = @A52_LIBS@
+ACLIB_LIBS = @ACLIB_LIBS@
+ACLOCAL = @ACLOCAL@
+ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AVILIB_LIBS = @AVILIB_LIBS@
+AWK = @AWK@
+BSDAV_CFLAGS = @BSDAV_CFLAGS@
+BSDAV_LIBS = @BSDAV_LIBS@
+CC = @CC@
+CCAS = @CCAS@
+CCASDEPMODE = @CCASDEPMODE@
+CCASFLAGS = @CCASFLAGS@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXXCPP = @CXXCPP@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLDARWIN_CFLAGS = @DLDARWIN_CFLAGS@
+DLDARWIN_LIBS = @DLDARWIN_LIBS@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FAAC_CFLAGS = @FAAC_CFLAGS@
+FAAC_LIBS = @FAAC_LIBS@
+FGREP = @FGREP@
+FREETYPE2_CFLAGS = @FREETYPE2_CFLAGS@
+FREETYPE2_LIBS = @FREETYPE2_LIBS@
+GREP = @GREP@
+IBP_LIBS = @IBP_LIBS@
+ICONV_CFLAGS = @ICONV_CFLAGS@
+ICONV_LIBS = @ICONV_LIBS@
+IMAGEMAGICK_CFLAGS = @IMAGEMAGICK_CFLAGS@
+IMAGEMAGICK_LIBS = @IMAGEMAGICK_LIBS@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LAME_CFLAGS = @LAME_CFLAGS@
+LAME_LIBS = @LAME_LIBS@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBAVCODEC_CFLAGS = @LIBAVCODEC_CFLAGS@
+LIBAVCODEC_LIBS = @LIBAVCODEC_LIBS@
+LIBAVFORMAT_CFLAGS = @LIBAVFORMAT_CFLAGS@
+LIBAVFORMAT_LIBS = @LIBAVFORMAT_LIBS@
+LIBDVDREAD_CFLAGS = @LIBDVDREAD_CFLAGS@
+LIBDVDREAD_LIBS = @LIBDVDREAD_LIBS@
+LIBDV_CFLAGS = @LIBDV_CFLAGS@
+LIBDV_LIBS = @LIBDV_LIBS@
+LIBJPEG_CFLAGS = @LIBJPEG_CFLAGS@
+LIBJPEG_LIBS = @LIBJPEG_LIBS@
+LIBMPEG2CONVERT_CFLAGS = @LIBMPEG2CONVERT_CFLAGS@
+LIBMPEG2CONVERT_LIBS = @LIBMPEG2CONVERT_LIBS@
+LIBMPEG2_CFLAGS = @LIBMPEG2_CFLAGS@
+LIBMPEG2_LIBS = @LIBMPEG2_LIBS@
+LIBOBJS = @LIBOBJS@
+LIBPOSTPROC_CFLAGS = @LIBPOSTPROC_CFLAGS@
+LIBPOSTPROC_LIBS = @LIBPOSTPROC_LIBS@
+LIBQUICKTIME_CFLAGS = @LIBQUICKTIME_CFLAGS@
+LIBQUICKTIME_LIBS = @LIBQUICKTIME_LIBS@
+LIBS = @LIBS@
+LIBTCAUDIO_LIBS = @LIBTCAUDIO_LIBS@
+LIBTCVIDEO_LIBS = @LIBTCVIDEO_LIBS@
+LIBTC_LIBS = @LIBTC_LIBS@
+LIBTOOL = @LIBTOOL@
+LIBV4L2_CFLAGS = @LIBV4L2_CFLAGS@
+LIBV4L2_LIBS = @LIBV4L2_LIBS@
+LIBV4LCONVERT_CFLAGS = @LIBV4LCONVERT_CFLAGS@
+LIBV4LCONVERT_LIBS = @LIBV4LCONVERT_LIBS@
+LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
+LIBXML2_LIBS = @LIBXML2_LIBS@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+LZO_CFLAGS = @LZO_CFLAGS@
+LZO_LIBS = @LZO_LIBS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MJPEGTOOLS_CFLAGS = @MJPEGTOOLS_CFLAGS@
+MJPEGTOOLS_LIBS = @MJPEGTOOLS_LIBS@
+MKDIR_P = @MKDIR_P@
+MOD_PATH = @MOD_PATH@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OGG_CFLAGS = @OGG_CFLAGS@
+OGG_LIBS = @OGG_LIBS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PATH_TO_AWK = @PATH_TO_AWK@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
+PROF_PATH = @PROF_PATH@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+PVM3_CFLAGS = @PVM3_CFLAGS@
+PVM3_LIBS = @PVM3_LIBS@
+PVM3_PVMGS = @PVM3_PVMGS@
+RANLIB = @RANLIB@
+SDL_CFLAGS = @SDL_CFLAGS@
+SDL_LIBS = @SDL_LIBS@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SIMD_FLAGS = @SIMD_FLAGS@
+STRIP = @STRIP@
+THEORA_CFLAGS = @THEORA_CFLAGS@
+THEORA_LIBS = @THEORA_LIBS@
+USE_DLDARWIN = @USE_DLDARWIN@
+VERSION = @VERSION@
+VORBIS_CFLAGS = @VORBIS_CFLAGS@
+VORBIS_LIBS = @VORBIS_LIBS@
+WAVLIB_LIBS = @WAVLIB_LIBS@
+X264_CFLAGS = @X264_CFLAGS@
+X264_LIBS = @X264_LIBS@
+XIO_CFLAGS = @XIO_CFLAGS@
+XIO_LIBS = @XIO_LIBS@
+XMKMF = @XMKMF@
+XVID_CFLAGS = @XVID_CFLAGS@
+XVID_LIBS = @XVID_LIBS@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+a52_config = @a52_config@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+bsdav_config = @bsdav_config@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+faac_config = @faac_config@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+iconv_config = @iconv_config@
+imagemagick_config = @imagemagick_config@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+lame_config = @lame_config@
+libdir = @libdir@
+libdvdread_config = @libdvdread_config@
+libexecdir = @libexecdir@
+libjpeg_config = @libjpeg_config@
+libjpegmmx_config = @libjpegmmx_config@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lzo_config = @lzo_config@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pvm3_config = @pvm3_config@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+xvid_config = @xvid_config@
+EXTRA_DIST = \
+ $(docs_DATA)
+
+docsdir = \
+ $(datadir)/doc/transcode/tech/html
+
+docs_DATA = \
+ index.html \
+ tc_basic.css \
+ tc_frame_buffer.html \
+ tc_input_rotation.html \
+ tc_libraries.html \
+ tc_logo.png
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/tech/html/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --gnu docs/tech/html/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-docsDATA: $(docs_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(docsdir)" || $(MKDIR_P) "$(DESTDIR)$(docsdir)"
+ @list='$(docs_DATA)'; test -n "$(docsdir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docsdir)'"; \
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(docsdir)" || exit $$?; \
+ done
+
+uninstall-docsDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(docs_DATA)'; test -n "$(docsdir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(docsdir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(docsdir)" && rm -f $$files
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+ for dir in "$(DESTDIR)$(docsdir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-docsDATA
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-docsDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-data install-data-am install-docsDATA install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+ uninstall uninstall-am uninstall-docsDATA
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/index.html b/debian/transcode/transcode-1.1.7/docs/tech/html/index.html
new file mode 100644
index 00000000..2b6b1e04
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/index.html
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux (vers 12 April 2005), see www.w3.org" />
+
+ <title>transcode internals</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ <meta name="Author" content="Francesco Romani" />
+ <meta name="Keywords" content="transcode architecture internals" />
+ <meta name="Generator" content="ViM 7.x" />
+ <link rel="StyleSheet" href="tc_basic.css" type="text/css" media=
+ "screen" />
+</head>
+
+<body>
+ <div id="title" class="title">
+ <h1>Transcode Internals</h1>
+ <img src="tc_logo.png" class="centered" alt="transcode logo" />
+ </div>
+
+ <div id="index">
+ <h2>Contents</h2>
+ <table>
+ <tr>
+ <td><a href="tc_libraries.html">Internal libraries</a></td>
+ <td><p>Overview of private transcode libraries and main components.</p></td>
+ </tr>
+ <tr>
+ <td><a href="tc_input_rotation.html">Input Rotation</a></td>
+ <td><p>Design principles and notes about multiple-inputs handling.</p></td>
+ </tr>
+ <tr>
+ <td><a href="tc_frame_buffer.html">Frame Buffering</a></td>
+ <td><p>How internal frame (fifo) buffer works, and future directions.</p></td>
+ </tr>
+ </table>
+ </div>
+</body>
+</html>
+
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/tc_basic.css b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_basic.css
new file mode 100644
index 00000000..2f34a2b6
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_basic.css
@@ -0,0 +1,96 @@
+
+body {
+ margin: 20px;
+ padding: 10px;
+ font-size: 12px;
+ background-color: #CDB5CD;
+}
+
+div {
+ margin: 10px;
+ padding: 5px;
+ background-color: #FFFFFF;
+}
+
+h1 {
+ margin: 10px;
+ padding: 5px;
+ font-size: 26px;
+ text-align: center;
+ background-color: #E9E9E9;
+}
+
+table {
+ align: center;
+}
+
+h2 {
+ font-size: 22px;
+ font-weight: bold;
+ line-height: 22px;
+ margin: 5px 5px;
+ background-color: #E9E9E9;
+}
+
+h3 {
+ font-size: 16px;
+ line-height: 14px;
+ background-color: #E9E9E9;
+}
+
+h4 {
+ background-color: #E9E9E9;
+}
+
+p {
+ margin: 10px;
+ padding: 5px;
+ background-color: #E9E9E9;
+}
+
+pre {
+ font-size: 10px;
+ text-align: left;
+}
+
+blockquote {
+ font-style: italic;
+}
+
+.centered {
+ align: center;
+ text-align: center;
+}
+
+.version {
+ font-size: 8px;
+ text-align: right;
+ margin: 5px 5px 5px 5px;
+ padding: 5px 0px 0px 5px;
+}
+
+.note {
+ align: right;
+ text-align: right;
+}
+
+.banner {
+ align: right;
+ text-align: right;
+}
+
+.title {
+ margin: 10px 10px 10px 10px;
+ padding: 10px 5px 5px 10px;
+ font-size: 16px;
+ align: center;
+ text-align: center;
+}
+
+.footer {
+ margin: 5px 5px 5px 5px;
+ padding: 5px 0px 0px 5px;
+ font-size: 8px;
+ align: center;
+ text-align: center;
+}
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/tc_frame_buffer.html b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_frame_buffer.html
new file mode 100644
index 00000000..93004576
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_frame_buffer.html
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux (vers 12 April 2005), see www.w3.org" />
+
+ <title>transcode internals</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ <meta name="Author" content="Francesco Romani" />
+ <meta name="Keywords" content="transcode architecture internals" />
+ <meta name="Generator" content="ViM 7.x" />
+ <link rel="StyleSheet" href="tc_basic.css" type="text/css" media=
+ "screen" />
+</head>
+
+<body>
+ <div id="title" class="title">
+ <h1>Transcode - TITLE OF PAGE</h1>
+ </div>
+
+ <div id="summary">
+ <h3>Summary</h3>
+ <p>a few lines (1-30) describing the page content and highlights</p>
+ </div>
+
+ <hr />
+
+ <div id="index">
+ <table>
+ <tr>
+ <td><a href="#foo">Paragraph 1</a></td>
+ <td><p>short description of paragraph 1</p></td>
+ </tr>
+ <tr>
+ <td><a href="#bar">Paragraph 2</a></td>
+ <td><p>short description of paragraph 2</p></td>
+ </tr>
+ <tr>
+ <td><a href="#baz">Paragraph N</a></td>
+ <td><p>short description of paragraph N</p></td>
+ </tr>
+ </table>
+ </div>
+
+ <hr />
+
+ <div id="paragraph1">
+ <a name="foo"><h4>Paragraph 1</h4></a>
+ <p>body of paragraph 1</p>
+ </div>
+
+ <div id="paragraph2">
+ <a name="bar"><h4>Paragraph 2</h4></a>
+ <p>body of paragraph 2</p>
+ </div>
+
+ <div id="paragraphN">
+ <a name="baz"><h4>Paragraph N</h4></a>
+ <p>body of paragraph N</p>
+ </div>
+</body>
+</html>
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/tc_input_rotation.html b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_input_rotation.html
new file mode 100644
index 00000000..6b7adad5
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_input_rotation.html
@@ -0,0 +1,124 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux (vers 12 April 2005), see www.w3.org" />
+
+ <title>transcode internals</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ <meta name="Author" content="Francesco Romani" />
+ <meta name="Keywords" content="transcode architecture internals input rotation" />
+ <meta name="Generator" content="ViM 7.x" />
+ <link rel="StyleSheet" href="tc_basic.css" type="text/css" media=
+ "screen" />
+</head>
+
+<body>
+ <div id="title" class="title">
+ <h1>Transcode - Input files rotation</h1>
+ </div>
+
+ <div id="summary">
+ <h3>Summary</h3>
+ <p>
+ This page describe the design principles and notes of new (as in 1.1.0 version) input rotation code.
+ Input rotation intelligently handles directory containing almost-homogeneous content, and perform
+ a smart contatenation of inputs (as opposed to "blind cat" previously performed on 1.0.x and former
+ releases). Application scenario and intended use of new code is described first; this lead to
+ explanation of design princples. Design notes and some implementation details are then provided.
+ </p>
+ </div>
+
+ <hr />
+
+ <div id="index">
+ <table>
+ <tr>
+ <td><a href="#usecases">Intended application cases</a></td>
+ <td><p>describe the common use-cases scenario(s) for multiple inputs</p></td>
+ </tr>
+ <tr>
+ <td><a href="#principles">Design principles</a></td>
+ <td><p>design principles of input rotation infrastructure</p></td>
+ </tr>
+ <tr>
+ <td><a href="#probing">Design notes - probing</a></td>
+ <td><p>design notes about probing and input rotation</p></td>
+ </tr>
+ <tr>
+ <td><a href="#decoding">Design notes - importing</a></td>
+ <td><p>design notes on how transcode (main program) deals with input rotation</p></td>
+ </tr>
+ </table>
+ </div>
+
+ <hr />
+
+ <div id="usecases">
+ <a name="usecases"><h4>Intended application cases</h4></a>
+ <p>
+ New input rotation code introduced in 1.1.0 is a revision from the ground up of how multiple input
+ should be handled in transcode. First and foremost, some basic usage cases are identified:
+ </p>
+ <ul>
+ <li>
+ <p>
+ Jack wants to make a video clip from a bunch of JPEG images.
+ </p>
+ </li>
+ <li>
+ <p>
+ Tyler records TV using transcode itself, and he wants now to transcode a group of low-compressed AVIs
+ into XviD.
+ </p>
+ </li>
+ <li>
+ <p>
+ Marla has some NUV files and she wants to join them and transcode it to DVD.
+ </p>
+ </li>
+ </li>
+ </ul>
+ <p>
+ Some key aspects emerge from examination of intended use cases:
+ </p>
+ <ul>
+ <li>
+ <p>
+ Each input file can contains one <strong>or more</strong> source frame(s).
+ </p>
+ </li>
+ <li>
+ <p>
+ Multiple input need to be intelligently merged before to import (think to AVI case).
+ </p>
+ </li>
+ <li>
+ <p>
+ New code should handle grafefully and efficiently <strong>a lot</strong> of input files.
+ </p>
+ </li>
+
+ </ul>
+ </div>
+
+ <div id="principles">
+ <a name="principles"><h4>Design principles</h4></a>
+ <p>body of paragraph</p>
+ </div>
+
+ <div id="probing">
+ <a name="probing"><h4>Design notes - probing</h4></a>
+ <p>body of paragraph</p>
+ </div>
+
+ <div id="decoding">
+ <a name="decoding"><h4>Design notes - decoding</h4></a>
+ <p>body of paragraph</p>
+ </div>
+</body>
+</html>
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/tc_libraries.html b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_libraries.html
new file mode 100644
index 00000000..c3318e13
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_libraries.html
@@ -0,0 +1,256 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux (vers 12 April 2005), see www.w3.org" />
+
+ <title>transcode </title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ <meta name="Author" content="Francesco Romani" />
+ <meta name="Keywords" content="transcode architecture libraries" />
+ <meta name="Generator" content="ViM 7.x" />
+ <link rel="StyleSheet" href="tc_basic.css" type="text/css" media=
+ "screen" />
+</head>
+
+<body>
+ <div id="title" class="title">
+ <h1>Transcode - overview of libraries</h1>
+ </div>
+
+ <div id="summary">
+ <h3>Summary</h3>
+ <p>
+ As part of 1.1.0 development cycle, an huge internal reorganization
+ effort has undergone. Reorganization isn't yet (as 1.1.0 released)
+ complete, and will involve every component in transcode codebase.
+ This document provide an overview of reorganized internal transcode
+ libraries, internal dependencies and purposes.
+ </p>
+ <h4>General Warning:</h4>
+ <p>
+ transcode libraries are quite carefully designed and implemented
+ in order to be independent, self contained as much as is possible,
+ but they <strong>are not</strong> intended to be easily separated by transcode
+ codebase and to be used in external projects. <strong>We don't care too
+ much about API/ABI stability yet, and we don't do testing on
+ this direction</strong>. Help us to improve code, or use it at own risk :)
+ </p>
+ </div>
+
+ <hr />
+
+ <div id="index">
+ <table>
+ <tr>
+ <td><a href="#aclib">aclib</a></td>
+ <td><p>low-level, optimized core routines.</p></td>
+ </tr>
+ <tr>
+ <td><a href="#avilib">avilib</a></td>
+ <td><p>simple AVI I/O support.</p></td>
+ </tr>
+ <tr>
+ <td><a href="#libtc">libtc</a></td>
+ <td><p>core utilities repository.</p></td>
+ </tr>
+ <tr>
+ <td><a href="#libtcaudio">libtcaudio</a></td>
+ <td><p>audio manipulation routines.</p></td>
+ </tr>
+ <tr>
+ <td><a href="#libtcvideo">libtcvideo</a></td>
+ <td><p>video manipulation routines.</p></td>
+ </tr>
+ </table>
+ </div>
+
+ <hr />
+
+ <div id="aclib">
+ <a name="aclib"><h4>aclib</h4></a>
+ <table>
+ <tr>
+ <td>
+ <h5>Dependencies:</h5>
+ </td>
+ <td>
+ <h5>Introduced in version:</h5>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>None</p>
+ </td>
+ <td>
+ <p>0.6.x or before</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h5>Description:</h5>
+ <p>
+ provides accelerated, machine-dependent, utility functions like memcpy, colorspace conversion routines and so on.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h5>Notes:</h5>
+ <ul>
+ <li>
+ <p><strong>"AC"</strong> stands originally for "<strong>A</strong>dvanced
+ <strong>C</strong> <strong>lib</strong>rary,
+ but at present day meaning of "AC" has been unspecified :)
+ </p>
+ </li>
+ <li>
+ <p>Rewritten completely during 1.1.0 cycle by Andrew Church.</p>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="avilib">
+ <a name="avilib"><h4>avilib</h4></a>
+ <table>
+ <tr>
+ <td>
+ <h5>Dependencies:</h5>
+ </td>
+ <td>
+ <h5>Introduced in version:</h5>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>None</p>
+ </td>
+ <td>
+ <p>0.6.x or before</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h5>Description:</h5>
+ <p>
+ provides I/O stream access to AVI files. Only multiplexing/demultiplexing, no encoding/decoding.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h5>Notes:</h5>
+ <p>Scheduled for an heavy reorganization/refactoring during 1.2.0/1.3.0 cycle.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="libtc">
+ <a name="libtc"><h4>libtc</h4></a>
+ <table>
+ <tr>
+ <td>
+ <h5>Dependencies:</h5>
+ </td>
+ <td>
+ <h5>Introduced in version:</h5>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>None</p>
+ </td>
+ <td>
+ <p>1.0.x</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h5>Description:</h5>
+ <p>
+ utility/helpers collection. Provides memory allocation/disposal, string
+ manipulation, I/O helper functions. Also holds all low-level code
+ shared between modules.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h5>Notes:</h5>
+ <p>Greatly enhanced during 1.1.0 cycle.</p>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="libtcaudio">
+ <a name="libtcaudio"><h4>libtcaudio</h4></a>
+ <table>
+ <tr>
+ <td>
+ <h5>Dependencies:</h5>
+ </td>
+ <td>
+ <h5>Introduced in version:</h5>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p>None</p>
+ </td>
+ <td>
+ <p>1.1.x</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h5>Description:</h5>
+ <p>
+ provides various audio manipulation functions used by transcode core and modules.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="libtcvideo">
+ <a name="libtcvideo"><h4>libtcvideo</h4></a>
+ <table>
+ <tr>
+ <td>
+ <h5>Dependencies:</h5>
+ </td>
+ <td>
+ <h5>Introduced in version:</h5>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><a href="#aclib">aclib</a></p>
+ </td>
+ <td>
+ <p>1.1.x</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h5>Description:</h5>
+ <p>
+ provides various video manipulation functions used by transcode core and modules.
+ </p>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+
+</body>
+</html>
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/tc_logo.png b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_logo.png
new file mode 100644
index 00000000..c06396ce
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_logo.png
Binary files differ
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/html/tc_template_page.html b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_template_page.html
new file mode 100644
index 00000000..f29fd16f
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/html/tc_template_page.html
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Linux (vers 12 April 2005), see www.w3.org" />
+
+ <title>transcode technical documentation template page</title>
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=us-ascii" />
+ <meta name="Author" content="Francesco Romani" />
+ <meta name="Keywords" content="transcode architecture internals template page" />
+ <meta name="Generator" content="ViM 7.x" />
+ <link rel="StyleSheet" href="tc_basic.css" type="text/css" media=
+ "screen" />
+</head>
+
+<body>
+ <div id="title" class="title">
+ <h1>Transcode - TITLE OF PAGE</h1>
+ </div>
+
+ <div id="summary">
+ <h3>Summary</h3>
+ <p>a few lines (1-30) describing the page content and highlights</p>
+ </div>
+
+ <hr />
+
+ <div id="index">
+ <table>
+ <tr>
+ <td><a href="#foo">Paragraph 1</a></td>
+ <td><p>short description of paragraph 1</p></td>
+ </tr>
+ <tr>
+ <td><a href="#bar">Paragraph 2</a></td>
+ <td><p>short description of paragraph 2</p></td>
+ </tr>
+ <tr>
+ <td><a href="#baz">Paragraph N</a></td>
+ <td><p>short description of paragraph N</p></td>
+ </tr>
+ </table>
+ </div>
+
+ <hr />
+
+ <div id="paragraph1">
+ <a name="foo"><h4>Paragraph 1</h4></a>
+ <p>body of paragraph 1</p>
+ </div>
+
+ <div id="paragraph2">
+ <a name="bar"><h4>Paragraph 2</h4></a>
+ <p>body of paragraph 2</p>
+ </div>
+
+ <div id="paragraphN">
+ <a name="baz"><h4>Paragraph N</h4></a>
+ <p>body of paragraph N</p>
+ </div>
+</body>
+</html>
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/ibp_support.txt b/debian/transcode/transcode-1.1.7/docs/tech/ibp_support.txt
new file mode 100644
index 00000000..5eeae97c
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/ibp_support.txt
@@ -0,0 +1,65 @@
+IBP support for transcode
+
+This is the web page about IBP and related tools
+http://loci.cs.utk.edu/
+
+Binary utilities can user lors URI for input and/or output file.
+
+If we want to access file in the IBP depot then URI in form
+
+lors://host:port/local_path/file?bs=number&duration=number&copies=number&threads=number&timeout=number&servers=number&size=number
+
+is used. User can also use the short form URI
+
+lors:///local_path/file
+
+When we want to read an IBP file, the local_path/file specifies local file
+where is stored exNode with XML specification. When writing an IBP file the
+local_path/file specifies local file where to store exNode with XML
+specification of IBP depots used.
+
+The paremeters in the full form of URI mean as follows:
+
+host specification of L-Bone server location
+port specification of L-Bone server port (default 6767)
+bs specification of block-size for transfer in megabytes (default 10)
+duration specification of allocation duration in seconds (default 3600s)
+copies specification of number of copies (default 1)
+threads specification of number of threads (concurrent TCP streams) (default 1)
+timeout specification of timeout in seconds (default 100)
+servers specification of number of unique IBP depots (default 1)
+size specification of assumed file size in bytes (default 10MB)
+
+There are environment variables that can be used instead of URI parameters for
+the LoRS layer.
+
+LBONE_SERVER specifies L-Bone server location
+LBONE_PORT specifies L-Bone server port (default 6767)
+LORS_BLOCKSIZE specifies block-size for transfer in megabytes (default 10)
+LORS_DURATION specifies duration of allocation in seconds (default 3600s)
+LORS_COPIES specifies number of copies (default 1)
+LORS_THREADS specifies number of threads (concurrent TCP streams) (default 1)
+LORS_TIMEOUT specifies timeout in seconds (default 100)
+LORS_SERVERS specifies number of unique IBP depots (default 1)
+LORS_SIZE specifies assumed file size in bytes (default 10MB)
+
+At least LBONE_SERVER or host must be set.
+
+Transcode program can be used in almost traditional way. If we want to store
+the file to the IBP depot then URI in form lors:///local_path/file is used
+instead of local file name. The environment variables should be set unless user
+specifies URI in its full form. The same form of URI can be used for loading
+the file from the IBP depot. Transcode can read and write ordinary local files
+as well. The prefix lors:// is required for accessing IBP, otherwise local file
+is used.
+
+For example:
+
+LBONE_SERVER=our.ibp.host;
+transcode -i lors:///video.dv.xnd -P1 -N 0x1 -y raw -o lors:///temp1-remux.avi.xnd -E 44100,16,2 -J resample
+
+Transcode will use source file identified by serialized description of IBP
+exNode stored in video.dv.xnd file on local disc in the current directory. The
+L-Bone server location is taken from environment variable (referring to
+our.ibp.host) and resulting serialized exNode XML description will be
+stored in the current directory as temp1-remux.avi.xnd
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/import-API.txt b/debian/transcode/transcode-1.1.7/docs/tech/import-API.txt
new file mode 100644
index 00000000..e3c7958e
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/import-API.txt
@@ -0,0 +1,95 @@
+ IMPORT MODULE WRITING HOWTO
+ ---------------------------
+
+Some very short documentation on writing import modules for transcode
+
+include this file:
+------------------
+
+#include "transcode.h" // definition of vob_t and transfer_t structures
+
+
+data exchange structures for modules:
+-----------------------------------
+
+typedef struct _vob_t {
+// see transcode.h for details
+} vob_t;
+
+typedef struct _transfer_t {
+
+ int flag; // specifies context: TC_VIDEO for video
+ TC_AUDIO for audio
+ // or passes an integer to the module
+
+ FILE *fd; // file handle for input stream
+ // NULL if import module performs reading
+
+ int size; // total amount of bytes in the buffer
+
+ char *buffer; // pointer to data array with frame data
+ char *buffer2;
+
+ int attributes;
+
+} transfer_t;
+
+
+single function interface:
+--------------------------
+
+int tc_import(int opt, void *para1, void *para2);
+
+exit codes: all handled by transcode
+TC_IMPORT_UNKNOWN option not supported
+TC_IMPORT_OK no error, hopefully the default
+TC_IMPORT_ERROR a critical error occurred
+
+input parameter:
+opt contains the requested action id
+para1/2 its actually meaning depends on option
+
+requested method:
+
+transcode calls the following routines in this order
+for both import modules, i.e., first for video and subsequent with the
+audio context flag set.
+
+[1]
+opt=TC_IMPORT_NAME
+para1=_transfer_t
+para2=NULL
+requested action: print out some general module infos to stderr
+ and inherit transcode verbosity flag
+ (optional return capability flag)
+
+ //>0.3.3 of transcode interpret flag returned
+ //to read module capabilities for sanity checks
+status: optional
+
+[2]
+opt=TC_IMPORT_OPEN
+para1=_transfer_t
+para2=_vob_t
+requested action: return a file handle for reading from the pipe or
+ return NULL if import modules handles data read
+status: required if following option is not implemented
+
+[3]
+opt=TC_IMPORT_DECODE
+para1=_transfer_t
+para2=_vob_t
+requested action: return a frame and the total amount of bytes read
+
+ //>0.3.3 of transcode accepts import module returned amount
+ //of bytes in buffer. Module does the error checks anyway.
+
+status: required if previous option is not implemented
+
+[4]
+opt=TC_IMPORT_CLOSE
+para1=_transfer_t
+para2=NULL
+requested action: close streams or any open files, free memory and prepare
+ module removal
+status: required
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/libraries.txt b/debian/transcode/transcode-1.1.7/docs/tech/libraries.txt
new file mode 100644
index 00000000..5120754b
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/libraries.txt
@@ -0,0 +1,63 @@
+TRANSCODE LIBRARIES ORGANIZATION
+================================
+
+
+Summary
+-------
+
+As part of 1.1.0 development cycle, an huge internal reorganization
+effort has undergone. Reorganization isn't yet (as 1.1.0 released)
+complete, and will involve every component in transcode codebase.
+This document provide an overview of reorganized internal transcode
+libraries, internal dependencies and purposes.
+
+GENERAL WARNING:
+transcode libraries are quite carefully designed and implemented
+in order to be independent, self contained as much as is possible,
+but they *are not* intended to be easily separated by transcode
+codebase and to be used in external projects. We don't care too
+much about API/ABI stability yet, and we don't do testing on
+this direction. Help us to improve code, or use it at own risk :)
+
+
+Overview
+--------
+
+Library: aclib
+Dependencies: None
+Purpose:
+ provides accleretad, machine-dependent, utility functions
+ like memcpy, colorspace conversion routines and so on.
+
+Library: avilib
+Dependencies: None
+Purpose:
+ provide I/O stream access to AVI files. Only multiplexing/demultiplexing,
+ no encoding/decoding.
+
+Library: libtc
+Dependencies: None
+Purpose:
+ utility/helpers collection. Provides memory allocation/disposal, string
+ manipulation, I/O helper functions. Also holds all low-level code
+ shared between modules.
+
+Library: libtcinput
+Dependencies: libtc
+Purpose:
+ input layer abstraction. Provide access to stream data from heterogeneous
+ media through a common layer. That's `tccat' program foundation.
+
+Library: libtcaudio
+Dependencies: None
+Purpose:
+ provides various audio manipulation functions used by transcode core
+ and modules.
+
+Library: libtcvideo
+Dependencies: aclib
+Purpose:
+ provides various video manipulation functions used by transcode core
+ and modules.
+
+
diff --git a/debian/transcode/transcode-1.1.7/docs/tech/module-system-API.txt b/debian/transcode/transcode-1.1.7/docs/tech/module-system-API.txt
new file mode 100644
index 00000000..9d8ee9c3
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/docs/tech/module-system-API.txt
@@ -0,0 +1,660 @@
+
+ Module System for Transcode 1.1.0 and later
+ ===========================================
+
+ Francesco Romani <fromani@gmail.com>, Andrew Church <achurch@achurch.org>
+ -
+ Revision 0.5, 17 August 2006
+
+ Index:
+---------------------------------------------------------------------------
+ 1. Introduction
+ 2. Overview
+ 3. Core API
+ 3.1. What you need to use NMS
+ 3.2. Example code
+ 3.3. The module factory
+ 3.4. Creating and destroying modules
+ 3.5. TCModule
+ 3.6. Using modules
+ 4. Plugin API
+ 4.1. What you need to use NMS (as a plugin writer)
+ 4.2. Example code
+ 4.3. Structure of a NMS plugin
+ 4.4. The registration process
+ 5. Plugin-Writing-HOWTO
+ 6. Internal structure
+ 6.1. Why the factory?
+ 6.2. About multithreading safeness
+ 6.3. On explicit reference counting
+ 6.4. Possibile API and ABI breakage
+ 6.5. init VS configure, fini VS stop
+ 6.6. A bit more about multiplexors and demultiplexors
+ 7. Final notes
+ 8. Appendix A: planned improvements in 1.2.0 and beyond
+
+
+ ***
+
+ 1. Introduction
+---------------------------------------------------------------------------
+
+This document provides basic informations about the new module system
+introduced in transcode 1.1.0. New system has API, ABI and even semantic
+incompatible with old one. This breakage was needed to address the
+recognized problems of old model. We (designers and coders) hope that new
+one will serve better our purposes. Anyway, new model hasn't any claim of
+generality or effectiveness outside transcode use cases: new API was
+designed to be the simplest and cleanest thing that work in transcode
+environment, and it doesn't provide any guarantee outside this field.
+I (Francesco) have chosen to reimplement our module system from scratch,
+despite the fact that well-known libraries such glib provides own ones,
+to lower as much as possible the dependencies count for transcode itself.
+Other developers agrees on the importance of this objective, where it
+is feasible to do (of course we hardly reimplement from scratch some
+Audio/Video codecs!).
+Header and source code files was written trying to achieve readability
+and clarity. Reader is encouraged to take a look at source code and,
+especially, header files to get more informantions and more precise
+documentation about the functions and data structures provided.
+
+Feel free to suggest improvements to API and/or to this documentation.
+PLEASE! report inconsistencies between this documentation and header
+and/or source code files.
+Send suggestions on transcode-devel@exit1.org mailing list.
+Help us to make transcode better!
+
+Francesco's notes:
+I'm not a native english speaker. Send me corrections about documentation
+rather than code, and I will apply as soon as is possible :)
+
+Quick terminology overview:
+- NMS:
+ Acronym of (transcode's) New Module System
+- plugin:
+ a shared object (usually) on disk that implements one or more
+ 'module's.
+- module:
+ the central abstract object handled by NMS.
+ A 'module' is a piece of C code that respect some given constraints
+ (see more) and is usable by transcode. Often a 'plugin' implements
+ only a 'module' (or a single 'module' is packed in a single 'plugin'),
+ but there isn't a such constraint, that's only the current practice.
+- module instance:
+ a 'module' specify both the procedures and the data needed to be used
+ properly. We call 'instance' of a module the unshared, private portion
+ of such data. So, if a 'module' is created and runned multiple times,
+ each one has his private context and his private data, so everyone can
+ run independently from each other. Please note that 'modules' _always_
+ have some common, shared (and unmodifiable) data.
+- module class:
+ every module can belong to one or more 'module class'. A 'module class'
+ describe what a given module is supposed to do; this usually means
+ specifyng what functions and/or capabilities a given module supports
+ and/or provides.
+
+
+2. Overview
+---------------------------------------------------------------------------
+
+The new module system (NMS) aims to provide a generic framework for
+module handling through transcode, including external programs and
+helper tools like tcmodinfo.
+NMS aims also to incourage people writing of clean multi-instance plugins,
+avoiding the 'single huge function syndrome' that affects most of filter
+plugins as in transcode < 1.1.0. NMS provide a new and richer capabilities
+support code, supporting a wider range of plugin classes: no more only
+import (demux + decoding), filter and export (encoding + mux).
+
+NMS supports now five module classes, and is a fundamental part of module
+revision process taken starting from transcode 1.1.0.
+Please note that a given module CAN belong to more than one class (this
+means that such module just implements more functions).
+
+- demuxing module:
+ take care of reading stream data and extract audio stream,
+ video stream and so on
+- decoding module:
+ decodes A/V frame to raw data
+- filter module:
+ apply some transformation to A/V raw data
+- encoding module:
+ encodes raw data in a user-defined format
+- muxing module:
+ packs encoded data in a user-defined container
+
+More module classes (notably an input and/or output abstraction)
+can be added in future releases, but class count should not increase
+too much in NMS lifespan.
+
+Exact specification and documentation about such extended module classes
+are partially beyond the purpose of this document; they are further
+examined only for the parts related to NMS.
+
+NMS has quite different usage from old module system.
+A piece of code that want to use a transcode plugin through NMS should
+roughly:
+
+- start a module factory: this will initialize the subsystem; the
+ most important parameter is the module search path, that is no longer
+ hardcoded into code.
+- ask to a module factory to create a given module. This will trasparently
+ load a plugin if needed, resolve needed symbols, initialize it and
+ finally pass back as a reference to client code. In short, module factory
+ does all black magic for you ;)
+- use the module exposed functions as you wish.
+ Above module classes requires roughly the implementation of one module
+ for each one plus some mandatory support methods. For example, filter
+ class requires the implementation of 'filter_video' or 'filter_audio'
+ (or both) operation, (WARNING: as in transcode 1.1.0, this is not
+ enforced, yet) but a given module can implement more than one class
+ simply providing more methods implementation.
+ As an user of a module, just request the operation and check
+ the returned code :)
+ Of course, you can also use the new capabilities system to peek what
+ a loaded module is supposed to do. More on this topic later.
+- when you're set, ask to factory to unload the module. You CAN'T just
+ free your module manually, since factory needs again to do some black
+ magic to handle things nicely.
+- eventually shutdown the module factory itself. Do this only when
+ you have released all modules instances, or factory will complain loudly.
+
+NMS Core API (from module *user* viewpoint) will be covered with greater
+detail into section 3 of this document.
+For interested people, section 6 of this document contains design notes
+and some documentation about the NMS internals.
+
+From module writer viewpoint, some there are major changes too.
+First af all, all new-style modules have a unified entry point with
+following signature (defined in tcmodule-plugin.h):
+
+const TCModuleClass *tc_plugin_setup(void);
+
+If NMS code can't find such symbol defined in your shared object,
+it assumes that given SO *IS NOT* a valid NMS module, and it will go
+ahead.
+NMS entry point is no longer the main entry point for a given module,
+but it's simply the entry point for whole registration process.
+Real execution of module code will happen through some function pointers
+that each module should register into core as initialization stage.
+This registration happen, as well as other needed intialization code,
+into new entry point.
+
+So, NMS requires that each module provides (roughly) a single function
+for each implemented operation. Formerly, this was already a good module
+writing pratice, but was not required by former old module system which
+used a single function interface to do everything.
+
+NMS has also explicit support for module instance data. Each module
+descriptor provide an opaque pointer to module-defined data, which is
+opaque to core and can be used freely by module code.
+
+To summarize, a NMS-compliant module will
+
+- provide a separate function for each implemented operation, plus
+ a few function for support routines (initialization, shutdown,
+ configuration, stop, introspection) which must conform to a
+ give signature.
+ Each method will handle explicitely private (instance) data.
+- provide a single uniform entry point for registration process.
+ core uses module specific methods via some function pointers,
+ so real code can be made static and private; module itself
+ should give back to core valid function pointers to his methods
+ as part of registration process
+- register his capabilities in the exported module initialziation
+ hook. This means registration of methods but also notification
+ of module capabilities. A module can do arbitrary operations
+ other than required ones, even this should never be needed.
+
+NMS Plugin API (from module *writer* viewpoint) will be covered with greater
+detail into section 3 of this document.
+Section 4 of this document will provide some hints for a module writer.
+
+
+3. Core API
+---------------------------------------------------------------------------
+
+The reader of this section is encouraged to take a look of documentation
+of functions and data structures embedded into header files of NMS to
+become confident with the notions exposed here.
+Interesting files:
+
+ libtc/tcmodule-core.h
+ libtc/tcmodule-data.h
+ libtc/tcmodule-info.h
+
+This section will not explore the semantic and the meaning of parameters
+of core API functions, interested reader should be better served just
+reading comments on interesting header files.
+This section will instead explore the semantic of NMS core API and will
+serve to basic usage tutorial.
+
+
+3.1. What you need to use NMS
+-----------------------------
+
+To use transcode's NMS, you need to include some header files on your code:
+
+#include "tcmodule-core.h"
+#include "tcmodule-info.h"
+
+Build system for transcode take care to setup the right include search path.
+Otherwise, you should give explictely to gcc (code isn't tested on
+different compilers due to lack of software):
+
+gcc $YOUR_OPTS -I/path/to/tc/src/libtc/ ...
+
+You also need to link libtc.
+
+Once you have set the gritty details, you are read to start.
+
+
+3.2. Example code
+-----------------
+
+Take a look into tools/tcmodinfo to get maybe the simplest way to use
+the NMS. tcmodinfo will just load a user-requested module and will print
+out it's capabilities. Future releases of this document will perhaps add
+more (pseudo)code examples.
+
+You can also want to look NMS bundled test (in testsuite/ and or libtc/, in
+latter case test is embedded, as a comment in tcmodule.c) to get some more
+examples.
+
+
+3.3. The module factory
+-----------------------
+
+A key element in NMS is the module factory. From the point of view
+of a module user, a factory is represented by a totally opaque handler
+enterely managed by tcmodule code.
+The factory take care of loading plugins (the real shared object holding
+plugin code) if needed, unloading them if no longer need, accounting,
+and create instances. In short, factory does all the dirty work for you.
+
+In order to obtain, and release, a factory handler, you must use the
+tc_new_module_factory and tc_del_module_factory functions.
+Arguments and syntax of this functions is documented on tcmodule-core.h
+header file.
+
+Client code can theorically request an arbitrary number of factories,
+but each factory can handle ONLY modules created by herself. To
+request a factory to do an operation on a module NOT built by herself
+will cause a undefined behaviour (expect crash or some other weird things).
+In a just few words: DON'T DO THIS! :)
+In the common case, "one factory will be enough for everyone".
+
+
+3.4. Creating and destroying modules
+------------------------------------
+
+It's really simple. Just ask to your factory to create a brand new module
+belonging to a given class and from a given name.
+When the module is built, you must configure it passing some options
+packed in a string using the configure function (tc_module_configure).
+some modules can be reconfigured multiple times, some other can
+be reconfigured just the first time; This behaviour is fully
+module-(class-)dependent.
+Options are specific to a module, and there is no way to describe they
+in a general fashion.
+Since a module can be (or must be, for multiplexors) reconfigured
+a run time, the need for inspecting module settings arise.
+NMS provide an explicit operation for inquiry the actual settings of
+a module, the 'inspect' operation. Client code can request to know
+the status each and/or all module configurable parameters using this
+operation.
+
+Please note that NMS *NOT* knows _before_ to loading what every module
+is capable to do, nor the class of a given module. Everything
+is detected after the loading using new capabilities code.
+This means that you can ask to load a given module without to already
+know it's class, nor you ask to load all modules of a given class.
+Both above requests will lead to an error.
+As in transcode 1.1.0, module class and module name are in facts
+tightly bound and can't be handled separately.
+
+Known module classes as in transcode 1.1.0:
+
+ demultiplex,
+ decode,
+ filter,
+ encode,
+ multiplex
+
+Destroying a module is really simple. Just invoke the destruction
+function using your factory and the module, and the latter will be
+destroyed. But remember that real originating plugin will be
+unloaded only with all spawned modules are destroyed.
+In facts, destruction of last module triggers plugin
+unloading. The factory can detect at any time if a given module is
+the last one or not. You should'nt worry about this.
+
+Take care to check the return code of tc_del_module, since it
+triggers plugin unloading it can fail. Some debug messages are
+sent to (real) users using tc_log*().
+Future releases perhaps will add some detailed error codes than
+actual ones, which just carries a "failed/succeeded" information.
+
+
+3.5. TCModule
+-------------
+
+The reader might also take a look at tcmodule-data.h.
+The `TCModule' data structure represent a module instance.
+It is composed by two main components: the module class data,
+comprehending function pointers to real module and capabilities
+information, and the module instance section, private for each module.
+
+You can see the declarations in tcmodule-data.h for more details.
+Most of details are handled by NMS code, so you normally don't need
+to access neither module class or module private instance data.
+In facts, instance data should be accessed only by module code, and
+should be opaque both for NMS and for client code.
+
+It's safe to access (in read-only) the class data, and this is also
+needed to effectively use a module, since function pointers to module
+methods are embedded in class data. For this purpose a few commodities
+macro are provided. Direct access is also possible.
+The only 'critical' field in a class structure is the 'id' one.
+This field is used internally by NMS (see code) and should not be even
+considered by client code.
+
+You can notice that both module instance data and module class data
+have a 'id' field. These two fields are in fact independent, and both
+must be considered opaque by client code.
+
+
+3.6. Using modules
+------------------
+
+Usage of a module, if we want to ignore the internals and the gory details,
+should be really easy and straightforwarded.
+For each possibile module operation, there is a convenience (inline) function
+for easier usage and to avoid clumsy module->operation(module, ... ) syntax.
+
+The list of supported operations follows:
+
+tc_module_configure(module, options, vob)
+ (re)configure a module, changing it's internal settings;
+ modules *requires* to be configure()d _explicitely_
+ before the usage.
+
+tc_module_stop(module)
+ stop a module and prepare it for a new safe (re)configuration.
+ this means flushing all buffers, closing files and so on.
+
+tc_module_inspect(module, param, *value)
+ query about the actual value of a given parameter.
+
+tc_module_encode_video(module, inframe, outframe)
+tc_module_encode_audio(module, inframe, outframe)
+ encode a give video or audio frame and store data in another one.
+
+tc_module_decode_video(module, inframe, outframe)
+tc_module_decode_audio(module, inframe, outframe)
+ decode a give video or audio frame and store data in another one.
+
+tc_module_filter_video(module, vframe)
+tc_module_filter_audio(module, aframe)
+ apply a filter in place to a video or audio frame.
+
+tc_module_multiplex(module, vframe, aframe)
+ pack given encoded audio and video frame (both at once or just one)
+
+tc_module_demultiplex(module, vframe, aframe)
+ unpack encoded audio and video frame (both or just one)
+
+Just use any of above functions in your code. Do not forget to check the
+return code. In the common case, return value of -1 means 'error',
+and 0 means 'succesfull'.
+
+A few special parameters exists for 'inspect':
+
+for 'inspect':
+* "all" option will force the module to return to calling environment
+ a representation of /all/ internal parameters, packed in a single
+ string. This string will be packed in the same format accepted by
+ module option string
+* "help" option will force the module to return a textual, human readable
+ overview of the module, along with an explanation of name, value range
+ and meaning of accepted parameters. Special parameters will not be
+ present in this description.
+
+
+4. Plugin API
+---------------------------------------------------------------------------
+
+The reader of this section is encouraged to take a look of documentation
+of functions and data structures embedded into header files of NMS to
+become familiar with the notions exposed here.
+Interesting files:
+
+ libtc/tcmodule-plugin.h
+ libtc/tcmodule-data.h
+ libtc/tcmodule-info.h
+
+
+4.1. What you need to use NMS (as a plugin writer)
+--------------------------------------------------
+
+Simply include the header file in your plugin source file (or in your main
+plugin source file):
+
+#include "tcmodule-plugin.h"
+
+and you have access to all data structures, constants and functions
+(in fact just one :) ) that you need. Of course, you must design your
+plugin accordingly to NMS structure (covered later on this section and in
+the following section).
+Of course, your plugin must be compiled as shared object.
+
+
+4.2. Example code
+-----------------
+
+You can take a look to filter/filter_null.c multiplex/multiplex_null.c
+or encode/encode_null.c.
+
+Future releases of this document will perhaps add more (pseudo)code
+examples.
+
+
+4.3. Structure of a NMS plugin
+------------------------------
+
+There is quite a few strict constraints about the structure of a NMS
+plugin. Obviously, due to multiple-function-pointers structure, you
+must provide a separate function for each method implemented.
+This is intended to avoid the Single Huge Function Syndrome sometimes
+found on old-style filters ;)
+
+Is recommended to keep the biggest number of symbols on your plugin
+as private (just use 'static' qualifier for functions and reduce
+the usage of global variables, better to avoid it totally if it's
+feasible -and usually it's-).
+NMS has explicit support for module private data, so you should not
+need to use static variables on your plugin.
+Of course you can still use these, but _you_ must take care of
+multi-instances problems and so on.
+
+The only exception for above rule can be the capabilities data for
+a plugin. This data is used only during the registration process
+(see below for some other detail about this process), but is *copied*
+into core in order to avoid dirty tricks. So you can just provide
+a reference to some private variables. This is the preferred way
+since it seems the most simple one.
+
+To see a simple skeleton of a NMS plugin, take a look at
+filter/filter_null.c or multiplex/multiplex_null.c or
+encode/encode_null.c
+
+
+4.4. The registration process
+-----------------------------
+
+The plugin registration process consist simply into a invocation
+of tc_plugin_setup entry point. This function will return a
+TCModuleClass filled by plugin with description informations
+and with valid function pointers to operations implemented
+by plugin.
+
+Core will do some sanity checks on this descriptor returned
+by plugin, and use the given informations to fill it's
+own descriptor. Core WILL NOT change the informations provided
+by a plugin, unless they are detected as incorrect. In this
+case an error will be emitted (via tc_log*()) and more.
+Core will also setup sensible fallback values for all informations,
+or operations, not provided by a given plugin.
+
+Once a plugin is registered, there is no way to change registered
+data, nor to re-register or de-register itself.
+
+
+4.5. The plugin entry point
+---------------------------
+
+(WRITEME)
+
+4.6. Intialization and finalization of a module
+------------------------------------------------
+
+There is a couple of mandatory operations that a module must implement
+still not covered in this document. Those operations are the 'init'
+intialization operation and the 'fini' finalization operation.
+Those operations WILL NOT be exported to client code, and are used
+*only* trasparently by NMS code.
+'init' operation take care of initializing the part of a module that
+isn't changed by configure() operation and sets defaults.
+'fini' operation must cleanup everything and release *all* resources
+acquired by a module. Is the 'one and true' finalization routine, the
+last that is executed during the module life.
+
+
+4.7. Differences between module classes
+---------------------------------------
+
+(WRITEME)
+
+
+5. Plugin-Writing-HOWTO
+---------------------------------------------------------------------------
+
+FIXME: WRITEME
+
+
+6. Internal structure
+---------------------------------------------------------------------------
+
+This section holds sparse design notes about NMS current implementation.
+The reader is encouraged to take a look to source files (libtc/tcmodule*.c)
+to see the gory details.
+
+
+6.1. Why the factory?
+---------------------
+
+The factory descriptor was make explicite for generality and extendability.
+Having explicit factory descriptor make it possible to use more than
+one factory at time, even if this will be unlikely useful.
+There are some use cases for this on actual codebase at time of writing.
+Anyway, it's trivial to force code to use just one factory using something
+like:
+
+/* some_tc_header.h */
+
+extern TCModuleFactory main_factory;
+
+#define tc_load_module(type, name) \
+ tc_new_module(main_factory, type, name)
+#define tc_unload_module(type, name) \
+ tc_del_module(main_factory, mod)
+
+
+6.2. About multithreading safeness
+----------------------------------
+
+Multiple thread CANNOT execute operations concurrently on the same factory
+descriptor.
+It is safe to execute concurrently operations if each module operate on
+it's own descriptor. This means different threads can safely use different
+TCModule, but using one TCModule, or one TCFactory by two or more threads
+won't work.
+
+
+6.3. On explicit reference counting
+-----------------------------------
+
+On linux systems, dlopen() manpage reports that dl code can trasparently
+handle reference count of dlopen()ed modules, so there is no strict need
+of explictely do reference counting and avoid multiple loading on NMS.
+I don't know yet if this behaviour is portable.
+Moreover, I don't still want to drop explicit reference count on NMS,
+since it not complicate things too much and it can helps on accounting
+and debug purposes. This can change in future releases, but this should
+be a change totally transparent to client code.
+
+
+6.4. Possibile API and ABI breakage
+-----------------------------------
+
+Needs a careful review and a bit of discussion on transcode-devel.
+
+
+6.5. init VS configure, fini VS stop
+------------------------------------
+
+This section will higlight and summarize the differences between the
+init/configure and the stop/fini couple.
+
+init: ALWAYS executed BEFORE 'configure'.
+ Runs one and only one time during the life of a module.
+configure: ALWAYS executed AFTER 'init'.
+ Can run one or more times during the life of a module.
+ Modules REQUIRES that configure is runned at least once.
+ It is possible that invokations of configures after the first
+ will be ignored by a given module.
+
+fini: ALWAYS executed AFTER 'stop'.
+ Runs one and only one time during the life of a module.
+ it is possible (and usually happens) that fini invokes 'stop'.
+stop: ALWAYS executed BEFORE 'fini'.
+ Can run zero or more times during the life of a module.
+ Modules REQUIRES that stop is runned before to be re-configure()d.
+ It is possible that this function will do not anything useful.
+
+
+7. Final notes
+---------------------------------------------------------------------------
+
+send any comment to <fromani@gmail.com>. Thanks for reading this.
+Corrections about english are welcome.
+
+
+8. Appendix A: planned improvements in 1.2.0 and beyond
+---------------------------------------------------------------------------
+(without a particular order)
+
+1. Generic init/fini functions. Most of them are boilerplate code and
+ there is no need to replicate them every time.
+2. New filter operations with explicit destination argument:
+
+ int (*process_video)(TCModuleInstance self, vframe_list_t *src, vframe_list_t *dst);
+ int (*process_audio)(TCModuleInstance self, aframe_list_t *src, aframe_list_t *dst);
+
+3. Add open/close functions to improve (de)multiplexors:
+
+ int (*open)(TCModuleInstance self, const char *name, uint32_t flags);
+ int (*close)(TCModuleInstance self);
+
+4. Needs careful planning: subdivide modules in separate classes to
+ reduce function bloat.
+5. Make modules arguments explicit and handled by core: that semplifies
+ modules, reduce duplication, adds sanity checks for free.
+6. Related to above: overhaul or get rid of optstr* stuff.
+7. More docs, more sample code.
+8. Make explicit preferred (native?) colorspace for modules (the one for which
+ the module is designed about, so it provide bests results).
+9. Improve (make explicit?) flush API in muxers.
+10. better muxing API (using chunks?).
+
+# EOF