Improving PhotoStory 3 output quality

1) Always build your Story at 30fps (Profile setting)

This means a Profile setting of avgtimeperframe="333333". The pixel counts will be whatever you need for photoyour final movie (eg 720x576 for DVD or 1440x1080 for 16:9 133% pre-distorted HD)

2) Do your own photo interpolation

Pre-crop each displayed . Chop the photo into multiple parts to force extra sub-frames.

For each image :- a) Generate a new entry = transitoin with previous photo (t= half the total transition time) b) Subtract time for post-transition (if any) as the 'last' entry, t= half next image transition time c) Chop up the remaining time into sub-entries, t=0.5s (or less) each

3) Provide lots of pixels

Chopping the photos into smaller steps could easily lead to 'zoom jitter' (caused by Photo-Story's interpolation from the start to the end of the zoom). One way to minimise this is to feed PS3 lots of pixels. However there is a limit .... each 7200x5400 photo at 8x jpeg compression will require about 6.75Mb. A 'typical' 10 minute (600 second) story 'chopped' into 0.5s steps will take up approx 6.75x1200 or about 8Gb. Even if PhotoStory can cope with 8Gb projects,it's highly unlikely we can build them :-)

Fortunately, the 'Visual Units' are not numbered, so splitting them into smaller parts is easy.

; Note - the first and last have to be treated as 'exceptions' Open the Project.xml, read and save firts 2 line :loop if all i/p done, exit else Get next vu, set vuTotalTime get transition with previous, set prevTime get transition with next, set nextTime get start box (integer pixel posn) get end box (integer pixel posn) if start=end, no split needed, copy entire vu to output and loop: if prevTime not zero, subtract prevTime from vuTotalTime and o/p prev-transition vu subtract nextTime from vuTotalTime multiply vuTotalTime by 2 to get N .5 frames o/p N sub-frames if nextTime not zero, o/p next-transition vu back to loop:

Before the split, start and end crop box consist of an integer pixel positions (upperleft X & Y) and an integer height & width. The goal, after the split, is to keep pixel accuracy.