<ng-container formGroupName="cache">
<div class="form-group" formGroupName="previews">
<label i18n for="cachePreviewsSize">Number of previews to keep in cache</label>
+
<div class="number-with-unit">
<input
type="number" min="0" id="cachePreviewsSize" class="form-control"
formControlName="size" [ngClass]="{ 'input-error': formErrors['cache.previews.size'] }"
>
- <span i18n>{form.value['cache']['previews']['size'], plural, =1 {cached image} other {cached images}}</span>
+ <span i18n>{getCacheSize('previews'), plural, =1 {cached image} other {cached images}}</span>
</div>
+
<div *ngIf="formErrors.cache.previews.size" class="form-error">{{ formErrors.cache.previews.size }}</div>
</div>
<div class="form-group" formGroupName="captions">
<label i18n for="cacheCaptionsSize">Number of video captions to keep in cache</label>
+
<div class="number-with-unit">
<input
type="number" min="0" id="cacheCaptionsSize" class="form-control"
formControlName="size" [ngClass]="{ 'input-error': formErrors['cache.captions.size'] }"
>
- <span i18n>{form.value['cache']['captions']['size'], plural, =1 {cached image} other {cached images}}</span>
+ <span i18n>{getCacheSize('captions'), plural, =1 {cached caption} other {cached captions}}</span>
</div>
+
<div *ngIf="formErrors.cache.captions.size" class="form-error">{{ formErrors.cache.captions.size }}</div>
</div>
</ng-container>
export class EditAdvancedConfigurationComponent {
@Input() form: FormGroup
@Input() formErrors: any
+
+ getCacheSize (type: 'captions' | 'previews') {
+ return this.form.value['cache'][type]['size']
+ }
}
<div class="form-group" formGroupName="instance">
<label i18n for="instanceDefaultClientRoute">Landing page</label>
+
<div class="peertube-select-container">
<select id="instanceDefaultClientRoute" formControlName="defaultClientRoute" class="form-control">
<option i18n value="/videos/overview">Discover videos</option>
<option i18n value="/videos/local">Local videos</option>
</select>
</div>
+
<div *ngIf="formErrors.instance.defaultClientRoute" class="form-error">{{ formErrors.instance.defaultClientRoute }}</div>
</div>
<ng-container formGroupName="videos">
<ng-container formGroupName="algorithms">
<label i18n for="trendingVideosAlgorithmsDefault">Default trending page</label>
+
<div class="peertube-select-container">
<select id="trendingVideosAlgorithmsDefault" formControlName="default" class="form-control">
<option i18n value="best">Best videos</option>
<option i18n value="most-liked">Most liked videos</option>
</select>
</div>
+
<div *ngIf="formErrors.trending.videos.algorithms.default" class="form-error">{{ formErrors.trending.videos.algorithms.default }}</div>
</ng-container>
</ng-container>
<div class="form-group">
<label i18n for="broadcastMessageLevel">Broadcast message level</label>
+
<div class="peertube-select-container">
<select id="broadcastMessageLevel" formControlName="level" class="form-control">
<option value="info">info</option>
<option value="error">error</option>
</select>
</div>
+
<div *ngIf="formErrors.broadcastMessage.level" class="form-error">{{ formErrors.broadcastMessage.level }}</div>
</div>
<div class="form-group">
<label i18n for="broadcastMessageMessage">Message</label><my-help helpType="markdownText"></my-help>
+
<my-markdown-textarea
name="broadcastMessageMessage" formControlName="message" textareaMaxWidth="500px"
[classes]="{ 'input-error': formErrors['broadcastMessage.message'] }"
></my-markdown-textarea>
+
<div *ngIf="formErrors.broadcastMessage.message" class="form-error">{{ formErrors.broadcastMessage.message }}</div>
</div>
</ng-container>
<ng-container ngProjectAs="extra">
- <my-peertube-checkbox [ngClass]="{ 'disabled-checkbox-extra': !isSignupEnabled() }"
+ <my-peertube-checkbox [ngClass]="getDisabledSignupClass()"
inputName="signupRequiresEmailVerification" formControlName="requiresEmailVerification"
i18n-labelText labelText="Signup requires email verification"
></my-peertube-checkbox>
- <div [ngClass]="{ 'disabled-checkbox-extra': !isSignupEnabled() }" class="mt-3">
+ <div [ngClass]="getDisabledSignupClass()" class="mt-3">
<label i18n for="signupLimit">Signup limit</label>
+
<div class="number-with-unit">
<input
type="number" min="-1" id="signupLimit" class="form-control"
>
<span i18n>{form.value['signup']['limit'], plural, =1 {user} other {users}}</span>
</div>
+
<div *ngIf="formErrors.signup.limit" class="form-error">{{ formErrors.signup.limit }}</div>
- <small *ngIf="form.value['signup']['limit'] === -1" class="text-muted">Signup won't be limited to a fixed number of users.</small>
+
+ <small i18n *ngIf="hasUnlimitedSignup()" class="text-muted">Signup won't be limited to a fixed number of users.</small>
</div>
</ng-container>
</my-peertube-checkbox>
<div class="form-group mt-4">
<label i18n for="importConcurrency">Import jobs concurrency</label>
- <span class="text-muted ml-1">
- <span i18n>allows to import multiple videos in parallel. ⚠️ Requires a PeerTube restart.</span>
- </span>
+ <span i18n class="text-muted ml-1">allows to import multiple videos in parallel. ⚠️ Requires a PeerTube restart.</span>
<div class="number-with-unit">
<input type="number" name="importConcurrency" formControlName="concurrency" />
</ng-container>
<ng-container ngProjectAs="extra">
- <div [ngClass]="{ 'disabled-checkbox-extra': !isSearchIndexEnabled() }">
+ <div [ngClass]="getDisabledSearchIndexClass()">
<label i18n for="searchIndexUrl">Search index URL</label>
+
<input
type="text" id="searchIndexUrl" class="form-control"
formControlName="url" [ngClass]="{ 'input-error': formErrors['search.searchIndex.url'] }"
>
+
<div *ngIf="formErrors.search.searchIndex.url" class="form-error">{{ formErrors.search.searchIndex.url }}</div>
</div>
<div class="mt-3">
- <my-peertube-checkbox [ngClass]="{ 'disabled-checkbox-extra': !isSearchIndexEnabled() }"
+ <my-peertube-checkbox [ngClass]="getDisabledSearchIndexClass()"
inputName="searchIndexDisableLocalSearch" formControlName="disableLocalSearch"
i18n-labelText labelText="Disable local search in search bar"
></my-peertube-checkbox>
</div>
<div class="mt-3">
- <my-peertube-checkbox [ngClass]="{ 'disabled-checkbox-extra': !isSearchIndexEnabled() }"
+ <my-peertube-checkbox [ngClass]="getDisabledSearchIndexClass()"
inputName="searchIndexIsDefaultSearch" formControlName="isDefaultSearch"
i18n-labelText labelText="Search bar uses the global search index by default"
>
<div class="form-group" formGroupName="admin">
<label i18n for="adminEmail">Admin email</label>
+
<input
type="text" id="adminEmail" class="form-control"
formControlName="email" [ngClass]="{ 'input-error': formErrors['admin.email'] }"
>
+
<div *ngIf="formErrors.admin.email" class="form-error">{{ formErrors.admin.email }}</div>
</div>
type="text" id="servicesTwitterUsername" class="form-control"
formControlName="username" [ngClass]="{ 'input-error': formErrors['services.twitter.username'] }"
>
+
<div *ngIf="formErrors.services.twitter.username" class="form-error">{{ formErrors.services.twitter.username }}</div>
</div>
return this.form.value['signup']['enabled'] === true
}
+ getDisabledSignupClass () {
+ return { 'disabled-checkbox-extra': !this.isSignupEnabled() }
+ }
+
+ hasUnlimitedSignup () {
+ return this.form.value['signup']['limit'] === -1
+ }
+
isSearchIndexEnabled () {
return this.form.value['search']['searchIndex']['enabled'] === true
}
+ getDisabledSearchIndexClass () {
+ return { 'disabled-checkbox-extra': !this.isSearchIndexEnabled() }
+ }
+
isAutoFollowIndexEnabled () {
return this.form.value['followings']['instance']['autoFollowIndex']['enabled'] === true
}
<div class="form-group">
<label i18n for="instanceName">Name</label>
+
<input
type="text" id="instanceName" class="form-control"
formControlName="name" [ngClass]="{ 'input-error': formErrors.instance.name }"
>
+
<div *ngIf="formErrors.instance.name" class="form-error">{{ formErrors.instance.name }}</div>
</div>
<div class="form-group">
<label i18n for="instanceShortDescription">Short description</label>
+
<textarea
id="instanceShortDescription" formControlName="shortDescription" class="form-control small"
[ngClass]="{ 'input-error': formErrors['instance.shortDescription'] }"
></textarea>
+
<div *ngIf="formErrors.instance.shortDescription" class="form-error">{{ formErrors.instance.shortDescription }}</div>
</div>
<div class="form-group">
<label i18n for="instanceDescription">Description</label><my-help helpType="markdownText"></my-help>
+
<my-markdown-textarea
name="instanceDescription" formControlName="description" textareaMaxWidth="500px"
[classes]="{ 'input-error': formErrors['instance.description'] }"
></my-markdown-textarea>
+
<div *ngIf="formErrors.instance.description" class="form-error">{{ formErrors.instance.description }}</div>
</div>
<option i18n value="display">Display</option>
</select>
</div>
+
<div *ngIf="formErrors.instance.defaultNSFWPolicy" class="form-error">{{ formErrors.instance.defaultNSFWPolicy }}</div>
</div>
<div class="form-group">
<label i18n for="instanceTerms">Terms</label><my-help helpType="markdownText"></my-help>
+
<my-markdown-textarea
name="instanceTerms" formControlName="terms" textareaMaxWidth="500px"
[ngClass]="{ 'input-error': formErrors['instance.terms'] }"
></my-markdown-textarea>
+
<div *ngIf="formErrors.instance.terms" class="form-error">{{ formErrors.instance.terms }}</div>
</div>
<div class="form-group">
<label i18n for="instanceCodeOfConduct">Code of conduct</label><my-help helpType="markdownText"></my-help>
+
<my-markdown-textarea
name="instanceCodeOfConduct" formControlName="codeOfConduct" textareaMaxWidth="500px"
[ngClass]="{ 'input-error': formErrors['instance.codeOfConduct'] }"
></my-markdown-textarea>
+
<div *ngIf="formErrors.instance.codeOfConduct" class="form-error">{{ formErrors.instance.codeOfConduct }}</div>
</div>
name="instanceModerationInformation" formControlName="moderationInformation" textareaMaxWidth="500px"
[ngClass]="{ 'input-error': formErrors['instance.moderationInformation'] }"
></my-markdown-textarea>
+
<div *ngIf="formErrors.instance.moderationInformation" class="form-error">{{ formErrors.instance.moderationInformation }}</div>
</div>
name="instanceCreationReason" formControlName="creationReason" textareaMaxWidth="500px"
[ngClass]="{ 'input-error': formErrors['instance.creationReason'] }"
></my-markdown-textarea>
+
<div *ngIf="formErrors.instance.creationReason" class="form-error">{{ formErrors.instance.creationReason }}</div>
</div>
name="instanceMaintenanceLifetime" formControlName="maintenanceLifetime" textareaMaxWidth="500px"
[ngClass]="{ 'input-error': formErrors['instance.maintenanceLifetime'] }"
></my-markdown-textarea>
+
<div *ngIf="formErrors.instance.maintenanceLifetime" class="form-error">{{ formErrors.instance.maintenanceLifetime }}</div>
</div>
name="instanceBusinessModel" formControlName="businessModel" textareaMaxWidth="500px"
[ngClass]="{ 'input-error': formErrors['instance.businessModel'] }"
></my-markdown-textarea>
+
<div *ngIf="formErrors.instance.businessModel" class="form-error">{{ formErrors.instance.businessModel }}</div>
</div>
<ng-container ngProjectAs="extra">
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
+ <div class="form-group" [ngClass]="getDisabledLiveClass()">
<my-peertube-checkbox
inputName="liveAllowReplay" formControlName="allowReplay"
i18n-labelText labelText="Allow your users to automatically publish a replay of their live"
</my-peertube-checkbox>
</div>
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
- <label i18n for="liveMaxInstanceLives">Max simultaneous lives created on your instance <span class="text-muted">(-1 for "unlimited")</span></label>
+ <div class="form-group" [ngClass]="getDisabledLiveClass()">
+ <label i18n for="liveMaxInstanceLives">
+ Max simultaneous lives created on your instance <span class="text-muted">(-1 for "unlimited")</span>
+ </label>
+
<div class="number-with-unit">
<input type="number" name="liveMaxInstanceLives" formControlName="maxInstanceLives" />
<span i18n>{form.value['live']['maxInstanceLives'], plural, =1 {live} other {lives}}</span>
</div>
</div>
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
- <label i18n for="liveMaxUserLives">Max simultaneous lives created per user <span class="text-muted">(-1 for "unlimited")</span></label>
+ <div class="form-group" [ngClass]="getDisabledLiveClass()">
+ <label i18n for="liveMaxUserLives">
+ Max simultaneous lives created per user <span class="text-muted">(-1 for "unlimited")</span>
+ </label>
+
<div class="number-with-unit">
<input type="number" name="liveMaxUserLives" formControlName="maxUserLives" />
<span i18n>{form.value['live']['maxUserLives'], plural, =1 {live} other {lives}}</span>
</div>
</div>
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
+ <div class="form-group" [ngClass]="getDisabledLiveClass()">
<label i18n for="liveMaxDuration">Max live duration</label>
<my-select-options
<ng-container formGroupName="live">
<ng-container formGroupName="transcoding">
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() }">
+ <div class="form-group" [ngClass]="getDisabledLiveClass()">
<my-peertube-checkbox
inputName="liveTranscodingEnabled" formControlName="enabled"
>
</my-peertube-checkbox>
</div>
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() || !isLiveTranscodingEnabled() }">
+ <div class="form-group" [ngClass]="getDisabledLiveTranscodingClass()">
<label i18n for="liveTranscodingThreads">Live resolutions to generate</label>
<div class="ml-2 mt-2 d-flex flex-column">
<ng-container formGroupName="resolutions">
+
<div class="form-group" *ngFor="let resolution of liveResolutions">
<my-peertube-checkbox
[inputName]="getResolutionKey(resolution.id)" [formControlName]="resolution.id"
</ng-template>
</my-peertube-checkbox>
</div>
+
</ng-container>
</div>
</div>
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() || !isLiveTranscodingEnabled() }">
+ <div class="form-group" [ngClass]="getDisabledLiveTranscodingClass()">
<label i18n for="liveTranscodingThreads">Live transcoding threads</label>
+
<span class="text-muted ml-1">
- <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with VOD transcoding</ng-container>
- <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with VOD transcoding</ng-container>
+ <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>
+ will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with VOD transcoding
+ </ng-container>
+
+ <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>
+ will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with VOD transcoding
+ </ng-container>
</span>
<my-select-custom-value
<div *ngIf="formErrors.live.transcoding.threads" class="form-error">{{ formErrors.live.transcoding.threads }}</div>
</div>
- <div class="form-group mt-4" [ngClass]="{ 'disabled-checkbox-extra': !isLiveEnabled() || !isLiveTranscodingEnabled() }">
+ <div class="form-group mt-4" [ngClass]="getDisabledLiveTranscodingClass()">
<label i18n for="liveTranscodingProfile">Live transcoding profile</label>
<span class="text-muted ml-1" i18n>new live transcoding profiles can be added by PeerTube plugins</span>
[items]="getAvailableTranscodingProfile()"
[clearable]="false"
>
- <ng-template ng-option-tmp let-item="item" let-index="index">
- {{ item }}
- <ng-container *ngIf="item === 'default'">
- <br>
- <span class="text-muted" i18n>x264, targeting maximum device compatibility</span>
- </ng-container>
- </ng-template>
</my-select-options>
+
<div *ngIf="formErrors.live.transcoding.profile" class="form-error">{{ formErrors.live.transcoding.profile }}</div>
</div>
getAvailableTranscodingProfile () {
const profiles = this.serverConfig.live.transcoding.availableProfiles
- return profiles.map(p => ({ id: p, label: p }))
+ return profiles.map(p => {
+ const description = p === 'default'
+ ? $localize`x264, targeting maximum device compatibility`
+ : ''
+
+ return { id: p, label: p, description }
+ })
}
getResolutionKey (resolution: string) {
return this.editConfigurationService.isLiveEnabled(this.form)
}
+ getDisabledLiveClass () {
+ return { 'disabled-checkbox-extra': !this.isLiveEnabled() }
+ }
+
+ getDisabledLiveTranscodingClass () {
+ return { 'disabled-checkbox-extra': !this.isLiveEnabled() || !this.isLiveTranscodingEnabled() }
+ }
+
isLiveTranscodingEnabled () {
return this.editConfigurationService.isLiveTranscodingEnabled(this.form)
}
</span>
<div class="callout-container">
- <a class="callout-link" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/#/admin-configuration?id=transcoding" i18n>Read guidelines</a>
+ <a class="callout-link" target="_blank" rel="noopener noreferrer" href="https://docs.joinpeertube.org/#/admin-configuration?id=transcoding" i18n>
+ Read guidelines
+ </a>
</div>
</div>
</div>
<div class="callout callout-light pt-2 pb-0">
<label i18n>Input formats</label>
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+ <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
<my-peertube-checkbox
inputName="transcodingAllowAdditionalExtensions" formControlName="allowAdditionalExtensions"
i18n-labelText labelText="Allow additional extensions"
</my-peertube-checkbox>
</div>
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+ <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
<my-peertube-checkbox
inputName="transcodingAllowAudioFiles" formControlName="allowAudioFiles"
i18n-labelText labelText="Allow audio files upload"
<label i18n>Output formats</label>
<ng-container formGroupName="webtorrent">
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+ <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
<my-peertube-checkbox
inputName="transcodingWebTorrentEnabled" formControlName="enabled"
i18n-labelText labelText="WebTorrent enabled"
>
<ng-template ptTemplate="help">
- <ng-container i18n>
- <p>If you also enabled HLS support, it will multiply videos storage by 2</p>
-
- <br />
-
- <strong>If disabled, breaks federation with PeerTube instances < 2.1</strong>
+ <ng-container>
+ <p i18n>If you also enabled HLS support, it will multiply videos storage by 2</p>
</ng-container>
</ng-template>
</my-peertube-checkbox>
</ng-container>
<ng-container formGroupName="hls">
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+ <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
<my-peertube-checkbox
inputName="transcodingHlsEnabled" formControlName="enabled"
i18n-labelText labelText="HLS with P2P support enabled"
</div>
</ng-container>
- <div class="form-group" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+ <div class="form-group" [ngClass]="getTranscodingDisabledClass()">
<label i18n>Resolutions to generate per enabled format</label>
<div class="ml-2 mt-2 d-flex flex-column">
</my-peertube-checkbox>
</div>
- <div class="form-group mt-4" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+ <div class="form-group mt-4" [ngClass]="getTranscodingDisabledClass()">
<label i18n for="transcodingThreads">Transcoding threads</label>
<span class="text-muted ml-1">
- <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding</ng-container>
- <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding</ng-container>
+ <ng-container *ngIf="getTotalTranscodingThreads().atMost" i18n>
+ will claim at most {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding
+ </ng-container>
+
+ <ng-container *ngIf="!getTotalTranscodingThreads().atMost" i18n>
+ will claim at least {{ getTotalTranscodingThreads().value }} {{ getTotalTranscodingThreads().unit }} with live transcoding
+ </ng-container>
</span>
<my-select-custom-value
<div *ngIf="formErrors.transcoding.threads" class="form-error">{{ formErrors.transcoding.threads }}</div>
</div>
- <div class="form-group mt-4" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+ <div class="form-group mt-4" [ngClass]="getTranscodingDisabledClass()">
<label i18n for="transcodingConcurrency">Transcoding jobs concurrency</label>
- <span class="text-muted ml-1">
- <span i18n>allows to transcode multiple files in parallel. ⚠️ Requires a PeerTube restart.</span>
- </span>
+ <span class="text-muted ml-1" i18n>allows to transcode multiple files in parallel. ⚠️ Requires a PeerTube restart</span>
<div class="number-with-unit">
<input type="number" name="transcodingConcurrency" formControlName="concurrency" />
<div *ngIf="formErrors.transcoding.concurrency" class="form-error">{{ formErrors.transcoding.concurrency }}</div>
</div>
- <div class="form-group mt-4" [ngClass]="{ 'disabled-checkbox-extra': !isTranscodingEnabled() }">
+ <div class="form-group mt-4" [ngClass]="getTranscodingDisabledClass()">
<label i18n for="transcodingProfile">Transcoding profile</label>
<span class="text-muted ml-1" i18n>new transcoding profiles can be added by PeerTube plugins</span>
formControlName="profile"
[items]="getAvailableTranscodingProfile()"
[clearable]="false"
- >
- <ng-template ng-option-tmp let-item="item" let-index="index">
- {{ item }}
- <ng-container *ngIf="item === 'default'">
- <br>
- <span class="text-muted" i18n>x264, targeting maximum device compatibility</span>
- </ng-container>
- </ng-template>
- </my-select-options>
+ ></my-select-options>
+
<div *ngIf="formErrors.transcoding.profile" class="form-error">{{ formErrors.transcoding.profile }}</div>
</div>
getAvailableTranscodingProfile () {
const profiles = this.serverConfig.transcoding.availableProfiles
- return profiles.map(p => ({ id: p, label: p }))
+ return profiles.map(p => {
+ const description = p === 'default'
+ ? $localize`x264, targeting maximum device compatibility`
+ : ''
+
+ return { id: p, label: p, description }
+ })
}
getResolutionKey (resolution: string) {
return this.editConfigurationService.isTranscodingEnabled(this.form)
}
+ getTranscodingDisabledClass () {
+ return { 'disabled-checkbox-extra': !this.isTranscodingEnabled() }
+ }
+
getTotalTranscodingThreads () {
return this.editConfigurationService.getTotalTranscodingThreads(this.form)
}