]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/core-utils/videos/bitrate.ts
Translated using Weblate (Persian)
[github/Chocobozzz/PeerTube.git] / shared / core-utils / videos / bitrate.ts
index 18c6e2f6cef4ef6c45de5b97cf3b0399959317ad..6be0278267a6f88edbcc59c3ba57679ff3b460f4 100644 (file)
@@ -1,9 +1,21 @@
-import { VideoResolution } from "@shared/models"
+import { VideoResolution } from '@shared/models'
 
 type BitPerPixel = { [ id in VideoResolution ]: number }
 
 // https://bitmovin.com/video-bitrate-streaming-hls-dash/
 
+const minLimitBitPerPixel: BitPerPixel = {
+  [VideoResolution.H_NOVIDEO]: 0,
+  [VideoResolution.H_144P]: 0.02,
+  [VideoResolution.H_240P]: 0.02,
+  [VideoResolution.H_360P]: 0.02,
+  [VideoResolution.H_480P]: 0.02,
+  [VideoResolution.H_720P]: 0.02,
+  [VideoResolution.H_1080P]: 0.02,
+  [VideoResolution.H_1440P]: 0.02,
+  [VideoResolution.H_4K]: 0.02
+}
+
 const averageBitPerPixel: BitPerPixel = {
   [VideoResolution.H_NOVIDEO]: 0,
   [VideoResolution.H_144P]: 0.19,
@@ -28,7 +40,7 @@ const maxBitPerPixel: BitPerPixel = {
   [VideoResolution.H_4K]: 0.14
 }
 
-function getAverageBitrate (options: {
+function getAverageTheoreticalBitrate (options: {
   resolution: VideoResolution
   ratio: number
   fps: number
@@ -39,7 +51,7 @@ function getAverageBitrate (options: {
   return targetBitrate
 }
 
-function getMaxBitrate (options: {
+function getMaxTheoreticalBitrate (options: {
   resolution: VideoResolution
   ratio: number
   fps: number
@@ -50,11 +62,23 @@ function getMaxBitrate (options: {
   return targetBitrate
 }
 
+function getMinTheoreticalBitrate (options: {
+  resolution: VideoResolution
+  ratio: number
+  fps: number
+}) {
+  const minLimitBitrate = calculateBitrate({ ...options, bitPerPixel: minLimitBitPerPixel })
+  if (!minLimitBitrate) return 10 * 1000
+
+  return minLimitBitrate
+}
+
 // ---------------------------------------------------------------------------
 
 export {
-  getAverageBitrate,
-  getMaxBitrate
+  getAverageTheoreticalBitrate,
+  getMaxTheoreticalBitrate,
+  getMinTheoreticalBitrate
 }
 
 // ---------------------------------------------------------------------------