From a6375da911707585e3bb6e3004dd32476f02d5ec Mon Sep 17 00:00:00 2001 From: Ingo Oppermann Date: Fri, 12 Apr 2024 15:18:47 +0200 Subject: [PATCH] Add initialized field in progress data --- docs/docs.go | 6 +++--- docs/swagger.json | 6 +++--- docs/swagger.yaml | 4 ++-- ffmpeg/parse/parser.go | 2 ++ ffmpeg/parse/types.go | 29 +++++++++++++++-------------- http/api/progress.go | 28 +++++++++++++++------------- restream/app/progress.go | 29 +++++++++++++++-------------- restream/restream.go | 1 + 8 files changed, 56 insertions(+), 49 deletions(-) diff --git a/docs/docs.go b/docs/docs.go index 07fc04e8..161bbdf2 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -4887,9 +4887,6 @@ const docTemplate = `{ "leader": { "$ref": "#/definitions/api.ClusterAboutLeader" }, - "node_id": { - "type": "string" - }, "nodes": { "type": "array", "items": { @@ -6834,6 +6831,9 @@ const docTemplate = `{ "type": "integer", "format": "uint64" }, + "initialized": { + "type": "boolean" + }, "inputs": { "type": "array", "items": { diff --git a/docs/swagger.json b/docs/swagger.json index 23e3f3b0..e6847824 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -4879,9 +4879,6 @@ "leader": { "$ref": "#/definitions/api.ClusterAboutLeader" }, - "node_id": { - "type": "string" - }, "nodes": { "type": "array", "items": { @@ -6826,6 +6823,9 @@ "type": "integer", "format": "uint64" }, + "initialized": { + "type": "boolean" + }, "inputs": { "type": "array", "items": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 2d6f8336..15df7e26 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -78,8 +78,6 @@ definitions: type: string leader: $ref: '#/definitions/api.ClusterAboutLeader' - node_id: - type: string nodes: items: $ref: '#/definitions/api.ClusterNode' @@ -1389,6 +1387,8 @@ definitions: frame: format: uint64 type: integer + initialized: + type: boolean inputs: items: $ref: '#/definitions/api.ProgressIO' diff --git a/ffmpeg/parse/parser.go b/ffmpeg/parse/parser.go index 59ea7387..eb8e83f3 100644 --- a/ffmpeg/parse/parser.go +++ b/ffmpeg/parse/parser.go @@ -655,6 +655,8 @@ func (p *parser) Progress() Progress { progress.Input[i].AVstream = av.export() } + progress.Initialized = p.stats.initialized + return progress } diff --git a/ffmpeg/parse/types.go b/ffmpeg/parse/types.go index a5685efb..1266f81f 100644 --- a/ffmpeg/parse/types.go +++ b/ffmpeg/parse/types.go @@ -450,20 +450,21 @@ type ProgressIO struct { } type Progress struct { - Input []ProgressIO - Output []ProgressIO - Mapping StreamMapping - Frame uint64 - Packet uint64 - FPS float64 - PPS float64 - Quantizer float64 - Size uint64 // bytes - Time float64 - Bitrate float64 // bit/s - Speed float64 - Drop uint64 - Dup uint64 + Initialized bool + Input []ProgressIO + Output []ProgressIO + Mapping StreamMapping + Frame uint64 + Packet uint64 + FPS float64 + PPS float64 + Quantizer float64 + Size uint64 // bytes + Time float64 + Bitrate float64 // bit/s + Speed float64 + Drop uint64 + Dup uint64 } type AVstreamIO struct { diff --git a/http/api/progress.go b/http/api/progress.go index b8072670..b814e5a0 100644 --- a/http/api/progress.go +++ b/http/api/progress.go @@ -91,19 +91,20 @@ func (i *ProgressIO) Unmarshal(io *app.ProgressIO) { // Progress represents the progress of an ffmpeg process type Progress struct { - Input []ProgressIO `json:"inputs"` - Output []ProgressIO `json:"outputs"` - Mapping StreamMapping `json:"mapping"` - Frame uint64 `json:"frame" format:"uint64"` - Packet uint64 `json:"packet" format:"uint64"` - FPS json.Number `json:"fps" swaggertype:"number" jsonschema:"type=number"` - Quantizer json.Number `json:"q" swaggertype:"number" jsonschema:"type=number"` - Size uint64 `json:"size_kb" format:"uint64"` // kbytes - Time json.Number `json:"time" swaggertype:"number" jsonschema:"type=number"` - Bitrate json.Number `json:"bitrate_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s - Speed json.Number `json:"speed" swaggertype:"number" jsonschema:"type=number"` - Drop uint64 `json:"drop" format:"uint64"` - Dup uint64 `json:"dup" format:"uint64"` + Initialized bool `json:"initialized"` + Input []ProgressIO `json:"inputs"` + Output []ProgressIO `json:"outputs"` + Mapping StreamMapping `json:"mapping"` + Frame uint64 `json:"frame" format:"uint64"` + Packet uint64 `json:"packet" format:"uint64"` + FPS json.Number `json:"fps" swaggertype:"number" jsonschema:"type=number"` + Quantizer json.Number `json:"q" swaggertype:"number" jsonschema:"type=number"` + Size uint64 `json:"size_kb" format:"uint64"` // kbytes + Time json.Number `json:"time" swaggertype:"number" jsonschema:"type=number"` + Bitrate json.Number `json:"bitrate_kbit" swaggertype:"number" jsonschema:"type=number"` // kbit/s + Speed json.Number `json:"speed" swaggertype:"number" jsonschema:"type=number"` + Drop uint64 `json:"drop" format:"uint64"` + Dup uint64 `json:"dup" format:"uint64"` } // Unmarshal converts a restreamer Progress to a Progress in API representation @@ -115,6 +116,7 @@ func (progress *Progress) Unmarshal(p *app.Progress) { return } + progress.Initialized = p.Initialized progress.Input = make([]ProgressIO, len(p.Input)) progress.Output = make([]ProgressIO, len(p.Output)) progress.Frame = p.Frame diff --git a/restream/app/progress.go b/restream/app/progress.go index 9f0862f8..bed6461b 100644 --- a/restream/app/progress.go +++ b/restream/app/progress.go @@ -41,20 +41,21 @@ type ProgressIO struct { } type Progress struct { - Input []ProgressIO - Output []ProgressIO - Mapping StreamMapping - Frame uint64 // counter - Packet uint64 // counter - FPS float64 // rate, frames per second - PPS float64 // rate, packets per second - Quantizer float64 // gauge - Size uint64 // bytes - Time float64 // seconds with fractions - Bitrate float64 // bit/s - Speed float64 // gauge - Drop uint64 // counter - Dup uint64 // counter + Initialized bool + Input []ProgressIO + Output []ProgressIO + Mapping StreamMapping + Frame uint64 // counter + Packet uint64 // counter + FPS float64 // rate, frames per second + PPS float64 // rate, packets per second + Quantizer float64 // gauge + Size uint64 // bytes + Time float64 // seconds with fractions + Bitrate float64 // bit/s + Speed float64 // gauge + Drop uint64 // counter + Dup uint64 // counter } type GraphElement struct { diff --git a/restream/restream.go b/restream/restream.go index 4615d982..fbdf392b 100644 --- a/restream/restream.go +++ b/restream/restream.go @@ -1624,6 +1624,7 @@ func (r *restream) GetProcessState(id app.ProcessID) (*app.State, error) { // convertProgressFromParser converts a ffmpeg/parse.Progress type into a restream/app.Progress type. func convertProgressFromParser(progress *app.Progress, pprogress parse.Progress) { + progress.Initialized = pprogress.Initialized progress.Frame = pprogress.Frame progress.Packet = pprogress.Packet progress.FPS = pprogress.FPS