예제 #1
0
            // long books, single mode: default 32bit FFmpeg may run out of memory
            public void SetFFmpegPrefer64Bit(IConvSettings settings)
            {
                if (settings.ConvMode != EConvMode.single)
                {
                    return;
                }

                if (!settings.FFMpegDirectory.IsNullOrWhiteSpace())
                {
                    return;
                }

                TimeSpan durationFFmpeg64Bit = DurationFFmpeg64Bit;

                if (settings.FFmpeg64bitHours > 0)
                {
                    durationFFmpeg64Bit = TimeSpan.FromHours(settings.FFmpeg64bitHours);
                }
                if (Duration < durationFFmpeg64Bit)
                {
                    return;
                }

                FFmpegPrefer64Bit = ApplEnv.Is64BitOperatingSystem;
                Log(3, this, () =>
                    $"\"{Book.SortingTitle.Shorten ()}\" {nameof(FFmpegPrefer64Bit)}={FFmpegPrefer64Bit}");
            }
예제 #2
0
            public bool IsTrancodeConversion(IConvSettings settings)
            {
                bool isMp3       = IsMp3Stream;
                bool wantMp3     = settings.ConvFormat == EConvFormat.mp3;
                bool isTranscode = isMp3 != wantMp3;

                var(abr, _) = settings.ApplicableBitRate(AaxFileItem.AvgBitRate);
                bool changeBitRate = abr != 0;

                isTranscode |= changeBitRate;
                return(isTranscode);
            }
예제 #3
0
            public void CreateCueSheet(IConvSettings settings)
            {
                Log(3, this, () => this.ToString());
                // do not trust the settings range check. Enforce track length between 3 and 15 min.
                int trackDurMins = Math.Max(3, Math.Min(15, (int)settings.TrkDurMins));

                // expects all chapters in individual files, each starting at time 0

                // tracks per chapter
                foreach (var chapter in Chapters)
                {
                    chapter.CreateCueSheet(this, trackDurMins, settings.ConvMode == EConvMode.splitTime);
                }
            }
예제 #4
0
            public void SetMetaChapters(IConvSettings settings)
            {
                switch (settings.ConvMode)
                {
                case EConvMode.chapters:
                case EConvMode.splitChapters:
                    setMetaChaptersSingle();
                    break;

                case EConvMode.splitTime:
                    setMetaChaptersMulti();
                    break;
                }
            }
예제 #5
0
            public void CreateCueSheet(IConvSettings settings)
            {
                Log(3, this, () => this.ToString());
                // Do not trust the settings range check. Enforce track length between 3 and 15/90 min.

                var(_, _, trackDurMins) = settings.TrkDurMins.TrackDuration(settings.ConvMode);

                // expects all chapters in individual files, each starting at time 0

                // tracks per chapter
                foreach (var chapter in Chapters)
                {
                    chapter.CreateCueSheet(this, trackDurMins, settings.ConvMode == EConvMode.splitTime);
                }
            }
예제 #6
0
 public static bool UseEmbeddedChapterTimes(this IConvSettings settings) =>
 settings.PreferEmbeddedChapterTimes == EPreferEmbeddedChapterTimes.ifSilent && settings.NamedChapters != ENamedChapters.no;
 public DegreeOfParallelism(IConvSettings settings)
 {
     _settings = settings;
 }