]> git.nihav.org Git - nihav-encoder.git/log
nihav-encoder.git
12 days agoimprove palettisation
Kostya Shishkov [Fri, 17 Apr 2026 16:25:04 +0000 (18:25 +0200)]
improve palettisation

* add an alternative colour counter mode (faster but eats a lot of RAM)
* add support for palette generation options (to that mode can be set)
* change full palettisation mode into using 16MB LUT

13 days agopalettise: ignore skip frames
Kostya Shishkov [Thu, 16 Apr 2026 19:13:37 +0000 (21:13 +0200)]
palettise: ignore skip frames

13 days agopalettise: introduce simple cache for faster palettisation
Kostya Shishkov [Thu, 16 Apr 2026 19:09:53 +0000 (21:09 +0200)]
palettise: introduce simple cache for faster palettisation

13 days agouse PaletteSearchMode from nihav_core
Kostya Shishkov [Thu, 16 Apr 2026 18:38:41 +0000 (20:38 +0200)]
use PaletteSearchMode from nihav_core

2 weeks agoadd global palette calculation feature/hack
Kostya Shishkov [Wed, 15 Apr 2026 20:01:37 +0000 (22:01 +0200)]
add global palette calculation feature/hack

2 weeks agomove decoder creation into a separate transcoder function
Kostya Shishkov [Wed, 15 Apr 2026 16:51:42 +0000 (18:51 +0200)]
move decoder creation into a separate transcoder function

2 weeks agofix clippy warning
Kostya Shishkov [Tue, 14 Apr 2026 18:28:51 +0000 (20:28 +0200)]
fix clippy warning

2 weeks agobolt on global palette conversion functionality
Kostya Shishkov [Tue, 14 Apr 2026 18:26:24 +0000 (20:26 +0200)]
bolt on global palette conversion functionality

In the future it should probably implemented as more flexible filter
pipeline and support calculating palette for the output, but for now
even such hack should do.

2 weeks agofactor out stream encoder creation logic
Kostya Shishkov [Tue, 14 Apr 2026 16:25:23 +0000 (18:25 +0200)]
factor out stream encoder creation logic

The original instances were slightly different so it may re-introduce
some bugs but it's better to fix or change code just in one place.

2 weeks agoimprove displayed time a bit
Kostya Shishkov [Fri, 10 Apr 2026 17:36:57 +0000 (19:36 +0200)]
improve displayed time a bit

4 weeks agodo not allow packets with palette changes for muxers that don't support it
Kostya Shishkov [Tue, 31 Mar 2026 19:08:28 +0000 (21:08 +0200)]
do not allow packets with palette changes for muxers that don't support it

4 weeks agoCreate scaler when input video format differs from the expected output format
Kostya Shishkov [Tue, 31 Mar 2026 15:46:02 +0000 (17:46 +0200)]
Create scaler when input video format differs from the expected output format

4 weeks agoadd a raw profile for MOV muxer
Kostya Shishkov [Mon, 30 Mar 2026 13:55:27 +0000 (15:55 +0200)]
add a raw profile for MOV muxer

4 weeks agoparse stream-specific profile video options
Kostya Shishkov [Mon, 30 Mar 2026 13:54:47 +0000 (15:54 +0200)]
parse stream-specific profile video options

8 weeks agoremove useless &format!("const string") in debug log
Kostya Shishkov [Mon, 2 Mar 2026 17:49:16 +0000 (18:49 +0100)]
remove useless &format!("const string") in debug log

2 months agointroduce debug logging
Kostya Shishkov [Sat, 14 Feb 2026 10:54:43 +0000 (11:54 +0100)]
introduce debug logging

2 months agoimprove syncing somewhat
Kostya Shishkov [Sat, 14 Feb 2026 04:29:18 +0000 (05:29 +0100)]
improve syncing somewhat

2 months agoimplement volume adjustment for output audio streams
Kostya Shishkov [Fri, 13 Feb 2026 20:00:00 +0000 (21:00 +0100)]
implement volume adjustment for output audio streams

2 months agoadd an option to prune unsupported input streams
Kostya Shishkov [Thu, 12 Feb 2026 06:38:08 +0000 (07:38 +0100)]
add an option to prune unsupported input streams

