diff --git a/Jellyfin.HardwareVisualizer/Server/Migrations/20240313175208_AddProcessedProperty.Designer.cs b/Jellyfin.HardwareVisualizer/Server/Migrations/20240313175208_AddProcessedProperty.Designer.cs new file mode 100644 index 0000000..9b8103c --- /dev/null +++ b/Jellyfin.HardwareVisualizer/Server/Migrations/20240313175208_AddProcessedProperty.Designer.cs @@ -0,0 +1,996 @@ +// +using System; +using Jellyfin.HardwareVisualizer.Server.Database; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; + +#nullable disable + +namespace Jellyfin.HardwareVisualizer.Server.Migrations +{ + [DbContext(typeof(HardwareVisualizerDataContext))] + [Migration("20240313175208_AddProcessedProperty")] + partial class AddProcessedProperty + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "8.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.CpuType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Identifier") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Vendor") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("CpuTypes"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.FfmpegVersion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("HashMd5") + .HasColumnType("text"); + + b.Property("HashSha256") + .HasColumnType("text"); + + b.Property("PlatformId") + .HasColumnType("uuid"); + + b.Property("Source") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .IsRequired() + .HasColumnType("text"); + + b.Property("VersionGroup") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("PlatformId"); + + b.ToTable("FfmpegVersions"); + + b.HasData( + new + { + Id = new Guid("a3f734be-fb92-4a1f-bd8c-b6701e0f7e9f"), + HashSha256 = "47f4ea0da73f7835748c4549004877eb9abc6070", + PlatformId = new Guid("2c361be8-c0ec-4020-984b-66c620dad840"), + Source = "https://repo.jellyfin.org/releases/server/windows/versions/jellyfin-ffmpeg/5.1.4-3/jellyfin-ffmpeg_5.1.4-3-portable_win64.zip", + Version = "5.1.6-3", + VersionGroup = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f") + }, + new + { + Id = new Guid("2c720157-f8fb-48c9-8686-d4dfe7daae9a"), + HashSha256 = "dbe5bf6d194abfec209e8ec3d25d526d12b1d51638902535fb2df233aedb62c2", + PlatformId = new Guid("8d58b84b-73dc-4275-985d-123abe886818"), + Source = "https://repo.jellyfin.org/releases/server/ubuntu/versions/jellyfin-ffmpeg/6.0.1-2/jellyfin-ffmpeg6_6.0.1-2-focal_amd64.deb", + Version = "6.0.1-2", + VersionGroup = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f") + }); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.GpuType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Identifier") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Vendor") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("GpuTypes"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.HardwareCodec", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Identifier") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("HardwareCodecs"); + + b.HasData( + new + { + Id = new Guid("bf2065dc-9b03-48b8-9a30-206a12a6319c"), + Identifier = "h264", + Name = "H264" + }, + new + { + Id = new Guid("104537db-e1e2-4490-a82a-afaede9a8fd4"), + Identifier = "h265", + Name = "HVEC" + }); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.HardwareDisplay", b => + { + b.Property("HardwareCodec") + .HasColumnType("text"); + + b.Property("ToResolution") + .HasColumnType("text"); + + b.Property("FromResolution") + .HasColumnType("text"); + + b.Property("DeviceType") + .HasColumnType("integer"); + + b.Property("DeviceName") + .HasColumnType("text"); + + b.Property("Diviation") + .HasColumnType("real"); + + b.Property("MaxStreams") + .HasColumnType("double precision"); + + b.HasKey("HardwareCodec", "ToResolution", "FromResolution", "DeviceType", "DeviceName"); + + b.ToTable("HardwareDisplays"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.HardwareSurveyEntry", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CpuTypeId") + .HasColumnType("uuid"); + + b.Property("FromResolutionId") + .HasColumnType("uuid"); + + b.Property("GpuTypeId") + .HasColumnType("uuid"); + + b.Property("HardwareCodecId") + .HasColumnType("uuid"); + + b.Property("HardwareSurveySubmissionId") + .HasColumnType("uuid"); + + b.Property("MaxStreams") + .HasColumnType("integer"); + + b.Property("Processed") + .HasColumnType("boolean"); + + b.Property("ToResolutionId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("CpuTypeId"); + + b.HasIndex("FromResolutionId"); + + b.HasIndex("GpuTypeId"); + + b.HasIndex("HardwareCodecId"); + + b.HasIndex("HardwareSurveySubmissionId"); + + b.HasIndex("ToResolutionId"); + + b.ToTable("HardwareSurveyEntries"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.HardwareSurveySubmission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("RawSurveySubmissionId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("RawSurveySubmissionId"); + + b.ToTable("HardwareSurveySubmissions"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.MediaTestFile", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AudioCodec") + .IsRequired() + .HasColumnType("text"); + + b.Property("Bitrate") + .HasColumnType("bigint"); + + b.Property("HashMd5") + .HasColumnType("text"); + + b.Property("HashSha256") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Size") + .HasColumnType("bigint"); + + b.Property("SourceUrl") + .IsRequired() + .HasColumnType("text"); + + b.Property("VideoCodec") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("MediaTestFiles"); + + b.HasData( + new + { + Id = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + AudioCodec = "", + Bitrate = 120L, + HashMd5 = "", + HashSha256 = "", + Name = "jellyfish-120-mbps-4k-uhd-hevc-10bit", + Size = 429L, + SourceUrl = "https://repo.jellyfin.org/jellyfish/media/jellyfish-120-mbps-4k-uhd-hevc-10bit.mkv", + VideoCodec = "HEVC" + }, + new + { + Id = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + AudioCodec = "", + Bitrate = 120L, + HashMd5 = "", + HashSha256 = "", + Name = "jellyfish-120-mbps-4k-uhd-h264", + Size = 431L, + SourceUrl = "https://repo.jellyfin.org/jellyfish/media/jellyfish-120-mbps-4k-uhd-h264.mkv", + VideoCodec = "h264" + }, + new + { + Id = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + AudioCodec = "", + Bitrate = 40L, + HashMd5 = "", + HashSha256 = "", + Name = "jellyfish-40-mbps-hd-hevc-10bit", + Size = 143L, + SourceUrl = "https://repo.jellyfin.org/jellyfish/media/jellyfish-40-mbps-hd-hevc-10bit.mkv", + VideoCodec = "HEVC" + }, + new + { + Id = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + AudioCodec = "", + Bitrate = 40L, + HashMd5 = "", + HashSha256 = "", + Name = "jellyfish-40-mbps-hd-h264", + Size = 142L, + SourceUrl = "https://repo.jellyfin.org/jellyfish/media/jellyfish-40-mbps-hd-h264.mkv", + VideoCodec = "h264" + }); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.Platform", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReplacementId") + .HasColumnType("text"); + + b.Property("Supported") + .HasColumnType("boolean"); + + b.Property("Type") + .HasColumnType("integer"); + + b.Property("Version") + .IsRequired() + .HasColumnType("text"); + + b.Property("VersionId") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("Platform"); + + b.HasData( + new + { + Id = new Guid("2c361be8-c0ec-4020-984b-66c620dad840"), + DisplayName = "Windows 11", + Name = "Windows 11", + Supported = true, + Type = 0, + Version = "Windows 11 version 23H2", + VersionId = "22631" + }, + new + { + Id = new Guid("8d58b84b-73dc-4275-985d-123abe886818"), + DisplayName = "Ubuntu Focal", + Name = "Ubuntu", + Supported = true, + Type = 1, + Version = "Ubuntu", + VersionId = "22.04" + }); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.RawSurveySubmission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Json") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("RawSurveySubmission"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.TestCase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Bitrate") + .HasColumnType("bigint"); + + b.Property("FromResolution") + .IsRequired() + .HasColumnType("text"); + + b.Property("MediaTestFileId") + .HasColumnType("uuid"); + + b.Property("TestCaseType") + .HasColumnType("integer"); + + b.Property("ToResolution") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("MediaTestFileId"); + + b.ToTable("TestCases"); + + b.HasData( + new + { + Id = new Guid("c7f40068-5e43-aa02-c27c-4fd927fc2227"), + Bitrate = 79616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("b254896a-12e5-1eef-9af7-227ef036e328"), + Bitrate = 9616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("c1d474a5-ba17-69e3-c756-e60d4fa4da45"), + Bitrate = 3616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("baf3bb5a-59f6-5524-10d6-2d4c3c84b98b"), + Bitrate = 79616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("b3332698-6127-b00f-a6eb-ea8f2ce2cef6"), + Bitrate = 9616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("3423dd1d-2943-4c32-4f7f-b1418d962c43"), + Bitrate = 3616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("29755a9c-2670-f91d-ac43-130a6f95282d"), + Bitrate = 79616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("5f2f3607-8461-6f48-f4e7-63a8afce220f"), + Bitrate = 9616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("d2f2a7bf-a56d-f685-bf29-88ff1527dcba"), + Bitrate = 3616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("e8a75e65-a3f3-4d92-a45b-84e71a13efab"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("56398356-cd67-18e1-1206-3489c3754ade"), + Bitrate = 79616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("c84b0320-56a3-62c0-b138-a037fb4859cc"), + Bitrate = 9616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("2b51a90a-cc94-f2a7-c5da-c06770fc3249"), + Bitrate = 3616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("11dfaadf-13dc-0016-c3d6-a52e2ca91cc9"), + Bitrate = 79616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("197e68ac-1e23-5449-5c59-03c99659f2b4"), + Bitrate = 9616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("51585605-4769-f7f0-9251-68be2678c51b"), + Bitrate = 3616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("08baf6bd-197d-c126-608b-b583104d6a6a"), + Bitrate = 79616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("d629f0e4-ca51-655f-7887-86d2b58b2de3"), + Bitrate = 9616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("9f0be794-ea9e-ec37-3096-f1de916ce744"), + Bitrate = 3616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("e1e58b15-6664-454c-868a-20442db30557"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("35d9fee7-ee4f-f3ca-9655-8ff692540bd5"), + Bitrate = 79616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("28efd25d-ca42-f9cb-b93c-a5bbd981d30b"), + Bitrate = 9616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("b7ea429f-f7b1-a593-1d18-08495a415adc"), + Bitrate = 3616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("bf801b8a-be7d-1c02-32e0-7c13490f1915"), + Bitrate = 79616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("50568481-5469-6623-3f4a-0b2ac2829f78"), + Bitrate = 9616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("bd30c9e2-1401-e18d-3fcd-84d17a7f5b0e"), + Bitrate = 3616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("d5c7f3fe-09ea-3572-f81a-7f33b3d75ab0"), + Bitrate = 79616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("7f310440-5cde-6c14-f774-109bd052ebbf"), + Bitrate = 9616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("ce2bfcee-c9ba-d88d-56fa-c5e694592e67"), + Bitrate = 3616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("70daebe7-c9fc-4e02-a524-2fc825a49355"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("7690d373-dc4e-a22f-df5a-de76f9d765a5"), + Bitrate = 79616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("b645bf2e-8bac-77f6-7759-28e4972dd79d"), + Bitrate = 9616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("fd28a846-75c2-1171-cd89-ef5feb17de7f"), + Bitrate = 3616000L, + FromResolution = "2160p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("d5b81f94-7813-e7bb-dc18-fef5b34b0ab2"), + Bitrate = 79616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("502f4082-68ae-b9e3-4e34-e8229c978c5f"), + Bitrate = 9616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("774fa97a-0274-cd8a-ed41-20a9767c5e82"), + Bitrate = 3616000L, + FromResolution = "1080p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "720p" + }, + new + { + Id = new Guid("aadc3d7e-8ee7-2cd0-3bfe-86df8f994a45"), + Bitrate = 79616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "2160p" + }, + new + { + Id = new Guid("097a9f8c-93fb-803d-b661-636d473a43d2"), + Bitrate = 9616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "1080p" + }, + new + { + Id = new Guid("5fa366d5-e1ba-ec78-d922-3c767caa3e53"), + Bitrate = 3616000L, + FromResolution = "720p", + MediaTestFileId = new Guid("1d943d13-586d-4562-a968-eb1d0ffae947"), + TestCaseType = 0, + ToResolution = "720p" + }); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.TestCaseArgument", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("FfmpegArgument") + .IsRequired() + .HasColumnType("text"); + + b.Property("FfmpegVersionGroupId") + .HasColumnType("uuid"); + + b.Property("FfmpegVersionId") + .HasColumnType("uuid"); + + b.Property("HardwareCodecId") + .HasColumnType("uuid"); + + b.Property("TestCaseArgumentDeviceType") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("FfmpegVersionId"); + + b.HasIndex("HardwareCodecId"); + + b.ToTable("TestCaseArguments"); + + b.HasData( + new + { + Id = new Guid("1c76b8cc-7a23-4c9d-8ed7-9cbf2d741631"), + FfmpegArgument = "-c:v h264 -i {video_file} -autoscale 0 -an -sn -vf scale=trunc(min(max(iw\\,ih*a)\\,{scale})/2)*2:trunc(ow/a/2)*2,format=yuv420p -c:v libx264 -preset veryfast -b:v {bitrate} -maxrate {bitrate} -f null - -benchmark", + FfmpegVersionGroupId = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f"), + HardwareCodecId = new Guid("bf2065dc-9b03-48b8-9a30-206a12a6319c"), + TestCaseArgumentDeviceType = 0 + }, + new + { + Id = new Guid("26b70d55-42e0-4def-8288-f00b562c0d6d"), + FfmpegArgument = "-c:v hevc -i {video_file} -autoscale 0 -an -sn -vf scale=trunc(min(max(iw\\,ih*a)\\,{scale})/2)*2:trunc(ow/a/2)*2,format=yuv420p -c:v libx265 -preset veryfast -b:v {bitrate} -maxrate {bitrate} -f null - -benchmark", + FfmpegVersionGroupId = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f"), + HardwareCodecId = new Guid("104537db-e1e2-4490-a82a-afaede9a8fd4"), + TestCaseArgumentDeviceType = 0 + }, + new + { + Id = new Guid("5535efbb-bcee-4196-961d-7c7358c1c232"), + FfmpegArgument = "-init_hw_device cuda=cu:{gpu} -hwaccel cuda -hwaccel_output_format cuda -c:v h264_cuvid -i {video_file} -autoscale 0 -an -sn -vf scale_cuda=-1:{scale}:yuv420p -c:v h264_nvenc -preset p1 -b:v {bitrate} -maxrate {bitrate} -f null - -benchmark", + FfmpegVersionGroupId = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f"), + HardwareCodecId = new Guid("bf2065dc-9b03-48b8-9a30-206a12a6319c"), + TestCaseArgumentDeviceType = 1 + }, + new + { + Id = new Guid("a3af8e6a-456a-41c2-91c6-f1a4cde9c7f4"), + FfmpegArgument = "-init_hw_device cuda=cu:{gpu} -hwaccel cuda -hwaccel_output_format cuda -c:v hevc_cuvid -i {video_file} -autoscale 0 -an -sn -vf scale_cuda=-1:{scale}:yuv420p -c:v hevc_nvenc -preset p1 -b:v {bitrate} -maxrate {bitrate} -f null - -benchmark", + FfmpegVersionGroupId = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f"), + HardwareCodecId = new Guid("104537db-e1e2-4490-a82a-afaede9a8fd4"), + TestCaseArgumentDeviceType = 1 + }, + new + { + Id = new Guid("4ff85976-2046-4560-94fd-a79af116f154"), + FfmpegArgument = "-init_hw_device vaapi=va:/dev/dri/by-path/{gpu}-render -hwaccel vaapi -hwaccel_output_format vaapi -c:v h264 -i {video_file} -autoscale 0 -an -sn -vf scale_vaapi=-1:{scale}:format=nv12 -c:v h264_vaapi -b:v {bitrate} -maxrate {bitrate} -f null - -benchmark", + FfmpegVersionGroupId = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f"), + HardwareCodecId = new Guid("bf2065dc-9b03-48b8-9a30-206a12a6319c"), + TestCaseArgumentDeviceType = 2 + }, + new + { + Id = new Guid("2a255052-3128-4e2a-a511-bef273f4889c"), + FfmpegArgument = "-init_hw_device vaapi=va:/dev/dri/by-path/{gpu}-render -hwaccel vaapi -hwaccel_output_format vaapi -c:v hevc -i {video_file} -autoscale 0 -an -sn -vf scale_vaapi=-1:{scale}:format=nv12 -c:v hevc_vaapi -b:v {bitrate} -maxrate {bitrate} -f null - -benchmark", + FfmpegVersionGroupId = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f"), + HardwareCodecId = new Guid("104537db-e1e2-4490-a82a-afaede9a8fd4"), + TestCaseArgumentDeviceType = 2 + }, + new + { + Id = new Guid("49463914-c696-4dca-8f62-c041ec2d8200"), + FfmpegArgument = "-init_hw_device vaapi=va:/dev/dri/by-path/{gpu}-render -init_hw_device qsv=qs@va -hwaccel qsv -hwaccel_output_format qsv -c:v h264_qsv -i {video_file} -autoscale 0 -an -sn -vf scale_qsv=-1:{scale}:format=nv12 -c:v h264_qsv -preset veryfast -b:v {bitrate} -maxrate {bitrate} -f null - -benchmark", + FfmpegVersionGroupId = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f"), + HardwareCodecId = new Guid("bf2065dc-9b03-48b8-9a30-206a12a6319c"), + TestCaseArgumentDeviceType = 3 + }, + new + { + Id = new Guid("ec73eeb5-e095-40f5-8b84-4d2307f13bfd"), + FfmpegArgument = "-init_hw_device vaapi=va:/dev/dri/by-path/{gpu}-render -init_hw_device qsv=qs@va -hwaccel qsv -hwaccel_output_format qsv -c:v hevc_qsv -i {video_file} -autoscale 0 -an -sn -vf scale_qsv=-1:{scale}:format=nv12 -c:v hevc_qsv -preset veryfast -b:v {bitrate} -maxrate {bitrate} -f null - -benchmark", + FfmpegVersionGroupId = new Guid("9f9565f1-4661-484b-8c80-433bc909e70f"), + HardwareCodecId = new Guid("104537db-e1e2-4490-a82a-afaede9a8fd4"), + TestCaseArgumentDeviceType = 3 + }); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.TestResolution", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Identifier") + .IsRequired() + .HasColumnType("text"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("TestResolutions"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.FfmpegVersion", b => + { + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.Platform", "Platform") + .WithMany() + .HasForeignKey("PlatformId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Platform"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.HardwareSurveyEntry", b => + { + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.CpuType", "CpuType") + .WithMany() + .HasForeignKey("CpuTypeId"); + + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.TestResolution", "FromResolution") + .WithMany() + .HasForeignKey("FromResolutionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.GpuType", "GpuType") + .WithMany() + .HasForeignKey("GpuTypeId"); + + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.HardwareCodec", "HardwareCodec") + .WithMany() + .HasForeignKey("HardwareCodecId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.HardwareSurveySubmission", "HardwareSurveySubmission") + .WithMany("HardwareSurveyEntry") + .HasForeignKey("HardwareSurveySubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.TestResolution", "ToResolution") + .WithMany() + .HasForeignKey("ToResolutionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("CpuType"); + + b.Navigation("FromResolution"); + + b.Navigation("GpuType"); + + b.Navigation("HardwareCodec"); + + b.Navigation("HardwareSurveySubmission"); + + b.Navigation("ToResolution"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.HardwareSurveySubmission", b => + { + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.RawSurveySubmission", "RawSurveySubmission") + .WithMany() + .HasForeignKey("RawSurveySubmissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("RawSurveySubmission"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.TestCase", b => + { + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.MediaTestFile", "MediaTestFile") + .WithMany("TestCases") + .HasForeignKey("MediaTestFileId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MediaTestFile"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.TestCaseArgument", b => + { + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.FfmpegVersion", null) + .WithMany("TestCaseArguments") + .HasForeignKey("FfmpegVersionId"); + + b.HasOne("Jellyfin.HardwareVisualizer.Server.Database.HardwareCodec", "HardwareCodec") + .WithMany() + .HasForeignKey("HardwareCodecId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("HardwareCodec"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.FfmpegVersion", b => + { + b.Navigation("TestCaseArguments"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.HardwareSurveySubmission", b => + { + b.Navigation("HardwareSurveyEntry"); + }); + + modelBuilder.Entity("Jellyfin.HardwareVisualizer.Server.Database.MediaTestFile", b => + { + b.Navigation("TestCases"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Jellyfin.HardwareVisualizer/Server/Migrations/20240313175208_AddProcessedProperty.cs b/Jellyfin.HardwareVisualizer/Server/Migrations/20240313175208_AddProcessedProperty.cs new file mode 100644 index 0000000..e836c89 --- /dev/null +++ b/Jellyfin.HardwareVisualizer/Server/Migrations/20240313175208_AddProcessedProperty.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Jellyfin.HardwareVisualizer.Server.Migrations +{ + /// + public partial class AddProcessedProperty : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Processed", + table: "HardwareSurveyEntries", + type: "boolean", + nullable: false, + defaultValue: false); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Processed", + table: "HardwareSurveyEntries"); + } + } +} diff --git a/Jellyfin.HardwareVisualizer/Server/Migrations/HardwareVisualizerDataContextModelSnapshot.cs b/Jellyfin.HardwareVisualizer/Server/Migrations/HardwareVisualizerDataContextModelSnapshot.cs index d25e456..d44ac82 100644 --- a/Jellyfin.HardwareVisualizer/Server/Migrations/HardwareVisualizerDataContextModelSnapshot.cs +++ b/Jellyfin.HardwareVisualizer/Server/Migrations/HardwareVisualizerDataContextModelSnapshot.cs @@ -206,6 +206,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("MaxStreams") .HasColumnType("integer"); + b.Property("Processed") + .HasColumnType("boolean"); + b.Property("ToResolutionId") .HasColumnType("uuid");