LOT 002
PULLS
Manual · Version 1.0
ODDLOTS01/18
PULLSWhat it is
One frame-accurate still at every marker, and a contact sheet to print.
Drop the clip. Drop the marker list. Press the button. Pulls never connects to anything, so there is no account and no telemetry.
LOT 00202/18
PULLSContents

Contents

  1. 02What it is
  2. 04Before you start
  3. 05The window
  4. 06A run
  5. 07Timecode
  6. 09Rates
  7. 10Marker lists
  8. 12Stills
  9. 13Contact sheet
  10. 14The manifest
  11. 15When it stops
  12. 16Keyboard
  13. 17Housekeeping
LOT 00203/18
PULLSBefore you start

What it needs

Your key
In your download email. Asked for once, at first launch, and checked on your Mac. Keep it: a new Mac asks again. One Film & Video key opens four apps. Lost keys: software@filmflamingo.com.
Requires
macOS 12 Monterey or later, on Apple Silicon or Intel.
Takes in
A video file, and a marker list as CSV, EDL or FCPXML. Or paste timecodes straight in.
Gives back
One named still per marker, a contact sheet PDF, and a manifest of what was pulled.
Either order
Drop the clip and the list in whichever order. The app works out which is which.
LOT 00204/18
PULLSThe window

Where things are

123456
1
VIDEO. The clip.
2
MARKERS, and the read-back: how many, the range, which column.
3
READING THE TIMECODE. Source, sequence or elapsed, and the rate.
4
The button. It names the number of frames.
5
First, middle and last, with the timecode drawn on.
6
Frames, Contact sheet and Naming.
LOT 00205/18
PULLSA run
The main job

Pulling frames

  1. Drop the clip and the listEither order. Damaged files, audio-only files and still images are turned away as you add them, with a reason.
  2. Check what it readIt says how many markers it found, the first and last timecode, and which column it took them from.
  3. Say what your timecodes meanSource, sequence, or elapsed from the first frame. This setting decides whether every frame is right or every frame is wrong.
  4. Look at the previewFirst, middle and last frame with the timecode drawn on. The burn-in is on the preview only, never on an exported still.
  5. Press the buttonProgress is per frame, and it can be stopped.
LOT 00206/18
PULLSTimecode

Frames are pulled exactly

Both of the decoder's time tolerances are set to zero.

Left at their defaults they are infinite, and the decoder returns the nearest keyframe instead. On long-GOP footage that can be seconds from the frame you asked for.

Times are built from the asset's own frame duration as exact integer rationals, never from a float, and aimed at the middle of each frame rather than at its edge.

Measured

On H.264 with a keyframe every 30 frames, the defaults returned the wrong frame 14 times out of 15 sampled. With the tolerances at zero, every one was exact.

LOT 00207/18
PULLSTimecode

Which frame comes back

ONE SECOND OF H.264, KEYFRAME EVERY FIVEASKED FORDEFAULT TOLERANCEreturns the nearest keyframeTOLERANCE AT ZEROreturns the frame you asked for

The manifest records the difference as a drift_frames column. It is zero on every correct extraction.

LOT 00208/18
PULLSRates

Rates and start times

Drop-frame
Written with a semicolon before the frames, 01:00:00;12. The app reads both forms and never treats 29.97 as 30.
Rates covered
23.976, 24, 25, 29.97 drop and non-drop, 30, 47.952, 48, 50, 59.94 drop and non-drop, 60. Each round-trips 24 hours frame by frame in the tests.
Start timecode
Read from the clip's tmcd track, not assumed. Broadcast material commonly starts at 10:00:00:00. Override it, or supply one where there is no track.
Variable frame rate
Detected and said out loud. The app walks the sample durations and says how far the check looked.
On a mismatch
A list whose rate disagrees with the footage is queried, never silently converted.
LOT 00209/18
PULLSMarker lists

Four ways in