2 months agomake --ignerr ignore streams where decoder failed to initialise too
Kostya Shishkov [Thu, 12 Feb 2026 06:13:07 +0000 (07:13 +0100)]
make --ignerr ignore streams where decoder failed to initialise too

2 months agodo not attempt to create decoders for ignored media types
Kostya Shishkov [Thu, 12 Feb 2026 05:48:00 +0000 (06:48 +0100)]
do not attempt to create decoders for ignored media types

2 months agouse clippy suggestion
Kostya Shishkov [Wed, 4 Feb 2026 18:00:57 +0000 (19:00 +0100)]
use clippy suggestion

2 months agoimprove printing input file information
Kostya Shishkov [Wed, 4 Feb 2026 17:59:14 +0000 (18:59 +0100)]
improve printing input file information

2 months agoprint input stream name and number
Kostya Shishkov [Wed, 4 Feb 2026 17:07:39 +0000 (18:07 +0100)]
print input stream name and number

2 months agoswitch to nihav_hlblocks for demuxer and image sequence code
Kostya Shishkov [Sat, 31 Jan 2026 14:49:07 +0000 (15:49 +0100)]
switch to nihav_hlblocks for demuxer and image sequence code

2 months agouse self-borrow box that from nihav_core
Kostya Shishkov [Sat, 31 Jan 2026 12:38:34 +0000 (13:38 +0100)]
use self-borrow box that from nihav_core

3 months agoswitch to NATimeInfo::rescale_ts()
Kostya Shishkov [Thu, 22 Jan 2026 18:06:02 +0000 (19:06 +0100)]
switch to NATimeInfo::rescale_ts()

3 months agoadd -f for selecting input stream 0 format
Kostya Shishkov [Tue, 20 Jan 2026 17:20:30 +0000 (18:20 +0100)]
add -f for selecting input stream 0 format

3 months agoadd an option to keep encoding despite decoding errors
Kostya Shishkov [Thu, 15 Jan 2026 06:02:45 +0000 (07:02 +0100)]
add an option to keep encoding despite decoding errors

6 months agofix target timebase calculation
Kostya Shishkov [Fri, 10 Oct 2025 16:53:10 +0000 (18:53 +0200)]
fix target timebase calculation

6 months agoselect proper reorderer depending on codec type
Kostya Shishkov [Fri, 10 Oct 2025 16:48:57 +0000 (18:48 +0200)]
select proper reorderer depending on codec type

8 months agoswitch to ByteIO
Kostya Shishkov [Mon, 18 Aug 2025 16:54:37 +0000 (18:54 +0200)]
switch to ByteIO

11 months agouse u32::MAX instead of deprecated std::u32::MAX
Kostya Shishkov [Wed, 28 May 2025 16:20:14 +0000 (18:20 +0200)]
use u32::MAX instead of deprecated std::u32::MAX

11 months agotranscoder: remove unused trait method
Kostya Shishkov [Wed, 28 May 2025 16:17:39 +0000 (18:17 +0200)]
transcoder: remove unused trait method

11 months agosimplify null muxer implementation a bit
Kostya Shishkov [Wed, 28 May 2025 16:17:09 +0000 (18:17 +0200)]
simplify null muxer implementation a bit

12 months agoset default parameters for PCM output in case input format is incompatible
Kostya Shishkov [Wed, 9 Apr 2025 16:53:58 +0000 (18:53 +0200)]
set default parameters for PCM output in case input format is incompatible

12 months agoset some default audio format for PCM encoder
Kostya Shishkov [Wed, 9 Apr 2025 16:30:49 +0000 (18:30 +0200)]
set some default audio format for PCM encoder

This is better than re-using input format and running into problems with
e.g. ADPCM source resulting into 4-bit PCM that sound converter can't handle.

12 months agohandle demuxer creation errors more gracefully
Kostya Shishkov [Wed, 9 Apr 2025 16:16:20 +0000 (18:16 +0200)]
handle demuxer creation errors more gracefully

12 months agofix displaying copy marker
Kostya Shishkov [Tue, 8 Apr 2025 16:38:23 +0000 (18:38 +0200)]
fix displaying copy marker

