private static void _mediaReadFields(MySqlDataReader dataReader, PersistentMedia media) { uint flags = dataReader.IsDBNull(dataReader.GetOrdinal("flags")) ? (uint)0 : dataReader.GetUInt32("flags"); byte typVideo = dataReader.IsDBNull(dataReader.GetOrdinal("typVideo")) ? (byte)0 : dataReader.GetByte("typVideo"); media._mediaName = dataReader.IsDBNull(dataReader.GetOrdinal("MediaName")) ? string.Empty : dataReader.GetString("MediaName"); media._duration = dataReader.IsDBNull(dataReader.GetOrdinal("Duration")) ? default(TimeSpan) : dataReader.GetTimeSpan("Duration"); media._durationPlay = dataReader.IsDBNull(dataReader.GetOrdinal("DurationPlay")) ? default(TimeSpan) : dataReader.GetTimeSpan("DurationPlay"); media._folder = dataReader.IsDBNull(dataReader.GetOrdinal("Folder")) ? string.Empty : dataReader.GetString("Folder"); media._fileName = dataReader.IsDBNull(dataReader.GetOrdinal("FileName")) ? string.Empty : dataReader.GetString("FileName"); media._fileSize = dataReader.IsDBNull(dataReader.GetOrdinal("FileSize")) ? 0 : dataReader.GetUInt64("FileSize"); media.idFormat = dataReader.IsDBNull(dataReader.GetOrdinal("idFormat")) ? 0 : dataReader.GetUInt64("idFormat"); media._lastUpdated = _readDateTimeField(dataReader, "LastUpdated"); media._mediaStatus = (TMediaStatus)(dataReader.IsDBNull(dataReader.GetOrdinal("statusMedia")) ? 0 : dataReader.GetInt32("statusMedia")); media._mediaType = (TMediaType)(dataReader.IsDBNull(dataReader.GetOrdinal("typMedia")) ? 0 : dataReader.GetInt32("typMedia")); media._tCStart = dataReader.IsDBNull(dataReader.GetOrdinal("TCStart")) ? default(TimeSpan) : dataReader.GetTimeSpan("TCStart"); media._tCPlay = dataReader.IsDBNull(dataReader.GetOrdinal("TCPlay")) ? default(TimeSpan) : dataReader.GetTimeSpan("TCPlay"); media.idProgramme = dataReader.IsDBNull(dataReader.GetOrdinal("idProgramme")) ? 0 : dataReader.GetUInt64("idProgramme"); media._audioVolume = dataReader.IsDBNull(dataReader.GetOrdinal("AudioVolume")) ? 0 : dataReader.GetDecimal("AudioVolume"); media._audioLevelIntegrated = dataReader.IsDBNull(dataReader.GetOrdinal("AudioLevelIntegrated")) ? 0 : dataReader.GetDecimal("AudioLevelIntegrated"); media._audioLevelPeak = dataReader.IsDBNull(dataReader.GetOrdinal("AudioLevelPeak")) ? 0 : dataReader.GetDecimal("AudioLevelPeak"); media._audioChannelMapping = dataReader.IsDBNull(dataReader.GetOrdinal("typAudio")) ? TAudioChannelMapping.Stereo : (TAudioChannelMapping)dataReader.GetByte("typAudio"); media.HasExtraLines = (typVideo & (byte)0x80) > 0; media._videoFormat = (TVideoFormat)(typVideo & 0x7F); media._idAux = dataReader.IsDBNull(dataReader.GetOrdinal("idAux")) ? string.Empty : dataReader.GetString("idAux"); media._killDate = _readDateTimeField(dataReader, "KillDate"); media._mediaGuid = dataReader.IsDBNull(dataReader.GetOrdinal("MediaGuid")) ? Guid.Empty : dataReader.GetGuid("MediaGuid"); media._mediaEmphasis = (TMediaEmphasis)((flags >> 8) & 0xF); media._parental = (TParental)((flags >> 12) & 0xF); if (media is ServerMedia) ((ServerMedia)media)._doNotArchive = (flags & 0x1) != 0; media._mediaCategory = (TMediaCategory)((flags >> 4) & 0xF); // bits 4-7 of 1st byte }
private static Boolean _mediaFillParamsAndExecute(MySqlCommand cmd, PersistentMedia media) { cmd.Parameters.AddWithValue("@idProgramme", media.idProgramme); cmd.Parameters.AddWithValue("@idFormat", media.idFormat); cmd.Parameters.AddWithValue("@idAux", media.idAux); if (media.MediaGuid == Guid.Empty) cmd.Parameters.AddWithValue("@MediaGuid", DBNull.Value); else cmd.Parameters.Add("@MediaGuid", MySqlDbType.Binary).Value = media.MediaGuid.ToByteArray(); if (media.KillDate == default(DateTime)) cmd.Parameters.AddWithValue("@KillDate", DBNull.Value); else cmd.Parameters.AddWithValue("@KillDate", media.KillDate); uint flags = ((media is ServerMedia && (media as ServerMedia).DoNotArchive) ? (uint)0x1 : (uint)0x0) | ((uint)(media.MediaCategory) << 4) // bits 4-7 of 1st byte | ((uint)media.MediaEmphasis << 8) // bits 1-3 of second byte | ((uint)media.Parental << 12) // bits 4-7 of second byte ; cmd.Parameters.AddWithValue("@flags", flags); if (media is ServerMedia && media.Directory is ServerDirectory) { cmd.Parameters.AddWithValue("@idServer", ((media as ServerMedia).Directory as ServerDirectory).Server.idServer); cmd.Parameters.AddWithValue("@typVideo", ((byte)media.VideoFormat) | (media.HasExtraLines ? (byte)0x80 : (byte)0x0)); } if (media is ServerMedia && media.Directory is AnimationDirectory) { cmd.Parameters.AddWithValue("@idServer", ((media as ServerMedia).Directory as AnimationDirectory).Server.idServer); cmd.Parameters.AddWithValue("@typVideo", DBNull.Value); } if (media is ArchiveMedia && media.Directory is ArchiveDirectory) { cmd.Parameters.AddWithValue("@idArchive", (((media as ArchiveMedia).Directory) as ArchiveDirectory).IdArchive); cmd.Parameters.AddWithValue("@typVideo", (byte)media.VideoFormat); } cmd.Parameters.AddWithValue("@MediaName", media.MediaName); cmd.Parameters.AddWithValue("@Duration", media.Duration); cmd.Parameters.AddWithValue("@DurationPlay", media.DurationPlay); cmd.Parameters.AddWithValue("@Folder", media.Folder); cmd.Parameters.AddWithValue("@FileSize", media.FileSize); cmd.Parameters.AddWithValue("@FileName", media.FileName); if (media.LastUpdated == default(DateTime)) cmd.Parameters.AddWithValue("@LastUpdated", DBNull.Value); else cmd.Parameters.AddWithValue("@LastUpdated", media.LastUpdated); cmd.Parameters.AddWithValue("@statusMedia", (Int32)media.MediaStatus); cmd.Parameters.AddWithValue("@typMedia", (Int32)media.MediaType); cmd.Parameters.AddWithValue("@typAudio", (byte)media.AudioChannelMapping); cmd.Parameters.AddWithValue("@AudioVolume", media.AudioVolume); cmd.Parameters.AddWithValue("@AudioLevelIntegrated", media.AudioLevelIntegrated); cmd.Parameters.AddWithValue("@AudioLevelPeak", media.AudioLevelPeak); cmd.Parameters.AddWithValue("@TCStart", media.TCStart); cmd.Parameters.AddWithValue("@TCPlay", media.TCPlay); lock (connection) { try { cmd.ExecuteNonQuery(); } catch (Exception e) { Debug.WriteLine(media, e.Message); } } return true; }