Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.ar.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
تظهر الصيغ حيث أنت، ولا يظهر منها إلا ما يناسب الملفات التي تسحبها.
</td>
<td width="33%" valign="top">
<b>269 صيغة دون برامج أخرى</b><br>
<b>270 صيغة دون برامج أخرى</b><br>
الصور وPDF وWord وExcel وPowerPoint وHWP والكتب الإلكترونية والأرشيفات والخطوط وCAD والنماذج ثلاثية الأبعاد والبيانات الجغرافية، كلها تعمل دون Office أو Hancom Office أو LibreOffice.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.es.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
Los formatos aparecen donde ya estás, y solo los que tienen sentido para los archivos que arrastras.
</td>
<td width="33%" valign="top">
<b>269 formatos, sin otros programas</b><br>
<b>270 formatos, sin otros programas</b><br>
Imágenes, PDF, Word, Excel, PowerPoint, HWP, libros electrónicos, archivos comprimidos, tipografías, CAD, modelos 3D y datos geoespaciales funcionan sin Office, Hancom Office ni LibreOffice.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
Les formats apparaissent là où vous êtes déjà, et seulement ceux qui ont un sens pour les fichiers que vous faites glisser.
</td>
<td width="33%" valign="top">
<b>269 formats, sans autre logiciel</b><br>
<b>270 formats, sans autre logiciel</b><br>
Images, PDF, Word, Excel, PowerPoint, HWP, livres numériques, archives, polices, CAO, modèles 3D et données géospatiales fonctionnent sans Office, Hancom Office ni LibreOffice.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.hi.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
फ़ॉर्मैट वहीं दिखते हैं जहाँ आप पहले से हैं, और सिर्फ़ वही जो आपकी खींची जा रही फ़ाइलों के लिए सही हों।
</td>
<td width="33%" valign="top">
<b>269 फ़ॉर्मैट, कोई और सॉफ़्टवेयर नहीं</b><br>
<b>270 फ़ॉर्मैट, कोई और सॉफ़्टवेयर नहीं</b><br>
इमेज, PDF, Word, Excel, PowerPoint, HWP, ई-बुक, आर्काइव, फ़ॉन्ट, CAD, 3D मॉडल और भू-स्थानिक डेटा Office, Hancom Office या LibreOffice के बिना काम करते हैं।
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
いま作業している場所に、ドラッグ中のファイルに合う形式だけが表示されます。
</td>
<td width="33%" valign="top">
<b>269形式、ほかのソフトは不要</b><br>
<b>270形式、ほかのソフトは不要</b><br>
画像、PDF、Word、Excel、PowerPoint、HWP、電子書籍、アーカイブ、フォント、CAD、3Dモデル、地理空間データを、Office、Hancom Office、LibreOfficeなしで変換できます。
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
끌고 있는 파일에 맞는 형식만 지금 있는 자리에 나타나요.
</td>
<td width="33%" valign="top">
<b>269가지 형식, 다른 프로그램 없이</b><br>
<b>270가지 형식, 다른 프로그램 없이</b><br>
이미지, PDF, 워드, 엑셀, 파워포인트, HWP, 전자책, 압축 파일, 글꼴, CAD, 3D 모델, 지리 정보 데이터를 오피스·한컴오피스·LibreOffice 없이 변환해요.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
The formats appear where you already are, only the ones that make sense for the files you drag.
</td>
<td width="33%" valign="top">
<b>269 formats, no other software</b><br>
<b>270 formats, no other software</b><br>
Images, PDF, Word, Excel, PowerPoint, HWP, e-books, archives, fonts, CAD, 3D models and geospatial data work without Office, Hancom Office or LibreOffice.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.pl.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
Formaty pojawiają się tam, gdzie już jesteś, i tylko te, które pasują do przeciąganych plików.
</td>
<td width="33%" valign="top">
<b>269 formatów bez dodatkowych programów</b><br>
<b>270 formatów bez dodatkowych programów</b><br>
Obrazy, PDF, Word, Excel, PowerPoint, HWP, e-booki, archiwa, czcionki, CAD, modele 3D i dane geoprzestrzenne działają bez pakietu Office, Hancom Office i LibreOffice.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.pt-BR.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
Os formatos aparecem onde você já está, só os que fazem sentido para os arquivos que você arrasta.
</td>
<td width="33%" valign="top">
<b>269 formatos, sem outro programa</b><br>
<b>270 formatos, sem outro programa</b><br>
Imagens, PDF, Word, Excel, PowerPoint, HWP, e-books, arquivos compactados, fontes, CAD, modelos 3D e dados geoespaciais funcionam sem Office, Hancom Office ou LibreOffice.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.pt-PT.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
Os formatos aparecem onde estás, apenas os que fazem sentido para os ficheiros que arrastas.
</td>
<td width="33%" valign="top">
<b>269 formatos, sem outro software</b><br>
<b>270 formatos, sem outro software</b><br>
Imagens, PDF, Word, Excel, PowerPoint, HWP, livros digitais, arquivos, tipos de letra, CAD, modelos 3D e dados geoespaciais funcionam sem Office, Hancom Office ou LibreOffice.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.ru.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
Форматы появляются там, где вы уже работаете, и только те, что подходят перетаскиваемым файлам.
</td>
<td width="33%" valign="top">
<b>269 форматов без лишних программ</b><br>
<b>270 форматов без лишних программ</b><br>
Изображения, PDF, Word, Excel, PowerPoint, HWP, электронные книги, архивы, шрифты, чертежи CAD, 3D-модели и геоданные работают без Office, Hancom Office и LibreOffice.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.th.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
ฟอร์แมตที่เหมาะสมจะแสดงขึ้นตรงจุดที่คุณทำงานอยู่ โดยแสดงเฉพาะฟอร์แมตที่ใช้ได้กับไฟล์ที่คุณลากเท่านั้น
</td>
<td width="33%" valign="top">
<b>269 ฟอร์แมต โดยไม่ต้องลงโปรแกรมอื่นเพิ่ม</b><br>
<b>270 ฟอร์แมต โดยไม่ต้องลงโปรแกรมอื่นเพิ่ม</b><br>
รูปภาพ, PDF, Word, Excel, PowerPoint, HWP, อีบุ๊ก, ไฟล์บีบอัด, ฟอนต์, CAD, โมเดล 3D และข้อมูลเชิงพื้นที่ ทำงานได้โดยไม่ต้องมี Microsoft Office, Hancom Office หรือ LibreOffice
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.tr.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
Formatlar zaten bulunduğunuz yerde görünür; yalnızca sürüklediğiniz dosyalara uygun olanlar listelenir.
</td>
<td width="33%" valign="top">
<b>269 format, başka yazılım gerekmez</b><br>
<b>270 format, başka yazılım gerekmez</b><br>
Görseller, PDF, Word, Excel, PowerPoint, HWP, e-kitaplar, arşivler, yazı tipleri, CAD, 3B modeller ve coğrafi veriler; Office, Hancom Office veya LibreOffice olmadan çalışır.
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
只显示适合当前拖动文件的格式,就在你所在的位置。
</td>
<td width="33%" valign="top">
<b>269 种格式,无需其他软件</b><br>
<b>270 种格式,无需其他软件</b><br>
图片、PDF、Word、Excel、PowerPoint、HWP、电子书、压缩包、字体、CAD、3D 模型和地理信息数据,无需 Office、韩文办公软件或 LibreOffice。
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 1 addition & 1 deletion README.zh-TW.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
只顯示適合當前拖曳檔案的格式,就在你所在的位置。
</td>
<td width="33%" valign="top">
<b>269 種格式,無需其他軟體</b><br>
<b>270 種格式,無需其他軟體</b><br>
圖片、PDF、Word、Excel、PowerPoint、HWP、電子書、壓縮檔、字型、CAD、3D 模型和地理資訊資料,無需 Office、韓文文書軟體或 LibreOffice。
</td>
<td width="33%" valign="top">
Expand Down
2 changes: 2 additions & 0 deletions docs/ENGINES.md
Original file line number Diff line number Diff line change
Expand Up @@ -1477,6 +1477,8 @@ Dahua DVR / NVR recordings (`.dav`, read only, #594) are read by FFmpeg's `dhav`
the target and preset allow it (`CanCopyVideo`), like any other container's; G.711 sound is encoded for targets that
can't hold it. The chunks carry the camera's wall-clock time, so FFmpeg reports the recording date as the start time;
the output starts at zero.
Bink videos (`.bik`, read only, #751), the cutscene format of many games, are read by FFmpeg's `bink` demuxer and
decoder and go to every video and audio target. FFmpeg has no Bink encoder, so nothing writes `.bik`.
A Video CD's `MPEGAV/AVSEQ01.DAT` (MPEG-1 in a RIFF/CDXA wrapper) counts as MPEG: `.dat` is an extension of that
format, and FFmpeg reads what the file holds, so a `.dat` with no video in it fails instead of making a file.

Expand Down
2 changes: 2 additions & 0 deletions src/Filee.Core/Formats/FormatRegistry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,8 @@ public static class FormatRegistry
// Dahua and similar DVR / NVR recordings (#594): FFmpeg's dhav demuxer reads them (H.264 / H.265 video, often
// with G.711 or AAC sound).
new("dav", "DAV", FormatCategory.Video, ["dav"], Writable: false),
// Bink Video, the game cutscene format of RAD Game Tools (#751): FFmpeg's bink demuxer reads it. Never a target.
new("bik", "BIK", FormatCategory.Video, ["bik"], Writable: false),
// Raw H.265 / H.264 streams with no container, as security cameras and VMS software export them (issue #301).
new("h265", "H.265", FormatCategory.Video, ["h265", "265", "hevc"], Writable: false),
new("h264", "H.264", FormatCategory.Video, ["h264", "264"], Writable: false),
Expand Down
2 changes: 1 addition & 1 deletion src/Filee.Core/Settings/AppSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public static bool IsFlipKeyAllowed(string key, IEnumerable<TriggerGesture> gest
public sealed class AppSettings
{
/// <summary>Current schema version. Increase when the format changes and add a migration.</summary>
public const int CurrentSchemaVersion = 55;
public const int CurrentSchemaVersion = 56;

public int SchemaVersion { get; set; } = CurrentSchemaVersion;

Expand Down
3 changes: 3 additions & 0 deletions src/Filee.Core/Settings/UserDataStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -934,6 +934,9 @@ public static bool ApplyToLibrary(int from, List<Preset> presets, List<ToolbarPr
// v55: Apple Voice Memos recordings (.qta, #646) learn the audio donut; custom claims stay put.
if (from < 55)
changed |= LearnExtensions(profiles, out _, ["qta"]);
// v56: Bink videos (.bik, #751) learn the video donut; custom claims stay put.
if (from < 56)
changed |= LearnExtensions(profiles, out _, ["bik"]);
return changed;
}

Expand Down
33 changes: 33 additions & 0 deletions tests/Filee.Core.Tests/BikFormatTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Bink Video (.bik, #751): a read-only video source on the video donut, learned by existing libraries.

using Filee.Core.Formats;
using Filee.Core.Presets;
using Filee.Core.Profiles;
using Filee.Core.Settings;

namespace Filee.Core.Tests;

public class BikFormatTests
{
[Fact]
public void Bik_is_a_video_filee_reads_but_never_writes()
{
var bik = FormatRegistry.Detect("intro.BIK");
Assert.NotNull(bik);
Assert.Equal(("bik", FormatCategory.Video, false), (bik.Id, bik.Category, bik.Writable));
Assert.Equal("video", ProfileSelector.Select(BuiltInData.CreateProfiles(), ["intro.bik"])?.Id);
}

[Fact]
public void Version_55_libraries_learn_bik_once()
{
var presets = BuiltInData.CreatePresets();
var profiles = BuiltInData.CreateProfiles();
profiles.Single(p => p.Id == "video").Extensions.Remove("bik");

Assert.True(SettingsMigrations.ApplyToLibrary(55, presets, profiles));

Assert.Contains("bik", profiles.Single(p => p.Id == "video").Extensions);
Assert.False(SettingsMigrations.ApplyToLibrary(55, presets, profiles));
}
}
Loading