Sort after build variants index number, fix broken index for HLS path. (#1282)
* safely generate the thumbnail.jpg & preview.gif * Sort after build variants index number, fix broken index for HLS path. * Don't export VideoBitrate and IsVideoPassthrough * Unused variables deleted * Solution for sorting not working correctly. * Rename StreamSortVariants to streamSortVariants
This commit is contained in:
parent
dcc7a7c5c3
commit
521681e1b8
@ -7,28 +7,53 @@ import (
|
||||
"github.com/owncast/owncast/core/data"
|
||||
)
|
||||
|
||||
type variantsSort struct {
|
||||
Index int
|
||||
Name string
|
||||
IsVideoPassthrough bool
|
||||
VideoBitrate int
|
||||
}
|
||||
|
||||
type variantsResponse struct {
|
||||
Name string `json:"name"`
|
||||
Index int `json:"index"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// GetVideoStreamOutputVariants will return the video variants available.
|
||||
func GetVideoStreamOutputVariants(w http.ResponseWriter, r *http.Request) {
|
||||
outputVariants := data.GetStreamOutputVariants()
|
||||
|
||||
sort.Slice(outputVariants, func(i, j int) bool {
|
||||
return outputVariants[j].VideoBitrate < outputVariants[i].VideoBitrate
|
||||
})
|
||||
|
||||
result := make([]variantsResponse, len(outputVariants))
|
||||
|
||||
streamSortVariants := make([]variantsSort, len(outputVariants))
|
||||
for i, variant := range outputVariants {
|
||||
variantResponse := variantsResponse{
|
||||
Index: i,
|
||||
Name: variant.GetName(),
|
||||
variantSort := variantsSort{
|
||||
Index: i,
|
||||
Name: variant.GetName(),
|
||||
IsVideoPassthrough: variant.IsVideoPassthrough,
|
||||
VideoBitrate: variant.VideoBitrate,
|
||||
}
|
||||
result[i] = variantResponse
|
||||
streamSortVariants[i] = variantSort
|
||||
}
|
||||
|
||||
WriteResponse(w, result)
|
||||
sort.Slice(streamSortVariants, func(i, j int) bool {
|
||||
if streamSortVariants[i].IsVideoPassthrough && !streamSortVariants[j].IsVideoPassthrough {
|
||||
return true
|
||||
}
|
||||
|
||||
if !streamSortVariants[i].IsVideoPassthrough && streamSortVariants[j].IsVideoPassthrough {
|
||||
return false
|
||||
}
|
||||
|
||||
return streamSortVariants[i].VideoBitrate > streamSortVariants[j].VideoBitrate
|
||||
})
|
||||
|
||||
response := make([]variantsResponse, len(streamSortVariants))
|
||||
for i, variant := range streamSortVariants {
|
||||
variantResponse := variantsResponse{
|
||||
Index: variant.Index,
|
||||
Name: variant.Name,
|
||||
}
|
||||
response[i] = variantResponse
|
||||
}
|
||||
|
||||
WriteResponse(w, response)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user