Extract jpeg files from mjpeg video on Linux

Just in case I ever need it again: Extracting all frames from an mjpeg video as jpegs is easy and very fast with ffmpeg, because it does not need to decode and encode the pictures, just prepend the DHT to each one: [bash] ffmpeg -i inputmpeg.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg [/bash] Source ffmpeg documentation.

Delphi’s TStream.Read returns the number of bytes read

Note to self: TStream.Read in the Delphi RTL returns the number of bytes read. It does not check whether the intended number of bytes could actually be read. So if you do not check it yourself, call TStream.ReadBuffer instead. So, it's either: [delphi] var st: TFileStream; Buffer: array[0..7] of Byte; BytesRead: Integer; begin st := … Continue reading Delphi’s TStream.Read returns the number of bytes read

dzPackageInst 1.0.2 for Delphi 6 to 10.3 released

Today I released version 1.0.2 of dzPackageInst. Its a command line tool that allows installing and uninstalling design time packages into the Delphi 6 to 1.3 IDEs. Source code and download are available from the project page on SourceForge. It's also part of my buildtools which I use for nearly all my projects.

TStringList vs. THashedStringList vs. TDictionary

Prompted by the topic Dictionaries, Hashing and Performance in the international Delphi Praxis forum I did some timing to compare the performance of data structures in the Delphi runtime library that can be used to store data indexed by strings: a sorted, case sensitive TStringList (available since Delphi 6) a sorted, case sensitive THashedStringList (available … Continue reading TStringList vs. THashedStringList vs. TDictionary