CSV
RFC 4180. Quoted fields, embedded commas and newlines, CRLF, a BOM, tabs and semicolons. It guesses the timecode column, says which it chose and why, and lets you change it. A file with no header row works too.
EDL
CMX3600. * LOC: locator lines become the markers. Without them, each event becomes a marker at its source in or record in, your choice, named from * FROM CLIP NAME:.
FCPXML
Markers on clips in a spine, positioned as offset plus marker start minus clip start, so a marker in a trimmed clip lands where the cut puts it.
Pasted
One timecode per line, anything else on the line taken as the name. Copes with bullets, numbering and tabs. A line with no timecode in it is reported, not silently dropped.
LOT 00210/18
PULLSMarker lists

Two things to know

  • Compound and multicam clips are not supported. Markers inside ref-clip and mc-clip live in a definition elsewhere in the document, and placing them would be guesswork. A file containing them still imports, and the warning says what was left out.
  • The CSV column names are a guess that shows its working. The headings it recognises are drawn from what DaVinci Resolve and Premiere are documented to write, and have not been checked against a real export from either. That is why the mapping is a visible, changeable step and why the report always names the column it read. Check the column it names before committing to a long run.
LOT 00211/18
PULLSStills

What comes out

Stills
PNG lossless by default, or JPEG with a quality control, or TIFF.
Named by
A pattern taking {n}, {marker}, {tc}, {file} and {date}. The number is zero-padded to the count so a hundred stills sort the way they were shot. Timecode colons become hyphens.
Aspect
Preserved exactly, anamorphic included. A clip stored 480x270 with 4:3 pixels comes out 640x270. Rotated footage comes out upright.
Collisions
A name already in the folder gets (2). Nothing is ever silently overwritten, and the results panel says how many were renamed.
LOT 00212/18
PULLSContact sheet

The contact sheet

Paper
A4 or US Letter, portrait or landscape.
Grid
Yours to choose, with per-cell captions and a header and footer. An optional cover page, off by default.
Cells
Take the footage's own aspect, so nothing is letterboxed.
Resolution
Frames are placed at 300 dpi, print resolution rather than screen resolution, and JPEG-compressed once on the way out of the extractor. A 300-frame sheet is under two megabytes.
LOT 00213/18
PULLSThe manifest

The drift column

A CSV lands beside the output listing every marker, its timecode, the frame it landed on, and the file written for it.

It also carries a drift_frames column recording how far the decoder's answer was from the frame that was asked for. It is zero on every correct extraction.

Read it if you want to check a run rather than take its word for it.

LOT 00214/18
PULLSWhen it stops
When things go wrong

What it refuses to do

  • A marker before the clip starts or past its end is reported with how far out it is, never clamped to the nearest frame.
  • Duplicate timecodes and duplicate names are kept and warned about, not merged.
  • A read-only or disconnected destination fails before a single frame is decoded, not after four hundred.
  • Stopping a run leaves only complete stills. Writes are atomic.
  • No contact sheet is made from a part-finished run. Stopping leaves the stills that finished, and nothing that looks like a complete document but is not.
LOT 00215/18
PULLSKeyboard
Reference

Menus and keys

  • ⌘OOpen Video
  • ⇧⌘OOpen Marker List
  • ⌘↩Extract Frames. Runs the batch.
  • ⇧⌘RShow Output in Finder
  • ⌘,Settings
  • MenuHelp › Check for Updates. Opens a page in your browser; the app never contacts a server on its own.
LOT 00216/18
PULLSHousekeeping

Where things live

Your stills
Beside the clip, or in a folder you choose. The app never moves or alters the original footage.
Settings
UserDefaults, under ContactSheetSettings.v1, decoded field by field with defaults so a missing key never silently resets everything else.
Known tension
The Beside the clip destination writes into the clip's parent folder. If this build is ever sandboxed, dropping a file grants the file and not its folder, and that default would be denied on first use. Choose a folder is unaffected.
LOT 00217/18
Pulls

Lot 002 of the Oddlots catalogue. Made by Flamingo Films, LLC.

Pay once. No subscription, no account, no licence server, and no upgrade fee later.

The app makes no network connection of any kind. Check for Updates opens a page in your browser, so it does not know your version or that you exist.

ODDLOTS18/18