package uploads import "strings" // BetterQuality — загружаемый файл заметно лучше уже лежащего в библиотеке (docs/uploads.md#4). // Lossless вместо lossy, либо тот же класс и битрейт выше хотя бы на 32 кбит/с и на 20%. func BetterQuality(inCodec, inFormat string, inBitrate int, exCodec, exFormat string, exBitrate int) bool { inLoss, exLoss := lossless(inCodec, inFormat), lossless(exCodec, exFormat) if inLoss && !exLoss { return true } if inLoss == exLoss && inBitrate > 0 && exBitrate > 0 && inBitrate >= exBitrate+32_000 && inBitrate*5 >= exBitrate*6 { return true } return false } func lossless(codec, format string) bool { switch strings.ToLower(codec) { case "flac", "alac", "wavpack", "ape", "tta": return true } if strings.HasPrefix(strings.ToLower(codec), "pcm_") { return true } switch strings.ToLower(format) { case "flac", "wav", "aiff", "aif", "wv": return true } return false }