<feed xmlns='http://www.w3.org/2005/Atom'>
<title>transcode.sh/transcode.sh.1, branch v2.1.0</title>
<subtitle>Batch transcode helper for media files using ffmpeg.</subtitle>
<id>https://git.dennisfink.me/transcode.sh/atom/transcode.sh.1?h=v2.1.0</id>
<link rel='self' href='https://git.dennisfink.me/transcode.sh/atom/transcode.sh.1?h=v2.1.0'/>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/'/>
<updated>2026-05-23T07:07:20Z</updated>
<entry>
<title>chore(release): prepare 2.1.0</title>
<updated>2026-05-23T07:07:20Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-23T07:07:20Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=1c55ed7ccbe2adca05059c7cff12c23d8a8aef67'/>
<id>urn:sha1:1c55ed7ccbe2adca05059c7cff12c23d8a8aef67</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(streams): allow selecting video probe stream</title>
<updated>2026-05-22T04:40:27Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-22T04:40:27Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=3e8c51b898eb9cc888a156cb9678ec4c1478cc8d'/>
<id>urn:sha1:3e8c51b898eb9cc888a156cb9678ec4c1478cc8d</id>
<content type='text'>
Add --video-stream and [encoding].video_stream so users can choose which
input video stream is probed for preset helper variables.

Use the selected stream for codec, pixel format, frame rate, output
pixel format, and GOP size metadata while leaving preset stream mapping
unchanged.

Validate CLI stream selectors strictly and ignore invalid config values
with a warning so bad configuration falls back to the default v:0
stream.

Document the new option in the README and man page, add verbose dry-run
output, and provide bash completion for common video stream selectors.

Closes #6.
</content>
</entry>
<entry>
<title>feat(output): make ffmpeg loglevel configurable</title>
<updated>2026-05-19T16:31:43Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-19T16:31:43Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=99e6b7ceb93db5ce9c4b70619c6ead5a2aaa281c'/>
<id>urn:sha1:99e6b7ceb93db5ce9c4b70619c6ead5a2aaa281c</id>
<content type='text'>
Add --ffmpeg-loglevel so users can choose which ffmpeg messages are
shown during encoding instead of always using the built-in default.

Load the same setting from [output].ffmpeg_loglevel when it is
configured and no CLI value was provided.

Document the new option in the README and man page, and add shell
completion for supported ffmpeg log levels.
</content>
</entry>
<entry>
<title>chore(release): prepare 2.0.0</title>
<updated>2026-05-17T06:54:52Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-17T06:54:52Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=7ec4afb9f14c96db843d9569e0c32c14283ea9a5'/>
<id>urn:sha1:7ec4afb9f14c96db843d9569e0c32c14283ea9a5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat(skip): allow overriding config skip codecs</title>
<updated>2026-05-16T13:08:15Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-16T13:08:15Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=7a33be9034e7d950459c7a30a49d544cf36e5270'/>
<id>urn:sha1:7a33be9034e7d950459c7a30a49d544cf36e5270</id>
<content type='text'>
Add --skip-codec-override so users can ignore configured skip codecs for
a single run and use only codecs provided through --skip-codec.

Defer CLI skip-codec parsing until after config loading so the final
skip list can be resolved independently of option order.

Document the new override behavior in the README and man page, and add
shell completion for the new flag.
</content>
</entry>
<entry>
<title>feat(backup): add original file backups</title>
<updated>2026-05-16T10:39:15Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-16T10:39:15Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=054a300fe5b81ed04f84e902e05c4f4efb95a193'/>
<id>urn:sha1:054a300fe5b81ed04f84e902e05c4f4efb95a193</id>
<content type='text'>
Add --backup-dir support so successful encodes can copy the original
file to an existing backup directory before replacing it.

Preserve each source file's absolute path below the backup directory and
avoid overwriting existing backups by appending numeric suffixes when
needed.

Document the new CLI and config option, and add directory completion for
the backup path.
</content>
</entry>
<entry>
<title>feat(size-report): replace savings log with status reports</title>
<updated>2026-05-14T07:56:14Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-14T07:56:14Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=dc3d2cb05800d866972b7ba32022428e8474beaa'/>
<id>urn:sha1:dc3d2cb05800d866972b7ba32022428e8474beaa</id>
<content type='text'>
Rename the old savings log feature to size report across the CLI,
configuration, documentation, man page, and bash completion. The new
`--size-report` option keeps the existing `-s` shorthand, while
`--saving`, `--saving-file`, and the `[saving]` config section are
replaced by `--size-report`, `--size-report-file`, and `[size_report]`.

