Merge branch 'dev' into vod

This commit is contained in:
Ingo Oppermann
2023-05-05 12:09:54 +02:00
8 changed files with 84 additions and 62 deletions

View File

@@ -24,6 +24,10 @@
- Fix parsing S3 storage definition from environment variable - Fix parsing S3 storage definition from environment variable
- Fix checking length of CPU time array ([#10](https://github.com/datarhei/core/issues/10)) - Fix checking length of CPU time array ([#10](https://github.com/datarhei/core/issues/10))
- Fix memory consumption of memfs - Fix memory consumption of memfs
- Fix possible infinite loop with HLS session rewriter
- Fix not propagating process limits
- Fix URL validation if the path contains FFmpeg specific placeholders
- Fix RTMP DoS attack (thx Johannes Frank)
- Deprecate ENV names that do not correspond to JSON name - Deprecate ENV names that do not correspond to JSON name
### Core v16.11.0 > v16.12.0 ### Core v16.11.0 > v16.12.0

View File

@@ -2291,6 +2291,10 @@ const docTemplate = `{
"looping": { "looping": {
"type": "boolean" "type": "boolean"
}, },
"looping_runtime": {
"type": "integer",
"format": "uint64"
},
"output": { "output": {
"$ref": "#/definitions/api.AVstreamIO" "$ref": "#/definitions/api.AVstreamIO"
}, },

View File

@@ -2284,6 +2284,10 @@
"looping": { "looping": {
"type": "boolean" "type": "boolean"
}, },
"looping_runtime": {
"type": "integer",
"format": "uint64"
},
"output": { "output": {
"$ref": "#/definitions/api.AVstreamIO" "$ref": "#/definitions/api.AVstreamIO"
}, },

View File

@@ -22,6 +22,9 @@ definitions:
$ref: '#/definitions/api.AVstreamIO' $ref: '#/definitions/api.AVstreamIO'
looping: looping:
type: boolean type: boolean
looping_runtime:
format: uint64
type: integer
output: output:
$ref: '#/definitions/api.AVstreamIO' $ref: '#/definitions/api.AVstreamIO'
queue: queue:

View File

@@ -57,33 +57,35 @@ func (avio *ffmpegAVstreamIO) export() AVstreamIO {
} }
type ffmpegAVstream struct { type ffmpegAVstream struct {
Input ffmpegAVstreamIO `json:"input"` Input ffmpegAVstreamIO `json:"input"`
Output ffmpegAVstreamIO `json:"output"` Output ffmpegAVstreamIO `json:"output"`
Address string `json:"id"` Address string `json:"id"`
URL string `json:"url"` URL string `json:"url"`
Stream uint64 `json:"stream"` Stream uint64 `json:"stream"`
Aqueue uint64 `json:"aqueue"` Aqueue uint64 `json:"aqueue"`
Queue uint64 `json:"queue"` Queue uint64 `json:"queue"`
Dup uint64 `json:"dup"` Dup uint64 `json:"dup"`
Drop uint64 `json:"drop"` Drop uint64 `json:"drop"`
Enc uint64 `json:"enc"` Enc uint64 `json:"enc"`
Looping bool `json:"looping"` Looping bool `json:"looping"`
Duplicating bool `json:"duplicating"` LoopingRuntime uint64 `json:"looping_runtime"`
GOP string `json:"gop"` Duplicating bool `json:"duplicating"`
GOP string `json:"gop"`
} }
func (av *ffmpegAVstream) export() *AVstream { func (av *ffmpegAVstream) export() *AVstream {
return &AVstream{ return &AVstream{
Aqueue: av.Aqueue, Aqueue: av.Aqueue,
Queue: av.Queue, Queue: av.Queue,
Drop: av.Drop, Drop: av.Drop,
Dup: av.Dup, Dup: av.Dup,
Enc: av.Enc, Enc: av.Enc,
Looping: av.Looping, Looping: av.Looping,
Duplicating: av.Duplicating, LoopingRuntime: av.LoopingRuntime,
GOP: av.GOP, Duplicating: av.Duplicating,
Input: av.Input.export(), GOP: av.GOP,
Output: av.Output.export(), Input: av.Input.export(),
Output: av.Output.export(),
} }
} }
@@ -310,16 +312,17 @@ type AVstreamIO struct {
} }
type AVstream struct { type AVstream struct {
Input AVstreamIO Input AVstreamIO
Output AVstreamIO Output AVstreamIO
Aqueue uint64 Aqueue uint64
Queue uint64 Queue uint64
Dup uint64 Dup uint64
Drop uint64 Drop uint64
Enc uint64 Enc uint64
Looping bool Looping bool
Duplicating bool LoopingRuntime uint64
GOP string Duplicating bool
GOP string
} }
type Usage struct { type Usage struct {

View File

@@ -23,16 +23,17 @@ func (i *AVstreamIO) Unmarshal(io *app.AVstreamIO) {
} }
type AVstream struct { type AVstream struct {
Input AVstreamIO `json:"input"` Input AVstreamIO `json:"input"`
Output AVstreamIO `json:"output"` Output AVstreamIO `json:"output"`
Aqueue uint64 `json:"aqueue" format:"uint64"` Aqueue uint64 `json:"aqueue" format:"uint64"`
Queue uint64 `json:"queue" format:"uint64"` Queue uint64 `json:"queue" format:"uint64"`
Dup uint64 `json:"dup" format:"uint64"` Dup uint64 `json:"dup" format:"uint64"`
Drop uint64 `json:"drop" format:"uint64"` Drop uint64 `json:"drop" format:"uint64"`
Enc uint64 `json:"enc" format:"uint64"` Enc uint64 `json:"enc" format:"uint64"`
Looping bool `json:"looping"` Looping bool `json:"looping"`
Duplicating bool `json:"duplicating"` LoopingRuntime uint64 `json:"looping_runtime" format:"uint64"`
GOP string `json:"gop"` Duplicating bool `json:"duplicating"`
GOP string `json:"gop"`
} }
func (a *AVstream) Unmarshal(av *app.AVstream) { func (a *AVstream) Unmarshal(av *app.AVstream) {
@@ -46,6 +47,7 @@ func (a *AVstream) Unmarshal(av *app.AVstream) {
a.Drop = av.Drop a.Drop = av.Drop
a.Enc = av.Enc a.Enc = av.Enc
a.Looping = av.Looping a.Looping = av.Looping
a.LoopingRuntime = av.LoopingRuntime
a.Duplicating = av.Duplicating a.Duplicating = av.Duplicating
a.GOP = av.GOP a.GOP = av.GOP

View File

@@ -3,19 +3,20 @@ package app
type AVstreamIO struct { type AVstreamIO struct {
State string State string
Packet uint64 // counter Packet uint64 // counter
Time uint64 Time uint64 // sec
Size uint64 // bytes Size uint64 // bytes
} }
type AVstream struct { type AVstream struct {
Input AVstreamIO Input AVstreamIO
Output AVstreamIO Output AVstreamIO
Aqueue uint64 // gauge Aqueue uint64 // gauge
Queue uint64 // gauge Queue uint64 // gauge
Dup uint64 // counter Dup uint64 // counter
Drop uint64 // counter Drop uint64 // counter
Enc uint64 // counter Enc uint64 // counter
Looping bool Looping bool
Duplicating bool LoopingRuntime uint64 // sec
GOP string Duplicating bool
GOP string
} }

View File

@@ -1509,14 +1509,15 @@ func convertProgressFromParser(progress *app.Progress, pprogress parse.Progress)
Time: pinput.AVstream.Output.Time, Time: pinput.AVstream.Output.Time,
Size: pinput.AVstream.Output.Size, Size: pinput.AVstream.Output.Size,
}, },
Aqueue: pinput.AVstream.Aqueue, Aqueue: pinput.AVstream.Aqueue,
Queue: pinput.AVstream.Queue, Queue: pinput.AVstream.Queue,
Dup: pinput.AVstream.Dup, Dup: pinput.AVstream.Dup,
Drop: pinput.AVstream.Drop, Drop: pinput.AVstream.Drop,
Enc: pinput.AVstream.Enc, Enc: pinput.AVstream.Enc,
Looping: pinput.AVstream.Looping, Looping: pinput.AVstream.Looping,
Duplicating: pinput.AVstream.Duplicating, LoopingRuntime: pinput.AVstream.LoopingRuntime,
GOP: pinput.AVstream.GOP, Duplicating: pinput.AVstream.Duplicating,
GOP: pinput.AVstream.GOP,
} }
input.AVstream = avstream input.AVstream = avstream