|
7 | 7 | using System.IO; |
8 | 8 | using System.Linq; |
9 | 9 | using System.Text; |
| 10 | +using System.Text.Json.Nodes; |
10 | 11 | using System.Text.RegularExpressions; |
11 | 12 | using System.Threading; |
12 | 13 | using System.Windows; |
@@ -86,6 +87,11 @@ public static void Initialize() |
86 | 87 | UpgradeDatabaseTo50(); |
87 | 88 | } |
88 | 89 |
|
| 90 | + if (databaseVersion < 51) |
| 91 | + { |
| 92 | + UpgradeDatabaseTo51(); |
| 93 | + } |
| 94 | + |
89 | 95 | // Update encoding profiles if we need to. Everything is at least 28 now from the JSON upgrade. |
90 | 96 | int oldDatabaseVersion = Math.Max(databaseVersion, 28); |
91 | 97 | if (oldDatabaseVersion < Utilities.LastUpdatedEncodingProfileDatabaseVersion) |
@@ -366,6 +372,60 @@ private static void UpgradeDatabaseTo50() |
366 | 372 | } |
367 | 373 | } |
368 | 374 |
|
| 375 | + private static void UpgradeDatabaseTo51() |
| 376 | + { |
| 377 | + // Update ChannelLayout on video sources |
| 378 | + string oldEncodeJobs = DatabaseConfig.Get<string>("EncodeJobs2", "[]", Connection); |
| 379 | + |
| 380 | + string upgradedEncodeJobs; |
| 381 | + try |
| 382 | + { |
| 383 | + JsonNode? root = JsonNode.Parse(oldEncodeJobs); |
| 384 | + if (root is JsonArray jobsArray) |
| 385 | + { |
| 386 | + foreach (JsonNode? jobNode in jobsArray) |
| 387 | + { |
| 388 | + if (jobNode is JsonObject jobObj) |
| 389 | + { |
| 390 | + if (jobObj["VideoSource"] is JsonObject videoSource) |
| 391 | + { |
| 392 | + if (videoSource["Titles"] is JsonArray titles) |
| 393 | + { |
| 394 | + foreach (JsonNode? titleNode in titles) |
| 395 | + { |
| 396 | + if (titleNode is JsonObject titleObj && titleObj["AudioList"] is JsonArray audioList) |
| 397 | + { |
| 398 | + foreach (JsonNode? audioNode in audioList) |
| 399 | + { |
| 400 | + if (audioNode is JsonObject audioObj) |
| 401 | + { |
| 402 | + JsonNode? layoutNameNode = audioObj["ChannelLayoutName"]; |
| 403 | + if (layoutNameNode != null) |
| 404 | + { |
| 405 | + audioObj["ChannelLayout"] = JsonNode.Parse(layoutNameNode.ToJsonString()); |
| 406 | + audioObj.Remove("ChannelLayoutName"); |
| 407 | + } |
| 408 | + } |
| 409 | + } |
| 410 | + } |
| 411 | + } |
| 412 | + } |
| 413 | + } |
| 414 | + } |
| 415 | + } |
| 416 | + } |
| 417 | + |
| 418 | + upgradedEncodeJobs = root?.ToJsonString() ?? oldEncodeJobs; |
| 419 | + } |
| 420 | + catch |
| 421 | + { |
| 422 | + // If parsing fails, leave as-is. |
| 423 | + upgradedEncodeJobs = oldEncodeJobs; |
| 424 | + } |
| 425 | + |
| 426 | + DatabaseConfig.Set<string>("EncodeJobs2", upgradedEncodeJobs, Connection); |
| 427 | + } |
| 428 | + |
369 | 429 | #pragma warning restore CS0618 // Type or member is obsolete |
370 | 430 |
|
371 | 431 | private static void UpgradeEncodingProfiles(int databaseVersion) |
|
0 commit comments