Extend reporting beyond successful encodes. The TSV log now gains a
leading `status` column and records encoded files, codec skips,
only-if-larger skips, and failed inputs. Size-report output also prints
per-file feedback for encoded and skipped-larger files, including
human-readable original/new sizes, bytes saved, and saved percentage.

Track batch-level report counters and print an end-of-run summary for
multi-file runs with encoded/skipped/failed counts, total bytes saved,
and the overall weighted saving percentage across successful encodes.

Document the new TSV schema in the README and man page, update examples
and config snippets, and adjust bash completion for the renamed options.

BREAKING CHANGE: `--saving` is now `--size-report`. `--saving-file` is
now `--size-report-file`. `[saving]` in config.toml is now
`[size_report]`. The TSV log gains a leading `status` column and may
contain skipped and failed rows in addition to successful encodes.
</content>
</entry>
<entry>
<title>refactor(core): remove awk and bc dependencies</title>
<updated>2026-05-10T20:07:29Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-10T20:07:29Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=077ed51e254b9a6af2259b1952e6134ead98afa2'/>
<id>urn:sha1:077ed51e254b9a6af2259b1952e6134ead98afa2</id>
<content type='text'>
Both tools were used for simple arithmetic that bash handles natively.

awk: fps rounding (num/den) replaced with round-half-up integer
arithmetic: (num + den/2) / den.

bc: savings percentage replaced with bash $(( )) arithmetic. bc was a
conditional dependency (only required with --saving), which made the
dependency story inconsistent. Removing it means the full feature set is
available with only ffmpeg, ffprobe, nice, and optionally tomlq.

Updated README requirements table, man page --saving description, SEE
ALSO section, and exit-code 127 entry accordingly.
</content>
</entry>
<entry>
<title>feat(preset): add --list-presets to enumerate available presets</title>
<updated>2026-05-10T18:37:01Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-10T18:37:01Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=eecaf6c4b9b5c6c248302e7db2bb15b7ca1c6b29'/>
<id>urn:sha1:eecaf6c4b9b5c6c248302e7db2bb15b7ca1c6b29</id>
<content type='text'>
Print all *.sh files found in $PRESET_DIR, one per line, with a one-line
description extracted from the first line of each file if it matches a
`# description: …` comment. Presets without such a comment are listed
without a description.

Symlinks pointing to another preset inside $PRESET_DIR are shown as
"&lt;name&gt; - Symlinked to &lt;target&gt;" rather than duplicating the
description. Symlinks pointing outside $PRESET_DIR are followed and
treated as regular preset files.

Column width for preset names is calculated from the longest name in the
directory so descriptions align with minimal padding.

Also extracts the repeated readlink/realpath idiom into a dedicated
resolve_path() helper and adds a doc comment to filesize().

Exits immediately after printing (same pattern as --version/--help).
Honours --quiet/NO_COLOR via the existing msg() and color
infrastructure.
</content>
</entry>
<entry>
<title>feat(core,cli): add hardware acceleration support via --hwaccel</title>
<updated>2026-05-09T19:30:38Z</updated>
<author>
<name>Dennis Fink</name>
</author>
<published>2026-05-09T19:30:38Z</published>
<link rel='alternate' type='text/html' href='https://git.dennisfink.me/transcode.sh/commit/?id=46e56972f2b4d16ca6b3fd04611f86cf8580ea10'/>
<id>urn:sha1:46e56972f2b4d16ca6b3fd04611f86cf8580ea10</id>
<content type='text'>
Add --hwaccel [METHOD] / --no-hwaccel flags to control whether -hwaccel
is passed to ffmpeg before the input file. The METHOD argument is
optional and defaults to "auto", letting ffmpeg select the best
available hardware decoder with automatic software fallback.

Hardware acceleration is enabled by default (method: auto). Users on
hosts where hwaccel causes compatibility or stability issues can opt out
with --no-hwaccel or config.toml [encoding] hwaccel = false.

The config key accepts false (disable), true (auto), or a method string
such as "vaapi" or "cuda". CLI flags take precedence as usual.

Bash completion is extended with a hwaccel_methods word list (auto,
cuda, vaapi, dxva2, d3d11va, videotoolbox, qsv) for both the space form
(--hwaccel &lt;TAB&gt;) and the equals form (--hwaccel=&lt;TAB&gt;).

The completion script is also reformatted from 4-space to 2-space
indentation for consistency with transcode.sh itself.
</content>
</entry>
</feed>
