Preface - Teasers - Enhanced Terminology - Reference - Encoding of DVD & Bluray Content - About Audio - Recovering The Camera Shots
Basic Primitives - Pulldown Primitives - Advanced Interpolations - Seen In The Wild, Repairing Video
"28 DAYS" [2000] VTS_02_1.VOB in which 2-3-2-3 pulldown titles were overlaid on bar scenes that had flawed video edits.
Specimen: '28 DAYS' VTS_02_1.VOB.png
Biopsy: ___ shoot bar scene ___________ make bad cut [note 1]
/ / / _______________________________________________ overlay titles
/ / / / /
[[15pps__(1)(11)=30pps__60hps__(1..)(..) + 24pps__48hps__(Aa-Dd)(AaBbBcCdDd)=60hps]30pps]30'fps
Rehabilitation:
_______________ force x1.001 speedup
/ ____/_________________________________________________________ halfbob
/ / / / _____________________ downsample audio by x/1.001
/ / / / / /
30'fps[30pps__60hps__(12)(1 1§2 2)=90hps__(123)(1223)=120hps__60pps]60fps & 48KHz[x/1.001]48KHz
Analysis of the rehabilitation:
of bar scene, (a+B_________)(b+B_________)(b+C_________)(c+C_________)(c+D_________) ...30pps
halfbobed; (a+a§B)(a§B+B)(b+b§B)(b§B+B)(b+b§C)(b§C+C)(c+c§C)(c§C+C)(c+c§D)(c§D+D) ...60pps
of titles, (A+a_________)(B+b_________)(B+c_________)(C+d_________)(D+d_________) ...30pps
halfbobed. (A+A§a)(A§a+a)(B+B§b)(B§b+b)(B+B§c)(B§c+c)(C+C§d)(C§d+d)(D+D§d)(D§d+d) ...60pps
[note 1] A bad cut was made prior to weaving & overlaying the titles. The bad cut left pictures field-swapped [note 2] & combed.
[note 2] In the specimen, field-swap is most clearly seen in the bridge of the nose captured in the picture that's 4th from the right.
"The Secret of SARAH SIDDONS" special feature in "ALL ABOUT EVE" Bluray, UPC 024543706878, is a forensic example of cinema-at-30'fps that was slightly wrecked by 2 mistakes.
Specimen: 'The Secret of SARAH SIDDONS', Lisa Orgolini interview, 'ALL ABOUT EVE', 00390.m2ts.png.
"The Secret of SARAH SIDDONS" is a 30'fps, made-for-TV documentary. It is a mix of 3 types of segments.
_________________________________________________ "ALL ABOUT EVE" clips and interviews (cinema-at-24'fps-soft, nothing remarkable)
/ / ________________ pans & zooms, still photos (ersatz-NTSC, nothing remarkable)
/ / / / ________________________________________________ L.O. & C.M. interviews
/ / / / / /
[24pps__48hps__(Aa-Dd)(AaBbBcCdDd)=60hps__30pps & 60'hps__30'pps & 24pps__48hps__(Aa-Dd)(AaBcCdDdDd)=60hps__30pps]30'fps
The problem is that 4 of the 21 interview segments: 3 Lisa Orgolini segments & 1 Chris Mankiewicz segment, are strange. They were probably added as an afterthought.
Analysis: Based on the cadence of the combed frames it is apparent that, like the other interviews, the L.O. & C.M. interviews began as 2-3-2-3 pulldown pictures.
___ camera shots
/ _____________________ 2-3-2-3 pulldown to 30pps
/ / /
[24pps__48hps__(Aa-Dd)(AaBbBcCdDd)=60hps__30pps]30'fps
Next, the L.O. & C.M. interviews were probably converted from 30'fps to 24'fps -- why the conversion was done is unknown. In that conversion, instead of applying reverse 2-3-2-3 pulldown, picture Bb was dropped (and halfpic b was thereby lost).
________________________ frame [B+b] dropped -- 1st mistake
/ /
30'fps[30pps__60hps__(AaBbBcCdDd)(AaBcCdDd)=48hps__24pps]24'fps
Next, the L.O. & C.M. interviews were added to the almost finished "The Secret of SARAH SIDDONS", but the missing halfpic b created difficulty. At that point, the original camera shots for the L.O. & C.M. interviews must have no longer been available. Instead of bobbing the 1st halfpic, B, and then applying 2-3-2-3 pulldown, frame [D+d] was simply repeated.
________________________ frame [D+d] repeated -- 2nd mistake
/ /
24'fps[24pps__48hps__(AaBcCdDd)(AaBcCdDdDd)=60hps__30pps]30'fps
Rehabilitation 1 -- What could have been done (and can still be done): Cut the L.O. & C.M. interviews, send then though the notation below, then paste them back into the video.
___________ bob 'B'
//
30'fps[30'pps__60'hps__(AaBcCdDdDd)(AaBBBcCdDd)__30'pps]30'fps
Rehabilitation 2 -- A better approach: Run the entire video through the notation below. The odds are very high that only the L.O. & C.M. interviews will be matched and replaced. All other segments will be passed unchanged.
_____________ 'look' for the offending pattern
/ /__________________ the offending pattern 'seen'
/ // __________/___ synthesize a new 'b' halfpic
/ // / / /
30'fps[30'pps__60'hps__(AaBcCdDdDd)(AaB a§c BcCdDd)__30'pps]30'fps
Rehabilitation 3 -- Even better: Run the entire video through the notation below to process it -- all 3 types of segments -- in a single pass -- no cut-&-paste. Bonus: The output is 120fps.
As a single line, the notation below is 209 characters and is difficult to read. Instead, labels: "NTSC?:" "FirstNTSC:" "NTSC:" "LastNTSC:" "NotNTSC:" "Damaged?:" "Fix:" "Pulldown?:" & "ReversePulldown:", can be used to compactly format the notation as follows:
30'fps[30pps__60hps__(NTSC?:)(FirstNTSC:)(NTSC:)(LastNTSC:)(NotNTSC:)]120fps
NTSC?:AbCdEfGhIj ...'look' for 5 pictures, no repeats (i.e. ersatz-NTSC)
FirstNTSC:(Ab)(A A§b A§$ b)(A ^§b A§$ b)( )=120hps__60pps__(A)(AA)=120pps
NTSC:(Ab) (A ^§b A§$ b) =120hps__60pps__(A)(AA)=120pps
LastNTSC:(Ab)( )(A ^§b A§$ b)(A ^§b A§b b)=120hps__60pps__(A)(AA)=120pps
NotNTSC:(Damaged?:)(Fix:)__(Pulldown?:)(ReversePulldown:)=48hps__24pps__(A)(A A..§..§...§..§..$)=120pps
Damaged?:AaBcCdDdDd ...'look' for picture #4=#5 (i.e. damaged pulldown)
Fix:AaBa§cBcCdDd ...'seen' - convert to normal 2-3-2-3 pulldown
Pulldown?:AaBbBcCdDd ...'look' for halfpic #3=#5 & halfpic #8=#10 (i.e. 2-3-2-3 pulldown)
ReversePulldown:AaBbCcDd ...'seen' - reverse 2-3-2-3 pulldown to 48hps
Or, code-type formatting can make the notation more readable as follows:
30'fps[30pps__60hps__(AbCdEfGhIj) ...'look' for ersatz-NTSC
( ...ersatz-NTSC 'firstseen'
(Ab) ...'look' for 2 halfpics
(A A§b A§$ b) ...'firstseen' of 'firstseen'
(A ^§b A§$ b) ...'seen'
() ...'finalseen' is empty
=120hps__60pps__(A)(AA)=120pps
)
( ...ersatz-NTSC 'seen' - apply decomb-x2-hr
(Ab) ...'look' for 2 halfpics
(A ^§b A§$ b) ...'seen'
=120hps__60pps__(A)(AA)=120pps
)
( ...ersatz-NTSC 'finalseen'
(Ab) ...'look' for 2 halfpics
() ...'firstseen' is empty
(A ^§b A§$ b) ...'seen'
(A ^§b A§b b) ...'finalseen' of 'finalseen'
=120hps__60pps__(A)(AA)=120pps
)
( ...ersatz-NTSC 'unseen'
(AaBcCdDdDd)(AaBa§cBcCdDd)__ ...convert damaged pulldowns to normal 2-3-2-3 pulldowns
(AaBbBcCdDd)(AaBbCcDd)=48hps__24pps__ ...apply reverse 2-3-2-3 pulldown
(A)(A A..§..§...§..§..$)=120pps ...apply cinema-to-120fps interpolate-x16
)]120fps