12 months agocreate audio format converter when input format differs from expected
Kostya Shishkov [Mon, 7 Apr 2025 17:05:08 +0000 (19:05 +0200)]
create audio format converter when input format differs from expected

This may be needed when the decoded format differs from the declared one
(e.g. demuxer reports 16-bit audio while audio decoder outputs floats).

Also factor out channel map generation code so in case it ever gets
improved I don't have to change it in three places.

12 months agomake audio converter output some samples if the output format does not care
Kostya Shishkov [Mon, 7 Apr 2025 16:42:08 +0000 (18:42 +0200)]
make audio converter output some samples if the output format does not care

Otherwise it would go into infinite loop outputting zero samples.

13 months agofix the bug with minimum duration calculation
Kostya Shishkov [Mon, 24 Mar 2025 16:48:54 +0000 (17:48 +0100)]
fix the bug with minimum duration calculation

It should be minimal known duration, previously it was always set to zero.

13 months agoprint last valid time instead of question marks when current time is unknown
Kostya Shishkov [Mon, 24 Mar 2025 16:45:59 +0000 (17:45 +0100)]
print last valid time instead of question marks when current time is unknown

13 months agoadd raw avi profile
Kostya Shishkov [Sun, 23 Mar 2025 17:22:10 +0000 (18:22 +0100)]
add raw avi profile

13 months agodo not attempt to synchronise packets when some of them lack timestamps
Kostya Shishkov [Sat, 22 Mar 2025 15:00:47 +0000 (16:00 +0100)]
do not attempt to synchronise packets when some of them lack timestamps

13 months agohopefully fix audio parameters
Kostya Shishkov [Fri, 21 Mar 2025 12:59:13 +0000 (13:59 +0100)]
hopefully fix audio parameters

13 months agoadd profiles for lazier encoding
Kostya Shishkov [Fri, 21 Mar 2025 11:36:58 +0000 (12:36 +0100)]
add profiles for lazier encoding

13 months agomark copied streams
Kostya Shishkov [Fri, 21 Mar 2025 11:19:17 +0000 (12:19 +0100)]
mark copied streams

13 months agodo not try to fill too large gaps in CFR mode
Kostya Shishkov [Thu, 20 Mar 2025 17:09:14 +0000 (18:09 +0100)]
do not try to fill too large gaps in CFR mode

13 months agohandle possible encoding errors instead of panicking on .unwrap()
Kostya Shishkov [Wed, 19 Mar 2025 17:54:29 +0000 (18:54 +0100)]
handle possible encoding errors instead of panicking on .unwrap()

13 months agoerror out on too large constant framerate
Kostya Shishkov [Wed, 19 Mar 2025 17:35:18 +0000 (18:35 +0100)]
error out on too large constant framerate

13 months agoadd framerate conversion ability
Kostya Shishkov [Wed, 19 Mar 2025 17:30:11 +0000 (18:30 +0100)]
add framerate conversion ability

13 months agoretrieve last (possibly unsynchronised) packets at the end
Kostya Shishkov [Mon, 17 Mar 2025 17:55:15 +0000 (18:55 +0100)]
retrieve last (possibly unsynchronised) packets at the end

13 months agoattempt to sync packets when possible
Kostya Shishkov [Mon, 17 Mar 2025 17:51:20 +0000 (18:51 +0100)]
attempt to sync packets when possible

13 months agoimprove the process of queueing and retrieving packets
Kostya Shishkov [Sun, 16 Mar 2025 17:51:50 +0000 (18:51 +0100)]
improve the process of queueing and retrieving packets

This should make it queue all packets (without losing them) and stop
at the right position without sending flushed packets after cut-off
to the muxer.

Additionally it should emprove encoding PCM audio.

13 months agorefactor code for more self-contained encoders and decoders
Kostya Shishkov [Sat, 15 Mar 2025 17:59:30 +0000 (18:59 +0100)]
refactor code for more self-contained encoders and decoders

13 months agoprepare framework for syncing output packets
Kostya Shishkov [Sat, 15 Mar 2025 12:44:34 +0000 (13:44 +0100)]
prepare framework for syncing output packets

13 months agosplit transcoder code into separate module
Kostya Shishkov [Fri, 14 Mar 2025 17:30:39 +0000 (18:30 +0100)]
split transcoder code into separate module

