4K, Full HD, HD, SD — die Zahl steht beim Überfahren
„1080p" ist eine Angabe für den, der eine Stufe einstellt. Wer sich fragt,
ob es sich lohnt, dafür den Fernseher anzumachen, liest „Full HD". Die
Zeile sagt jetzt das Wort, der Tooltip den genauen Wert und die gemessene
Grösse: `1080p · 1920 × 800`.
**Es gab zwei Leitern, und sie waren sich uneinig.** `Benennung.AusHoehe`
machte aus 2160 ein „2160p", `FileNames.FassungAusHoehe` ein „4K" — auf
derselben Detailseite stand beides übereinander, ein paar Zeilen
auseinander. Die zweite ist weg; sie hatte ausserdem nur die Höhe und
vergab sich damit beim Kinoformat.
Gemessen an zwei echten Dateien: 1920×800 heisst „Full HD" (nur an der
Höhe gemessen hiesse es „HD", und daneben stünde ein 1280×720 mit
demselben Wort), 720×576 heisst „SD".
**1440p fällt unter Full HD.** „QHD" kennt kaum jemand, und ein fünftes
Wort für etwas zwischen zwei bekannten hilft beim Entscheiden nicht.
„8K" steht nur da, damit eine 8K-Datei nicht als 4K gemeldet wird.
**Der Client zerlegt nichts mehr.** Er las die Stufe bisher mit
`display.split(' · ')[0]` heraus — richtig, solange vor der Auflösung nie
etwas anderes steht. Jetzt kommen Wort und genauer Wert als eigene Felder.
**Die Fassung wird nicht mehr gespeichert, sondern gerechnet.** Sie stand
in der Spalte und war damit das, was beim letzten Scan galt: ein neues
Wort hätte keine bestehende Zeile erreicht. Jetzt hält die Spalte nur
noch, was im Dateinamen stand („Mobil"), und die Messung kommt frisch
dazu. Eine Migration räumt die alten gerechneten Werte weg.
**Nicht angefasst:** was eine *gewählte* Stufe ist statt einer gemessenen
— die Umkodierleiter, der Qualitätswähler im Spieler, die Stufen in den
Apps. Wer eine Stufe wählt, wählt eine Zahl.
Die Apps rechnen sich das Wort ohnehin selbst aus und sagen seit jeher
„4K" und „Full HD"; der Server ist ihnen jetzt angeglichen, nicht
umgekehrt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
168fcdfb4c
commit
c65356c16f
@@ -51,6 +51,31 @@ public class BenennungTests
|
||||
public void Bildhoehen_werden_zu_Stufen(int hoehe, string erwartet) =>
|
||||
Assert.That(Benennung.Aufloesung(hoehe), Is.EqualTo(erwartet));
|
||||
|
||||
/// <summary>Dieselbe Messung als Wort — das, was in der Zeile steht.</summary>
|
||||
[TestCase(3840, 2160, "4K")]
|
||||
[TestCase(1920, 1080, "Full HD")]
|
||||
[TestCase(2560, 1440, "Full HD")]
|
||||
[TestCase(1280, 720, "HD")]
|
||||
[TestCase(1024, 576, "SD")]
|
||||
[TestCase(720, 480, "SD")]
|
||||
[TestCase(null, null, null)]
|
||||
public void Bildgroessen_werden_zu_Woertern(int? breite, int? hoehe, string? erwartet) =>
|
||||
Assert.That(Benennung.Aufloesungswort(breite, hoehe), Is.EqualTo(erwartet));
|
||||
|
||||
/// <summary>Kinoformat: 800 Zeilen, und trotzdem Full HD.</summary>
|
||||
///
|
||||
/// <remarks>
|
||||
/// Derselbe Grund wie eine Stufe höher: gerechnet wird mit Breite und
|
||||
/// Höhe. Nur an der Höhe gemessen hiesse dieser Film „HD", und daneben
|
||||
/// stünde in der Mediathek ein 1280×720 mit demselben Wort.
|
||||
/// </remarks>
|
||||
[Test]
|
||||
public void Ein_beschnittenes_Breitbild_bleibt_Full_HD()
|
||||
{
|
||||
Assert.That(Benennung.Aufloesungswort(1920, 800), Is.EqualTo("Full HD"));
|
||||
Assert.That(Benennung.Aufloesungswort(1280, 720), Is.EqualTo("HD"));
|
||||
}
|
||||
|
||||
/// <summary>Der Fall aus der Oberfläche, Wort für Wort.</summary>
|
||||
[Test]
|
||||
public void Die_ganze_Tonspur()
|
||||
@@ -81,7 +106,7 @@ public class BenennungTests
|
||||
|
||||
[Test]
|
||||
public void Die_ganze_Bildspur() =>
|
||||
Assert.That(Benennung.Bildspur("h264", 1040), Is.EqualTo("1080p · H.264"));
|
||||
Assert.That(Benennung.Bildspur("h264", 1040), Is.EqualTo("Full HD · H.264"));
|
||||
}
|
||||
|
||||
/// <summary>Nachtrag: Titel, die nichts hinzufügen.</summary>
|
||||
|
||||
@@ -69,14 +69,6 @@ public class FassungTests
|
||||
[TestCase("Filme/The Matrix (1999).mkv")]
|
||||
public void Raet_nicht(string pfad) => Assert.That(FileNames.Fassung(pfad), Is.Null);
|
||||
|
||||
[TestCase(2160, "4K")]
|
||||
[TestCase(1080, "1080p")]
|
||||
[TestCase(720, "720p")]
|
||||
[TestCase(480, "SD")]
|
||||
[TestCase(null, null)]
|
||||
public void Bildet_die_Fassung_aus_der_Hoehe(int? hoehe, string? erwartet) =>
|
||||
Assert.That(FileNames.FassungAusHoehe(hoehe), Is.EqualTo(erwartet));
|
||||
|
||||
/// <summary>Der Fassungszusatz darf nie im Titel landen.</summary>
|
||||
[Test]
|
||||
public void Die_Fassung_bleibt_aus_dem_Titel_heraus()
|
||||
|
||||
Reference in New Issue
Block a user