Commit Graph

8677 Commits

Author SHA1 Message Date
odrling 0645b3a0d1
osx-fix-libs: fix relative symlinks with same name 2024-05-26 05:24:57 +02:00
odrling 15f7d852da
force dependency on libresrc 2024-05-26 05:24:57 +02:00
odrling df7fa4d63b
don't delay audio on matroska files 2024-05-26 05:24:57 +02:00
odrling 085ede3ddf
add option to disable tests 2024-05-26 05:24:57 +02:00
odrling 28c8ed9525
fix vfr nonzero start time test 2024-05-26 05:24:57 +02:00
odrling 8c0aee5517
[style] increase default font size 2024-05-26 05:24:57 +02:00
odrling faa468ecb5
[Karaoke] disable drag timing
disables "Left-click drag moves end marker"
2024-05-26 05:24:57 +02:00
odrling d348d3e1c0
[style] change default style 2024-05-26 05:24:57 +02:00
odrling cff6253636
[Karaoke] Autocommit and autofocus 2024-05-26 05:24:57 +02:00
Vincent Wong 415a393760
Audio/timing: minor style, comment
A bit more clarification of code logic. Follow predominant if/else style
2024-05-26 05:24:56 +02:00
Vincent Wong 615b9c1bd7
Audio/Timing: implement tap-to-time
Tap-to-time provides the user the ability to tap to the lyrics/syllables
of the song in order to time lines or karaoke. It consists of these
extra UI interactions:

- **Indicator**: tap marker: a designated marker that can be moved to
  the current audio position; indicated in:
  - the audio display by a green arrow underneath a marker
  - the karaoke display by a green-colored syllable
- **Control**: tap marker: the tap marker can be changed by selecting
  syllables on audio display in karaoke mode, or clicking the markers on
  audio display in dialogue mode
- **Control**: ctrl-right-click audio display: starts playing the audio
  from that exact position until the end of the file
- **Option**: Timing/Tap To Time: enables the tap marker indicator and
  commands
- **Button**: time_opt_tap_to_time: toggles the Timing/Tap To Time option
- **Button**: time_tap_connect (hotkey I): a command that:
  - moves the tap marker's position to the current playing audio
    position
  - sets the next marker to be the tap marker
  - if the tap marker is already the last marker AND BOTH autocommit AND
    next-line-on-commit is ON, will move onto the next line
  - if moved on to the next line, also sets the start marker to the current
    audio position, so the two lines are connected, and moves to the
    next tap marker (essentially reinvoking time_tap_connect once)
- **Button**: time_tap_no_connect (hotkey O): similar to
  time_tap_connect, except it will not set the next line's start
  position even if moved to the next line

Expected workflow:
1) User loads song lyrics
2) User splits each line into syllables
3) User turns on tap-to-time, autocommit, and next-line-on-commit
4) User plays audio from beginning, tapping time_tap_connect to each
syllable, occasionally tapping time_tap_no_connect when a break between
lines is desired
5) If user messes up a line, they can set the tap marker to where they
want to restart from, and ctrl-right-click to start the audio a few
seconds before it
6) Syllables can be split/merged at will, and adjustments to timing can
be done using normal karaoke timing controls
2024-05-26 05:24:56 +02:00
Vincent Wong 140c3e9757
AudioTimingControllerKaraoke: move timing correction above MoveMarker
Having the timing correction in MoveMarker is extremely surprising
behavior if any other part of the code uses MoveMarker expecting it to
work correctly as advertised
2024-05-26 05:24:56 +02:00
Vincent Wong dff7435517
audio_timing: add missing param comment for OnLeftClick
Missing the alt_click param in comment
2024-05-26 05:24:56 +02:00
odrling 4c0e31542a
normalize timecodes for every formats except matroska 2024-05-26 05:24:56 +02:00
odrling 36934c53bd
shift video instead of subtitles
This is probably wrong in some cases. This is probably what we want with
matroska files.
2024-05-26 05:24:56 +02:00
odrling e0555e421e
fix mks file parsing 2024-05-26 05:24:56 +02:00
odrling c342e8b9cd
fix sub timing in mkv files with video delay
Some matroska files have audio start at timestamp 0 and video later.
In this case mkvtoolnix seems to use the first block of the first
cluster to the audio track (I would assume this is only an
implementation detail and not really from the matroska specs. And also
could happen in other cases without the video being delayed, but that's
not the point). Aegisub used to read this first block and use its
timestamp as the starting point of the video track.

