]> git.nihav.org Git - nihav.git/log
nihav.git
23 hours agoavi: refactor demuxing code master
Kostya Shishkov [Sat, 30 Aug 2025 16:58:01 +0000 (18:58 +0200)]
avi: refactor demuxing code

Use simpler approach to parsing, more idiomatic Rust, structure code better.

30 hours agoIndeo YVU9 Compressed decoder
Kostya Shishkov [Sat, 30 Aug 2025 10:12:38 +0000 (12:12 +0200)]
Indeo YVU9 Compressed decoder

8 days agompadec: fix MPEG Layer III LSF decoding in multiframe mode
Kostya Shishkov [Sat, 23 Aug 2025 14:49:17 +0000 (16:49 +0200)]
mpadec: fix MPEG Layer III LSF decoding in multiframe mode

8 days agots102366: fix floor value
Kostya Shishkov [Sat, 23 Aug 2025 14:28:05 +0000 (16:28 +0200)]
ts102366: fix floor value

8 days agoTS 102.366 multi-frame stream decoder
Kostya Shishkov [Sat, 23 Aug 2025 14:27:17 +0000 (16:27 +0200)]
TS 102.366 multi-frame stream decoder

8 days agoATSC A/52B packetiser
Kostya Shishkov [Sat, 23 Aug 2025 12:33:50 +0000 (14:33 +0200)]
ATSC A/52B packetiser

9 days agosupport MP3 in AVI
Kostya Shishkov [Thu, 21 Aug 2025 16:53:35 +0000 (18:53 +0200)]
support MP3 in AVI

Some AVIs have single MP3 frame per AVI audio frame, other clump several
MP3 frames in one AVI frame, and some go even further and put randomly
chopped MP3 bitstream there. The only slightly hacky way to deal with it
is to split it into frames and assemble the decoded result back.

Also there's a typo fix for the parser.

10 days agompeg4asp: improve check for XviD-specific format
Kostya Shishkov [Thu, 21 Aug 2025 16:06:29 +0000 (18:06 +0200)]
mpeg4asp: improve check for XviD-specific format

Apparently it is better not to enable XviD-specific DCT on older files.

10 days agoavi: ignore non-existent audio extradata
Kostya Shishkov [Thu, 21 Aug 2025 16:06:04 +0000 (18:06 +0200)]
avi: ignore non-existent audio extradata

11 days agomotionpixels: implement kropping mode
Kostya Shishkov [Tue, 19 Aug 2025 16:44:07 +0000 (18:44 +0200)]
motionpixels: implement kropping mode

11 days agomotionpixels: implement RGB mode with smooth deltas
Kostya Shishkov [Tue, 19 Aug 2025 16:43:55 +0000 (18:43 +0200)]
motionpixels: implement RGB mode with smooth deltas

12 days agonihav_vivo: switch to ByteIO
Kostya Shishkov [Mon, 18 Aug 2025 16:47:29 +0000 (18:47 +0200)]
nihav_vivo: switch to ByteIO

12 days agonihav_rad: switch to ByteIO
Kostya Shishkov [Mon, 18 Aug 2025 16:44:25 +0000 (18:44 +0200)]
nihav_rad: switch to ByteIO

12 days agonihav_qt: switch to ByteIO
Kostya Shishkov [Mon, 18 Aug 2025 16:40:44 +0000 (18:40 +0200)]
nihav_qt: switch to ByteIO

12 days agonihav_ms: switch to ByteIO
Kostya Shishkov [Mon, 18 Aug 2025 16:38:38 +0000 (18:38 +0200)]
nihav_ms: switch to ByteIO

12 days agonihav_mpeg: switch to ByteIO
Kostya Shishkov [Mon, 18 Aug 2025 16:31:36 +0000 (18:31 +0200)]
nihav_mpeg: switch to ByteIO

12 days agonihav_misc: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 17:30:06 +0000 (19:30 +0200)]
nihav_misc: switch to ByteIO

12 days agonihav_llaudio: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 17:26:05 +0000 (19:26 +0200)]
nihav_llaudio: switch to ByteIO

12 days agonihav_itu: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 17:22:01 +0000 (19:22 +0200)]
nihav_itu: switch to ByteIO

12 days agonihav_indeo: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 17:17:33 +0000 (19:17 +0200)]
nihav_indeo: switch to ByteIO

12 days agonihav_game: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 16:58:43 +0000 (18:58 +0200)]
nihav_game: switch to ByteIO

13 days agonihav_flash: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 16:37:16 +0000 (18:37 +0200)]
nihav_flash: switch to ByteIO

