@ -7,28 +7,53 @@ import (
@@ -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
} )
streamSortVariants := make ( [ ] variantsSort , len ( outputVariants ) )
for i , variant := range outputVariants {
variantSort := variantsSort {
Index : i ,
Name : variant . GetName ( ) ,
IsVideoPassthrough : variant . IsVideoPassthrough ,
VideoBitrate : variant . VideoBitrate ,
}
streamSortVariants [ i ] = variantSort
}
result := make ( [ ] variantsResponse , len ( outputVariants ) )
sort . Slice ( streamSortVariants , func ( i , j int ) bool {
if streamSortVariants [ i ] . IsVideoPassthrough && ! streamSortVariants [ j ] . IsVideoPassthrough {
return true
}
for i , variant := range outputVariants {
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 : i ,
Name : variant . GetName ( ) ,
Index : var iant . Index ,
Name : variant . Name ,
}
result [ i ] = variantResponse
response [ i ] = variantResponse
}
WriteResponse ( w , result )
WriteResponse ( w , response )
}