With this commit, Aegisub tries to read all the blocks until it can read
the first timestamp of the video track and use it for the subtitles'
timestamps. Audio tracks don't seem to be impacted by these changes.
2024-05-26 05:24:56 +02:00
Pierre Jeanjean a0f184ec6d
Fix charset detection and conversion issues 2024-05-26 05:24:53 +02:00
arch1t3cht 0e44a3488e Merge branch 'bugfixes' into feature 2024-05-21 14:02:10 +02:00
arch1t3cht d1916fc6f9 ci: Pin macos to macos-13 for now
macos-latest now runs on Apple Silicon, which fails one test
and probably still needs extra work for the packaging to work.
Until that's figured out, run on macos-13.
2024-05-21 14:01:17 +02:00
arch1t3cht 246dbd7670 ci: Update github actions versions yet again 2024-05-20 14:30:55 +02:00
arch1t3cht a89158b5c2 ci: Try to work around yet another gh actions bug 2024-05-20 13:49:20 +02:00
arch1t3cht 628f1306ef ci: Make libdav1d a required dependency
This used to be enforced by patching the ffmpeg wrap,
but after upstream changes to the wrap this method is simpler.
2024-05-20 01:34:31 +02:00
arch1t3cht a6ba1720db Merge branch 'workarounds' into feature 2024-05-20 01:33:04 +02:00
arch1t3cht b31c2c3267 Remove patches to ffmpeg wraps
Equivalent functionality (allowing dependencies to be meson subprojects
and fixing the zlib HAVE_UNISTD_H issue) was merged upstream now
(thanks kasper), so this is no longer necessary. dav1d is now
enabled using -Dffmpeg:libdav1d=enabled.
2024-05-20 01:31:47 +02:00
arch1t3cht 49feee6b0b Merge branch 'vapoursynth' into feature 2024-05-19 21:31:48 +02:00
arch1t3cht 9b0fef1c38 vapoursynth: Fix division by zero in aegisub_vs.py progress indicator 2024-05-19 21:31:28 +02:00
arch1t3cht 1c22bb3e4e Merge branch 'bugfixes' into feature 2024-05-12 19:22:04 +02:00
arch1t3cht 551d4ff2e8 Point libass wrap to upstream libass
The meson PR was merged there now.
2024-05-12 19:21:26 +02:00
arch1t3cht fad027f026 Merge branch 'workarounds' into feature 2024-05-12 00:44:02 +02:00
arch1t3cht 972e8dd4ba Point ffms2 wrap to upstream again
My pull request with multiple seeking fixes was merged there.
2024-05-12 00:43:52 +02:00
arch1t3cht 91b198d12d Merge branches 'bugfixes', 'bestsource' and 'vapoursynth' into feature 2024-04-18 16:11:10 +02:00
arch1t3cht 6ccf67359d ci: Fix meson configure call 2024-04-18 16:10:59 +02:00
arch1t3cht 2fdd7c70aa meson: Add freetype2 wrap
This wrap file used to be part of the libass wrap but was removed
there now.
2024-04-18 15:27:54 +02:00
arch1t3cht 39314072f9 bestsource: Fix switched 'audio' and 'video' strings 2024-04-18 15:21:02 +02:00
0tkl 9683959f2e bestsource: Bump to R2
Update DLL path for win installer
2024-04-18 14:30:52 +02:00
arch1t3cht 2f300ab1d3 Merge branch 'vapoursynth' into feature 2024-04-04 12:49:52 +02:00
arch1t3cht 8bbaf75e03 vapoursynth: Update outdated comment in default script 2024-04-04 12:47:11 +02:00
arch1t3cht 9c5ba15ce9 Update some dependencies in README 2024-04-04 12:46:15 +02:00
Oneric e26fb17c95 readme: only link to CI builds from feature branch 2024-04-04 12:43:15 +02:00
arch1t3cht a455e07f13 ci: Run meson configure to get more debug output 2024-04-03 18:30:50 +02:00
arch1t3cht e1c3bb7d69 ci: install xxhash instead of jansson 2024-04-03 18:29:52 +02:00
arch1t3cht 7fa1ead157 Merge branch 'bestsource' into feature 2024-04-03 18:29:49 +02:00
arch1t3cht 900876cc7f bestsource: Bump to bestsource2
Update API usage, incorporate new features, and refactor a bit:
- Use new progress callback to show progress bar
- Use new frame info functions to get timecodes/keyframes instead of
  manually decoding
