Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add control over multiple codec streaming to the device profile #9016

Draft
wants to merge 1 commit into
base: release-10.8.z
Choose a base branch
from

Conversation

dmitrylyzo
Copy link
Contributor

@dmitrylyzo dmitrylyzo commented Jan 5, 2023

Using this flag we can disable unnecessary (for some clients) backward compatibility streams.

In fact, this block doesn't work.
All streams in the master playlist are bound to the same PlaySessionId.
The server starts the transcoding process after receiving a request (middle bitrate or lower) from the device.
After sufficient buffering, the device requests a higher bitrate.
Since the PlaySessionId is the same, it seems that the transcoding job doesn't restart with the new parameters.

Adaptive bitrate streaming probably doesn't work either.

Changes
Add the EnableMultipleCodecStreaming flag to the device profile to control multiple codec streaming

Issues
jellyfin/jellyfin-tizen#163
#5576
jellyfin/jellyfin-webos#105
jellyfin/jellyfin-web#1190
jellyfin/jellyfin-webos#59

@github-actions
Copy link

github-actions bot commented Jan 5, 2023

Changes in OpenAPI specification found. Expand to see details.

What's Changed


GET /Audio/{itemId}/master.m3u8
Parameters:

Added: enableMultipleCodecStreaming in query

Enable multiple codec streaming.

HEAD /Audio/{itemId}/master.m3u8
Parameters:

Added: enableMultipleCodecStreaming in query

Enable multiple codec streaming.

GET /Videos/{itemId}/master.m3u8
Parameters:

Added: enableMultipleCodecStreaming in query

Enable multiple codec streaming.

HEAD /Videos/{itemId}/master.m3u8
Parameters:

Added: enableMultipleCodecStreaming in query

Enable multiple codec streaming.

POST /Dlna/Profiles
Request:

Changed content type : application/json

Updated DeviceProfile :

  • Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : text/json

Updated DeviceProfile :

  • Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : application/*+json

Updated DeviceProfile :

  • Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

GET /Dlna/Profiles/{profileId}
Return Type:

Changed response : 200 OK

Device profile returned.

  • Changed content type : application/json

openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="CamelCase"

openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="PascalCase"

openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

POST /Dlna/Profiles/{profileId}
Request:

Changed content type : application/json

Updated DeviceProfile :

  • Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : text/json

Updated DeviceProfile :

  • Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : application/*+json

Updated DeviceProfile :

  • Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

GET /Dlna/Profiles/Default
Return Type:

Changed response : 200 OK

Default device profile returned.

  • Changed content type : application/json

openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="CamelCase"

openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="PascalCase"

openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

POST /Items/{itemId}/PlaybackInfo
Request:

Changed content type : application/json

Updated PlaybackInfoDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : text/json

Updated PlaybackInfoDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : application/*+json

Updated PlaybackInfoDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

POST /LiveStreams/Open
Request:

Changed content type : application/json

Updated OpenLiveStreamDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : text/json

Updated OpenLiveStreamDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : application/*+json

Updated OpenLiveStreamDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

POST /Sessions/Capabilities/Full
Request:

Changed content type : application/json

Updated ClientCapabilitiesDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : text/json

Updated ClientCapabilitiesDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

Changed content type : application/*+json

Updated ClientCapabilitiesDto :

  • Changed property DeviceProfile (object)

Gets or sets the device profile.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

GET /Devices/Info
Return Type:

Changed response : 200 OK

Device info retrieved.

  • Changed content type : application/json

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Gets or sets the capabilities.

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="CamelCase"

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Gets or sets the capabilities.

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="PascalCase"

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Gets or sets the capabilities.

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

GET /Sessions
Return Type:

Changed response : 200 OK

List of sessions returned.

  • Changed content type : application/json

Changed items (object):

Class SessionInfo.

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="CamelCase"

Changed items (object):

Class SessionInfo.

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="PascalCase"

Changed items (object):

Class SessionInfo.

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

GET /Devices
Return Type:

Changed response : 200 OK

Devices retrieved.

  • Changed content type : application/json

openapi-base openapi-changes.md openapi-head Changed property Items (array)

Gets or sets the items.

Changed items (object):

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Gets or sets the capabilities.

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="CamelCase"

openapi-base openapi-changes.md openapi-head Changed property Items (array)

Gets or sets the items.

Changed items (object):

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Gets or sets the capabilities.

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="PascalCase"

openapi-base openapi-changes.md openapi-head Changed property Items (array)

Gets or sets the items.

Changed items (object):

openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Gets or sets the capabilities.

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

POST /Users/{userId}/Authenticate
Return Type:

Changed response : 200 OK

User authenticated.

  • Changed content type : application/json

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="CamelCase"

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="PascalCase"

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

POST /Users/AuthenticateByName
Return Type:

Changed response : 200 OK

User authenticated.

  • Changed content type : application/json

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="CamelCase"

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="PascalCase"

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

POST /Users/AuthenticateWithQuickConnect
Return Type:

Changed response : 200 OK

User authenticated.

  • Changed content type : application/json

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="CamelCase"

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

  • Changed content type : application/json; profile="PascalCase"

openapi-base openapi-changes.md openapi-head Changed property SessionInfo (object)

Class SessionInfo.

Updated SessionInfo :
openapi-base openapi-changes.md openapi-head Changed property Capabilities (object)

Updated ClientCapabilities :
openapi-base openapi-changes.md openapi-head Changed property DeviceProfile (object)

A MediaBrowser.Model.Dlna.DeviceProfile represents a set of metadata which determines which content a certain device is able to play.


Specifically, it defines the supported containers and
codecs (video and/or audio, including codec profiles and levels)
the device is able to direct play (without transcoding or remuxing),
as well as which containers/codecs to transcode to in case it isn't.

Updated DeviceProfile :
openapi-base openapi-changes.md openapi-head Added property EnableMultipleCodecStreaming (boolean)

Gets or sets a value indicating whether enable multiple codec streaming.

};

return await _dynamicHlsHelper.GetMasterHlsPlaylist(TranscodingJobType.Hls, dynamicHlsRequestDto, true)
return await _dynamicHlsHelper.GetMasterHlsPlaylist(TranscodingJobType.Hls, dynamicHlsRequestDto, true, true)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The device profile is ignored here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant