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

Refactor and extend external subtitle and audio handling #7255

Merged
merged 5 commits into from Feb 21, 2022

Conversation

Shadowghost
Copy link
Contributor

@Shadowghost Shadowghost commented Jan 27, 2022

First time doing C# things, so any input is welcome.

This PR aims to add more support to the external media resolvers for subtitles and audio.

Changes

  • Merge the providers for external streams into one generic provider
  • Add support for forced and default flags based on what the (external) container (e.g. mka, mks) provides
  • Add container (e.g. mks, mka) support
  • Preserve Title of streams for external audio and subtitles if present, otherwise try to parse it from the filename
  • Use intermediate path resolvers to check file validity and flags based on namingOptions and extract language from filename if present
  • Remove AddExternalSubtitleStreams (LibraryManager and ILibraryManager)
  • Add support for providing external subtitle and audio streams via InternalMetadataPath

Questions

  • The MediaInfo query on the subtitle file requires a DlnaProfileType but there wasn't one for subtitles, so I added one. I'm not sure if this is the correct approach
  • LibraryManager exposed a method to explicitly add a subtitle stream. It wasn't used anywhere and I had problems properly keeping its functionality, so I removed it. If it should be kept I may need further assistance on how this can be achieved.

Supercedes: #7060
Fixes: #7057


PR to update docs: jellyfin-archive/jellyfin-docs#635

@github-actions
Copy link

github-actions bot commented Jan 27, 2022

Changes in OpenAPI specification found. Expand to see details.

What's Changed


POST /Dlna/Profiles
Request:

Changed content type : application/json

Updated DeviceProfile :

  • Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : text/json

Updated DeviceProfile :

  • Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : application/*+json

Updated DeviceProfile :

  • Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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

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

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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

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

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

POST /Dlna/Profiles/{profileId}
Request:

Changed content type : application/json

Updated DeviceProfile :

  • Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : text/json

Updated DeviceProfile :

  • Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : application/*+json

Updated DeviceProfile :

  • Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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

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

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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

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

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

POST /Items/{itemId}/PlaybackInfo
Request:

Changed content type : application/json

Updated PlaybackInfoDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : text/json

Updated PlaybackInfoDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : application/*+json

Updated PlaybackInfoDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

POST /LiveStreams/Open
Request:

Changed content type : application/json

Updated OpenLiveStreamDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : text/json

Updated OpenLiveStreamDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : application/*+json

Updated OpenLiveStreamDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

POST /Sessions/Capabilities/Full
Request:

Changed content type : application/json

Updated ClientCapabilitiesDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : text/json

Updated ClientCapabilitiesDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle
Changed content type : application/*+json

Updated ClientCapabilitiesDto :

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

  • 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 Changed property DirectPlayProfiles (array)

Gets or sets the direct play profiles.

Changed items (object):

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

Updated DlnaProfileType :
Added enum value:

openapi-base openapi-changes.md openapi-head Subtitle

MediaBrowser.Providers/MediaInfo/AudioResolver.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/AudioResolver.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/AudioResolver.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/AudioResolver.cs Outdated Show resolved Hide resolved
@Shadowghost Shadowghost force-pushed the external-sub-audio branch 7 times, most recently from 76f3e45 to f2790b2 Compare February 9, 2022 12:30
MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs Outdated Show resolved Hide resolved
Emby.Naming/Audio/ExternalAudioFileInfo.cs Outdated Show resolved Hide resolved
Emby.Naming/Subtitles/SubtitleFileInfo.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/SubtitleResolver.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/MediaInfoResolver.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/MediaInfoResolver.cs Outdated Show resolved Hide resolved
@Shadowghost Shadowghost force-pushed the external-sub-audio branch 2 times, most recently from fc2ca88 to 1a61f7b Compare February 12, 2022 19:03
Emby.Naming/ExternalFiles/ExternalPathParser.cs Outdated Show resolved Hide resolved
Emby.Naming/ExternalFiles/ExternalPathParser.cs Outdated Show resolved Hide resolved
Emby.Naming/ExternalFiles/ExternalPathParser.cs Outdated Show resolved Hide resolved
MediaBrowser.Providers/MediaInfo/MediaInfoResolver.cs Outdated Show resolved Hide resolved
@Shadowghost Shadowghost force-pushed the external-sub-audio branch 7 times, most recently from 4372660 to 701b9e6 Compare February 13, 2022 13:46
@1337joe
Copy link
Member

1337joe commented Feb 17, 2022

Tests are failing because #7233 changed CultureDto to have a constructor instead of setters. You'll need to rebase on master to get the tests to fail locally.

@Shadowghost Shadowghost force-pushed the external-sub-audio branch 2 times, most recently from 881d4f3 to f08ee32 Compare February 17, 2022 19:14
@jellyfin-bot jellyfin-bot added the merge conflict Merge conflicts should be resolved before a merge label Feb 18, 2022
@jellyfin-bot jellyfin-bot removed the merge conflict Merge conflicts should be resolved before a merge label Feb 18, 2022
Copy link
Member

@Bond-009 Bond-009 left a comment

Choose a reason for hiding this comment

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

It's not needed, just extra overhead

MediaBrowser.Providers/MediaInfo/MediaInfoResolver.cs Outdated Show resolved Hide resolved
Co-authored-by: Bond-009 <bond.009@outlook.com>
@joshuaboniface joshuaboniface merged commit 59040bf into jellyfin:master Feb 21, 2022
@Shadowghost Shadowghost deleted the external-sub-audio branch February 23, 2022 16:40
@Dnkhatri
Copy link

Dnkhatri commented Feb 27, 2022

After this pr was merged external subtitles are no longer being scanned and added to the database
@Shadowghost

@Shadowghost
Copy link
Contributor Author

Please open an issue and include your file structure.

@Dnkhatri
Copy link

Please open an issue and include your file structure.

#7361

done

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.

[Issue]: external subtitle file naming
8 participants