I am a software developer with 14 years experience in Linux driver development for devices that can broadly be classified into multimedia/gpu/camera and automative specific domains. I currently work at AMD for open-source graphics multimedia drivers which spans across kernel and user-mode drivers. My current interests are understanding image and video codecs that aid my work in driver development for image/video decode with hardware acceleration and I also specialize in measuring and benchmarking performance metrics for hardware accelerated video/image decode from Linux applications and correlating the results with device specification for maximum performance from GPUs including HPC variants like AMD Instinct MI100, MI300 etc. I also like understanding and learning transform theory, DCT-II, huffman/arithmetic coding, ADST, they augment my understanding about image and video compression. That's about me.
Open-Source Contributions
Linux Multimedia and V4L2
- mesa support for hardware accelerated roi crop and format conversion in jpeg ip
- mesa support for jpeg decode of YUV444, YUV440 and Grayscale pixel foramts
- mesa support for mjpeg multi-instance decode on multicore jpeg ip hardware
- Pre-silicon emulation of jpeg ip kernel driver and post-silicon bringup and validation of jpeg ip
- Development of v4l2 out driver to stream data to an audio-video-bridge with cache coherence
- Extensive experience in linux driver development for TVP5158 and ADV7180
- Customer demo preparation for early camera on Orinoco-IMX6DL (u-boot + kernel + userspace in 1.8s)
- Development of v4l2-subdev i2c-client drivers for camera sensors and digital video converters
- Good understanding of CVBS video standards (NTSC/PAL) digital video converters (ITU-BT656)
- Serdes drivers for display applications using TI Serdes (DS90UB927/DS90UH941)
- Serdes driver for Maxim GMSL MAX9277
- Identification of hardware bug in serdes display IC and demonstration to Vendor
- Extensive experience in debugging i2c communication failures over serdes links
- Driver development and bring-up of remote display panels over serdes setup, JDI/Sharp/Panasonic
- C++ ffmpeg based application to measure and benchmark hardware decode performance
- Automation tests for hardware decode and encode on vcn with vmaf score and ffmpeg psnr score for validation
- Solid understanding of JPEG specification and good understanding of VP9 codec specification
Linux Platform and Peripheral Drivers
- Multiple bring-up experience on IMX6DL, ExynosAuto9, MT2712
- Understanding of pin-mux, pad-configuration and peripheral ips on Soc
- Boot sequence in SoC, early init requirements and device initialization
- Excellent understanding of UART IP in SoC with hardware flow control and DMA
- Identification of hardware bug in uart ip and demonstrations to ip team
- Good in reading hardware schematics/views for drivers, bring-up and debug
- Comfortable with oscilloscope and logic analyzer for debugging uart, i2c, spi, gpio
- Design and develop kernel driver to expose production data to userspace that is propagated from u-boot (~ few MB)
- Good understanding of device tree