Date | Commit message (Collapse) |
|
This ought to save some memory for dtas-player and
dtas-readahead users with multiple instances of the same
track(s) on their track list.
|
|
Ruby 2.3+ supports String#@-, though it did not deduplicate
strings. But 2.5 is already old at this point and most users
can be expected to have it.
This gives some memory regressions for Ruby <= 2.4 users,
but cuts down on the code we maintain and reduces bytecode
overhead for 2.5+ users.
|
|
This allows dtas-player to play files with wonky filenames
when piping ffmpeg (or avconv) to sox. SoX-only code
dtas-player paths are not affected since they don't require
an extra Bourne shell.
All of our internal shell pipelines quote "$INFILE",
anyways, so there was never any need to escape for those.
This may cause compatibility problems for splitfx users, but
splitfx is probably too esoteric to have any users besides
myself. And I expect anybody editing audio with dtas-splitfx to
pick shell-friendly filenames.
dtas-player is far more general, and likely to encounter
shell-unfriendly filenames which require quoting.
|
|
Using the 'update-copyright' script from gnulib[1]:
git ls-files | UPDATE_COPYRIGHT_HOLDER='all contributors' \
UPDATE_COPYRIGHT_USE_INTERVALS=2 \
xargs /path/to/gnulib/build-aux/update-copyright
[1] https://git.savannah.gnu.org/git/gnulib.git
|
|
A bunch of minor fixes and cleanups accumulating for the past
two years since the last release. It's tough to remember to
make releases when I'm always running the latest version from
git :x
Most notably, "io_splice" is no longer used for dtas-linux
users since "sleepy_penguin" includes all the functionality
we use. This is to reduce memory overhead from extra DSOs(*)
There's also some deprecation warning fixes for the
still-undocumented "dtas-mlib" command.
12 changes since v0.15.0 (2017-04-07):
pipeline: new module for running process pipelines
console: ensure time calculations are done in UTC
Rakefile: update path for uploads
player: support guessing encodings for comments
get rid of Windows-31J regexps
mlib: compatibility with Sequel 5.x
mlib: remove redundant tag massaging and encoding
mlib: use flock to get around SQLite busy errors
mlib: ignore files with nil times
dtas/watchable: check SystemCallError
mlib: fix unused variable warning
use sleepy_penguin 3.5+ for splice and tee support
(*) https://udrepper.livejournal.com/8790.html
|
|
This can be helpful for end users and is close to what other
players use. We can fallback to Encoding.default_external by
default (typically UTF-8) and then again using `charlock_holmes'
if installed.
Note: path names remain binary, because that's how proper
filesystems operate.
|
|
This is faster than relying on eval() for older Rubies.
https://bugs.ruby-lang.org/issues/13077
Ruby 2.5 is targetted for release in December 2017.
|
|
This is needed for the "ALBUM ARTIST" tag which has a space in
the name. This is looser than
<http://www.xiph.org/vorbis/doc/v-comment.html>, but probably
good enough for practical purposes.
|
|
One normal method dispatch is probably preferable to two
optimized instructions + immediate.
|
|
HTTPS allows some level of security(*) and we've actually
supported it on 80x24.org for many months, now. So, point new
readers to it.
Moving away from hostname-based homepages will allow us to save
on subjectAltName space (and bandwith) when negotiating an HTTPS
connection. We'll also have an .onion mirror for Tor users,
soon, too; in case we can't afford to pay ICANN in the future.
(assuming TLS libraries don't have any more Heartblead-level
bugs in them, CAs aren't compromised, MITM HTTPS stripping
proxies don't get in your way, and your certificate bundle isn't
compromised).
|
|
This should improve performance with slow filesystems
or systems with slow spawn performance.
|
|
Almost, we will need to get a list of all suffixes supported
by ffprobe or avprobe. This could prove tricky..
|
|
The @last_failed state is in the parent object, not the dup-ed
object we fork off of.
|
|
We load them frequently enough that the garbage
is not worth it.
|
|
Using the 'update-copyright' script from gnulib[1]:
git ls-files | UPDATE_COPYRIGHT_HOLDER='all contributors' \
UPDATE_COPYRIGHT_USE_INTERVALS=2 \
xargs /path/to/gnulib/build-aux/update-copyright
[1] git://git.savannah.gnu.org/gnulib.git
|
|
While we're in the area, make a wording change from "GPLv3 or later"
to "GPL-3.0+", as the latter is favored by SPDX.org
|
|
We may expand them, so ensure they're properly escaped, first
for use in shell snippets.
|
|
This feature is intended to allow users to "zoom-in" on a
particular portion of a track to tweak parameters (either
with dtas-sourceedit(1) or via playback of splitfx YAML files).
This may be combined with looping the tracklist
(via "tl repeat").
|
|
The documentation part is managed by the new
Documentation/update-copyright script. For the future, the rest may
be managed by the update-copyright tool in gnulib
|
|
This makes debugging, grepping, and following code confusing
at times and also unexpected breaks usage of the global "spawn"
method.
|
|
I'm still normal, and still trolling, but 80x24.org will be epic :)
|
|
This reduces duplication for sox-based components, which our audio
editing components will rely on. We only use avconv/ffmpeg for odd
formats which sox does not play natively, and editing audio in
strange/lossy formats is undesirable anyways.
|
|
This will allow users to more-easily edit configs and feel
like a real shell. We no longer mistakenly expand nil env
variables to "" anymore, either.
|
|
Singleton methods tend to be bad like this.
TODO: write tests for this.
|
|
We don't need it since IO#read(bytes, buf) will convert to
ASCII-8BIT anyways. Everywhere else, we ensure path names are
already binary. We do this mainly at the client layer before using
Shellwords to escape the paths.
We also must be careful about parsing output from soxi/avprobe
which can show us metadata in whatever encoding is in the file.
We must still handle data from parsing command output as binary,
as the encoding of file metadata tends to vary.
This also should buy us Syck compatibility for Ruby 1.9.3 users
on Debian systems where Ruby 1.9.3 still uses Syck.
|
|
All files we distribute in the tarball need to have a
copyright/license specified for Savannah.
We don't need the example state file anymore.
|
|
Showing the warning for the same file over and over again is
annoying when seeking a file handled by avconv/ffmpeg, so stop
doing it.
While we're at it, the error handling for __load_comments is totally
redundant (absent of race conditions if another process modifies the
file). However, if we do hit races, all the other soxi invocations
would be racy, too; but we really just shouldn't care about such
a corner case in here.
|
|
soxi may not handle some files correctly and detect zero samples
without error-ing out. If sox can't detect the sample count
or the file is really empty, then there's no point trying futher
and we'll fall back to avconv.
|
|
We should be fully-capable of managing any number of options
to try sources in.
|
|
This should better prepare us to make "source ed" into
"source <av|sox> ed" and set per-source priorities.
We also now treat @env consistently for all per-source commands
(such as soxi/avprobe) so we can be sure we're using the same
installation of sox or libav if using a non-standard PATH, or if we
want to set AV_LOG_FORCE_NOCOLOR
|
|
I forgot :err is already handled by Process.spawn, so split out
the functionality into err_str where we want to use it.
Also, add a :no_raise flag which will allow us to better handle
avprobe/soxi calls which can fail and avoid needless exceptions.
|
|
Shellwords.join is an identical method and there's no reason not to
use it.
|
|
We need to tell sox to use and resample to the _player_ format
instead of the source format. Otherwise 48000 Hz audio (common for
video?) sounds very slow when attempting to play back on the default
44100 Hz. It is also likely preferable to choose the audio stream
which matches the player channel count instead of letting sox
automatically invoke the remix effect.
Before this change, playing 6-channel, 48000 Hz source into a sink
expecting stereo, 44100 Hz is rather disturbing...
While we're at it, clarify the spawn code for the sox source, too.
We can drop the test_format_from_file test now, since
it's probably overkill at this point.
|
|
avconv is capable of outputting to the .sox format, greatly
simplifying our life as it enables us to easily apply sox
effects on a per-source file basis.
dtas-sourceedit and the "source" protocol commands will need
to change to support internal priorities (like sink).
|
|
We'll be supporting reading the format from avprobe and ffprobe,
so we should avoid tying ourselves to soxi
|
|
We should've done this at the start, but we didn't.
|