summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/flashmovie/flashmovie.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/flashmovie/flashmovie.sty')
-rw-r--r--macros/latex/contrib/flashmovie/flashmovie.sty862
1 files changed, 862 insertions, 0 deletions
diff --git a/macros/latex/contrib/flashmovie/flashmovie.sty b/macros/latex/contrib/flashmovie/flashmovie.sty
new file mode 100644
index 0000000000..865fa0a250
--- /dev/null
+++ b/macros/latex/contrib/flashmovie/flashmovie.sty
@@ -0,0 +1,862 @@
+%%%%%%%%%%%%% flashmovie.sty
+%%%%%%%%%%%%% Copyright 2010 Timo Hartmann (thartmann15 at googlemail.com)
+%
+% Version 0.4
+%
+% changelog:
+% 0.4 : 2010-09-13 : better support for jw-player, minor bug fixes
+% 0.3 : 2010-09-09 : better examples,minor bug fixes, issues with beamer explained
+% 0.2 : 2010-04-21 : major overhaul: keyval 'engine', flv-player-engine,
+% efficient multiple embedding of files,...
+% 0.1 : 2010-04-13 : a bunch of bugfixes
+% 0.0 : 2009-12-06 : initial release
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This license applies to following files:
+% flashmovie.sty,test.tex,test-flv.tex,README
+%
+%
+%
+% The file "player_flv_maxi.swf" is NOT from me. This is the original flv-player
+% from http://flv-player.net whose developer is neolao.
+% This file is distributed under the MPL-license. See the directory
+% "flv-player-license" for more information. The file "license.txt" in that directory
+% is from the original source-code of the flv-player. A copy of the MPL-license is also
+% included there.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% special thanks to following people for providing support, tips and improvements:
+% - Elie Roux
+% - Marco Aurélio Graciotto Silva
+% - neolao
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This package allows direct embedding of flash movies into PDF files. It is
+% designed for use with pdflatex.
+%
+% Basically it uses the fact that the Adobe Reader 9 contains an embedded Adobe Flash
+% player which can be invoked with the "rich media annotation" feature which is described
+% in "Adobe Supplement to the ISO 32000 BaseVersion: 1.7 ExtensionLevel: 3".
+%
+% advantages:
+% - You can directly embed videos into the pdf (external window is optimal and not necessary).
+% - You can play back videos without worrying about platform dependencies.
+%
+% disadvantages:
+% - You can only play back embedded videos with Adobe Reader 9 and upwards.
+%
+% usage:
+% There are two fundamental different ways to embed videos via the
+% flash-component of the Adobe Reader:
+% - One can create a ".swf"-file and insert this directly
+% into the pdf. See example (1) below.
+% - One can create a ".mp4"-file and use that file as an input
+% to a flash-video-player which renders the videos.
+% Both files (the video and the flash-video-player) will be
+% embedded into the pdf. See example(2) below.
+% Different video formats (mp4/flv/whatever-the-flash-video-player-accepts/...)
+% can be used. Controls are available (depending on the player).
+% See example (2) below.
+% Using the keyword "engine" one can select the method of embedding.
+% If you omit it or if you specify "engine=pure-swf" then the file will be
+% directly embedded. This works only for swf-files.
+% For other possible values of "engine" see the chapter "flash-video-players".
+%
+% supported file formats:
+% - flash animations ( ".swf" files) via direct embedding
+% - mp4 movies (".mp4" files) via an embedded flash-video-player
+% - flv movies (".flv" files) via an embedded flash-video-player
+%
+% attention:
+% - avi videos (".avi" files) don't work !
+%
+% flash-video-players:
+% There are several flash-video-players available which fit the needs
+% of flashmovie.sty. The different players can be selected with the key "engine",
+% for example: "\flashmovie[width=10cm,height=10cm,engine=flv-player]{saturn5.mp4}".
+%
+% The use of "engine=flv-player" is recommended, because it is supported best and
+% the flv-player is included in this distribution. But there seems to be some
+% incompatibilities of flv-player and beamer. See troubleshooting below.
+%
+% List of flash-video-players:
+%
+% - "engine=flv-player". This is an open-source player from http://flv-player.net.
+% It is included with this distribution (the file player_flv_maxi.swf).
+% The developer is neolao. See the directory flv-player-license for the license of it.
+% This is the player which flashmovie.sty supports best.
+%
+% supported parameters:
+% auto=0 --> auto-play off (default)
+% auto=1 --> auto-play on
+% image=someimage.jpeg --> start-image (not necessary)
+%
+% - "engine=jw-player". This is the JW player from http://www.longtailvideo.com/players/jw-flv-player.
+% You have to obtain player.swf from that site and put it in the working directory in order
+% to use this module. Its released under a creative common license which means its free
+% for non-commercial use.
+% It is NOT included in this distribution.
+%
+% supported parameters:
+% auto=0 --> auto-play off (default)
+% auto=1 --> auto-play on
+% image=someimage.jpeg --> start-image (not necessary)
+% controlbar=0 --> no control bar shown
+% controlbar=1 --> control bar shown (default)
+% loop=0 --> do not loop the video (default)
+% loop=1 --> loop the video
+%
+% - "engine=acropro". This is an commercial player which is distributed with
+% Acrobat 9 Pro. You have to obtain VideoPlayer.swf and SkinOverPlaySeekStop.swf
+% from Acrobat 9 Pro and put them into the working directory in order to use that module.
+% It is NOT included in this distribution.
+% For this player flashmovie.sty only provides rudimentary support.
+% - "engine=osplayer". This is an open-source player from http://www.osflv.com
+% You have to obtain OSplayer.swf from that site and put it in the working directory in order
+% to use this module.
+% It is NOT included in this distribution.
+% For this player flashmovie.sty only provides rudimentary support.
+%
+% other options for the "engine"-keyword:
+% - "engine=pure-swf" : This directly embedds the file into the PDF without
+% any flash-video-player. This is the default option when you omit the
+% "engine"-keyword. This works only for swf-files.
+% - "engine=blank" : This simply produces an empty rectangle instead of an
+% flash animation. This is useful during the creation process of the
+% PDF because flash animations inside a PDF can easily crash
+% the Adobe reader with the reload (CTRL-R) feature after recompiling
+% the tex-file.
+% The same effect can be produced if uses "blank=1" as an option
+% regardless what the value of "engine" is.
+% example: \flashmovie[...,engine=flv-player,blank=1,...]{...}
+%
+%
+% example (1)
+% - download a video file to use, for example
+% http://heasarc.gsfc.nasa.gov/Videos/historical/saturn5.avi
+% - transform this video into the flash format with ffmpeg:
+% ffmpeg -i saturn5.avi saturn5.swf
+% (or use any other program capable of this, for example mencoder)
+% - put following line into your tex-file:
+% \flashmovie[width=10cm,height=10cm]{saturn5.swf}
+% (both width and height are needed!)
+% - translate with pdflatex
+% - advantages:
+% - easy
+% - does not rely on external components
+% - disadvantages:
+% - ffmpeg is incapable of embedding h.264 into swf-files, so one can only
+% use inferior video codecs (sorenson h.263 aka flv,...).
+% - no controls (play,pause,stop,seek,...) possible
+%
+% example (2)
+% - download a video file to use, for example
+% http://heasarc.gsfc.nasa.gov/Videos/historical/saturn5.avi
+% - transform this video into the mp4 format with ffmpeg:
+% ffmpeg -i saturn5.avi -vcodec libx264 -vpre hq -crf 22 -acodec libfaac -ab 128k -ac 2 saturn5.mp4
+% (or use any other program capable of this, for example mencoder)
+% - alternatively the flv-format with video-codec sorenson h.263 (aka flv) and audio-codec mp3 is also possible:
+% mencoder saturn5.avi -o saturn5.flv -of lavf -ovc lavc -lavcopts vcodec=flv:vbitrate=300:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -ofps 24 -vf harddup -oac mp3lame -lameopts abr:br=56 )
+% (or use ffmpeg to do the same thing...)
+% - put following line into your tex-file:
+% \flashmovie[width=10cm,height=10cm,engine=flv-player,auto=1]{saturn5.mp4}
+% (both width and height are needed! instead of saturn5.mp4 one can also use saturn5.flv but not saturn5.swf)
+% - translate with pdflatex
+% - advantages:
+% - controls (play,pause,stop,seek,...) possible
+% - superior video codec possible (h.264)
+% - one can directly embed mp4 and flv files without conversion
+%
+% how to produce swf-files:
+% - ffmpeg or mencoder : transform a video file into a flash animation (example: .mp4 --> .swf)
+% - png2swf : transform a sequence of png files into a flash animation (example: .png --> .swf)
+% - flex sdk : use action script to program your own flash applet
+% - mtasc and swfmill : use action script to program your own flash applet (outdated, should not be used)
+%
+% todo:
+% - make more options of rich-media annotations usable, for example activation by clicking, play-count,...
+%
+% tips:
+% - It is in principle possible to insert any flash animation into a PDF.
+% One is not restricted to videos.
+% - During development of the PDF one can switch of the flash animations which
+% is sometimes useful. See "engine=blank" or "blank=1" for more information.
+%
+% troubleshooting:
+% - If you encounter the error message "\pdfminorversion cannot be changed after data is written to the PDF file.",
+% then another package is also setting the variable "\pdfminorversion".
+% For example the package "beamer" does so.
+% There are two solutions:
+% - Include the package with the highest "\pdfminorversion" first.
+% For example put "\RequirePackage{flashmovie}" on the very first line
+% of your file instead of using "\usepackage{flashmovie}" later on.
+% Or rearrange the usepackage-commands in the right order.
+% - Comment the line "\ifnum\pdfminorversion<7 \pdfminorversion=7\fi" in
+% "flashmovie.sty". This will probably leave your PDF with the wrong
+% version information, but the Adobe Reader will take it anyway.
+% - There seems to be some trouble with the latex package beamer. You can't use
+% the flv-player reliably with it. It is prone to crash the acrobat reader while
+% changing pages.
+% The only reliable way to use beamer seems to be directly embedding the videos as
+% flash animations or to use the JW player.
+%
+% warning:
+% - It is recommended to use always the latest available version of the Adobe Reader.
+% This should be mandatory because in the past many attacks on computers were based
+% on 'evil' PDFs which exploited security holes in this software.
+% - Because the file names of the movies are directly embedded into the PDFs please use only
+% "normal" file names. More specific use only names compatible with internal PDF strings.
+% There is even a specification what conforming file names are (see the PDF reference).
+
+\RequirePackage{keyval}
+\RequirePackage{ifthen}
+
+\ifnum\pdfminorversion<7 \pdfminorversion=7\fi
+
+\def\flashmovieempty{}
+\def\flashmoviezero{0}
+\def\flashmovieembedded{}
+
+\def\flashmovieparamsclear{
+ \def\flashmoviewidth {4cm}
+ \def\flashmovieheight{4cm}
+ \def\flashmovieimage{}
+ \def\flashmovieauto{0}
+ \def\flashmovieengine{}
+ \def\flashmoviekblank{0}
+ \def\flashmoviecontrolbar{1}
+ \def\flashmovieloop{0}
+}
+
+\define@key{flashmovieparams}{width} {\def\flashmoviewidth {#1}}
+\define@key{flashmovieparams}{height} {\def\flashmovieheight {#1}}
+\define@key{flashmovieparams}{image} {\def\flashmovieimage {#1}}
+\define@key{flashmovieparams}{auto} {\def\flashmovieauto {#1}}
+\define@key{flashmovieparams}{engine} {\def\flashmovieengine {#1}}
+\define@key{flashmovieparams}{blank} {\def\flashmoviekblank {#1}}
+\define@key{flashmovieparams}{controlbar} {\def\flashmoviecontrolbar{#1}}
+\define@key{flashmovieparams}{loop} {\def\flashmovieloop{#1}}
+
+\newlength{\flashmovie@width}
+\newlength{\flashmovie@height}
+\newsavebox{\flashmovie@content}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%% variable module %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \flashmovieset{a}{b} is equivalent to \def\a{b}
+% \flashmovieget{a} is equivalent to \a if a is defined and otherwise it is empty
+%
+% example:
+% \flashmovieset{aaa}{bla} \flashmovieget{aaa} ------> produces bla
+% \flashmovieget{bbb} ------> produces nothing if bbb is not defined
+
+\def\flashmovieset#1#2{{\expandafter\xdef\csname flashmovie@f@#1\endcsname{#2}}}
+
+% warning: command must be on one line so that there are no spaces generated !
+\def\flashmovieget#1{\expandafter\ifx\csname flashmovie@f@#1\endcsname\relax\expandafter\flashmovieempty\else\csname flashmovie@f@#1\endcsname\fi}
+
+%simpler:
+% \def\flashmovieset#1#2{{\expandafter\xdef\csname#1\endcsname{#2}}}
+% \def\flashmovieget#1{\expandafter\ifx\csname#1\endcsname\relax\expandafter\flashmovieempty\else\csname#1\endcsname\fi}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%% file embedding module %%%%%%%%%%%%%%%%%%%%%%%%
+%
+% usage:
+% \flashmovieembedfile{somefile}
+% \edef\flashmovie@e@somefile{\flashmovieembedded}
+
+\def\flashmovieembedfileinternal#1{%
+ \immediate%
+ \pdfobj stream
+ attr { /Type/EmbeddedFile }
+ file {#1}%
+ \immediate%
+ \pdfobj{ <<
+ /Type /Filespec
+ /F (#1)
+ /UF (#1)
+ /EF << /F \the\pdflastobj\space 0 R >>
+ >>}%
+}
+
+\def\flashmovieembedfile#1{%
+ \ifthenelse{\equal{\flashmovieget{\pdfmdfivesum file {#1}}}{\flashmovieempty}}{%
+ \flashmovieembedfileinternal{#1}%
+ \def\flashmovieembedded{\the\pdflastobj}%
+ \flashmovieset{\pdfmdfivesum file {#1}}{\flashmovieembedded}%
+ }{%
+ \def\flashmovieembedded{\flashmovieget{\pdfmdfivesum file {#1}}}%
+ }%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\flashmovie{\@ifnextchar[\@flashmovie{\@flashmovie[]}}
+
+\def\@flashmovie[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{
+
+ \ifthenelse{\equal{\flashmoviekblank}{\flashmoviezero}}
+ {}{\def\flashmovieengine{blank}}
+
+ \ifx\flashmovieengine\flashmovieempty
+ \flashmovie@pureswf[#1]{#2}
+ \else
+
+ \ifthenelse{\equal{\flashmovieengine}{pure-swf}}
+ {\flashmovie@pureswf[#1]{#2}}{}
+
+ \ifthenelse{\equal{\flashmovieengine}{flv-player}}
+ {\flashmovie@flvplayer[#1]{#2}}{}
+
+ \ifthenelse{\equal{\flashmovieengine}{acropro}}
+ {\flashmovie@acropro[#1]{#2}}{}
+
+ \ifthenelse{\equal{\flashmovieengine}{jw-player}}
+ {\flashmovie@jwplayer[#1]{#2}}{}
+
+ \ifthenelse{\equal{\flashmovieengine}{osplayer}}
+ {\flashmovie@osplayer[#1]{#2}}{}
+
+ \ifthenelse{\equal{\flashmovieengine}{blank}}
+ {\flashmovie@blank[#1]{#2}}{}
+
+ \fi
+}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% pure swf
+
+\def\flashmovie@pureswf{\@ifnextchar[\@flashmovie@pureswf{\@flashmovie@pureswf[]}}
+
+\def\@flashmovie@pureswf[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{
+ \newcount\flashmovie@n@config
+ \newcount\flashmovie@n@content
+ \newcount\flashmovie@n@settings
+
+ \flashmovieembedfile{#2}
+ \edef\flashmovie@e@video{\flashmovieembedded}
+
+ \immediate
+ \pdfobj
+ {<<
+ /Instances
+ [<<
+ /Asset \flashmovie@e@video\space 0 R
+ /Params << /Binding /Foreground >>
+ >>]
+ /Subtype /Flash
+ >>}
+ \flashmovie@n@config=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Assets << /Names [(#2) \flashmovie@e@video\space 0 R] >>
+ /Configurations [\the\flashmovie@n@config\space 0 R]
+ >>}
+ \flashmovie@n@content=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Activation
+ << /Type /RichMediaActivation
+ /Condition /PV
+ /Configuration \the\flashmovie@n@config\space 0 R
+ /Animation
+ << /Subtype /Linear
+ /Speed 1
+ /PlayCount 1
+ >>
+ /Presentation
+ << /PassContextClick false
+ /Style /Embedded
+ /Toolbar false
+ /NavigationPane false
+ /Transparent true
+ /Window
+ << /Type /RichMediaWindow
+ /Width << /Default 100 /Min 100 /Max 100 >>
+ /Height << /Default 100 /Min 100 /Max 100 >>
+ /Position
+ << /Type /RichMediaPosition
+ /HAlign /Near
+ /VAlign /Near
+ /HOffset 0
+ /VOffset 0
+ >>
+ >>
+ >>
+ >>
+ /Deactivation
+ << /Type /RichMediaDeactivation
+ /Condition /PI
+ >>
+ >>}
+ \flashmovie@n@settings=\pdflastobj
+
+ \sbox{\flashmovie@content} {{\hbox to \flashmoviewidth {\vbox to \flashmovieheight { }}}}
+
+ \settowidth {\flashmovie@width} {\usebox{\flashmovie@content}}
+ \settoheight{\flashmovie@height}{\usebox{\flashmovie@content}}
+ \usebox{\flashmovie@content}
+
+ \pdfannot width \flashmovie@width height \flashmovie@height depth 0pt {
+ /Subtype /RichMedia
+ /RichMediaContent \the\flashmovie@n@content\space 0 R
+ /RichMediaSettings \the\flashmovie@n@settings\space 0 R
+}}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% blank
+
+\def\flashmovie@blank{\@ifnextchar[\@flashmovie@blank{\@flashmovie@blank[]}}
+
+\def\@flashmovie@blank[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{
+ \sbox{\flashmovie@content} {{\hbox to \flashmoviewidth {\vbox to \flashmovieheight { }}}}
+ \settowidth {\flashmovie@width} {\usebox{\flashmovie@content}}
+ \settoheight{\flashmovie@height}{\usebox{\flashmovie@content}}
+ \usebox{\flashmovie@content}
+}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% player from adobe acrobat pro
+
+\def\flashmovie@acropro{\@ifnextchar[\@flashmovie@acropro{\@flashmovie@acropro[]}}
+
+\def\@flashmovie@acropro[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{
+ \newcount\flashmovie@n@config
+ \newcount\flashmovie@n@content
+ \newcount\flashmovie@n@settings
+
+ \flashmovieembedfile{#2}
+ \edef\flashmovie@e@video{\flashmovieembedded}
+
+ \flashmovieembedfile{SkinOverPlaySeekStop.swf}
+ \edef\flashmovie@e@skin{\flashmovieembedded}
+
+ \flashmovieembedfile{VideoPlayer.swf}
+ \edef\flashmovie@e@player{\flashmovieembedded}
+
+ \immediate
+ \pdfobj
+ {<<
+ /Instances
+ [<<
+ /Asset \flashmovie@e@player\space 0 R
+ /Params
+ <<
+ /Binding /Foreground
+ /FlashVars (source=#2&skin=SkinOverPlaySeekStop.swf&skinAutoHide=true&skinBackgroundColor=0x00FF00&skinBackgroundAlpha=0.33&volume=1.00)
+ >>
+ >>]
+ /Subtype /Flash
+ >>}
+ \flashmovie@n@config=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Assets << /Names [(#2) \flashmovie@e@video\space 0 R (skinover.swf) \flashmovie@e@skin\space 0 R (VideoPlayer.swf) \flashmovie@e@player\space 0 R] >>
+ /Configurations [\the\flashmovie@n@config\space 0 R]
+ >>}
+ \flashmovie@n@content=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Activation
+ << /Type /RichMediaActivation
+ /Condition /PV
+ /Configuration \the\flashmovie@n@config\space 0 R
+ /Animation
+ << /Subtype /Linear
+ /Speed 1
+ /PlayCount 1
+ >>
+ /Presentation
+ << /PassContextClick false
+ /Style /Embedded
+ /Toolbar false
+ /NavigationPane false
+ /Transparent true
+ /Window
+ << /Type /RichMediaWindow
+ /Width << /Default 100 /Min 100 /Max 100 >>
+ /Height << /Default 100 /Min 100 /Max 100 >>
+ /Position
+ << /Type /RichMediaPosition
+ /HAlign /Near
+ /VAlign /Near
+ /HOffset 0
+ /VOffset 0
+ >>
+ >>
+ >>
+ >>
+ /Deactivation
+ << /Type /RichMediaDeactivation
+ /Condition /PI
+ >>
+ >>}
+ \flashmovie@n@settings=\pdflastobj
+
+ \sbox{\flashmovie@content} {{\hbox to \flashmoviewidth {\vbox to \flashmovieheight { }}}}
+
+ \settowidth {\flashmovie@width} {\usebox{\flashmovie@content}}
+ \settoheight{\flashmovie@height}{\usebox{\flashmovie@content}}
+ \usebox{\flashmovie@content}
+
+ \pdfannot width \flashmovie@width height \flashmovie@height depth 0pt {
+ /Subtype /RichMedia
+ /RichMediaContent \the\flashmovie@n@content\space 0 R
+ /RichMediaSettings \the\flashmovie@n@settings\space 0 R
+}}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% flv-player from http://flv-player.net/players/maxi
+
+\def\flashmovie@flvplayer{\@ifnextchar[\@flashmovie@flvplayer{\@flashmovie@flvplayer[]}}
+
+\def\@flashmovie@flvplayer[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{
+ \newcount\flashmovie@n@config
+ \newcount\flashmovie@n@content
+ \newcount\flashmovie@n@settings
+
+ \flashmovieembedfile{#2}
+ \edef\flashmovie@e@video{\flashmovieembedded}
+
+ \flashmovieembedfile{player_flv_maxi.swf}
+ \edef\flashmovie@e@player{\flashmovieembedded}
+
+ % startimage is initialized here
+ \ifx\flashmovieimage\flashmovieempty
+ \def\flashmovieimagevari{}
+ \def\flashmovieimagevarii{}
+ \else
+ \flashmovieembedfile{\flashmovieimage}
+ \edef\flashmovie@e@image{\flashmovieembedded}
+ \def\flashmovieimagevari{&startimage=\flashmovieimage}
+ \def\flashmovieimagevarii{(\flashmovieimage) \flashmovie@e@image\space 0 R}
+ \fi
+
+ % autoplay is initialized here
+ \ifx\flashmovieauto\flashmoviezero
+ \def\flashmovieautovari{}
+ \else
+ \def\flashmovieautovari{&autoplay=1}
+ \fi
+
+ % looping is initialized here
+ \ifx\flashmovieloop\flashmoviezero
+ \def\flashmovieloopvari{&loop=0}
+ \else
+ \def\flashmovieloopvari{&loop=1}
+ \fi
+
+ \immediate
+ \pdfobj
+ {<<
+ /Instances
+ [<<
+ /Asset \flashmovie@e@player\space 0 R
+ /Params
+ <<
+ /Binding /Foreground
+ /FlashVars (flv=#2&margin=0&showvolume=1&showstop=1&showtime=1&videobgcolor=0xFFFFFF\flashmovieautovari\flashmovieimagevari\flashmovieloopvari)
+ >>
+ >>]
+ /Subtype /Flash
+ >>}
+ \flashmovie@n@config=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Assets << /Names
+ [(#2) \flashmovie@e@video\space 0 R (player_flv_maxi.swf) \flashmovie@e@player\space 0 R \flashmovieimagevarii] >>
+ /Configurations [\the\flashmovie@n@config\space 0 R]
+ >>}
+ \flashmovie@n@content=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Activation
+ << /Type /RichMediaActivation
+ /Condition /PV
+ /Configuration \the\flashmovie@n@config\space 0 R
+ /Animation
+ << /Subtype /Linear
+ /Speed 1
+ /PlayCount 1
+ >>
+ /Presentation
+ << /PassContextClick false
+ /Style /Embedded
+ /Toolbar false
+ /NavigationPane false
+ /Transparent true
+ /Window
+ << /Type /RichMediaWindow
+ /Width << /Default 100 /Min 100 /Max 100 >>
+ /Height << /Default 100 /Min 100 /Max 100 >>
+ /Position
+ << /Type /RichMediaPosition
+ /HAlign /Near
+ /VAlign /Near
+ /HOffset 0
+ /VOffset 0
+ >>
+ >>
+ >>
+ >>
+ /Deactivation
+ << /Type /RichMediaDeactivation
+ /Condition /PI
+ >>
+ >>}
+ \flashmovie@n@settings=\pdflastobj
+
+ \sbox{\flashmovie@content} {{\hbox to \flashmoviewidth {\vbox to \flashmovieheight { }}}}
+
+ \settowidth {\flashmovie@width} {\usebox{\flashmovie@content}}
+ \settoheight{\flashmovie@height}{\usebox{\flashmovie@content}}
+ \usebox{\flashmovie@content}
+
+ \pdfannot width \flashmovie@width height \flashmovie@height depth 0pt {
+ /Subtype /RichMedia
+ /RichMediaContent \the\flashmovie@n@content\space 0 R
+ /RichMediaSettings \the\flashmovie@n@settings\space 0 R }
+}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% JW Player from http://www.longtailvideo.com/players/jw-flv-player/
+
+\def\flashmovie@jwplayer{\@ifnextchar[\@flashmovie@jwplayer{\@flashmovie@jwplayer[]}}
+
+\def\@flashmovie@jwplayer[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{
+ \newcount\flashmovie@n@config
+ \newcount\flashmovie@n@content
+ \newcount\flashmovie@n@settings
+
+ \flashmovieembedfile{#2}
+ \edef\flashmovie@e@video{\flashmovieembedded}
+
+ \flashmovieembedfile{player.swf}
+ \edef\flashmovie@e@player{\flashmovieembedded}
+
+ % startimage is initialized here
+ \ifx\flashmovieimage\flashmovieempty
+ \def\flashmovieimagevari{}
+ \def\flashmovieimagevarii{}
+ \else
+ \flashmovieembedfile{\flashmovieimage}
+ \edef\flashmovie@e@image{\flashmovieembedded}
+ \def\flashmovieimagevari{&image=\flashmovieimage}
+ \def\flashmovieimagevarii{(\flashmovieimage) \flashmovie@e@image\space 0 R}
+ \fi
+
+ % autoplay is initialized here
+ \ifx\flashmovieauto\flashmoviezero
+ \def\flashmovieautovari{}
+ \else
+ \def\flashmovieautovari{&autostart=true}
+ \fi
+
+ % controlbar is initialized here
+ \ifx\flashmoviecontrolbar\flashmoviezero
+ \def\flashmoviecontrolbarvari{&controlbar=none}
+ \else
+ \def\flashmoviecontrolbarvari{}
+ \fi
+
+ % looping is initialized here
+ \ifx\flashmovieloop\flashmoviezero
+ \def\flashmovieloopvari{}
+ \else
+ \def\flashmovieloopvari{&repeat=always}
+ \fi
+
+ \immediate
+ \pdfobj
+ {<<
+ /Instances
+ [<<
+ /Asset \flashmovie@e@player\space 0 R
+ /Params
+ <<
+ /Binding /Foreground
+ /FlashVars (file=#2\flashmovieimagevari\flashmovieautovari\flashmoviecontrolbarvari\flashmovieloopvari)
+ >>
+ >>]
+ /Subtype /Flash
+ >>}
+ \flashmovie@n@config=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Assets << /Names
+ [(#2) \flashmovie@e@video\space 0 R (player.swf) \flashmovie@e@player\space 0 R \flashmovieimagevarii] >>
+ /Configurations [\the\flashmovie@n@config\space 0 R]
+ >>}
+ \flashmovie@n@content=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Activation
+ << /Type /RichMediaActivation
+ /Condition /PV
+ /Configuration \the\flashmovie@n@config\space 0 R
+ /Animation
+ << /Subtype /Linear
+ /Speed 1
+ /PlayCount 1
+ >>
+ /Presentation
+ << /PassContextClick false
+ /Style /Embedded
+ /Toolbar false
+ /NavigationPane false
+ /Transparent true
+ /Window
+ << /Type /RichMediaWindow
+ /Width << /Default 100 /Min 100 /Max 100 >>
+ /Height << /Default 100 /Min 100 /Max 100 >>
+ /Position
+ << /Type /RichMediaPosition
+ /HAlign /Near
+ /VAlign /Near
+ /HOffset 0
+ /VOffset 0
+ >>
+ >>
+ >>
+ >>
+ /Deactivation
+ << /Type /RichMediaDeactivation
+ /Condition /PI
+ >>
+ >>}
+ \flashmovie@n@settings=\pdflastobj
+
+ \sbox{\flashmovie@content} {{\hbox to \flashmoviewidth {\vbox to \flashmovieheight { }}}}
+
+ \settowidth {\flashmovie@width} {\usebox{\flashmovie@content}}
+ \settoheight{\flashmovie@height}{\usebox{\flashmovie@content}}
+ \usebox{\flashmovie@content}
+
+ \pdfannot width \flashmovie@width height \flashmovie@height depth 0pt {
+ /Subtype /RichMedia
+ /RichMediaContent \the\flashmovie@n@content\space 0 R
+ /RichMediaSettings \the\flashmovie@n@settings\space 0 R }
+}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% OSFlvPlayer from http://www.osflv.com
+
+\def\flashmovie@osplayer{\@ifnextchar[\@flashmovie@osplayer{\@flashmovie@osplayer[]}}
+
+\def\@flashmovie@osplayer[#1]#2{\flashmovieparamsclear \setkeys{flashmovieparams}{#1}{
+ \newcount\flashmovie@n@config
+ \newcount\flashmovie@n@content
+ \newcount\flashmovie@n@settings
+
+ \flashmovieembedfile{#2}
+ \edef\flashmovie@e@video{\flashmovieembedded}
+
+ \flashmovieembedfile{OSplayer.swf}
+ \edef\flashmovie@e@player{\flashmovieembedded}
+
+ \immediate
+ \pdfobj
+ {<<
+ /Instances
+ [<<
+ /Asset \flashmovie@e@player\space 0 R
+ /Params
+ <<
+ /Binding /Foreground
+ /FlashVars (movie=#2)
+ >>
+ >>]
+ /Subtype /Flash
+ >>}
+ \flashmovie@n@config=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Assets << /Names
+ [(#2) \flashmovie@e@video\space 0 R (OSplayer.swf) \flashmovie@e@player\space 0 R] >>
+ /Configurations [\the\flashmovie@n@config\space 0 R]
+ >>}
+ \flashmovie@n@content=\pdflastobj
+
+ \immediate
+ \pdfobj
+ {<<
+ /Activation
+ << /Type /RichMediaActivation
+ /Condition /PV
+ /Configuration \the\flashmovie@n@config\space 0 R
+ /Animation
+ << /Subtype /Linear
+ /Speed 1
+ /PlayCount 1
+ >>
+ /Presentation
+ << /PassContextClick false
+ /Style /Embedded
+ /Toolbar false
+ /NavigationPane false
+ /Transparent true
+ /Window
+ << /Type /RichMediaWindow
+ /Width << /Default 100 /Min 100 /Max 100 >>
+ /Height << /Default 100 /Min 100 /Max 100 >>
+ /Position
+ << /Type /RichMediaPosition
+ /HAlign /Near
+ /VAlign /Near
+ /HOffset 0
+ /VOffset 0
+ >>
+ >>
+ >>
+ >>
+ /Deactivation
+ << /Type /RichMediaDeactivation
+ /Condition /PI
+ >>
+ >>}
+ \flashmovie@n@settings=\pdflastobj
+
+ \sbox{\flashmovie@content} {{\hbox to \flashmoviewidth {\vbox to \flashmovieheight { }}}}
+
+ \settowidth {\flashmovie@width} {\usebox{\flashmovie@content}}
+ \settoheight{\flashmovie@height}{\usebox{\flashmovie@content}}
+ \usebox{\flashmovie@content}
+
+ \pdfannot width \flashmovie@width height \flashmovie@height depth 0pt {
+ /Subtype /RichMedia
+ /RichMediaContent \the\flashmovie@n@content\space 0 R
+ /RichMediaSettings \the\flashmovie@n@settings\space 0 R }
+}}
+