- Use new tracklist API to show track selection dialogs
- Expose option of whether to apply RFF
- Show a warning when bestsource had to revert to linear decoding
- Reuse the swscale context across frames and ensure the format
  stays constant
- Add xxhash wrap
- No longer mark the bestsource video provider as slow
2024-04-03 18:29:31 +02:00
arch1t3cht aa68c2e66b Merge branches 'misc' and 'bugfixes' into feature 2024-03-20 14:39:37 +01:00
Ryan Lucia 4b20bc7df0 ci: try to workaround github actions bug 2024-03-20 14:39:24 +01:00
moi15moi 7543060f1d Rework Windows font collector (arch1t3cht/Aegisub#107)
[src\meson.build] Add DirectWrite has dependency

[src\font_file_lister_gdi] Rework GDI FontCollector to use DirectWrite

This replaces all the logic of using the Windows registry to obtain the font path by using DirectWrite. The goal is simply to improve the quality of the code. This doesn't change any functionality

[src\meson.build] Remove Uniscribe has dependency

Uniscribe was only used for the FontCollector. Since we now use DirectWrite, we don't need it anymore.

[src\dialog_fonts_collector] Catch exceptions that FontCollector may raise

On Windows, the initialization of the FontCollector can raise an exception

[src\font_file_lister] Document the exception that GdiFontFileLister can throw

[src\font_file_lister_gdi] Correct possible memory leak when an error occur

Fix error caused by AddFontResource on Windows 10 or higher

[meson.build] Replace add_project_arguments with conf.set for HAVE_DWRITE_3

[src\dialog_fonts_collector] Update message error and optimisation

[src\font_file_lister_gdi] Correct documentation typo

[src\font_file_lister_gdi] Cosmetic nit - Initialize hfont in one line

[src\font_file_lister_gdi] Cosmetic nit - Remove if statements brace

[src\font_file_lister_gdi] Replace WCHAR param of normalizeFilePathCase to std::wstring

[src\font_file_lister_gdi] Replace WCHAR by std::wstring

[src\font_file_lister_gdi] Use IDWriteFontFace::GetSimulations to detect fake_italic/fake_bold

See this comment: https://github.com/arch1t3cht/Aegisub/pull/107#issuecomment-1975229652

[src\font_file_lister_gdi] If Win7/8 has Win 10 SDK on compile time, correctly verify if font has character(s)

With the Visual Studio 2019 toolchain on Windows 7, it installs the Windows 10 SDK by default. Because of this, ``HAVE_DWRITE_3`` is true, so the ``QueryInterface`` always fails. Now, if the ``QueryInterface`` fails, we try to verify if the font has characters with a Windows Vista SP2 compatible code.

[src\font_file_lister_gdi] Support facename that contains only whitespace AND truncated facename

Problem 1:
Previously, if a user wrote "\fn   ", it would return the font Arial, which is not what we want. This is because when we request EnumFontFamiliesEx with whitespace or an empty lfFaceName, it will enumerate all the installed fonts.

Solution 1:
To resolve this issue, let's implement a solution similar to libass to determine if the selected facename exists: 649a7c2e1f/libass/ass_directwrite.c (L737-L747)

Problem 2:
GDI truncates font names to 31 characters. See: https://github.com/libass/libass/issues/459
However, since I changed the method to determine if a facename exists, I ensured that we still support this "feature".

To test this, I used the font in: https://github.com/libass/libass/issues/710

[src\font_file_lister_gdi] Add a FIXME comment regarding the utilization of std::wstring over WCHAR

[src\font_file_lister_gdi] Add FIXME comment about charset
2024-03-20 14:38:45 +01:00
arch1t3cht 897ca32c26 Allow setting Encoding=-1 in style editor 2024-03-19 23:32:12 +01:00
arch1t3cht cd2e894634 Merge branches 'bestsource', 'vapoursynth' and 'bugfixes' into feature 2024-03-08 01:54:29 +01:00
arch1t3cht 4f8cb846cc bestsource: Bump to R1 2024-03-08 01:54:14 +01:00