<feed xmlns='http://www.w3.org/2005/Atom'>
<title>eglantine-cirakg/src/video_core/host1x/nx2_video_decoder.cpp, branch nx2</title>
<subtitle>Mirror of github.com/cira0100/Eglantine-public nx2, a fork of Djihads80/Eglantine.</subtitle>
<id>https://git.cirakg.xyz/eglantine-cirakg/atom?h=nx2</id>
<link rel='self' href='https://git.cirakg.xyz/eglantine-cirakg/atom?h=nx2'/>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/'/>
<updated>2026-11-02T23:55:03+00:00</updated>
<entry>
<title>nx2: video decoder: copy NV12 frames from a GPU decoder without swscale</title>
<updated>2026-11-02T23:55:03+00:00</updated>
<author>
<name>Jonas</name>
<email>baguettegamerofficial2020@gmail.com</email>
</author>
<published>2026-11-02T23:47:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=873cae5569e9f0069a73f24ab5e4ffd0799b02e7'/>
<id>urn:sha1:873cae5569e9f0069a73f24ab5e4ffd0799b02e7</id>
<content type='text'>
FFmpeg 6.1's swscale leaves the chroma plane of an NV12 to NV12 copy at
zero, so movies decoded on the host GPU (Mario Kart World's pre-race
movie, Hyrule Warriors' cutscenes) showed green. CPU-decoded frames
(YUV420P) were not affected.
</content>
</entry>
<entry>
<title>nx2: vdecsvc picks H.264 when the configure carries no codec name and the stream is H.264 (Yoshi demo)</title>
<updated>2026-11-02T23:55:03+00:00</updated>
<author>
<name>rdenno</name>
<email>rhysdenno@gmail.com</email>
</author>
<published>2026-10-31T16:14:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=701c91b402f47fdbb36d4f7c4b4bf1d0db08888b'/>
<id>urn:sha1:701c91b402f47fdbb36d4f7c4b4bf1d0db08888b</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>nx2: decode AV1 movies</title>
<updated>2026-10-31T06:33:36+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-31T06:33:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=6f33896d8cadb81b5c9dbb01826ad1be84162942'/>
<id>urn:sha1:6f33896d8cadb81b5c9dbb01826ad1be84162942</id>
<content type='text'>
Fire Emblem: Fortune's Weave plays its movies as AV1 ("video/av01"). Map the codec to
AV_CODEC_ID_AV1; FFmpeg decodes it with libdav1d when the FFmpeg build has it.

</content>
</entry>
<entry>
<title>nx2: decode Switch 2 video (nn::codec::video) with FFmpeg</title>
<updated>2026-10-30T05:27:47+00:00</updated>
<author>
<name>Takoroka</name>
<email>137927095+Takoroka@users.noreply.github.com</email>
</author>
<published>2026-10-29T19:55:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cirakg.xyz/eglantine-cirakg/commit/?id=bcaeef479da759faa90aa84775193ccdf43ad9a3'/>
<id>urn:sha1:bcaeef479da759faa90aa84775193ccdf43ad9a3</id>
<content type='text'>
The decoder service used to complete every submitted frame at once
without decoding it. Each decoder service (gsv 902/906/1002 -&gt; TIPC 1)
now decodes on a thread of its own with FFmpeg (VP9, VP8, H.264;
video_core/host1x/nx2_video_decoder), in software or on the host GPU per
the NVDEC emulation setting.

- 101 takes the codec name ("video/vp9") from its A buffer.
- 109 queues the A buffer's frame; the ready event fires while the queue
  has room.
- 311/314 reply a NativeSyncHandle {~syncpoint, 0, value}: the service
  allocates a syncpoint and increments it per finished frame, frames
  filling output images in register/release order like the client's
  ring. 314 waits for the client's release fence before reuse.
- 213 returns the frame's size, pts (TimeSpan, ns) and end of stream.
- gsv 911 creates a decoder image pool (count images in one memory) and
  gsv 961 returns the 128-byte CpuUserImageDescriptor that
  nn::codec::ReadDecoderOutputImage* copy frames out with; images are
  pitch-linear NV12, RGBA or BGRA.
- Each new video command is logged once in full; EDEN_NX2_VDEC_DUMP=&lt;dir&gt;
  saves every 120th decoded frame's luma.

Title 1's Mushroom Cup opening (2560x1440 VP9, 1423 frames) now decodes
in real time and the game goes on to the race. The picture on screen
still stays on the first frame: the game memcpys each frame into GPU
memory and the texture cache keeps its first upload (notes 148).
</content>
</entry>
</feed>