13 days agonihav_duck: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 16:33:26 +0000 (18:33 +0200)]
nihav_duck: switch to ByteIO

13 days agonihav_realmedia: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 16:26:09 +0000 (18:26 +0200)]
nihav_realmedia: switch to ByteIO

13 days agonihav_commonfmt: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 16:25:33 +0000 (18:25 +0200)]
nihav_commonfmt: switch to ByteIO

2 weeks agonihav_acorn: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 16:07:28 +0000 (18:07 +0200)]
nihav_acorn: switch to ByteIO

2 weeks agonihav_codec_support: switch to ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 16:07:03 +0000 (18:07 +0200)]
nihav_codec_support: switch to ByteIO

2 weeks agonihav_registry/detect: switch to ByteIO use
Kostya Shishkov [Sun, 17 Aug 2025 16:01:33 +0000 (18:01 +0200)]
nihav_registry/detect: switch to ByteIO use

2 weeks agonihav_core/io: merge ByteReader/ByteWriter functionality into ByteIO
Kostya Shishkov [Sun, 17 Aug 2025 15:59:34 +0000 (17:59 +0200)]
nihav_core/io: merge ByteReader/ByteWriter functionality into ByteIO

2 weeks agonihav_core/byteio: ByteReader::read_buf() should read full buffer
Kostya Shishkov [Sat, 16 Aug 2025 14:37:24 +0000 (16:37 +0200)]
nihav_core/byteio: ByteReader::read_buf() should read full buffer

For partial reads there is read_buf_some()

2 weeks agonihav_core/io: add read_extend() to byte reader
Kostya Shishkov [Sat, 16 Aug 2025 14:03:42 +0000 (16:03 +0200)]
nihav_core/io: add read_extend() to byte reader

Also change Vivo demuxer to use it as an example.

2 weeks agoaac: improve ADTS handling
Kostya Shishkov [Fri, 15 Aug 2025 15:29:55 +0000 (17:29 +0200)]
aac: improve ADTS handling

This should help with ADTS inside MP4

2 weeks agowavmux: add parentheses to size calculation expression
Kostya Shishkov [Fri, 15 Aug 2025 15:27:08 +0000 (17:27 +0200)]
wavmux: add parentheses to size calculation expression

2 weeks agonihav_registry: register TwoCCs for A- and mu-law PCM
Kostya Shishkov [Thu, 14 Aug 2025 16:40:03 +0000 (18:40 +0200)]
nihav_registry: register TwoCCs for A- and mu-law PCM

2 weeks agoMotion Pixels support
Kostya Shishkov [Wed, 23 Jul 2025 17:21:07 +0000 (19:21 +0200)]
Motion Pixels support

This includes the original DOS format in custom container
as well as MVI1 and MVI2 in AVI.

2 weeks agoavi: handle MVI
Kostya Shishkov [Fri, 1 Aug 2025 16:51:22 +0000 (18:51 +0200)]
avi: handle MVI

MVI 1 and 2 (ab)use codec FOURCC for codec flags, so demuxer should rely on
handler FOURCC for the actual codec detection.

6 weeks agoenable rawvideo for mov
Kostya Shishkov [Sat, 19 Jul 2025 12:39:36 +0000 (14:39 +0200)]
enable rawvideo for mov

6 weeks agomov: support another constant-block stream case
Kostya Shishkov [Sat, 19 Jul 2025 12:39:08 +0000 (14:39 +0200)]
mov: support another constant-block stream case

6 weeks agomov: mark streams without proper header as unknown data streams
Kostya Shishkov [Sat, 19 Jul 2025 12:07:41 +0000 (14:07 +0200)]
mov: mark streams without proper header as unknown data streams

2 months agoavimux: do not record palette change chunks in OpenDML index
Kostya Shishkov [Sat, 28 Jun 2025 16:44:43 +0000 (18:44 +0200)]
avimux: do not record palette change chunks in OpenDML index

2 months agoh264: ignore unknown reserved bits in SPS
Kostya Shishkov [Tue, 24 Jun 2025 17:16:51 +0000 (19:16 +0200)]
h264: ignore unknown reserved bits in SPS

2 months agonihav_core/scale: add SSE2 version of 2x scaling
Kostya Shishkov [Tue, 24 Jun 2025 17:14:24 +0000 (19:14 +0200)]
nihav_core/scale: add SSE2 version of 2x scaling

2 months agoh264: ignore some bits in the avcC box
Kostya Shishkov [Tue, 24 Jun 2025 15:45:59 +0000 (17:45 +0200)]
h264: ignore some bits in the avcC box

