logo

Cette page a au moins 5 ans !
This page is at least 5 years old !

Dolby SR-D optical codes reverse engineering

This is a WIP.

Dolby SR-D was the second most popular sound-on-film technology, and arguably the most interesting. If you went to the movies in the 90's to the late 2000's, the sound you heard probably came from this thing.

This page will focus on the Dolby DA-20 electronics and its DSP software.
See this repo from David Ferguson for the history and links to documentation on the Dolby SR-D system as a whole.

Thanks to the creator of the Gugusse roller for providing a capture of raw codes.

 

DA-20 decoder teardown

Standard rack-mount decoder for SR-D tracks, evolution of the DA-10 and predecessor of the C650. Bought working from eBay for cheap.
Takes video of the scrolling codes with a fast Dalsa IL-C3-0512B 512 pixel linear CCD sensor (in the so-called soundhead) and outputs 6 analog audio channels along with some time markers and control signals for the cinema processor thing.
Installation and user manual available on film-tech.com. This website is AWESOME.

CAT. NO. 670

Dolby Cat. No. 670 board

CCD control, analog video input, filtering, possible EQ/AGC, analog to digital conversion, small FIFO.

 

CAT. NO. 671

Two of these are used for a total of 4 video processing DSP blocks.

Dolby Cat. No. 671 board

Video digital processing, data extraction from the 2D codes. Each DSP has the same small bootloader ROM to load programs from the master 673A board.
Each DSP has its own 128k x 24 of work RAM, which could hold 128k * 24 bits / 512 pixels / 8 bits per pixel = 768 lines from the CCD.

Also 3x AS7C256: 32k * 8 SRAM, maybe input FIFOs ?

It is unverified but likely that all four DSPs are loaded with the same program, each processing one full code out of phase with each other to spread out the processing time.
A pipeline architecture where each DSP would perform a different processing step would mean lots of buffer memory multiplexing or wasteful data copying.

DSP processing spreading

 

CAT. NO. 673A

Dolby Cat. No. 673A board

Master controller, PLL for film speed tracking, Reed-Solomon EDC, uploading of programs to DSP boards, RS-232 external comm.

 

CAT. NO. 675A

Dolby Cat. No. 675A board

AC-3 decoding. The Zoran chip is one of their general-purpose DSPs but with embedded ROM for the Dolby decoding algorithm. Some small external ROM present, maybe for bootstraping.

 

CAT. NO. 686

Dolby Cat. No. 686 board

Audio DACs for final output. Linear voltage regulators.

 

CAT. NO. 611A

Dolby Cat. No. 611A board

Cinema processor and user configuration interface, digital/analog audio switch. Audio level detection ?

 

2D code format

Dolby calls the transparent or opaque dots "fixels" for "film pixels".

Dolby SR-D code areas

Total: 76*76 fixels
Four 8*8 fixels corner markers (7-bit 2D Barker codes with border, probably to be located by autocorrelation)
A center 12*12 fixels logo
= 76*76 - 4*8*8 - 12*12 = 5776 - 400 = 5376 data bits per code

Four codes per frame at 24 frames per second:
4 * 24 * 5376 = 516096 bps = 504kbps = exactly 63kB/s

Bytes are packed in 2*4 fixel blocks, bit 0 top to bottom, left to right.

Dolby SR-D code bit order

Raw ASCII data with no interleave: "DOLBY SR*D".

Special code every 44 codes = 11 frames = slightly less than half a second ?

Averaging 1900 contiguous codes, high entropy bytes marked in red:

Dolby SR-D code entropy

Seems to be a 1:3 interleave of some sort on most of the data. Or are those EDC bytes ?

With the 512-pixel CCD, the highest sampling rate possible would be 512 / 76 = 6.73 sensor pixels per fixel.

Documentation say that synchronization is based on the light flashes caused by the sprocket holes between codes.
The flash frequency of 24 * 4 = 96Hz would need to be multiplied by at least 76 * 2 = 152 to reach the minimum line rate.

 

Firmware

Flash on 673A board contains all "applications" for the DSPs, seems to use a basic page / file system to allow fail-safe updates.

Stuck into IDA without knowing the memory map. Found the hard way that the entry point is at $4000, which isn't standard and doesn't match any startup mode of the DSP56002. So something on the PCB such as the Altera CPLD is mapping $4000 at $0000.

32kB bank switching done via the 2 lower bits of PORT D. Bank appears at $6000+.

Work RAM at $3900+, probably starts below.

footer
symbol symbol symbol symbol symbol