13 months agoenforce streams duration calculation in case muxer quirk demands it
Kostya Shishkov [Thu, 13 Mar 2025 17:57:17 +0000 (18:57 +0100)]
enforce streams duration calculation in case muxer quirk demands it

13 months agoset audio encoder timebase to the first video stream timebase automatically
Kostya Shishkov [Thu, 13 Mar 2025 17:37:42 +0000 (18:37 +0100)]
set audio encoder timebase to the first video stream timebase automatically

This allows e.g. PCM encoder to calculate frame length.

13 months agoadd muxer quirks to NULL muxer
Kostya Shishkov [Thu, 13 Mar 2025 17:33:22 +0000 (18:33 +0100)]
add muxer quirks to NULL muxer

21 months agointroduce --iformat as an alias for --input-format
Kostya Shishkov [Sun, 30 Jun 2024 12:11:40 +0000 (14:11 +0200)]
introduce --iformat as an alias for --input-format

21 months agoimgseq: always use rawvideo
Kostya Shishkov [Sun, 30 Jun 2024 12:10:18 +0000 (14:10 +0200)]
imgseq: always use rawvideo

rawvideo-ms requires a padding to multiple of 4 and thus not always suitable

2 years agouse NAPacketiser::attach_stream() where appropriate
Kostya Shishkov [Sat, 27 Apr 2024 11:41:55 +0000 (13:41 +0200)]
use NAPacketiser::attach_stream() where appropriate

2 years agomake audio pipe work with interleaved audio properly
Kostya Shishkov [Fri, 5 Jan 2024 17:10:51 +0000 (18:10 +0100)]
make audio pipe work with interleaved audio properly

2 years agoforce PCM audio processing in (almost) all cases
Kostya Shishkov [Fri, 5 Jan 2024 17:10:15 +0000 (18:10 +0100)]
force PCM audio processing in (almost) all cases

2 years agoaudio queue: support interleaved formats
Kostya Shishkov [Fri, 5 Jan 2024 11:45:12 +0000 (12:45 +0100)]
audio queue: support interleaved formats

2 years agoOnlyVideo/OnlyAudio muxer capabilities mean several streams are accepted
Kostya Shishkov [Sat, 11 Nov 2023 14:10:12 +0000 (15:10 +0100)]
OnlyVideo/OnlyAudio muxer capabilities mean several streams are accepted

2 years agoadd an option to set the same timebase for as the first video stream
Kostya Shishkov [Fri, 6 Oct 2023 16:47:40 +0000 (18:47 +0200)]
add an option to set the same timebase for as the first video stream

2 years agoadd option to calculate number of frames in the stream
Kostya Shishkov [Tue, 3 Oct 2023 15:16:37 +0000 (17:16 +0200)]
add option to calculate number of frames in the stream

This information may be useful when e.g. transcoding full input file to Bink.

2 years agomake demuxer print information only when requested
Kostya Shishkov [Tue, 3 Oct 2023 15:14:40 +0000 (17:14 +0200)]
make demuxer print information only when requested

2 years agoparse and try to apply output stream options before the encoder is created too
Kostya Shishkov [Sun, 1 Oct 2023 16:05:26 +0000 (18:05 +0200)]
parse and try to apply output stream options before the encoder is created too

2 years agoexit in case muxer is not found
Kostya Shishkov [Sun, 1 Oct 2023 16:03:50 +0000 (18:03 +0200)]
exit in case muxer is not found

2 years agoprint unrecognized option/argument value
Kostya Shishkov [Fri, 25 Aug 2023 16:09:41 +0000 (18:09 +0200)]
print unrecognized option/argument value

2 years agoallow encoder to work with multiple inputs
Kostya Shishkov [Sat, 19 Aug 2023 16:02:09 +0000 (18:02 +0200)]
allow encoder to work with multiple inputs

2 years agowhitespace fix
Kostya Shishkov [Sat, 19 Aug 2023 15:54:44 +0000 (17:54 +0200)]
whitespace fix

2 years agoadd PNM image sequence as possible input source
Kostya Shishkov [Sun, 13 Aug 2023 16:04:00 +0000 (18:04 +0200)]
add PNM image sequence as possible input source