Apparently some encoders do not bother about setting them to all ones.

2 months agoaac/sbr: fix index in HF generation code
Kostya Shishkov [Sat, 21 Jun 2025 15:35:15 +0000 (17:35 +0200)]
aac/sbr: fix index in HF generation code

2 months agoaac/sbr: fix noise band selection
Kostya Shishkov [Sat, 21 Jun 2025 12:27:21 +0000 (14:27 +0200)]
aac/sbr: fix noise band selection

2 months agoadd wrapper codec for Escape formats in AVI and MOV
Kostya Shishkov [Sat, 14 Jun 2025 14:08:07 +0000 (16:08 +0200)]
add wrapper codec for Escape formats in AVI and MOV

2 months agonihav_registry: remove duplicate definition
Kostya Shishkov [Thu, 12 Jun 2025 15:56:57 +0000 (17:56 +0200)]
nihav_registry: remove duplicate definition

2 months agoTealMovie decoding support
Kostya Shishkov [Tue, 10 Jun 2025 17:08:03 +0000 (19:08 +0200)]
TealMovie decoding support

3 months agouse <type>::{MAX,MIN} instead of deprecated std::<type>::{MAX,MIN}
Kostya Shishkov [Wed, 28 May 2025 16:30:34 +0000 (18:30 +0200)]
use <type>::{MAX,MIN} instead of deprecated std::<type>::{MAX,MIN}

3 months agonihav_realmedia: rename configuration encoder_rv40 -> encoder_realvideo4
Kostya Shishkov [Wed, 28 May 2025 16:13:37 +0000 (18:13 +0200)]
nihav_realmedia: rename configuration encoder_rv40 -> encoder_realvideo4

This is done for consistency with the decoder configurations.

3 months agoremove unused fields/methods/traits or suppress warnings about them
Kostya Shishkov [Wed, 28 May 2025 16:07:32 +0000 (18:07 +0200)]
remove unused fields/methods/traits or suppress warnings about them

3 months agonihav-itu: silence configuration-related warning for rustc from 1.80
Kostya Shishkov [Wed, 28 May 2025 16:04:30 +0000 (18:04 +0200)]
nihav-itu: silence configuration-related warning for rustc from 1.80

3 months agovmd: recognize upper-case Indeo 3 FOURCC
Kostya Shishkov [Sat, 24 May 2025 10:39:52 +0000 (12:39 +0200)]
vmd: recognize upper-case Indeo 3 FOURCC

3 months agonihav_mpeg: add ADTS packetiser
Kostya Shishkov [Thu, 22 May 2025 16:23:57 +0000 (18:23 +0200)]
nihav_mpeg: add ADTS packetiser

3 months agoavi: better support for AVIs in some Saturn games
Kostya Shishkov [Sat, 10 May 2025 07:45:45 +0000 (09:45 +0200)]
avi: better support for AVIs in some Saturn games

3 months agoEscape 102 codec support
Kostya Shishkov [Thu, 8 May 2025 16:24:54 +0000 (18:24 +0200)]
Escape 102 codec support

4 months agoIotaSound support (in TCA)
Kostya Shishkov [Tue, 15 Apr 2025 16:09:38 +0000 (18:09 +0200)]
IotaSound support (in TCA)

4 months agotca: read framerate if present (and not passed from ARMovie)
Kostya Shishkov [Sun, 13 Apr 2025 16:53:15 +0000 (18:53 +0200)]
tca: read framerate if present (and not passed from ARMovie)

4 months agotca: use the same implementation for raw TCA and TCA-in-ARMovie demuxers
Kostya Shishkov [Sun, 13 Apr 2025 16:37:43 +0000 (18:37 +0200)]
tca: use the same implementation for raw TCA and TCA-in-ARMovie demuxers

4 months agoarmovie: add test for TCA in ARMovie
Kostya Shishkov [Sat, 12 Apr 2025 10:08:51 +0000 (12:08 +0200)]
armovie: add test for TCA in ARMovie

4 months agoadd support for TCA in ARMovie
Kostya Shishkov [Sat, 12 Apr 2025 09:53:50 +0000 (11:53 +0200)]
add support for TCA in ARMovie

4 months agoThe Complete Animation format support
Kostya Shishkov [Sat, 12 Apr 2025 07:38:58 +0000 (09:38 +0200)]
The Complete Animation format support

4 months agoh264: renumber labels in assembly to avoid 0 and 1
Kostya Shishkov [Thu, 10 Apr 2025 16:07:48 +0000 (18:07 +0200)]
h264: renumber labels in assembly to avoid 0 and 1

