Blog

Thoughts, tutorials, and insights on software engineering & technology.

8 articles found
Week 7: Making a software interop
gsoc-journeyvlc
Jul 31, 20266 min read

Week 7: Making a software interop

Software video was the one thing my interop system could not handle, and it was needed to have the same interface for both types (software and hardware).

31015
Read
Week 6: writing the frame sync into code
gsoc-journeyvlc
Jul 23, 20262 min read

Week 6: writing the frame sync into code

Last week I designed the handshake that keeps CUDA and the renderer from touching the same image at once. This week I wrote it, then spent most of my time making sure it was actually correct.

90027
Read
Week 5: syncing the NVDEC copy and the render
gsoc-journeyvlc
Jul 14, 20265 min read

Week 5: syncing the NVDEC copy and the render

I had to make CUDA's copy and libplacebo's render take turns over one image, using a single timeline counter shared across both APIs with no CPU copy.

106140
Read
Week 4: the green noise that proved the obvious fix was wrong
gsoc-journeyvlc
Jul 09, 20263 min read

Week 4: the green noise that proved the obvious fix was wrong

Last week's validation error said my image can't be both disjoint and dedicated at once. The obvious fix was to drop the dedicated part, so I did, and the color fell apart into green noise across the sky and the water.

143031
Read
Week 3: first light on the Vulkan path
gsoc-journeyvlc
Jul 07, 20268 min read

Week 3: first light on the Vulkan path

An NVDEC frame decoded on the GPU, imported into Vulkan with no CPU copy, and drawn by libplacebo. It works, the 4K file plays with correct colors. Then I turned on Vulkan's validation layer and it flagged the code as illegal, the same code NVIDIA had been drawing.

118021
Read
Week 2: NVDEC the easy way first
gsoc-journeyvlc
Jun 30, 20264 min read

Week 2: NVDEC the easy way first

Before porting NVDEC to Vulkan, I got it playing zero-copy through OpenGL first, so I have a known-good reference to compare against. Then a long time reading my mentor's branch.

146225
Read
Week 1: first patch written
gsoc-journeyvlc
Jun 20, 20263 min read

Week 1: first patch written

Week 1 of my GSoC with VideoLAN: a first patch that changes nothing on purpose, an assumption that fell apart once I read the source.

211250
Read
My GSoC 2026 Project Overview
gsoc-journeyvlc
Jun 12, 20265 min read

My GSoC 2026 Project Overview

Starting Google Summer of Code 2026 with VideoLAN, teaching VLC to draw GPU-decoded frames without copying them through the CPU first. The series opener: who I am and the round-trip I'm here to delete.

360455
Read
© 2026 Ahmed Sobhy. All rights reserved.