Project Eideticker/Initial Prototype

From MozillaWiki
Jump to: navigation, search

Initial prototype

Capture machine:

  • Dell Precision T1600, 8 GB RAM, SAMSUNG SSD PM810 2.5" 7mm 256GB, Ubuntu 11.04
    • Very important: the workstation must have both a PCI express 16x slot for the graphics card *and* a (minimum) 4x for the Decklink capture card.
  • Capture card: Blackmagic Design DeckLink HD Extreme 3D
  • Graphics card: PNY nVidia Quadro 600
  • Operating systems: Both Win7 (to verify the card in case of problems) and Ubuntu 11.10 (for normal use)

Output devices (HDMI):

  • Asus Eee Transformer tablet
  • LG G2X P999 phone

Code (and installation/usage docs): https://github.com/mozilla/eideticker

See the primer on Blackmagic DeckLink cards for information on their capabilities and notes on installation, use, and application development.

Status

  • Captures 1080p60 output from the LG phone at 8-bit YUV 4:2:2 to a raw video file.
  • Transforms raw video into a compressed AVI and a zipped archive of PNG images, one per frame.
  • Controlled by a web interface, which can also serve the capture files.

The Devices

  • The Transformer tablet does not output at a broadcast standard. I believe it outputs at its screen resolution (1280x800). Thus we cannot capture from the Transformer with the DeckLink.
  • The phone outputs at a variety of standard formats (configurable via Settings / HDMI). Its screen is 480x800, but there is no option to output at this resolution on the HDMI port. It may also be converting output to YUV 4:2:2 (see below).
    • It must be scaling (and potentially converting) the output at some level below the application layer.

Issues and Concerns

  • Full RGB capture appears to be impossible. As noted in the primer, the DeckLink card cannot capture 8-bit nor 10-bit RGB at 1080p60, nor can it capture 8-bit RGB at 720p60. It can supposedly capture 10-bit RGB at 720p60; however, when in this mode the card cannot find an input source when the phone is connected and outputting at 720p. Perhaps the card itself is outputting at YUV 4:2:2, if that's possible.
  • Full screen resolution also appears to be impossible. The phone's screen is 800 pixels high, but the HDMI output is restricted to HDMI standards (1080, 720, etc.). Furthermore the card can only capture broadcast standards, even if the phone could output at 800 pixels (as the Transformer appears to).
  • Thus an exact 1:1 mapping of the pixels of the captured output to the pixels calculated and displayed to the phone's screen is not possible with the current hardware configuration. I am uncertain of the exact ramifications of this on the project's goals, but there are probably some tasks that can be accomplished even with this inexact capture of screen output.
    • Theoretically an HDMI-capable device with a screen exactly 720 or 1080 pixels high (or wide) should output a pixel-by-pixel match. Alternatively, there may exist capture cards that can capture at any resolution, which would have to be paired with a device that can output at exactly its screen's resolution (e.g. potentially the Transformer but not the LG).
    • Alternatively, perhaps it would be possible to hack a device to treat its HDMI output as primary.
  • At 1080p YUV 4:2:2, there is no frame skipping. However disk speed could become an issue if we somehow manage to capture full RGB output.