They may be potentially misinterpreted by LLVM

4 months agoqcelp: fix decoding for 1/8-band mode
Kostya Shishkov [Thu, 10 Apr 2025 16:02:20 +0000 (18:02 +0200)]
qcelp: fix decoding for 1/8-band mode

4 months agoivf_indeo: fix audio codecs TwoCC
Kostya Shishkov [Wed, 9 Apr 2025 16:13:30 +0000 (18:13 +0200)]
ivf_indeo: fix audio codecs TwoCC

4 months agozmbvenc: handle the situation when first frame in the stream is skip frame
Kostya Shishkov [Tue, 8 Apr 2025 17:09:55 +0000 (19:09 +0200)]
zmbvenc: handle the situation when first frame in the stream is skip frame

4 months agotruemotion1: always pad buffer for old versions of the format
Kostya Shishkov [Mon, 7 Apr 2025 16:39:35 +0000 (18:39 +0200)]
truemotion1: always pad buffer for old versions of the format

Apparently it is not just the oldest version that may overread data.

4 months agowavmux: always write non-zero block size for PCM
Kostya Shishkov [Mon, 7 Apr 2025 16:39:14 +0000 (18:39 +0200)]
wavmux: always write non-zero block size for PCM

4 months agoarmovie: always treat Escape audio as ADPCM with Escape 122 video codec
Kostya Shishkov [Mon, 7 Apr 2025 16:35:17 +0000 (18:35 +0200)]
armovie: always treat Escape audio as ADPCM with Escape 122 video codec

With the latter versions 8-bit audio is PCM but here it is always ADPCM.

4 months agoescape122: remove unneeded palette size check
Kostya Shishkov [Mon, 7 Apr 2025 16:33:18 +0000 (18:33 +0200)]
escape122: remove unneeded palette size check

Apparently frame data start does not need to be aligned to 32 bits.

4 months agonihav_registry: add another FOURCC for Cinepak
Kostya Shishkov [Mon, 7 Apr 2025 03:22:24 +0000 (05:22 +0200)]
nihav_registry: add another FOURCC for Cinepak

4 months agoPI-Video decoder
Kostya Shishkov [Sat, 5 Apr 2025 14:07:02 +0000 (16:07 +0200)]
PI-Video decoder

5 months agoh264: improve averaging motion compensation
Kostya Shishkov [Mon, 31 Mar 2025 16:57:24 +0000 (18:57 +0200)]
h264: improve averaging motion compensation

5 months agoh264: improve fill_deblock() a bit
Kostya Shishkov [Mon, 31 Mar 2025 16:19:27 +0000 (18:19 +0200)]
h264: improve fill_deblock() a bit

5 months agoh264: use uninitalised buffer for MC
Kostya Shishkov [Mon, 31 Mar 2025 16:08:37 +0000 (18:08 +0200)]
h264: use uninitalised buffer for MC

5 months agoh264: rearrange some instructions in cabac_coder
Kostya Shishkov [Mon, 31 Mar 2025 16:01:37 +0000 (18:01 +0200)]
h264: rearrange some instructions in cabac_coder

5 months agoadd QPEG-DVC demuxer and decoder
Kostya Shishkov [Thu, 27 Mar 2025 17:15:28 +0000 (18:15 +0100)]
add QPEG-DVC demuxer and decoder

5 months agoavimux: report single plane for raw RGB formats
Kostya Shishkov [Mon, 24 Mar 2025 16:13:45 +0000 (17:13 +0100)]
avimux: report single plane for raw RGB formats

5 months agocore/scale: fill planes not present in input format (e.g. grayscale -> YUV)
Kostya Shishkov [Mon, 24 Mar 2025 16:12:59 +0000 (17:12 +0100)]
core/scale: fill planes not present in input format (e.g. grayscale -> YUV)

5 months agoavimux: handle raw video
Kostya Shishkov [Sun, 23 Mar 2025 17:19:54 +0000 (18:19 +0100)]
avimux: handle raw video

5 months agoadd rawvideo-ms encoder
Kostya Shishkov [Sun, 23 Mar 2025 17:19:41 +0000 (18:19 +0100)]
add rawvideo-ms encoder

5 months agoavimux: add OpenDML support
Kostya Shishkov [Sat, 22 Mar 2025 14:55:24 +0000 (15:55 +0100)]
avimux: add OpenDML support

Backported from na_game_tool