2 years agofix clippy warnings
Kostya Shishkov [Thu, 27 Jul 2023 16:17:35 +0000 (18:17 +0200)]
fix clippy warnings

2 years agoimprove audio conversion
Kostya Shishkov [Thu, 25 May 2023 15:46:15 +0000 (17:46 +0200)]
improve audio conversion

2 years agodo not use 'str' as the variable name
Kostya Shishkov [Thu, 18 May 2023 16:54:45 +0000 (18:54 +0200)]
do not use 'str' as the variable name

2 years agorecognize /dev/null as null muxer output by default
Kostya Shishkov [Thu, 18 May 2023 16:46:37 +0000 (18:46 +0200)]
recognize /dev/null as null muxer output by default

2 years agoduplicate last frame when the encoder does not support skip frames
Kostya Shishkov [Tue, 16 May 2023 16:13:11 +0000 (18:13 +0200)]
duplicate last frame when the encoder does not support skip frames

2 years agoimprove audio processing pipeline
Kostya Shishkov [Fri, 5 May 2023 16:01:34 +0000 (18:01 +0200)]
improve audio processing pipeline

2 years agoparse bitrate in a more flexible way
Kostya Shishkov [Thu, 4 May 2023 16:22:39 +0000 (18:22 +0200)]
parse bitrate in a more flexible way

3 years agoadapt to freshly-introduced encoder capabilities
Kostya Shishkov [Tue, 14 Mar 2023 10:12:43 +0000 (11:12 +0100)]
adapt to freshly-introduced encoder capabilities

3 years agoenhance printed runtime stats
Kostya Shishkov [Fri, 10 Mar 2023 18:35:17 +0000 (19:35 +0100)]
enhance printed runtime stats

3 years agopass null frames to the encoder without attempting to convert them
Kostya Shishkov [Fri, 10 Mar 2023 17:23:23 +0000 (18:23 +0100)]
pass null frames to the encoder without attempting to convert them

4 years agouse raw stream duration
Kostya Shishkov [Mon, 22 Nov 2021 17:43:03 +0000 (18:43 +0100)]
use raw stream duration

4 years agocalculate PTS for raw stream if needed and possible
Kostya Shishkov [Thu, 18 Nov 2021 13:11:27 +0000 (14:11 +0100)]
calculate PTS for raw stream if needed and possible

4 years agodocument --verbose option
Kostya Shishkov [Thu, 18 Nov 2021 12:58:28 +0000 (13:58 +0100)]
document --verbose option

4 years agoadd verbose option
Kostya Shishkov [Wed, 17 Nov 2021 17:40:51 +0000 (18:40 +0100)]
add verbose option

4 years agotry to apply default encoder if possible
Kostya Shishkov [Wed, 17 Nov 2021 16:51:16 +0000 (17:51 +0100)]
try to apply default encoder if possible

4 years agosupport various input stream types
Kostya Shishkov [Wed, 17 Nov 2021 16:31:28 +0000 (17:31 +0100)]
support various input stream types

4 years agosupport scale options
Kostya Shishkov [Mon, 18 Oct 2021 16:57:40 +0000 (18:57 +0200)]
support scale options

4 years agodo not ignore boolean "noX" options
Kostya Shishkov [Wed, 29 Sep 2021 10:46:08 +0000 (12:46 +0200)]
do not ignore boolean "noX" options

5 years agofix or silence clippy warnings
Kostya Shishkov [Sun, 4 Apr 2021 08:29:13 +0000 (10:29 +0200)]
fix or silence clippy warnings

5 years agoupdate null sink for newly introduced stream duration
Kostya Shishkov [Sun, 4 Oct 2020 09:58:48 +0000 (11:58 +0200)]
update null sink for newly introduced stream duration

5 years agomention that --help is available
Kostya Shishkov [Thu, 23 Jul 2020 15:56:06 +0000 (17:56 +0200)]
mention that --help is available

5 years agoadd missing dyn keywords
Kostya Shishkov [Sun, 27 Sep 2020 11:27:45 +0000 (13:27 +0200)]
add missing dyn keywords

5 years agoadd help
Kostya Shishkov [Sun, 19 Jul 2020 10:13:48 +0000 (12:13 +0200)]
add help