Fixed invalid columns on MediaStreams

This commit is contained in:
JPVenson 2024-11-12 23:53:05 +00:00
parent 46905ac66a
commit d073e2c664
10 changed files with 4132 additions and 128 deletions

View File

@ -12,7 +12,7 @@ public class MediaStreamInfo
public int StreamIndex { get; set; } public int StreamIndex { get; set; }
public MediaStreamTypeEntity? StreamType { get; set; } public required MediaStreamTypeEntity StreamType { get; set; }
public string? Codec { get; set; } public string? Codec { get; set; }
@ -26,13 +26,13 @@ public class MediaStreamInfo
public string? Path { get; set; } public string? Path { get; set; }
public bool IsInterlaced { get; set; } public bool? IsInterlaced { get; set; }
public required int BitRate { get; set; } public int? BitRate { get; set; }
public required int Channels { get; set; } public int? Channels { get; set; }
public required int SampleRate { get; set; } public int? SampleRate { get; set; }
public bool IsDefault { get; set; } public bool IsDefault { get; set; }
@ -40,63 +40,63 @@ public class MediaStreamInfo
public bool IsExternal { get; set; } public bool IsExternal { get; set; }
public required int Height { get; set; } public int? Height { get; set; }
public required int Width { get; set; } public int? Width { get; set; }
public required float AverageFrameRate { get; set; } public float? AverageFrameRate { get; set; }
public required float RealFrameRate { get; set; } public float? RealFrameRate { get; set; }
public required float Level { get; set; } public float? Level { get; set; }
public string? PixelFormat { get; set; } public string? PixelFormat { get; set; }
public required int BitDepth { get; set; } public int? BitDepth { get; set; }
public required bool IsAnamorphic { get; set; } public bool? IsAnamorphic { get; set; }
public required int RefFrames { get; set; } public int? RefFrames { get; set; }
public required string CodecTag { get; set; } public string? CodecTag { get; set; }
public required string Comment { get; set; } public string? Comment { get; set; }
public required string NalLengthSize { get; set; } public string? NalLengthSize { get; set; }
public required bool IsAvc { get; set; } public bool? IsAvc { get; set; }
public required string Title { get; set; } public string? Title { get; set; }
public required string TimeBase { get; set; } public string? TimeBase { get; set; }
public required string CodecTimeBase { get; set; } public string? CodecTimeBase { get; set; }
public required string ColorPrimaries { get; set; } public string? ColorPrimaries { get; set; }
public required string ColorSpace { get; set; } public string? ColorSpace { get; set; }
public required string ColorTransfer { get; set; } public string? ColorTransfer { get; set; }
public required int DvVersionMajor { get; set; } public int? DvVersionMajor { get; set; }
public required int DvVersionMinor { get; set; } public int? DvVersionMinor { get; set; }
public required int DvProfile { get; set; } public int? DvProfile { get; set; }
public required int DvLevel { get; set; } public int? DvLevel { get; set; }
public required int RpuPresentFlag { get; set; } public int? RpuPresentFlag { get; set; }
public required int ElPresentFlag { get; set; } public int? ElPresentFlag { get; set; }
public required int BlPresentFlag { get; set; } public int? BlPresentFlag { get; set; }
public required int DvBlSignalCompatibilityId { get; set; } public int? DvBlSignalCompatibilityId { get; set; }
public required bool IsHearingImpaired { get; set; } public bool? IsHearingImpaired { get; set; }
public required int Rotation { get; set; } public int? Rotation { get; set; }
public string? KeyFrames { get; set; } public string? KeyFrames { get; set; }
} }

View File