5 months agoavimux: add palette change chunks to the index
Kostya Shishkov [Sat, 22 Mar 2025 10:50:47 +0000 (11:50 +0100)]
avimux: add palette change chunks to the index

5 months agoavimux: improve index writing
Kostya Shishkov [Sat, 22 Mar 2025 10:41:54 +0000 (11:41 +0100)]
avimux: improve index writing

Now chunk FOURCC will be generated once. Also offset is made 64-bit
in the course of preparation for OpenDML support.

5 months agonihav-ms/imaadpcmenc: set proper block size if timebase allows it
Kostya Shishkov [Fri, 21 Mar 2025 13:32:24 +0000 (14:32 +0100)]
nihav-ms/imaadpcmenc: set proper block size if timebase allows it

5 months agomsadpcmenc: set proper block size if it can be calculated from timebase
Kostya Shishkov [Fri, 21 Mar 2025 13:30:42 +0000 (14:30 +0100)]
msadpcmenc: set proper block size if it can be calculated from timebase

5 months agopcmenc: return 1/samplerate as timebase when possible
Kostya Shishkov [Mon, 17 Mar 2025 17:50:26 +0000 (18:50 +0100)]
pcmenc: return 1/samplerate as timebase when possible

5 months agoavi: leave first PCM timestamp for time calculation
Kostya Shishkov [Mon, 17 Mar 2025 17:20:36 +0000 (18:20 +0100)]
avi: leave first PCM timestamp for time calculation

5 months agoavimux: calculate proper values for PCM stream header
Kostya Shishkov [Fri, 14 Mar 2025 17:56:08 +0000 (18:56 +0100)]
avimux: calculate proper values for PCM stream header

5 months agoIntroduce muxer quirks
Kostya Shishkov [Thu, 13 Mar 2025 17:28:33 +0000 (18:28 +0100)]
Introduce muxer quirks

This will allow nihav-encoder to deal better with certain peculiarities
of some formats in more generic way (e.g. make sure Bink muxer gets
the number of output frames or enforce fixed frame rate on transcoding
to AVI).

5 months agopcmenc: attempt to set proper frame size for fixed framerate
Kostya Shishkov [Thu, 13 Mar 2025 17:26:23 +0000 (18:26 +0100)]
pcmenc: attempt to set proper frame size for fixed framerate

5 months agonihav_core/codecs: clarify EncodeParameters.tb_{num,den} usage for audio case
Kostya Shishkov [Thu, 13 Mar 2025 17:25:07 +0000 (18:25 +0100)]
nihav_core/codecs: clarify EncodeParameters.tb_{num,den} usage for audio case

5 months agoQT RLE: fix monochrome decoding
Kostya Shishkov [Wed, 12 Mar 2025 17:07:35 +0000 (18:07 +0100)]
QT RLE: fix monochrome decoding

5 months agotruemotion1: add support for an old variant of the format
Kostya Shishkov [Sat, 8 Mar 2025 15:30:42 +0000 (16:30 +0100)]
truemotion1: add support for an old variant of the format

5 months agonihav-acorn: add support for known Eidos Escape codecs
Kostya Shishkov [Sat, 8 Mar 2025 13:39:32 +0000 (14:39 +0100)]
nihav-acorn: add support for known Eidos Escape codecs

5 months agoremove FutureVision FST and FCMP formats
Kostya Shishkov [Tue, 4 Mar 2025 17:22:32 +0000 (18:22 +0100)]
remove FutureVision FST and FCMP formats

Support for them has been moved to na_game_tool.

5 months agoremove Beam SIFF formats support
Kostya Shishkov [Tue, 4 Mar 2025 17:18:16 +0000 (18:18 +0100)]
remove Beam SIFF formats support

It has been moved to na_game_tool

6 months agosmacker: fix version 4 support
Kostya Shishkov [Thu, 13 Feb 2025 17:51:57 +0000 (18:51 +0100)]
smacker: fix version 4 support

And add a test while at it.

6 months agobinkaud: fix mono RDFT decoding
Kostya Shishkov [Thu, 13 Feb 2025 17:51:02 +0000 (18:51 +0100)]
binkaud: fix mono RDFT decoding

6 months agomov: speed-up reading track data
Kostya Shishkov [Sat, 8 Feb 2025 09:45:31 +0000 (10:45 +0100)]
mov: speed-up reading track data

Apparently reading data element by element and pushing it into the vector
does not work that great for large arrays like e.g. timestamp corrections
in 1-hour long MP4.

So it is noticeably faster (up to several seconds at start-up) to read
whole array at once and swap endianness later.