Repository navigation
Releases: novasound6945/deckygram
Release list
Deckygram v0.7.7
Changed / 변경
-
Clip quality is one list now: frame and bitrate together, sixteen rows,
each stating the rate the encoder will use and what a minute weighs at
it. The two separate choices had a gap between them: the bitrate did not
follow the frame, so 480p came out the same size as 800p, and a
one-minute clip came out at 43 MB whatever was picked because the size
limit was deciding (reported 2026-09-16: "all qualities and fps and
bitrate produced the same file size"). The reference is 800p at
12.8 Mbit/s, a touch above the most a Deck records, so that row means
the recording as it is; the other three are Steam's own tiers, and each
smaller frame gets the same four scaled by pixel count - 480p has 36 %
of the pixels and gets 36 % of the rate. "As recorded" is gone as a
choice: a setting that held it lands on the top row for its frame, and
an older 800p figure stored with a smaller frame lands on the scaled row.
클립 화질이 목록 하나가 됐습니다. 화면 크기와 비트레이트를 한 줄로
고르며, 열여섯 줄 각각이 인코더가 쓸 값과 그 값으로 1분을 보낼 때
무게를 적습니다. 따로 고르던 두 설정 사이에 빈틈이 있었습니다.
비트레이트가 화면 크기를 따라가지 않아 480p가 800p와 같은 크기로
나왔고, 1분 클립은 무엇을 골라도 크기 한도가 결정해 43 MB였습니다
(2026-09-16 리포트: "화질, fps, 비트레이트를 바꿔도 같은 크기"). 기준은
800p·12.8 Mbit/s로 덱 녹화 최대치보다 살짝 위라 그 줄이 곧 녹화본
그대로이고, 나머지 셋은 스팀 자체 등급이며, 작은 화면은 같은 네 줄에
화소 비율을 곱해 받습니다. 480p는 화소가 36%라 36%를 받습니다. "원본"
선택지는 사라졌고, 저장돼 있던 "원본"은 그 화면의 최고 줄로, 작은
화면과 함께 저장된 예전 800p 숫자는 비례한 줄로 옮겨집니다. -
A 60 fps recording sent at 30 fps keeps the bits each frame was given
rather than the bits per second, so it comes out about half the size.
Before, the ceiling stayed at the recording's whole rate and the halved
frames simply got twice the bits each, which cannot add detail the
frames never had.
60fps 녹화를 30fps로 보내면 초당 비트가 아니라 프레임마다 받던 비트를
유지해 파일이 절반쯤 됩니다. 전에는 상한이 녹화 전체 비트레이트에
머물러 절반이 된 프레임이 각각 두 배의 비트를 받았는데, 그건 프레임에
없던 디테일을 더해 주지 못합니다.
Fixed / 수정
-
Clip captions were hours off. Steam names a clip folder in UTC, and the
caption printed those digits as they were, so a clip taken at 19:58 read
16:58 - or, in Korea, one taken at 00:30 read 15:30 the day before. The
folder time is now read as UTC and shown in the Deck's own zone.
Screenshots were never affected; their captions come from the file's
own time.
클립 캡션의 시각이 몇 시간씩 어긋났습니다. 스팀은 클립 폴더 이름을
UTC로 짓는데 캡션이 그 숫자를 그대로 찍어서, 19:58에 찍은 클립이
16:58로, 한국에서는 00:30에 찍은 클립이 전날 15:30으로 나갔습니다. 이제
폴더 시각을 UTC로 읽어 덱의 시간대로 표시합니다. 스크린샷은 파일 자체의
시각을 쓰므로 원래 문제가 없었습니다. -
The queued-clips size shown in the panel never exceeds what the
recordings weigh on disk, whatever row is picked; before, only "as
recorded" was quoted that way.
패널의 대기 클립 용량 예상치가 어떤 줄을 골라도 녹화본의 실제 크기를
넘지 않습니다. 전에는 "원본"을 골랐을 때만 그렇게 견적했습니다.
Thanks / 감사
- @EslamBradwil, for the size table across every setting and for
spotting the clock.
설정별 크기 표와 시각 문제를 짚어 주신 @EslamBradwil님, 이번에도
고맙습니다.
Deckygram v0.7.6
Changed / 변경
- Clips are decoded on the GPU as well as encoded there. v0.7.5 put the
hardware encoder first but still decoded in software, and on the Deck
that decode was most of the cost: a 15-second 60 fps clip going to
480p spent 8.4 CPU-seconds across nearly six threads in one burst.
With the decode on the video block, the frame-rate drop done on GPU
frames, and a software scale in between only when a smaller frame is
asked for, the same clip spends 3.7 CPU-seconds on about one thread;
at the recorded size, 1.5 CPU-seconds on half a thread. The output is
identical - SSIM against the same reference agrees to six digits -
and the encode still runs at about five times real time. Software
decode into the same encoder stays as the fallback, and x264 behind it.
클립을 인코딩뿐 아니라 디코딩도 GPU에서 합니다. v0.7.5는 하드웨어
인코더를 1순위로 뒀지만 디코딩은 여전히 소프트웨어였고, 덱에서는 그
디코딩이 비용의 대부분이었습니다. 15초짜리 60fps 클립을 480p로 보내는
데 CPU 8.4초를 스레드 여섯 개 가까이에 한꺼번에 몰아 썼습니다. 디코딩을
비디오 블록으로 옮기고, 프레임 수는 GPU 프레임에서 낮추고, 작은 화면을
골랐을 때만 그 사이에 소프트웨어 크기 조정을 두니 같은 클립이 CPU
3.7초를 스레드 하나 정도에서 씁니다. 녹화된 크기 그대로면 CPU 1.5초,
스레드 반 개입니다. 결과물은 동일하고(같은 기준 대비 SSIM이 소수점 여섯
자리까지 일치) 인코딩은 여전히 실시간의 약 5배 속도입니다. 같은 인코더로
가는 소프트웨어 디코딩이 폴백으로 남고, 그 뒤에 x264가 있습니다.
Verified on a Deck / 덱 실기 확인
- v0.7.5's fixes were run on a Deck against real recordings this time.
A 60 fps 800p clip sent with 30 fps and 480p chosen arrives as H.264,
768x480, 30 fps; with 800p chosen it arrives at 800p and 30 fps; with
60 fps chosen it is sent untouched. A 30 fps recording is left alone
unless a smaller frame is asked for. The x264 fallback was forced once
and produced the same file.
이번에는 v0.7.5의 수정을 덱에서 실제 녹화로 확인했습니다. 60fps 800p
클립을 30fps·480p로 보내면 H.264 768x480 30fps로 도착하고, 800p를
고르면 800p 30fps로, 60fps를 고르면 손대지 않고 그대로 보냅니다. 30fps
녹화는 더 작은 화면을 고르지 않는 한 그대로 둡니다. x264 폴백도 한 번
강제로 태워 같은 파일이 나오는 것을 확인했습니다.
Deckygram v0.7.5
Changed / 변경
-
Clips are encoded on the GPU again, still as H.264. v0.7.4 moved the
encode to the CPU for a small gain in picture (SSIM 0.9537 against
0.9407 for the hardware encoder) and paid for it with three times the
encode time - and on the Deck's APU the CPU and the GPU draw on the
same power budget, so an encode running during play takes frames from
the game. The gap is not visible at phone size; the frame drops are.
The hardware H.264 encoder now goes first, the frame is still scaled
in software, and x264 stays behind it as the fallback, capped at two
threads so that even the fallback leaves the game most of the CPU.
HEVC and the GPU scaler stay out.
클립을 다시 GPU에서 인코딩합니다. 코덱은 그대로 H.264입니다. v0.7.4는
약간의 화질(SSIM 0.9537, 하드웨어 인코더는 0.9407)을 위해 인코딩을
CPU로 옮겼고, 그 대가로 인코딩 시간이 세 배가 됐습니다. 덱의 APU는 CPU와
GPU가 전력 예산을 나눠 쓰므로, 플레이 중에 돌아가는 인코딩은 게임의
프레임을 가져갑니다. 그 화질 차이는 휴대폰 화면에서 보이지 않지만 프레임
저하는 보입니다. 이제 하드웨어 H.264 인코더가 1순위이고, 크기 조정은
여전히 소프트웨어로 하며, x264는 폴백으로 남되 스레드를 2개로 제한해
폴백이 돌아도 게임에 CPU를 남겨 둡니다. HEVC와 GPU 스케일러는 계속
쓰지 않습니다. -
The README said H.265 and "~7 % CPU"; both described the encoder that
left in v0.7.4. It now describes what actually runs.
README에 H.265와 "CPU 약 7%"라고 적혀 있었는데, 둘 다 v0.7.4에서 빠진
인코더 이야기였습니다. 지금 실제로 돌아가는 구성대로 고쳤습니다.
Note / 참고
- The broken 480p output reported against v0.7.3 never reproduced here,
and v0.7.4 removed both parts that could have caused it: the HEVC
encoder and the GPU scaler. This release brings the GPU encoder back,
as H.264, and keeps the scaler in software. If 480p comes out broken
again, that places the fault in the encoder block, and the fix is to
put x264 first - please report it.
v0.7.3에서 보고된 480p 깨짐은 이쪽에서 재현되지 않았고, v0.7.4는 원인일
수 있는 두 부품인 HEVC 인코더와 GPU 스케일러를 모두 뺐습니다. 이번
릴리스는 GPU 인코더를 H.264로 되살리고 스케일러는 소프트웨어로 둡니다.
480p가 다시 깨지면 원인은 인코더 블록이라는 뜻이고, 그때는 x264를
1순위로 두면 됩니다. 알려 주세요.
Deckygram v0.7.4
Fixed / 수정
- Picking 30 fps did nothing to a 60 fps recording. The frame rate is
set during the encode, and a clip small enough to send skipped the
encode - the same gap that made the resolution cap do nothing.
30fps를 골라도 60fps 녹화가 그대로 나갔습니다. 프레임 수는 인코딩할 때
정해지는데, 전송 가능한 크기의 클립은 인코딩을 건너뛰었습니다. 해상도
상한이 동작하지 않던 것과 같은 자리입니다.
Changed / 변경
- Clips go out as H.264, the codec Steam records in, and the scaling is
done in software. Both had been chosen for speed and both were
costing picture. Measured on a Deck at 2.5 Mbit/s from one source,
as SSIM against that source: libx264 0.9537, h264_vaapi 0.9407,
hevc_vaapi 0.9345, and the previous first choice - HEVC with the GPU
scaler - 0.9310. The files are within 5 % of each other in size.
Encoding takes longer for it; a 48-second clip went from 5 to 15
seconds.
클립을 스팀이 녹화하는 코덱인 H.264로 내보내고, 크기 조정도
소프트웨어로 합니다. 둘 다 속도를 위해 고른 것이었는데 둘 다 화질을 깎고
있었습니다. 같은 원본 2.5 Mbit/s 기준 덱 실측 SSIM은 libx264 0.9537,
h264_vaapi 0.9407, hevc_vaapi 0.9345, 기존 1순위였던 HEVC + GPU
스케일러 0.9310입니다. 용량 차이는 5% 이내입니다. 대신 인코딩이
길어집니다. 48초 클립 기준 5초에서 15초가 됐습니다.
Thanks / 감사
- @EslamBradwil again, for catching both of these.
이번에도 @EslamBradwil님이 두 가지를 모두 짚어 주셨습니다.
Deckygram v0.7.3
Fixed / 수정
- The resolution cap did nothing. A clip small enough to send skipped
the encode, and the scale went with it, so 480p went out at the
recorded size. Forcing the encode then hit a second problem: with the
bitrate on "as recorded" the encode was aimed at whatever the size
limit allowed - 26 Mbit/s for a short clip - so the smaller frame came
out larger than the original and was thrown away for it. The encode is
now capped at the source rate and the scaled file is the one sent.
해상도 상한이 동작하지 않았습니다. 전송 가능한 크기의 클립은 인코딩을
건너뛰는데 그때 크기 조정도 같이 건너뛰어서, 480p를 골라도 녹화된 크기
그대로 나갔습니다. 인코딩을 강제하니 두 번째 문제가 드러났습니다.
비트레이트가 '원본 그대로'면 용량 제한이 허용하는 값(짧은 클립은
26 Mbit/s)을 목표로 잡아서, 작아진 화면이 원본보다 커지고 그 이유로
버려졌습니다. 이제 원본 비트레이트를 넘지 않게 잡고, 크기를 조정한
파일을 전송합니다.
Changed / 변경
- The gallery list is five times quicker to open. It no longer walks
every file in the recording folders to date them - the folder's own
timestamp does - and reads each clip's length only for the rows on
screen. Game names are resolved once per request instead of once per
item. Measured on a Deck with 60 items: 124 ms to 25 ms.
갤러리 목록이 5배 빠르게 열립니다. 날짜를 알아내려고 녹화 폴더의 모든
파일을 훑지 않고 폴더 자체의 시각을 쓰며, 클립 길이는 화면에 보이는
항목만 읽습니다. 게임 이름은 항목마다가 아니라 요청당 한 번 조회합니다.
60개 기준 덱에서 124 ms → 25 ms.
Thanks / 감사
- @EslamBradwil reported both of these and shared a build with their
own fix for the gallery, which this release builds on. Thank you.
두 문제 모두 @EslamBradwil님이 알려주셨고, 갤러리는 직접 고친 빌드를
공유해 주셔서 그 방식을 가져왔습니다. 감사합니다.
Deckygram v0.7.2
Fixed / 수정
-
Clips were broken on Decky Loader v3.2.9 even though the plugin
loaded: no thumbnails in the gallery, and no clip could be exported or
sent. Decky's loader is packed with PyInstaller, which points
LD_LIBRARY_PATHat its own unpacked libraries, and every ffmpeg we
started inherited it - loading Decky's older libstdc++ instead of the
one it was built against. External commands now run with the system
environment restored.
Decky Loader v3.2.9에서 플러그인은 로드되지만 클립이 동작하지 않던
문제. 갤러리 썸네일이 뜨지 않고 클립을 내보내거나 전송할 수도
없었습니다. Decky 로더는 PyInstaller로 묶여 있어LD_LIBRARY_PATH가
자기 라이브러리를 가리키는데, 우리가 띄우는 ffmpeg가 그걸 물려받아
시스템 라이브러리 대신 Decky의 낡은 libstdc++를 집었습니다. 이제 외부
명령은 시스템 환경으로 되돌려 실행합니다. -
Silent notifications were never silent.
playSound: falseis dropped
on the way to Steam, which picks the sound from a table keyed on the
notification type rather than from anything a plugin passes, so the
toast rang whatever the setting said. It borrows a type registered as
silent now, and looks exactly the same.
무음 알림이 실제로는 무음이 아니었습니다.playSound: false는 스팀으로
전달되는 과정에서 버려지고, 스팀은 플러그인이 넘긴 값이 아니라 알림
종류별 표를 보고 소리를 정합니다. 설정과 무관하게 소리가 났습니다. 이제
소리 없는 종류를 사용하며, 토스트 모양은 그대로입니다.
Changed / 변경
- Clip tiles use the thumbnail Steam already writes beside each clip
instead of decoding a frame, which is four times quicker and gives a
tile to clips whose fragments are unusable. A poster that cannot be
made now says why in the log rather than leaving a blank tile.
클립 타일이 프레임을 디코딩하는 대신 스팀이 클립마다 만들어 두는
썸네일을 씁니다. 4배 빠르고, 조각이 깨진 클립도 타일이 생깁니다.
포스터를 만들지 못하면 빈 타일로 두지 않고 이유를 로그에 남깁니다.
Deckygram v0.7.1
Fixed / 수정
-
Decky Loader v3.2.9 compatibility - update to this if you have
updated Decky. The plugin importedhttp.server, which that build
no longer ships, so it failed to start at all. The pairing page is
served over a plain socket now and needs no such module. inotify also
falls back to polling ifctypesis ever missing, rather than taking
the plugin down with it.
Decky Loader v3.2.9 대응 — Decky를 업데이트했다면 이 버전으로
올리세요.http.server를 가져다 썼는데 해당 빌드에는 들어 있지 않아
플러그인이 아예 시작되지 않았습니다. 이제 페어링 페이지를 소켓으로
직접 제공해 그 모듈이 필요 없습니다.ctypes가 없는 경우에도 inotify가
폴링으로 내려갈 뿐 플러그인을 죽이지 않습니다. -
The queue said a minute of video weighed under a megabyte when the
bitrate was set to "as recorded".
비트레이트가 "원본 그대로"일 때 1분짜리 영상이 1MB 미만으로 표시되던
문제.
Added / 추가
- A resolution ceiling: 800p, 720p, 600p or 480p. Lower is often the
better trade for something watched on a phone.
해상도 상한 선택(800p / 720p / 600p / 480p). 폰으로 볼 영상이라면
낮추는 쪽이 대체로 이득입니다.
Deckygram v0.7.0
Changed / 변경
-
Clip quality is a bitrate and a frame rate now, instead of
quality/balanced/reach. Pick from as recorded / 7.5 / 6 / 3.75 Mbps
and 30 / 60 fps; the panel shows how long the choice holds and what a
60-second clip weighs. Old settings map to as recorded / 6 / 3.75.
클립 화질이 프리셋 대신 비트레이트와 프레임 수가 됐습니다. 원본 그대로
/ 7.5 / 6 / 3.75 Mbps, 30 / 60 fps 중에서 고르면 몇 초까지 유지되는지,
60초 클립이 몇 MB인지 표시됩니다. 기존 설정은 각각 원본 그대로 / 6 /
3.75로 이어집니다. -
Clips are capped at 800p, the Deck's own height. Only docked
recordings are affected.
클립을 덱 화면 높이인 800p로 제한합니다. 독에 연결해 녹화한 경우에만
영향이 있습니다.
Added / 추가
-
60 fps clips.
60fps 전송. -
The gallery's options menu acts on the tile under the cursor when
nothing is selected.
갤러리 옵션 메뉴가, 선택한 항목이 없으면 커서 위의 항목에 동작합니다.
Fixed / 수정
-
The cursor no longer jumps to the top of the panel after using a
dropdown.
드롭다운을 쓴 뒤 커서가 패널 맨 위로 튀지 않습니다. -
A 30 fps recording sent at 60 fps is no longer padded with duplicate
frames.
30fps 녹화를 60fps로 보낼 때 프레임을 복제하지 않습니다.
Deckygram v0.6.2
Added / 추가
- Silent notifications. Sends happen while you are playing, and with
background recording on, that means the notification chime lands in
whatever is being recorded. The toast still appears - seeing that a
clip went out is the useful part - it just makes no sound. Steam's own
interface sounds are separate and stay where they belong, under
Settings > Audio > Enable UI Sounds.
알림 소리 끄기. 전송은 게임하는 도중에 일어나고, 백그라운드 녹화가
켜져 있으면 그 알림음이 녹화 영상에 그대로 들어갑니다. 토스트는 그대로
표시됩니다. 클립이 나갔다는 걸 보는 건 유용하니까요. 소리만 나지
않습니다. 스팀 자체 UI 사운드는 별개이며 설정 → 오디오 → UI 사운드
사용에서 끕니다.
Deckygram v0.6.1
Added / 추가
- Clips are found when the recordings folder has been moved. Steam's
Settings > Game Recording can put recordings on an SD card, and it
moves the whole tree when you do - clips, timelines and the clip index
all follow. Only the default location underuserdatawas ever
looked at, so those clips were invisible. The configured folder is now
read from Steam's own settings, and the old location keeps being
watched too, because recordings made before the move stay where they
were. Screenshots are unaffected either way: that setting covers
recordings only.
녹화 폴더를 옮겨도 클립을 찾습니다. 스팀 설정 → 게임 녹화에서
녹화 위치를 SD카드로 지정할 수 있는데, 이때 클립·타임라인·클립 인덱스가
전부 함께 옮겨갑니다. 그동안userdata기본 위치만 봤기 때문에 그
클립들이 보이지 않았습니다. 이제 스팀 설정에서 지정된 폴더를 직접 읽고,
기존 위치도 계속 감시합니다. 옮기기 전에 녹화한 클립은 원래 자리에
남기 때문입니다. 스크린샷은 어느 쪽이든 영향이 없습니다. 그 설정은
녹화에만 적용됩니다.
Fixed / 수정
- A clip Steam failed to save is skipped instead of erroring. When
saving a clip fails partway, Steam can leave the folder behind with a
readable manifest and an emptyinit-stream0.m4s. ffmpeg then refused
it once a minute, forever. Such a clip is now recognised as having no
usable video and set aside for good.
스팀이 저장에 실패한 클립을 오류 대신 건너뜁니다. 클립 저장이 중간에
실패하면 스팀이 폴더만 남기고init-stream0.m4s를 빈 파일로 두는
경우가 있습니다. 그러면 ffmpeg가 1분마다 계속 거부했습니다. 이제 쓸 수
있는 영상이 없는 클립으로 판단해 한 번만 건너뜁니다.