@ -85,7 +85,7 @@ public class MediaStreamRepository : IMediaStreamRepository
if (filter.Type.HasValue) if (filter.Type.HasValue)
{ {
var typeValue = (MediaStreamTypeEntity)filter.Type.Value; var typeValue = (MediaStreamTypeEntity)filter.Type.Value;
query = query.Where(e => e.StreamType!.Value == typeValue); query = query.Where(e => e.StreamType == typeValue);
} }
return query; return query;
@ -95,10 +95,7 @@ public class MediaStreamRepository : IMediaStreamRepository
{ {
var dto = new MediaStream(); var dto = new MediaStream();
dto.Index = entity.StreamIndex; dto.Index = entity.StreamIndex;
if (entity.StreamType != null) dto.Type = (MediaStreamType)entity.StreamType;
{
dto.Type = (MediaStreamType)entity.StreamType;
}
dto.IsAVC = entity.IsAvc; dto.IsAVC = entity.IsAvc;
dto.Codec = entity.Codec; dto.Codec = entity.Codec;
@ -107,7 +104,7 @@ public class MediaStreamRepository : IMediaStreamRepository
dto.Profile = entity.Profile; dto.Profile = entity.Profile;
dto.AspectRatio = entity.AspectRatio; dto.AspectRatio = entity.AspectRatio;
dto.Path = RestorePath(entity.Path); dto.Path = RestorePath(entity.Path);
dto.IsInterlaced = entity.IsInterlaced; dto.IsInterlaced = entity.IsInterlaced.GetValueOrDefault();
dto.BitRate = entity.BitRate; dto.BitRate = entity.BitRate;
dto.Channels = entity.Channels; dto.Channels = entity.Channels;
dto.SampleRate = entity.SampleRate; dto.SampleRate = entity.SampleRate;
@ -167,30 +164,30 @@ public class MediaStreamRepository : IMediaStreamRepository
ItemId = itemId, ItemId = itemId,
StreamIndex = dto.Index, StreamIndex = dto.Index,
StreamType = (MediaStreamTypeEntity)dto.Type, StreamType = (MediaStreamTypeEntity)dto.Type,
IsAvc = dto.IsAVC.GetValueOrDefault(), IsAvc = dto.IsAVC,
Codec = dto.Codec, Codec = dto.Codec,
Language = dto.Language, Language = dto.Language,
ChannelLayout = dto.ChannelLayout, ChannelLayout = dto.ChannelLayout,
Profile = dto.Profile, Profile = dto.Profile,
AspectRatio = dto.AspectRatio, AspectRatio = dto.AspectRatio,
Path = GetPathToSave(dto.Path), Path = GetPathToSave(dto.Path) ?? dto.Path,
IsInterlaced = dto.IsInterlaced, IsInterlaced = dto.IsInterlaced,
BitRate = dto.BitRate.GetValueOrDefault(0), BitRate = dto.BitRate,
Channels = dto.Channels.GetValueOrDefault(0), Channels = dto.Channels,
SampleRate = dto.SampleRate.GetValueOrDefault(0), SampleRate = dto.SampleRate,
IsDefault = dto.IsDefault, IsDefault = dto.IsDefault,
IsForced = dto.IsForced, IsForced = dto.IsForced,
IsExternal = dto.IsExternal, IsExternal = dto.IsExternal,
Height = dto.Height.GetValueOrDefault(0), Height = dto.Height,
Width = dto.Width.GetValueOrDefault(0), Width = dto.Width,
AverageFrameRate = dto.AverageFrameRate.GetValueOrDefault(0), AverageFrameRate = dto.AverageFrameRate,
RealFrameRate = dto.RealFrameRate.GetValueOrDefault(0), RealFrameRate = dto.RealFrameRate,
Level = (float)dto.Level.GetValueOrDefault(), Level = dto.Level.HasValue ? (float)dto.Level : null,
PixelFormat = dto.PixelFormat, PixelFormat = dto.PixelFormat,
BitDepth = dto.BitDepth.GetValueOrDefault(0), BitDepth = dto.BitDepth,
IsAnamorphic = dto.IsAnamorphic.GetValueOrDefault(), IsAnamorphic = dto.IsAnamorphic,
RefFrames = dto.RefFrames.GetValueOrDefault(0), RefFrames = dto.RefFrames,
CodecTag = dto.CodecTag, CodecTag = dto.CodecTag,
Comment = dto.Comment, Comment = dto.Comment,
NalLengthSize = dto.NalLengthSize, NalLengthSize = dto.NalLengthSize,
@ -200,16 +197,16 @@ public class MediaStreamRepository : IMediaStreamRepository
ColorPrimaries = dto.ColorPrimaries, ColorPrimaries = dto.ColorPrimaries,
ColorSpace = dto.ColorSpace, ColorSpace = dto.ColorSpace,
ColorTransfer = dto.ColorTransfer, ColorTransfer = dto.ColorTransfer,
DvVersionMajor = dto.DvVersionMajor.GetValueOrDefault(0), DvVersionMajor = dto.DvVersionMajor,
DvVersionMinor = dto.DvVersionMinor.GetValueOrDefault(0), DvVersionMinor = dto.DvVersionMinor,
DvProfile = dto.DvProfile.GetValueOrDefault(0), DvProfile = dto.DvProfile,
DvLevel = dto.DvLevel.GetValueOrDefault(0), DvLevel = dto.DvLevel,
RpuPresentFlag = dto.RpuPresentFlag.GetValueOrDefault(0), RpuPresentFlag = dto.RpuPresentFlag,
ElPresentFlag = dto.ElPresentFlag.GetValueOrDefault(0), ElPresentFlag = dto.ElPresentFlag,
BlPresentFlag = dto.BlPresentFlag.GetValueOrDefault(0), BlPresentFlag = dto.BlPresentFlag,
DvBlSignalCompatibilityId = dto.DvBlSignalCompatibilityId.GetValueOrDefault(0), DvBlSignalCompatibilityId = dto.DvBlSignalCompatibilityId,
IsHearingImpaired = dto.IsHearingImpaired, IsHearingImpaired = dto.IsHearingImpaired,
Rotation = dto.Rotation.GetValueOrDefault(0) Rotation = dto.Rotation
}; };
return entity; return entity;
} }

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,702 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Jellyfin.Server.Implementations.Migrations
{
/// <inheritdoc />
public partial class FixMediaStreams : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<int>(
name: "Width",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<string>(
name: "Title",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "TimeBase",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<int>(
name: "StreamType",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "SampleRate",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "RpuPresentFlag",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "Rotation",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "RefFrames",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<float>(
name: "RealFrameRate",
table: "MediaStreamInfos",
type: "REAL",
nullable: true,
oldClrType: typeof(float),
oldType: "REAL");
migrationBuilder.AlterColumn<string>(
name: "Profile",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Path",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "NalLengthSize",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<float>(
name: "Level",
table: "MediaStreamInfos",
type: "REAL",
nullable: true,
oldClrType: typeof(float),
oldType: "REAL");
migrationBuilder.AlterColumn<string>(
name: "Language",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<bool>(
name: "IsHearingImpaired",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(bool),
oldType: "INTEGER");
migrationBuilder.AlterColumn<bool>(
name: "IsAvc",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(bool),
oldType: "INTEGER");
migrationBuilder.AlterColumn<bool>(
name: "IsAnamorphic",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(bool),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "Height",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "ElPresentFlag",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "DvVersionMinor",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "DvVersionMajor",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "DvProfile",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "DvLevel",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "DvBlSignalCompatibilityId",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<string>(
name: "Comment",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "ColorTransfer",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "ColorSpace",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "ColorPrimaries",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "CodecTimeBase",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "CodecTag",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "Codec",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "Channels",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<string>(
name: "ChannelLayout",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "BlPresentFlag",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "BitRate",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "BitDepth",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<float>(
name: "AverageFrameRate",
table: "MediaStreamInfos",
type: "REAL",
nullable: true,
oldClrType: typeof(float),
oldType: "REAL");
migrationBuilder.AlterColumn<string>(
name: "AspectRatio",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<int>(
name: "Width",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Title",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "TimeBase",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "StreamType",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(int),
oldType: "INTEGER");
migrationBuilder.AlterColumn<int>(
name: "SampleRate",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "RpuPresentFlag",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "Rotation",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "RefFrames",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<float>(
name: "RealFrameRate",
table: "MediaStreamInfos",
type: "REAL",
nullable: false,
defaultValue: 0f,
oldClrType: typeof(float),
oldType: "REAL",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Profile",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "Path",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "NalLengthSize",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<float>(
name: "Level",
table: "MediaStreamInfos",
type: "REAL",
nullable: false,
defaultValue: 0f,
oldClrType: typeof(float),
oldType: "REAL",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Language",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<bool>(
name: "IsHearingImpaired",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: false,
oldClrType: typeof(bool),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<bool>(
name: "IsAvc",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: false,
oldClrType: typeof(bool),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<bool>(
name: "IsAnamorphic",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: false,
oldClrType: typeof(bool),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "Height",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "ElPresentFlag",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "DvVersionMinor",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "DvVersionMajor",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "DvProfile",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "DvLevel",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "DvBlSignalCompatibilityId",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Comment",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "ColorTransfer",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "ColorSpace",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "ColorPrimaries",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "CodecTimeBase",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "CodecTag",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Codec",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<int>(
name: "Channels",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "ChannelLayout",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<int>(
name: "BlPresentFlag",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "BitRate",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "BitDepth",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<float>(
name: "AverageFrameRate",
table: "MediaStreamInfos",
type: "REAL",
nullable: false,
defaultValue: 0f,
oldClrType: typeof(float),
oldType: "REAL",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "AspectRatio",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,144 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Jellyfin.Server.Implementations.Migrations
{
/// <inheritdoc />
public partial class FixMediaStreams2 : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Profile",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "Path",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "Language",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<bool>(
name: "IsInterlaced",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: true,
oldClrType: typeof(bool),
oldType: "INTEGER");
migrationBuilder.AlterColumn<string>(
name: "Codec",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "ChannelLayout",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
migrationBuilder.AlterColumn<string>(
name: "AspectRatio",
table: "MediaStreamInfos",
type: "TEXT",
nullable: true,
oldClrType: typeof(string),
oldType: "TEXT");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<string>(
name: "Profile",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Path",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Language",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<bool>(
name: "IsInterlaced",
table: "MediaStreamInfos",
type: "INTEGER",
nullable: false,
defaultValue: false,
oldClrType: typeof(bool),
oldType: "INTEGER",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "Codec",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "ChannelLayout",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
migrationBuilder.AlterColumn<string>(
name: "AspectRatio",
table: "MediaStreamInfos",
type: "TEXT",
nullable: false,
defaultValue: string.Empty,
oldClrType: typeof(string),
oldType: "TEXT",
oldNullable: true);
}
}
}

View File

@ -748,76 +748,70 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Property<string>("AspectRatio") b.Property<string>("AspectRatio")
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<float>("AverageFrameRate") b.Property<float?>("AverageFrameRate")
.HasColumnType("REAL"); .HasColumnType("REAL");
b.Property<int>("BitDepth") b.Property<int?>("BitDepth")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("BitRate") b.Property<int?>("BitRate")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("BlPresentFlag") b.Property<int?>("BlPresentFlag")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<string>("ChannelLayout") b.Property<string>("ChannelLayout")
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<int>("Channels") b.Property<int?>("Channels")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<string>("Codec") b.Property<string>("Codec")
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<string>("CodecTag") b.Property<string>("CodecTag")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<string>("CodecTimeBase") b.Property<string>("CodecTimeBase")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<string>("ColorPrimaries") b.Property<string>("ColorPrimaries")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<string>("ColorSpace") b.Property<string>("ColorSpace")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<string>("ColorTransfer") b.Property<string>("ColorTransfer")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<string>("Comment") b.Property<string>("Comment")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<int>("DvBlSignalCompatibilityId") b.Property<int?>("DvBlSignalCompatibilityId")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("DvLevel") b.Property<int?>("DvLevel")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("DvProfile") b.Property<int?>("DvProfile")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("DvVersionMajor") b.Property<int?>("DvVersionMajor")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("DvVersionMinor") b.Property<int?>("DvVersionMinor")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("ElPresentFlag") b.Property<int?>("ElPresentFlag")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("Height") b.Property<int?>("Height")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<bool>("IsAnamorphic") b.Property<bool?>("IsAnamorphic")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<bool>("IsAvc") b.Property<bool?>("IsAvc")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<bool>("IsDefault") b.Property<bool>("IsDefault")
@ -829,10 +823,10 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Property<bool>("IsForced") b.Property<bool>("IsForced")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<bool>("IsHearingImpaired") b.Property<bool?>("IsHearingImpaired")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<bool>("IsInterlaced") b.Property<bool?>("IsInterlaced")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<string>("KeyFrames") b.Property<string>("KeyFrames")
@ -841,11 +835,10 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Property<string>("Language") b.Property<string>("Language")
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<float>("Level") b.Property<float?>("Level")
.HasColumnType("REAL"); .HasColumnType("REAL");
b.Property<string>("NalLengthSize") b.Property<string>("NalLengthSize")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<string>("Path") b.Property<string>("Path")
@ -857,33 +850,31 @@ namespace Jellyfin.Server.Implementations.Migrations
b.Property<string>("Profile") b.Property<string>("Profile")
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<float>("RealFrameRate") b.Property<float?>("RealFrameRate")
.HasColumnType("REAL"); .HasColumnType("REAL");
b.Property<int>("RefFrames") b.Property<int?>("RefFrames")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("Rotation") b.Property<int?>("Rotation")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("RpuPresentFlag") b.Property<int?>("RpuPresentFlag")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int>("SampleRate") b.Property<int?>("SampleRate")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<int?>("StreamType") b.Property<int>("StreamType")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.Property<string>("TimeBase") b.Property<string>("TimeBase")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<string>("Title") b.Property<string>("Title")
.IsRequired()
.HasColumnType("TEXT"); .HasColumnType("TEXT");
b.Property<int>("Width") b.Property<int?>("Width")
.HasColumnType("INTEGER"); .HasColumnType("INTEGER");
b.HasKey("ItemId", "StreamIndex"); b.HasKey("ItemId", "StreamIndex");

View File

@ -418,37 +418,13 @@ public class MigrateLibraryDb : IMigrationRoutine
StreamType = Enum.Parse<MediaStreamTypeEntity>(reader.GetString(2)), StreamType = Enum.Parse<MediaStreamTypeEntity>(reader.GetString(2)),
Item = null!, Item = null!,
ItemId = reader.GetGuid(0), ItemId = reader.GetGuid(0),
AverageFrameRate = 0, AspectRatio = null!,
BitDepth = 0, ChannelLayout = null!,
BitRate = 0, Codec = null!,
BlPresentFlag = 0, IsInterlaced = false,
Channels = 0, Language = null!,
CodecTag = string.Empty, Path = null!,
CodecTimeBase = string.Empty, Profile = null!,
ColorPrimaries = string.Empty,
ColorSpace = string.Empty,
ColorTransfer = string.Empty,
Comment = string.Empty,
DvBlSignalCompatibilityId = 0,
DvLevel = 0,
DvProfile = 0,
DvVersionMajor = 0,
DvVersionMinor = 0,
ElPresentFlag = 0,
Height = 0,
IsAnamorphic = false,
IsAvc = false,
IsHearingImpaired = false,
Level = 0,
NalLengthSize = string.Empty,
RealFrameRate = 0,
RefFrames = 0,
Rotation = 0,
RpuPresentFlag = 0,
SampleRate = 0,
TimeBase = string.Empty,
Title = string.Empty,
Width = 0
}; };
if (reader.TryGetString(3, out var codec)) if (reader.TryGetString(3, out var codec))

View File

@ -383,7 +383,7 @@ namespace MediaBrowser.Model.Entities
attributes.Add(string.IsNullOrEmpty(LocalizedUndefined) ? "Und" : LocalizedUndefined); attributes.Add(string.IsNullOrEmpty(LocalizedUndefined) ? "Und" : LocalizedUndefined);
} }
if (IsHearingImpaired) if (IsHearingImpaired == true)
{ {
attributes.Add(string.IsNullOrEmpty(LocalizedHearingImpaired) ? "Hearing Impaired" : LocalizedHearingImpaired); attributes.Add(string.IsNullOrEmpty(LocalizedHearingImpaired) ? "Hearing Impaired" : LocalizedHearingImpaired);
} }
@ -500,7 +500,7 @@ namespace MediaBrowser.Model.Entities
/// Gets or sets a value indicating whether this instance is for the hearing impaired. /// Gets or sets a value indicating whether this instance is for the hearing impaired.
/// </summary> /// </summary>
/// <value><c>true</c> if this instance is for the hearing impaired; otherwise, <c>false</c>.</value> /// <value><c>true</c> if this instance is for the hearing impaired; otherwise, <c>false</c>.</value>
public bool IsHearingImpaired { get; set; } public bool? IsHearingImpaired { get; set; }
/// <summary> /// <summary>
/// Gets or sets the height. /// Gets or sets the height.

View File

@ -121,7 +121,7 @@ namespace MediaBrowser.Providers.MediaInfo
mediaStream.Index = startIndex++; mediaStream.Index = startIndex++;
mediaStream.IsDefault = pathInfo.IsDefault || mediaStream.IsDefault; mediaStream.IsDefault = pathInfo.IsDefault || mediaStream.IsDefault;
mediaStream.IsForced = pathInfo.IsForced || mediaStream.IsForced; mediaStream.IsForced = pathInfo.IsForced || mediaStream.IsForced;
mediaStream.IsHearingImpaired = pathInfo.IsHearingImpaired || mediaStream.IsHearingImpaired; mediaStream.IsHearingImpaired = pathInfo.IsHearingImpaired || mediaStream.IsHearingImpaired.GetValueOrDefault();
mediaStreams.Add(MergeMetadata(mediaStream, pathInfo)); mediaStreams.Add(MergeMetadata(mediaStream, pathInfo));
} }