framecurve 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +8 -0
- data/README.rdoc +31 -6
- data/bin/framecurve_from_fcp_xml +10 -0
- data/framecurve.gemspec +13 -3
- data/lib/framecurve.rb +2 -2
- data/lib/framecurve/extractors/fcp_xml.rb +97 -0
- data/lib/framecurve/extractors/xml_bridge.rb +56 -0
- data/lib/framecurve/parser.rb +2 -1
- data/lib/framecurve/serializer.rb +31 -5
- data/lib/framecurve/validator.rb +11 -6
- data/test/fixtures/fcp_xml/CountDOWN.xml +812 -0
- data/test/fixtures/framecurves/err-neg-frames.framecurve.txt +3 -0
- data/test/fixtures/framecurves/err-no-tuples.framecurve.txt +2 -0
- data/test/fixtures/framecurves/incorrect.extension +6 -0
- data/test/fixtures/framecurves/sample_framecurve1.framecurve.txt +6 -0
- data/test/test_framecurve_from_fcp_xml_binary.rb +39 -0
- data/test/test_framecurve_serializer.rb +21 -3
- data/test/test_framecurve_validator.rb +43 -8
- metadata +21 -10
data/History.txt
ADDED
data/README.rdoc
CHANGED
@@ -2,13 +2,38 @@
|
|
2
2
|
|
3
3
|
framecurve (http://framecurve.org) file handling gem for Ruby.
|
4
4
|
|
5
|
-
|
5
|
+
This gem includes a handful of classes for manipulating framecurves and is intended as a library for when you want to do something
|
6
|
+
with framecurves from within Ruby. This will also power the online framecurve validation service once it's online.
|
7
|
+
|
8
|
+
== Framecurve validation and parsing
|
9
|
+
|
10
|
+
The main binary of the gem is called <tt>framecurve_validator</tt>, it will validate framecurve files passed in the arguments and report
|
6
11
|
any errors found in the files to STDERR.
|
7
12
|
|
8
13
|
$framecurve_validator somefile.framecurve.txt another.framecurve.txt
|
9
|
-
|
10
|
-
|
11
|
-
|
14
|
+
|
15
|
+
This is handy when you wrote your own piece of software that exports framecurve files or you want to make sure that a framecurve file
|
16
|
+
you have received conforms to the framecurve specification. This tool will also note all the deviations from the spec in terms of recommended
|
17
|
+
headers and comments and report them to you one by one.
|
18
|
+
|
19
|
+
== Extracting framecurves from FinalCut Pro XML files
|
20
|
+
|
21
|
+
This gem includes an application, <tt>framecurve_from_fcp</tt>, that will extract Framecurve files from a FinalCut Pro XML
|
22
|
+
files (the version you need is *XML Interchange Format Version 4*). It will dive into your sequence and find all clips which have
|
23
|
+
time remap effects on them, and for each of these clips it will write out a <tt>.framecurve.txt<tt> file that you can convert into
|
24
|
+
other formats or load into applications for which we provide framecurve scripts. This file will include all of the motion keyframes
|
25
|
+
that have been applied in FCP.
|
26
|
+
|
27
|
+
$framecurve_from_fcp_xml my_edit.xml
|
28
|
+
|
29
|
+
will write out a number of framecurve files, one per timewarped clip in your sequence (they will be appropriately named with the track
|
30
|
+
index, clip index and clip name so that you can trace which ones relate to which clips in your edit).
|
31
|
+
|
32
|
+
== Extracting framecurves from Flame/Smoke setups
|
33
|
+
|
34
|
+
If you need to extract from a format written by Flame or Smoke, install the *flame_channel_parser* gem. This gem provides
|
35
|
+
the binaries <tt>framecurve_to_flame</tt> and <tt>framecurve_from_flame</tt> which will create framecurve files or convert them
|
36
|
+
to a variety of Flame-supported setup formats. Refer to the <tt>flame_channel_parser</tt> gem documentation for more information on these.
|
12
37
|
|
13
38
|
== Contributing to framecurve
|
14
39
|
|
@@ -22,6 +47,6 @@ with framecurves from within Ruby. This will also power the online framecurve va
|
|
22
47
|
|
23
48
|
== Copyright
|
24
49
|
|
25
|
-
Copyright (c) 2011 Julik.
|
26
|
-
further details.
|
50
|
+
Copyright (c) 2011 Julik.
|
51
|
+
See LICENSE.txt for further details.
|
27
52
|
|
data/framecurve.gemspec
CHANGED
@@ -5,14 +5,14 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "framecurve"
|
8
|
-
s.version = "
|
8
|
+
s.version = "2.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Julik"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2012-01-08"
|
13
13
|
s.description = " Parser, validation and interpolation"
|
14
14
|
s.email = "me@julik.nl"
|
15
|
-
s.executables = ["framecurve_validator"]
|
15
|
+
s.executables = ["framecurve_from_fcp_xml", "framecurve_validator"]
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"LICENSE.txt",
|
18
18
|
"README.rdoc"
|
@@ -20,21 +20,31 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.files = [
|
21
21
|
".document",
|
22
22
|
"Gemfile",
|
23
|
+
"History.txt",
|
23
24
|
"LICENSE.txt",
|
24
25
|
"README.rdoc",
|
25
26
|
"Rakefile",
|
27
|
+
"bin/framecurve_from_fcp_xml",
|
26
28
|
"bin/framecurve_validator",
|
27
29
|
"framecurve.gemspec",
|
28
30
|
"lib/framecurve.rb",
|
29
31
|
"lib/framecurve/comment.rb",
|
30
32
|
"lib/framecurve/curve.rb",
|
33
|
+
"lib/framecurve/extractors/fcp_xml.rb",
|
34
|
+
"lib/framecurve/extractors/xml_bridge.rb",
|
31
35
|
"lib/framecurve/parser.rb",
|
32
36
|
"lib/framecurve/serializer.rb",
|
33
37
|
"lib/framecurve/tuple.rb",
|
34
38
|
"lib/framecurve/validator.rb",
|
39
|
+
"test/fixtures/fcp_xml/CountDOWN.xml",
|
40
|
+
"test/fixtures/framecurves/err-neg-frames.framecurve.txt",
|
41
|
+
"test/fixtures/framecurves/err-no-tuples.framecurve.txt",
|
42
|
+
"test/fixtures/framecurves/incorrect.extension",
|
43
|
+
"test/fixtures/framecurves/sample_framecurve1.framecurve.txt",
|
35
44
|
"test/helper.rb",
|
36
45
|
"test/test_framecurve_comment.rb",
|
37
46
|
"test/test_framecurve_curve.rb",
|
47
|
+
"test/test_framecurve_from_fcp_xml_binary.rb",
|
38
48
|
"test/test_framecurve_parser.rb",
|
39
49
|
"test/test_framecurve_serializer.rb",
|
40
50
|
"test/test_framecurve_tuple.rb",
|
data/lib/framecurve.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
module Framecurve
|
2
|
-
VERSION = "
|
2
|
+
VERSION = "2.0.0"
|
3
3
|
|
4
4
|
# Is raised when a malformed framecurve bit has occurred in the system
|
5
5
|
class Malformed < RuntimeError
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
%w( tuple comment curve parser validator serializer ).each do | f |
|
9
|
+
%w( tuple comment curve parser validator serializer extractors/fcp_xml ).each do | f |
|
10
10
|
require File.join(File.dirname(__FILE__), "framecurve", f)
|
11
11
|
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/xml_bridge"
|
2
|
+
|
3
|
+
module Framecurve
|
4
|
+
module Extractors
|
5
|
+
|
6
|
+
# Pulls all varispeed timeremaps from an FCP XML V4 file
|
7
|
+
class FCP_XML
|
8
|
+
|
9
|
+
def initialize()
|
10
|
+
@xml = Framecurve::XMLBridge.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def extract(io)
|
14
|
+
doc = @xml.document_from_io(io)
|
15
|
+
# Find all of the parameterid elements with graphdict
|
16
|
+
@xml.xpath_each(doc, "//parameterid") do | e |
|
17
|
+
if @xml.element_text(e) == "graphdict"
|
18
|
+
parameter = @xml.parent(e)
|
19
|
+
effect = @xml.parent(e, 2)
|
20
|
+
if @xml.xpath_first_text(effect, "name") == "Time Remap"
|
21
|
+
$stderr.puts "Found a timewarp at %s" % parameter.xpath
|
22
|
+
|
23
|
+
curve = pull_timewarp(parameter, File.basename(io.path))
|
24
|
+
destination = compose_filename(io.path, parameter)
|
25
|
+
|
26
|
+
File.open(destination, "wb") do | f |
|
27
|
+
$stderr.puts "Writing out a framecurve to %s" % destination
|
28
|
+
Framecurve::Serializer.new.validate_and_serialize(f, curve)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def compose_filename(source_path, parameter)
|
38
|
+
path = @xml.xpath_of(parameter).split("/")
|
39
|
+
# Path to the parameter node is something like this
|
40
|
+
# /xmeml/project/children/sequence/media/video/track/clipitem[1]/filter[7]/effect/parameter[6]
|
41
|
+
# From this we want to preserve:
|
42
|
+
# sequence and it's name
|
43
|
+
# track number
|
44
|
+
# clipitem number (offset)
|
45
|
+
relevant_nodenames = path.grep(/^(sequence|track|clipitem)/)
|
46
|
+
# Add default indices
|
47
|
+
relevant_nodenames.map! do | nodename_and_offset |
|
48
|
+
if nodename_and_offset =~ /\]$/
|
49
|
+
elems = nodename_and_offset.scan(/(\w+)(\[(\d+)\])/).flatten
|
50
|
+
[elems.shift, elems.pop]
|
51
|
+
else
|
52
|
+
[nodename_and_offset, "1"]
|
53
|
+
end
|
54
|
+
end
|
55
|
+
mappings = {"sequence" => "SEQ", "track"=>"V", "clipitem" => "CLIP"}
|
56
|
+
naming = relevant_nodenames.map do | nodename, offset |
|
57
|
+
[mappings[nodename], offset].join("")
|
58
|
+
end.join('-')
|
59
|
+
|
60
|
+
[source_path, naming, "framecurve.txt"].join('.')
|
61
|
+
end
|
62
|
+
|
63
|
+
def pull_timewarp(param, source_filename)
|
64
|
+
clipitem = @xml.parent(param, 3)
|
65
|
+
c = Framecurve::Curve.new
|
66
|
+
$stderr.puts clipitem.xpath
|
67
|
+
|
68
|
+
c.comment!("From FCP XML %s" % source_filename)
|
69
|
+
c.comment!("Information from %s" % clipitem.xpath)
|
70
|
+
|
71
|
+
clip_item_name = @xml.xpath_first_text(clipitem, "name")
|
72
|
+
|
73
|
+
# The clip in point in the edit timeline, also first frame of the TW
|
74
|
+
in_point = @xml.xpath_first_text(clipitem, "in").to_i
|
75
|
+
out_point = @xml.xpath_first_text(clipitem, "out").to_i
|
76
|
+
|
77
|
+
c.filename = [clip_item_name, "framecurve.txt"].join('.')
|
78
|
+
|
79
|
+
# Accumulate keyframes
|
80
|
+
@xml.xpath_each(param, "keyframe") do | kf |
|
81
|
+
write_keyframe(c, kf, in_point, out_point)
|
82
|
+
end
|
83
|
+
$stderr.puts("Generated a curve of #{c.length} keys")
|
84
|
+
c
|
85
|
+
end
|
86
|
+
|
87
|
+
def write_keyframe(c, kf, in_point, out_point)
|
88
|
+
kf_when, kf_value = @xml.xpath_first_text(kf, "when").to_i, @xml.xpath_first_text(kf, "value").to_f
|
89
|
+
# TODO: should be a flag
|
90
|
+
at = kf_when - in_point + 1
|
91
|
+
value = kf_value + 1 # FCP starts clips at 0
|
92
|
+
c.tuple!(at, value) unless (at < 1 || value < 1 || at > out_point)
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require "rexml/document"
|
2
|
+
|
3
|
+
#:nodoc:
|
4
|
+
|
5
|
+
# This is a thin wrapper around the REXML library. We want FC to use nokogiri
|
6
|
+
# or libxml in the future, without modifying it's core functionality. Therefore we will use
|
7
|
+
# a thin layer on top of REXML and then migrate it to offer various backends
|
8
|
+
class Framecurve::XMLBridge
|
9
|
+
|
10
|
+
include REXML
|
11
|
+
|
12
|
+
# TODO: detect for subclasses here
|
13
|
+
def self.new
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
# Return a wrapped document
|
18
|
+
def document_from_io(io)
|
19
|
+
REXML::Document.new(io)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Get the first node matching the XPath expression
|
23
|
+
def xpath_first(from_root_node, path)
|
24
|
+
REXML::XPath.first(from_root_node, path)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Get the text of the first node matching the XPath expression
|
28
|
+
def xpath_first_text(from_root_node, path)
|
29
|
+
element_text(xpath_first(from_root_node, path))
|
30
|
+
end
|
31
|
+
|
32
|
+
# Yields each XPath-satisfying element to the passed block
|
33
|
+
def xpath_each(from_root_node, path)
|
34
|
+
REXML::XPath.each(from_root_node, path, &Proc.new)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns the xpath to that specific node in the document
|
38
|
+
def xpath_of(node)
|
39
|
+
node.xpath.to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
# Get a Nth parent of the passed node
|
43
|
+
def parent(of_node, level = 1)
|
44
|
+
ancestor = of_node
|
45
|
+
until level.zero?
|
46
|
+
ancestor = ancestor.parent
|
47
|
+
level -= 1
|
48
|
+
end
|
49
|
+
return ancestor
|
50
|
+
end
|
51
|
+
|
52
|
+
def element_text(elem)
|
53
|
+
elem.text.to_s
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
data/lib/framecurve/parser.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
# Parses the data in the passed file/IO into a Curve object
|
1
|
+
# Parses the data in the passed file/IO into a Curve object.
|
2
|
+
# curve = Framecurve::Parser.new.parse("/tmp/curve.framecurve.txt")
|
2
3
|
class Framecurve::Parser
|
3
4
|
COMMENT = /^#(.+)$/
|
4
5
|
CORRELATION_RECORD = /^([-]?\d+)\t([-]?(\d+(\.\d*)?)|\.\d+)([eE][+-]?[0-9]+)?$/
|
@@ -1,13 +1,39 @@
|
|
1
1
|
# Writes out a Curve object to the passed IO
|
2
2
|
class Framecurve::Serializer
|
3
|
+
|
3
4
|
# Serialize the passed curve into io. Will use the materialized curve version.
|
4
|
-
# Will write the file with CRLF linebreaks instead of LF
|
5
|
+
# Will write the file with CRLF linebreaks instead of LF.
|
6
|
+
# Also, if the passed Curve object does not contain a preamble (URL and column headers)
|
7
|
+
# they will be added automatically
|
5
8
|
def serialize(io, curve)
|
9
|
+
write_preamble(io) unless curve_has_preamble?(curve)
|
10
|
+
curve.each do | record |
|
11
|
+
io.write("%s\r\n" % record)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# Serialize the passed curve into io and raise an exception
|
16
|
+
def validate_and_serialize(io, curve)
|
17
|
+
v = Framecurve::Validator.new
|
18
|
+
v.validate(curve)
|
19
|
+
raise Framecurve::Malformed, "Will not serialize a malformed curve: #{v.errors.join(', ')}" if v.any_errors?
|
20
|
+
serialize(io, curve)
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def write_preamble(io)
|
6
26
|
io.write("# http://framecurve.org/specification-v1\n")
|
7
27
|
io.write("# at_frame\tuse_frame_of_source\n")
|
8
|
-
curve.to_materialized_curve.each_tuple do | t |
|
9
|
-
io.write(t)
|
10
|
-
io.write("\r\n")
|
11
|
-
end
|
12
28
|
end
|
29
|
+
|
30
|
+
def curve_has_preamble?(curve)
|
31
|
+
first_comment, second_comment = curve[0], curve[-1]
|
32
|
+
return false unless first_comment && second_comment
|
33
|
+
return false unless (first_comment.comment? && second_comment.comment?)
|
34
|
+
return false unless first_comment.text.include?("http://framecurve.org")
|
35
|
+
return false unless second_comment.text.include?("at_frame\tuse_frame_of_source")
|
36
|
+
|
37
|
+
true
|
38
|
+
end
|
13
39
|
end
|
data/lib/framecurve/validator.rb
CHANGED
@@ -10,10 +10,12 @@ class Framecurve::Validator
|
|
10
10
|
@warnings, @errors = [], []
|
11
11
|
end
|
12
12
|
|
13
|
+
# Tells whether this validator instance has any errors
|
13
14
|
def any_errors?
|
14
15
|
@errors.any?
|
15
16
|
end
|
16
17
|
|
18
|
+
# Tells whether this validator instance has any warnings
|
17
19
|
def any_warnings?
|
18
20
|
@warnings.any?
|
19
21
|
end
|
@@ -67,10 +69,10 @@ class Framecurve::Validator
|
|
67
69
|
next unless t.tuple?
|
68
70
|
|
69
71
|
line_no = i + 1
|
70
|
-
if t.at <
|
71
|
-
@errors.push("The
|
72
|
+
if t.at < 1
|
73
|
+
@errors.push("The line %d had it's at_frame value (%d) below 1. The spec mandates at_frame >= 1." % [line_no, t.at])
|
72
74
|
elsif t.value < 0
|
73
|
-
@errors.push("The
|
75
|
+
@errors.push("The line %d had a use_frame_of_source value (%.5f) below 0. The spec mandates use_frame_of_source >= 0." % [line_no, t.value])
|
74
76
|
end
|
75
77
|
end
|
76
78
|
end
|
@@ -96,12 +98,15 @@ class Framecurve::Validator
|
|
96
98
|
end
|
97
99
|
|
98
100
|
def recommend_proper_preamble(curve)
|
99
|
-
|
100
|
-
|
101
|
-
e
|
101
|
+
unless curve[0] && curve[0].comment? && curve[0].text =~ /framecurve\.org\/specification/
|
102
|
+
@warnings.push("It is recommended that a framecurve starts with a comment with the specification URL")
|
102
103
|
end
|
103
104
|
end
|
104
105
|
|
105
106
|
def recommend_proper_column_headers(curve)
|
107
|
+
line_two = curve[1]
|
108
|
+
unless line_two && line_two.comment? && line_two.text =~ /at_frame\tuse_frame_of_source/
|
109
|
+
@warnings.push("It is recommended for the second comment to provide a column header")
|
110
|
+
end
|
106
111
|
end
|
107
112
|
end
|
@@ -0,0 +1,812 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE xmeml>
|
3
|
+
<xmeml version="4">
|
4
|
+
<project>
|
5
|
+
<name>CountDOWN</name>
|
6
|
+
<children>
|
7
|
+
<clip id="ConuntDown-RSZ">
|
8
|
+
<uuid>96BEE056-7A3E-4229-9DD9-945541E5F078</uuid>
|
9
|
+
<updatebehavior>add</updatebehavior>
|
10
|
+
<name>ConuntDown-RSZ</name>
|
11
|
+
<duration>100</duration>
|
12
|
+
<rate>
|
13
|
+
<ntsc>FALSE</ntsc>
|
14
|
+
<timebase>25</timebase>
|
15
|
+
</rate>
|
16
|
+
<in>-1</in>
|
17
|
+
<out>-1</out>
|
18
|
+
<masterclipid>ConuntDown-RSZ</masterclipid>
|
19
|
+
<ismasterclip>TRUE</ismasterclip>
|
20
|
+
<logginginfo>
|
21
|
+
<scene>
|
22
|
+
</scene>
|
23
|
+
<shottake>
|
24
|
+
</shottake>
|
25
|
+
<lognote>
|
26
|
+
</lognote>
|
27
|
+
<good>FALSE</good>
|
28
|
+
</logginginfo>
|
29
|
+
<labels>
|
30
|
+
<label2>
|
31
|
+
</label2>
|
32
|
+
</labels>
|
33
|
+
<comments>
|
34
|
+
<mastercomment1>
|
35
|
+
</mastercomment1>
|
36
|
+
<mastercomment2>
|
37
|
+
</mastercomment2>
|
38
|
+
<mastercomment3>
|
39
|
+
</mastercomment3>
|
40
|
+
<mastercomment4>
|
41
|
+
</mastercomment4>
|
42
|
+
</comments>
|
43
|
+
<media>
|
44
|
+
<video>
|
45
|
+
<track>
|
46
|
+
<clipitem id="ConuntDown-RSZ1">
|
47
|
+
<name>ConuntDown-RSZ</name>
|
48
|
+
<duration>100</duration>
|
49
|
+
<rate>
|
50
|
+
<ntsc>FALSE</ntsc>
|
51
|
+
<timebase>25</timebase>
|
52
|
+
</rate>
|
53
|
+
<in>0</in>
|
54
|
+
<out>100</out>
|
55
|
+
<start>0</start>
|
56
|
+
<end>100</end>
|
57
|
+
<pixelaspectratio>PAL-601</pixelaspectratio>
|
58
|
+
<anamorphic>FALSE</anamorphic>
|
59
|
+
<alphatype>none</alphatype>
|
60
|
+
<masterclipid>ConuntDown-RSZ</masterclipid>
|
61
|
+
<logginginfo>
|
62
|
+
<scene>
|
63
|
+
</scene>
|
64
|
+
<shottake>
|
65
|
+
</shottake>
|
66
|
+
<lognote>
|
67
|
+
</lognote>
|
68
|
+
<good>FALSE</good>
|
69
|
+
</logginginfo>
|
70
|
+
<labels>
|
71
|
+
<label2>
|
72
|
+
</label2>
|
73
|
+
</labels>
|
74
|
+
<comments>
|
75
|
+
<mastercomment1>
|
76
|
+
</mastercomment1>
|
77
|
+
<mastercomment2>
|
78
|
+
</mastercomment2>
|
79
|
+
<mastercomment3>
|
80
|
+
</mastercomment3>
|
81
|
+
<mastercomment4>
|
82
|
+
</mastercomment4>
|
83
|
+
</comments>
|
84
|
+
<file id="ConuntDown-RSZ2">
|
85
|
+
<name>ConuntDown-RSZ.mov</name>
|
86
|
+
<pathurl>file://localhost/Users/julik/Desktop/VFX_Projectery/ConuntDown-RSZ.mov</pathurl>
|
87
|
+
<rate>
|
88
|
+
<timebase>25</timebase>
|
89
|
+
</rate>
|
90
|
+
<duration>100</duration>
|
91
|
+
<timecode>
|
92
|
+
<rate>
|
93
|
+
<timebase>25</timebase>
|
94
|
+
</rate>
|
95
|
+
<string>00:00:00:00</string>
|
96
|
+
<frame>0</frame>
|
97
|
+
<displayformat>NDF</displayformat>
|
98
|
+
<source>source</source>
|
99
|
+
<reel>
|
100
|
+
<name>Julik</name>
|
101
|
+
</reel>
|
102
|
+
</timecode>
|
103
|
+
<media>
|
104
|
+
<video>
|
105
|
+
<duration>100</duration>
|
106
|
+
<samplecharacteristics>
|
107
|
+
<width>720</width>
|
108
|
+
<height>576</height>
|
109
|
+
</samplecharacteristics>
|
110
|
+
</video>
|
111
|
+
</media>
|
112
|
+
</file>
|
113
|
+
<sourcetrack>
|
114
|
+
<mediatype>video</mediatype>
|
115
|
+
</sourcetrack>
|
116
|
+
<fielddominance>lower</fielddominance>
|
117
|
+
<itemhistory>
|
118
|
+
<uuid>CCCA8B3B-CB09-475B-87E8-409D80CAC39E</uuid>
|
119
|
+
</itemhistory>
|
120
|
+
</clipitem>
|
121
|
+
<enabled>TRUE</enabled>
|
122
|
+
<locked>FALSE</locked>
|
123
|
+
</track>
|
124
|
+
</video>
|
125
|
+
</media>
|
126
|
+
</clip>
|
127
|
+
<sequence id="Sequence 1 ">
|
128
|
+
<uuid>C17CD975-199B-4936-82EE-B62324D441ED</uuid>
|
129
|
+
<updatebehavior>add</updatebehavior>
|
130
|
+
<name>Sequence 1</name>
|
131
|
+
<duration>182</duration>
|
132
|
+
<rate>
|
133
|
+
<ntsc>FALSE</ntsc>
|
134
|
+
<timebase>25</timebase>
|
135
|
+
</rate>
|
136
|
+
<timecode>
|
137
|
+
<rate>
|
138
|
+
<ntsc>FALSE</ntsc>
|
139
|
+
<timebase>25</timebase>
|
140
|
+
</rate>
|
141
|
+
<string>01:00:00:00</string>
|
142
|
+
<frame>90000</frame>
|
143
|
+
<source>source</source>
|
144
|
+
<displayformat>NDF</displayformat>
|
145
|
+
</timecode>
|
146
|
+
<in>-1</in>
|
147
|
+
<out>-1</out>
|
148
|
+
<media>
|
149
|
+
<video>
|
150
|
+
<format>
|
151
|
+
<samplecharacteristics>
|
152
|
+
<width>720</width>
|
153
|
+
<height>576</height>
|
154
|
+
<anamorphic>FALSE</anamorphic>
|
155
|
+
<pixelaspectratio>PAL-601</pixelaspectratio>
|
156
|
+
<fielddominance>lower</fielddominance>
|
157
|
+
<rate>
|
158
|
+
<ntsc>FALSE</ntsc>
|
159
|
+
<timebase>25</timebase>
|
160
|
+
</rate>
|
161
|
+
<colordepth>24</colordepth>
|
162
|
+
<codec>
|
163
|
+
<name>Apple DV - PAL</name>
|
164
|
+
<appspecificdata>
|
165
|
+
<appname>Final Cut Pro</appname>
|
166
|
+
<appmanufacturer>Apple Inc.</appmanufacturer>
|
167
|
+
<appversion>6.0</appversion>
|
168
|
+
<data>
|
169
|
+
<qtcodec>
|
170
|
+
<codecname>Apple DV - PAL</codecname>
|
171
|
+
<codectypename>DV - PAL</codectypename>
|
172
|
+
<codectypecode>dvcp</codectypecode>
|
173
|
+
<codecvendorcode>appl</codecvendorcode>
|
174
|
+
<spatialquality>1023</spatialquality>
|
175
|
+
<temporalquality>0</temporalquality>
|
176
|
+
<keyframerate>0</keyframerate>
|
177
|
+
<datarate>0</datarate>
|
178
|
+
</qtcodec>
|
179
|
+
</data>
|
180
|
+
</appspecificdata>
|
181
|
+
</codec>
|
182
|
+
</samplecharacteristics>
|
183
|
+
<appspecificdata>
|
184
|
+
<appname>Final Cut Pro</appname>
|
185
|
+
<appmanufacturer>Apple Inc.</appmanufacturer>
|
186
|
+
<appversion>6.0</appversion>
|
187
|
+
<data>
|
188
|
+
<fcpimageprocessing>
|
189
|
+
<useyuv>TRUE</useyuv>
|
190
|
+
<usesuperwhite>FALSE</usesuperwhite>
|
191
|
+
<rendermode>YUV8BPP</rendermode>
|
192
|
+
</fcpimageprocessing>
|
193
|
+
</data>
|
194
|
+
</appspecificdata>
|
195
|
+
</format>
|
196
|
+
<track>
|
197
|
+
<clipitem id="ConuntDown-RSZ3">
|
198
|
+
<name>ConuntDown-RSZ</name>
|
199
|
+
<duration>100</duration>
|
200
|
+
<rate>
|
201
|
+
<ntsc>FALSE</ntsc>
|
202
|
+
<timebase>25</timebase>
|
203
|
+
</rate>
|
204
|
+
<in>12</in>
|
205
|
+
<out>62</out>
|
206
|
+
<start>0</start>
|
207
|
+
<end>50</end>
|
208
|
+
<pixelaspectratio>PAL-601</pixelaspectratio>
|
209
|
+
<enabled>TRUE</enabled>
|
210
|
+
<anamorphic>FALSE</anamorphic>
|
211
|
+
<alphatype>none</alphatype>
|
212
|
+
<masterclipid>ConuntDown-RSZ</masterclipid>
|
213
|
+
<logginginfo>
|
214
|
+
<scene>
|
215
|
+
</scene>
|
216
|
+
<shottake>
|
217
|
+
</shottake>
|
218
|
+
<lognote>
|
219
|
+
</lognote>
|
220
|
+
<good>FALSE</good>
|
221
|
+
</logginginfo>
|
222
|
+
<labels>
|
223
|
+
<label2>
|
224
|
+
</label2>
|
225
|
+
</labels>
|
226
|
+
<comments>
|
227
|
+
<mastercomment1>
|
228
|
+
</mastercomment1>
|
229
|
+
<mastercomment2>
|
230
|
+
</mastercomment2>
|
231
|
+
<mastercomment3>
|
232
|
+
</mastercomment3>
|
233
|
+
<mastercomment4>
|
234
|
+
</mastercomment4>
|
235
|
+
</comments>
|
236
|
+
<file id="ConuntDown-RSZ2"/>
|
237
|
+
<filter>
|
238
|
+
<effect>
|
239
|
+
<name>Basic Motion</name>
|
240
|
+
<effectid>basic</effectid>
|
241
|
+
<effectcategory>motion</effectcategory>
|
242
|
+
<effecttype>motion</effecttype>
|
243
|
+
<mediatype>video</mediatype>
|
244
|
+
<parameter>
|
245
|
+
<parameterid>scale</parameterid>
|
246
|
+
<name>Scale</name>
|
247
|
+
<valuemin>0</valuemin>
|
248
|
+
<valuemax>1000</valuemax>
|
249
|
+
<value>100</value>
|
250
|
+
</parameter>
|
251
|
+
<parameter>
|
252
|
+
<parameterid>rotation</parameterid>
|
253
|
+
<name>Rotation</name>
|
254
|
+
<valuemin>-8640</valuemin>
|
255
|
+
<valuemax>8640</valuemax>
|
256
|
+
<value>0</value>
|
257
|
+
</parameter>
|
258
|
+
<parameter>
|
259
|
+
<parameterid>center</parameterid>
|
260
|
+
<name>Center</name>
|
261
|
+
<value>
|
262
|
+
<horiz>0</horiz>
|
263
|
+
<vert>0</vert>
|
264
|
+
</value>
|
265
|
+
</parameter>
|
266
|
+
<parameter>
|
267
|
+
<parameterid>centerOffset</parameterid>
|
268
|
+
<name>Anchor Point</name>
|
269
|
+
<value>
|
270
|
+
<horiz>0</horiz>
|
271
|
+
<vert>0</vert>
|
272
|
+
</value>
|
273
|
+
</parameter>
|
274
|
+
</effect>
|
275
|
+
</filter>
|
276
|
+
<filter>
|
277
|
+
<enabled>FALSE</enabled>
|
278
|
+
<effect>
|
279
|
+
<name>Drop Shadow</name>
|
280
|
+
<effectid>dropshadow</effectid>
|
281
|
+
<effectcategory>motion</effectcategory>
|
282
|
+
<effecttype>motion</effecttype>
|
283
|
+
<mediatype>video</mediatype>
|
284
|
+
<parameter>
|
285
|
+
<parameterid>offset</parameterid>
|
286
|
+
<name>offset</name>
|
287
|
+
<valuemin>-100</valuemin>
|
288
|
+
<valuemax>100</valuemax>
|
289
|
+
<value>2</value>
|
290
|
+
</parameter>
|
291
|
+
<parameter>
|
292
|
+
<parameterid>angle</parameterid>
|
293
|
+
<name>angle</name>
|
294
|
+
<valuemin>-720</valuemin>
|
295
|
+
<valuemax>720</valuemax>
|
296
|
+
<value>135</value>
|
297
|
+
</parameter>
|
298
|
+
<parameter>
|
299
|
+
<parameterid>color</parameterid>
|
300
|
+
<name>color</name>
|
301
|
+
<value>
|
302
|
+
<alpha>0</alpha>
|
303
|
+
<red>0</red>
|
304
|
+
<green>0</green>
|
305
|
+
<blue>0</blue>
|
306
|
+
</value>
|
307
|
+
</parameter>
|
308
|
+
<parameter>
|
309
|
+
<parameterid>softness</parameterid>
|
310
|
+
<name>softness</name>
|
311
|
+
<valuemin>0</valuemin>
|
312
|
+
<valuemax>100</valuemax>
|
313
|
+
<value>10</value>
|
314
|
+
</parameter>
|
315
|
+
<parameter>
|
316
|
+
<parameterid>opacity</parameterid>
|
317
|
+
<name>opacity</name>
|
318
|
+
<valuemin>0</valuemin>
|
319
|
+
<valuemax>100</valuemax>
|
320
|
+
<value>50</value>
|
321
|
+
</parameter>
|
322
|
+
</effect>
|
323
|
+
</filter>
|
324
|
+
<filter>
|
325
|
+
<enabled>FALSE</enabled>
|
326
|
+
<effect>
|
327
|
+
<name>Motion Blur</name>
|
328
|
+
<effectid>motionblur</effectid>
|
329
|
+
<effectcategory>motion</effectcategory>
|
330
|
+
<effecttype>motion</effecttype>
|
331
|
+
<mediatype>video</mediatype>
|
332
|
+
<parameter>
|
333
|
+
<parameterid>duration</parameterid>
|
334
|
+
<name>% Blur</name>
|
335
|
+
<valuemin>0</valuemin>
|
336
|
+
<valuemax>1000</valuemax>
|
337
|
+
<value>500</value>
|
338
|
+
</parameter>
|
339
|
+
<parameter>
|
340
|
+
<parameterid>samples</parameterid>
|
341
|
+
<name>Samples</name>
|
342
|
+
<valuemin>1</valuemin>
|
343
|
+
<valuemax>16</valuemax>
|
344
|
+
<value>4</value>
|
345
|
+
</parameter>
|
346
|
+
</effect>
|
347
|
+
</filter>
|
348
|
+
<filter>
|
349
|
+
<effect>
|
350
|
+
<name>Crop</name>
|
351
|
+
<effectid>crop</effectid>
|
352
|
+
<effectcategory>motion</effectcategory>
|
353
|
+
<effecttype>motion</effecttype>
|
354
|
+
<mediatype>video</mediatype>
|
355
|
+
<parameter>
|
356
|
+
<parameterid>left</parameterid>
|
357
|
+
<name>left</name>
|
358
|
+
<valuemin>0</valuemin>
|
359
|
+
<valuemax>100</valuemax>
|
360
|
+
<value>0</value>
|
361
|
+
</parameter>
|
362
|
+
<parameter>
|
363
|
+
<parameterid>right</parameterid>
|
364
|
+
<name>right</name>
|
365
|
+
<valuemin>0</valuemin>
|
366
|
+
<valuemax>100</valuemax>
|
367
|
+
<value>0</value>
|
368
|
+
</parameter>
|
369
|
+
<parameter>
|
370
|
+
<parameterid>top</parameterid>
|
371
|
+
<name>top</name>
|
372
|
+
<valuemin>0</valuemin>
|
373
|
+
<valuemax>100</valuemax>
|
374
|
+
<value>0</value>
|
375
|
+
</parameter>
|
376
|
+
<parameter>
|
377
|
+
<parameterid>bottom</parameterid>
|
378
|
+
<name>bottom</name>
|
379
|
+
<valuemin>0</valuemin>
|
380
|
+
<valuemax>100</valuemax>
|
381
|
+
<value>0</value>
|
382
|
+
</parameter>
|
383
|
+
<parameter>
|
384
|
+
<parameterid>edgefeather</parameterid>
|
385
|
+
<name>edgefeather</name>
|
386
|
+
<valuemin>0</valuemin>
|
387
|
+
<valuemax>100</valuemax>
|
388
|
+
<value>0</value>
|
389
|
+
</parameter>
|
390
|
+
</effect>
|
391
|
+
</filter>
|
392
|
+
<filter>
|
393
|
+
<effect>
|
394
|
+
<name>Distort</name>
|
395
|
+
<effectid>deformation</effectid>
|
396
|
+
<effectcategory>motion</effectcategory>
|
397
|
+
<effecttype>motion</effecttype>
|
398
|
+
<mediatype>video</mediatype>
|
399
|
+
<parameter>
|
400
|
+
<parameterid>ulcorner</parameterid>
|
401
|
+
<name>Upper Left</name>
|
402
|
+
<value>
|
403
|
+
<horiz>-0.5</horiz>
|
404
|
+
<vert>-0.5</vert>
|
405
|
+
</value>
|
406
|
+
</parameter>
|
407
|
+
<parameter>
|
408
|
+
<parameterid>urcorner</parameterid>
|
409
|
+
<name>Upper Right</name>
|
410
|
+
<value>
|
411
|
+
<horiz>0.5</horiz>
|
412
|
+
<vert>-0.5</vert>
|
413
|
+
</value>
|
414
|
+
</parameter>
|
415
|
+
<parameter>
|
416
|
+
<parameterid>lrcorner</parameterid>
|
417
|
+
<name>Lower Right</name>
|
418
|
+
<value>
|
419
|
+
<horiz>0.5</horiz>
|
420
|
+
<vert>0.5</vert>
|
421
|
+
</value>
|
422
|
+
</parameter>
|
423
|
+
<parameter>
|
424
|
+
<parameterid>llcorner</parameterid>
|
425
|
+
<name>Lower Left</name>
|
426
|
+
<value>
|
427
|
+
<horiz>-0.5</horiz>
|
428
|
+
<vert>0.5</vert>
|
429
|
+
</value>
|
430
|
+
</parameter>
|
431
|
+
<parameter>
|
432
|
+
<parameterid>aspect</parameterid>
|
433
|
+
<name>Aspect</name>
|
434
|
+
<valuemin>-10000</valuemin>
|
435
|
+
<valuemax>10000</valuemax>
|
436
|
+
<value>0</value>
|
437
|
+
</parameter>
|
438
|
+
</effect>
|
439
|
+
</filter>
|
440
|
+
<filter>
|
441
|
+
<effect>
|
442
|
+
<name>Opacity</name>
|
443
|
+
<effectid>opacity</effectid>
|
444
|
+
<effectcategory>motion</effectcategory>
|
445
|
+
<effecttype>motion</effecttype>
|
446
|
+
<mediatype>video</mediatype>
|
447
|
+
<parameter>
|
448
|
+
<parameterid>opacity</parameterid>
|
449
|
+
<name>opacity</name>
|
450
|
+
<valuemin>0</valuemin>
|
451
|
+
<valuemax>100</valuemax>
|
452
|
+
<value>100</value>
|
453
|
+
</parameter>
|
454
|
+
</effect>
|
455
|
+
</filter>
|
456
|
+
<filter>
|
457
|
+
<effect>
|
458
|
+
<name>Time Remap</name>
|
459
|
+
<effectid>timeremap</effectid>
|
460
|
+
<effectcategory>motion</effectcategory>
|
461
|
+
<effecttype>motion</effecttype>
|
462
|
+
<mediatype>video</mediatype>
|
463
|
+
<parameter>
|
464
|
+
<parameterid>variablespeed</parameterid>
|
465
|
+
<name>variablespeed</name>
|
466
|
+
<valuemin>0</valuemin>
|
467
|
+
<valuemax>1</valuemax>
|
468
|
+
<value>1</value>
|
469
|
+
</parameter>
|
470
|
+
<parameter>
|
471
|
+
<parameterid>mappedduration</parameterid>
|
472
|
+
<name>mappedduration</name>
|
473
|
+
<value>
|
474
|
+
<timecode>
|
475
|
+
<rate>
|
476
|
+
<timebase>0</timebase>
|
477
|
+
</rate>
|
478
|
+
<string>0</string>
|
479
|
+
<frame>0</frame>
|
480
|
+
<displayformat>NDF</displayformat>
|
481
|
+
</timecode>
|
482
|
+
</value>
|
483
|
+
</parameter>
|
484
|
+
<parameter>
|
485
|
+
<parameterid>speed</parameterid>
|
486
|
+
<name>speed</name>
|
487
|
+
<valuemin>-100000</valuemin>
|
488
|
+
<valuemax>100000</valuemax>
|
489
|
+
<value>100</value>
|
490
|
+
</parameter>
|
491
|
+
<parameter>
|
492
|
+
<parameterid>reverse</parameterid>
|
493
|
+
<name>reverse</name>
|
494
|
+
<value>FALSE</value>
|
495
|
+
</parameter>
|
496
|
+
<parameter>
|
497
|
+
<parameterid>frameblending</parameterid>
|
498
|
+
<name>frameblending</name>
|
499
|
+
<value>TRUE</value>
|
500
|
+
</parameter>
|
501
|
+
<parameter>
|
502
|
+
<parameterid>graphdict</parameterid>
|
503
|
+
<name>graphdict</name>
|
504
|
+
<valuemin>0</valuemin>
|
505
|
+
<valuemax>100</valuemax>
|
506
|
+
<keyframe>
|
507
|
+
<when>0</when>
|
508
|
+
<value>0</value>
|
509
|
+
<speedkfstart>TRUE</speedkfstart>
|
510
|
+
<speedvirtualkf>TRUE</speedvirtualkf>
|
511
|
+
<origvalue>0</origvalue>
|
512
|
+
</keyframe>
|
513
|
+
<keyframe>
|
514
|
+
<when>12</when>
|
515
|
+
<value>12</value>
|
516
|
+
<speedkfin>TRUE</speedkfin>
|
517
|
+
<speedvirtualkf>TRUE</speedvirtualkf>
|
518
|
+
<origvalue>12</origvalue>
|
519
|
+
</keyframe>
|
520
|
+
<keyframe>
|
521
|
+
<when>28</when>
|
522
|
+
<value>14</value>
|
523
|
+
</keyframe>
|
524
|
+
<keyframe>
|
525
|
+
<when>40</when>
|
526
|
+
<value>27</value>
|
527
|
+
</keyframe>
|
528
|
+
<keyframe>
|
529
|
+
<when>45</when>
|
530
|
+
<value>31</value>
|
531
|
+
</keyframe>
|
532
|
+
<keyframe>
|
533
|
+
<when>52</when>
|
534
|
+
<value>40</value>
|
535
|
+
</keyframe>
|
536
|
+
<keyframe>
|
537
|
+
<when>58</when>
|
538
|
+
<value>42</value>
|
539
|
+
</keyframe>
|
540
|
+
<keyframe>
|
541
|
+
<when>62</when>
|
542
|
+
<value>62</value>
|
543
|
+
<speedkfout>TRUE</speedkfout>
|
544
|
+
<speedvirtualkf>TRUE</speedvirtualkf>
|
545
|
+
<origvalue>62</origvalue>
|
546
|
+
</keyframe>
|
547
|
+
<keyframe>
|
548
|
+
<when>100</when>
|
549
|
+
<value>100</value>
|
550
|
+
<speedkfend>TRUE</speedkfend>
|
551
|
+
<speedvirtualkf>TRUE</speedvirtualkf>
|
552
|
+
<origvalue>100</origvalue>
|
553
|
+
</keyframe>
|
554
|
+
<interpolation>
|
555
|
+
<name>FCPCurve</name>
|
556
|
+
</interpolation>
|
557
|
+
<value>100</value>
|
558
|
+
</parameter>
|
559
|
+
</effect>
|
560
|
+
</filter>
|
561
|
+
<sourcetrack>
|
562
|
+
<mediatype>video</mediatype>
|
563
|
+
</sourcetrack>
|
564
|
+
<fielddominance>lower</fielddominance>
|
565
|
+
<itemhistory>
|
566
|
+
<uuid>31AD199E-84E0-4835-BD17-2893D057D4B0</uuid>
|
567
|
+
</itemhistory>
|
568
|
+
</clipitem>
|
569
|
+
<clipitem id="ConuntDown-RSZ4">
|
570
|
+
<name>ConuntDown-RSZ</name>
|
571
|
+
<duration>100</duration>
|
572
|
+
<rate>
|
573
|
+
<ntsc>FALSE</ntsc>
|
574
|
+
<timebase>25</timebase>
|
575
|
+
</rate>
|
576
|
+
<in>27</in>
|
577
|
+
<out>100</out>
|
578
|
+
<start>50</start>
|
579
|
+
<end>123</end>
|
580
|
+
<pixelaspectratio>PAL-601</pixelaspectratio>
|
581
|
+
<enabled>TRUE</enabled>
|
582
|
+
<anamorphic>FALSE</anamorphic>
|
583
|
+
<alphatype>none</alphatype>
|
584
|
+
<masterclipid>ConuntDown-RSZ</masterclipid>
|
585
|
+
<logginginfo>
|
586
|
+
<scene>
|
587
|
+
</scene>
|
588
|
+
<shottake>
|
589
|
+
</shottake>
|
590
|
+
<lognote>
|
591
|
+
</lognote>
|
592
|
+
<good>FALSE</good>
|
593
|
+
</logginginfo>
|
594
|
+
<labels>
|
595
|
+
<label2>
|
596
|
+
</label2>
|
597
|
+
</labels>
|
598
|
+
<comments>
|
599
|
+
<mastercomment1>
|
600
|
+
</mastercomment1>
|
601
|
+
<mastercomment2>
|
602
|
+
</mastercomment2>
|
603
|
+
<mastercomment3>
|
604
|
+
</mastercomment3>
|
605
|
+
<mastercomment4>
|
606
|
+
</mastercomment4>
|
607
|
+
</comments>
|
608
|
+
<file id="ConuntDown-RSZ2"/>
|
609
|
+
<sourcetrack>
|
610
|
+
<mediatype>video</mediatype>
|
611
|
+
</sourcetrack>
|
612
|
+
<fielddominance>lower</fielddominance>
|
613
|
+
<itemhistory>
|
614
|
+
<uuid>4B5B9F3E-F626-4DCB-83E0-286BBA7C1B19</uuid>
|
615
|
+
</itemhistory>
|
616
|
+
</clipitem>
|
617
|
+
<clipitem id="ConuntDown-RSZ5">
|
618
|
+
<name>ConuntDown-RSZ</name>
|
619
|
+
<duration>80</duration>
|
620
|
+
<rate>
|
621
|
+
<ntsc>FALSE</ntsc>
|
622
|
+
<timebase>25</timebase>
|
623
|
+
</rate>
|
624
|
+
<in>21</in>
|
625
|
+
<out>80</out>
|
626
|
+
<start>123</start>
|
627
|
+
<end>182</end>
|
628
|
+
<pixelaspectratio>PAL-601</pixelaspectratio>
|
629
|
+
<enabled>TRUE</enabled>
|
630
|
+
<anamorphic>FALSE</anamorphic>
|
631
|
+
<alphatype>none</alphatype>
|
632
|
+
<masterclipid>ConuntDown-RSZ</masterclipid>
|
633
|
+
<logginginfo>
|
634
|
+
<scene>
|
635
|
+
</scene>
|
636
|
+
<shottake>
|
637
|
+
</shottake>
|
638
|
+
<lognote>
|
639
|
+
</lognote>
|
640
|
+
<good>FALSE</good>
|
641
|
+
</logginginfo>
|
642
|
+
<labels>
|
643
|
+
<label2>
|
644
|
+
</label2>
|
645
|
+
</labels>
|
646
|
+
<comments>
|
647
|
+
<mastercomment1>
|
648
|
+
</mastercomment1>
|
649
|
+
<mastercomment2>
|
650
|
+
</mastercomment2>
|
651
|
+
<mastercomment3>
|
652
|
+
</mastercomment3>
|
653
|
+
<mastercomment4>
|
654
|
+
</mastercomment4>
|
655
|
+
</comments>
|
656
|
+
<file id="ConuntDown-RSZ2"/>
|
657
|
+
<filter>
|
658
|
+
<effect>
|
659
|
+
<name>Time Remap</name>
|
660
|
+
<effectid>timeremap</effectid>
|
661
|
+
<effectcategory>motion</effectcategory>
|
662
|
+
<effecttype>motion</effecttype>
|
663
|
+
<mediatype>video</mediatype>
|
664
|
+
<parameter>
|
665
|
+
<parameterid>variablespeed</parameterid>
|
666
|
+
<name>variablespeed</name>
|
667
|
+
<valuemin>0</valuemin>
|
668
|
+
<valuemax>1</valuemax>
|
669
|
+
<value>0</value>
|
670
|
+
</parameter>
|
671
|
+
<parameter>
|
672
|
+
<parameterid>mappedduration</parameterid>
|
673
|
+
<name>mappedduration</name>
|
674
|
+
<value>
|
675
|
+
<timecode>
|
676
|
+
<rate>
|
677
|
+
<timebase>0</timebase>
|
678
|
+
</rate>
|
679
|
+
<string>0</string>
|
680
|
+
<frame>0</frame>
|
681
|
+
<displayformat>NDF</displayformat>
|
682
|
+
</timecode>
|
683
|
+
</value>
|
684
|
+
</parameter>
|
685
|
+
<parameter>
|
686
|
+
<parameterid>speed</parameterid>
|
687
|
+
<name>speed</name>
|
688
|
+
<valuemin>-100000</valuemin>
|
689
|
+
<valuemax>100000</valuemax>
|
690
|
+
<value>123.729</value>
|
691
|
+
</parameter>
|
692
|
+
<parameter>
|
693
|
+
<parameterid>reverse</parameterid>
|
694
|
+
<name>reverse</name>
|
695
|
+
<value>FALSE</value>
|
696
|
+
</parameter>
|
697
|
+
<parameter>
|
698
|
+
<parameterid>frameblending</parameterid>
|
699
|
+
<name>frameblending</name>
|
700
|
+
<value>TRUE</value>
|
701
|
+
</parameter>
|
702
|
+
<parameter>
|
703
|
+
<parameterid>graphdict</parameterid>
|
704
|
+
<name>graphdict</name>
|
705
|
+
<valuemin>0</valuemin>
|
706
|
+
<valuemax>100</valuemax>
|
707
|
+
<keyframe>
|
708
|
+
<when>0</when>
|
709
|
+
<value>0</value>
|
710
|
+
<speedkfstart>TRUE</speedkfstart>
|
711
|
+
<speedvirtualkf>TRUE</speedvirtualkf>
|
712
|
+
<origvalue>0</origvalue>
|
713
|
+
</keyframe>
|
714
|
+
<keyframe>
|
715
|
+
<when>21</when>
|
716
|
+
<value>27</value>
|
717
|
+
<speedkfin>TRUE</speedkfin>
|
718
|
+
<speedvirtualkf>TRUE</speedvirtualkf>
|
719
|
+
<origvalue>27</origvalue>
|
720
|
+
</keyframe>
|
721
|
+
<keyframe>
|
722
|
+
<when>80</when>
|
723
|
+
<value>100</value>
|
724
|
+
<speedkfout>TRUE</speedkfout>
|
725
|
+
<speedvirtualkf>TRUE</speedvirtualkf>
|
726
|
+
<origvalue>100</origvalue>
|
727
|
+
</keyframe>
|
728
|
+
<interpolation>
|
729
|
+
<name>FCPCurve</name>
|
730
|
+
</interpolation>
|
731
|
+
<value>27</value>
|
732
|
+
</parameter>
|
733
|
+
</effect>
|
734
|
+
</filter>
|
735
|
+
<sourcetrack>
|
736
|
+
<mediatype>video</mediatype>
|
737
|
+
</sourcetrack>
|
738
|
+
<fielddominance>lower</fielddominance>
|
739
|
+
<itemhistory>
|
740
|
+
<uuid>0F64B420-B9A5-4D82-A0FD-C26FFF932856</uuid>
|
741
|
+
</itemhistory>
|
742
|
+
</clipitem>
|
743
|
+
<enabled>TRUE</enabled>
|
744
|
+
<locked>FALSE</locked>
|
745
|
+
</track>
|
746
|
+
</video>
|
747
|
+
<audio>
|
748
|
+
<format>
|
749
|
+
<samplecharacteristics>
|
750
|
+
<depth>16</depth>
|
751
|
+
<samplerate>48000</samplerate>
|
752
|
+
</samplecharacteristics>
|
753
|
+
</format>
|
754
|
+
<outputs>
|
755
|
+
<group>
|
756
|
+
<index>1</index>
|
757
|
+
<numchannels>2</numchannels>
|
758
|
+
<downmix>0</downmix>
|
759
|
+
<channel>
|
760
|
+
<index>1</index>
|
761
|
+
</channel>
|
762
|
+
<channel>
|
763
|
+
<index>2</index>
|
764
|
+
</channel>
|
765
|
+
</group>
|
766
|
+
</outputs>
|
767
|
+
<in>-1</in>
|
768
|
+
<out>-1</out>
|
769
|
+
<track>
|
770
|
+
<enabled>TRUE</enabled>
|
771
|
+
<locked>FALSE</locked>
|
772
|
+
<outputchannelindex>1</outputchannelindex>
|
773
|
+
</track>
|
774
|
+
<track>
|
775
|
+
<enabled>TRUE</enabled>
|
776
|
+
<locked>FALSE</locked>
|
777
|
+
<outputchannelindex>2</outputchannelindex>
|
778
|
+
</track>
|
779
|
+
<track>
|
780
|
+
<enabled>TRUE</enabled>
|
781
|
+
<locked>FALSE</locked>
|
782
|
+
<outputchannelindex>1</outputchannelindex>
|
783
|
+
</track>
|
784
|
+
<track>
|
785
|
+
<enabled>TRUE</enabled>
|
786
|
+
<locked>FALSE</locked>
|
787
|
+
<outputchannelindex>2</outputchannelindex>
|
788
|
+
</track>
|
789
|
+
<filter>
|
790
|
+
<effect>
|
791
|
+
<name>Audio Levels</name>
|
792
|
+
<effectid>audiolevels</effectid>
|
793
|
+
<effectcategory>audiolevels</effectcategory>
|
794
|
+
<effecttype>audiolevels</effecttype>
|
795
|
+
<mediatype>audio</mediatype>
|
796
|
+
<parameter>
|
797
|
+
<name>Level</name>
|
798
|
+
<parameterid>level</parameterid>
|
799
|
+
<valuemin>0</valuemin>
|
800
|
+
<valuemax>3.98109</valuemax>
|
801
|
+
<value>1</value>
|
802
|
+
</parameter>
|
803
|
+
</effect>
|
804
|
+
</filter>
|
805
|
+
</audio>
|
806
|
+
</media>
|
807
|
+
<ismasterclip>FALSE</ismasterclip>
|
808
|
+
</sequence>
|
809
|
+
</children>
|
810
|
+
</project>
|
811
|
+
</xmeml>
|
812
|
+
|