]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/+admin/config/edit-custom-config/edit-custom-config.component.ts
add support for 1440p (Quad HD/QHD/WQHD) videos
[github/Chocobozzz/PeerTube.git] / client / src / app / +admin / config / edit-custom-config / edit-custom-config.component.ts
index d442df0e377f6e59e739137f9e90e97833df9f73..330ab075a91bc1c59d35de5e339f0687e7a02ab9 100644 (file)
@@ -20,6 +20,7 @@ import { USER_VIDEO_QUOTA_DAILY_VALIDATOR, USER_VIDEO_QUOTA_VALIDATOR } from '@a
 import { FormReactive, FormValidatorService, SelectOptionsItem } from '@app/shared/shared-forms'
 import { NgbNav } from '@ng-bootstrap/ng-bootstrap'
 import { CustomConfig, ServerConfig } from '@shared/models'
+import { pairwise } from 'rxjs/operators'
 
 @Component({
   selector: 'my-edit-custom-config',
@@ -41,6 +42,8 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A
   languageItems: SelectOptionsItem[] = []
   categoryItems: SelectOptionsItem[] = []
 
+  signupAlertMessage: string
+
   private serverConfig: ServerConfig
 
   constructor (
@@ -78,6 +81,10 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A
         id: '1080p',
         label: $localize`1080p`
       },
+      {
+        id: '1440p',
+        label: $localize`1440p`
+      },
       {
         id: '2160p',
         label: $localize`2160p`
@@ -95,7 +102,7 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A
     ]
 
     this.liveMaxDurationOptions = [
-      { value: null, label: $localize`No limit` },
+      { value: -1, label: $localize`No limit` },
       { value: 1000 * 3600, label: $localize`1 hour` },
       { value: 1000 * 3600 * 3, label: $localize`3 hours` },
       { value: 1000 * 3600 * 5, label: $localize`5 hours` },
@@ -116,6 +123,34 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A
       .map(t => t.name)
   }
 
+  get liveRTMPPort () {
+    return this.serverConfig.live.rtmp.port
+  }
+
+  getTotalTranscodingThreads () {
+    const transcodingEnabled = this.form.value['transcoding']['enabled']
+    const transcodingThreads = this.form.value['transcoding']['threads']
+    const liveTranscodingEnabled = this.form.value['live']['transcoding']['enabled']
+    const liveTranscodingThreads = this.form.value['live']['transcoding']['threads']
+
+    // checks whether all enabled method are on fixed values and not on auto (= 0)
+    let noneOnAuto = !transcodingEnabled || +transcodingThreads > 0
+    noneOnAuto &&= !liveTranscodingEnabled || +liveTranscodingThreads > 0
+
+    // count total of fixed value, repalcing auto by a single thread (knowing it will display "at least")
+    let value = 0
+    if (transcodingEnabled) value += +transcodingThreads || 1
+    if (liveTranscodingEnabled) value += +liveTranscodingThreads || 1
+
+    return {
+      value,
+      atMost: noneOnAuto, // auto switches everything to a least estimation since ffmpeg will take as many threads as possible
+      unit: value > 1
+        ? $localize`threads`
+        : $localize`thread`
+    }
+  }
+
   getResolutionKey (resolution: string) {
     return 'transcoding.resolutions.' + resolution
   }
@@ -293,7 +328,9 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A
 
     this.buildForm(formGroupData)
     this.loadForm()
+
     this.checkTranscodingFields()
+    this.checkSignupField()
   }
 
   ngAfterViewChecked () {
@@ -330,10 +367,6 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A
   async formValidated () {
     const value: CustomConfig = this.form.getRawValue()
 
-    // Transform "null" to null
-    const maxDuration = value.live.maxDuration as any
-    if (maxDuration === 'null') value.live.maxDuration = null
-
     this.configService.updateCustomConfig(value)
       .subscribe(
         res => {
@@ -428,4 +461,27 @@ export class EditCustomConfigComponent extends FormReactive implements OnInit, A
                 }
               })
   }
+
+  private checkSignupField () {
+    const signupControl = this.form.get('signup.enabled')
+
+    signupControl.valueChanges
+      .pipe(pairwise())
+      .subscribe(([ oldValue, newValue ]) => {
+        if (oldValue !== true && newValue === true) {
+          // tslint:disable:max-line-length
+          this.signupAlertMessage = $localize`You enabled signup: we automatically enabled the "Block new videos automatically" checkbox of the "Videos" section just below.`
+
+          this.form.patchValue({
+            autoBlacklist: {
+              videos: {
+                ofUsers: {
+                  enabled: true
+                }
+              }
+            }
+          })
+        }
+      })
+  }
 }