GoPro Paris works hard at bringing the image quality and the ease of use of GoPro devices to the highest level. Fully integrated in the Imaging Firmware team, your role is to analyze, specify, develop and deploy software tools which will assist the team tuning, optimizing and debugging the image quality on GoPro's cameras.
The outcome of your internship will impact the imaging experience of GoPro users all around the world.
In the search for the best parameters for image quality (IQ), IQ team works on the fine tuning of thousands of Image Processor parameters, each of them depending on the scene captured (quantity of light, color temperature, movement of the camera, etc.). Today, the operations necessary to modify these parameters in camera and verify their effect in the media is a heavy and not straight forward process. Low-level APIs have recently been added in the firmware to change each parameter on the fly (during record).
The purpose of this internship is to develop and support a framework on top of these APIs, to ease dynamic modifications of IQ parameters for a human operator. Example of feature would be: navigate in the tree of available parameters, or read/write parameters in unitary way or by ISP block. Considering the big number of settings, the interface to be designed should be simple and intuitive and should rely on an evolutive and scalable implementation using approaches such as code generation. This tool will preferably be written in C and C++ in an object-oriented environment. It will be part of the camera firmware and will be used during the development of products to help the IQ team in San Mateo office reaching more quickly the best image quality in GoPro cameras.
What You Will Do
- Analyze and understand the IQ (Image Quality) subsystem, its role in the system, its firmware interfaces, and its action on the hardware.
- Analyze a new embedded API that enables live updates of ISP tuning.
- Propose a command line interface (in camera) that allows to discover and modify any parameter in the IQ tuning (thousands of registers available)
- Propose tool to automatically analyze the existing low-level API and generate higher level of abstraction for human operator
- Propose a robust architecture, and a maintainable implementation in C/C++
- Optionally, provide a GUI tool to remotely update the tuning of the system
- Provide design documents and code documentation
- Write unit and validation tests
- Train and support all internal users (in France and US) to use the solution
- Complex SoC, ARM based, Real Time Operating System.
- Integrated ISP with encoders and signal processing hardware blocks
- C and C++
- Python, bash,
- Git, make, cmake, waf
Skills We’re Stoked About
- Computer sciences final degree (Eng. school), mastering in embedded systems
- Low-level C
- Cross-development tools (compilation & debug)
- Object oriented programming languages (C++ at least)
- Good knowledge of Git
- Scripting language (Shell, Python at least)
- Understanding of a System-on-Chip and electronics
- Good interpersonal skills
- Technical English and French practice required
- Curiosity for new technologies in embedded world
- Get your very own GoPro (Mounts and accessories included)
- Fully stocked fridges with snacks galore
GoPro is an Equal Opportunity Employer.