Compare commits

...

1539 Commits

Author SHA1 Message Date
Joshua M. Boniface
623c0b6daa Merge pull request #2536 from dkanada/audiodb
Migrate AudioDB to use plugin interface
2020-03-08 17:06:22 -04:00
Joshua M. Boniface
d8d37671ff Merge pull request #2535 from mark-monteiro/logging-migration
Create Logging Configuration Heirarchy
2020-03-08 15:33:15 -04:00
Mark Monteiro
9e89cbbc3a Store migration names alongside Ids in configuration in order to assist with development/debugging 2020-03-08 17:40:30 +01:00
Mark Monteiro
72bf920291 Use a Guid to uniquely identify migrations instead of a string name
Also use a list instead of an array to store executed migrations in the configuration class
2020-03-08 16:05:31 +01:00
Mark Monteiro
8dbb1c9257 Use logging.json instead of logging.user.json for override settings 2020-03-08 15:46:13 +01:00
Mark Monteiro
2f0b4cc24c Clean up migration logging messages 2020-03-08 15:02:59 +01:00
Mark Monteiro
a0fdceb4bc Throw exception on migration failure to halt application
Also save migration configuration after each migration instead of at the end in case an exception is thrown part way through the list
2020-03-08 15:02:42 +01:00
sharkykh
86190aa7e9 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-03-08 09:01:04 -04:00
dkanada
f8b391538d update audiodb config page 2020-03-08 12:19:38 +09:00
dkanada
acf1698d2b include audiodb config page in release 2020-03-08 12:17:49 +09:00
dkanada
26c778eb16 implement option to disable audiodb for now 2020-03-08 12:10:25 +09:00
Tomi
cbd1e92486 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-03-07 22:03:35 -05:00
IDXK
01b51388f5 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-03-07 22:03:35 -05:00
Niels van Velzen
b4e81f2f0c Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2020-03-07 22:03:35 -05:00
sharkykh
d38eab50ef Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-03-07 22:03:35 -05:00
Leo Verto
796bdd46df Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2020-03-07 22:03:35 -05:00
Joshua M. Boniface
ae9948ce04 Merge branch 'master' into logging-migration 2020-03-07 21:19:24 -05:00
Joshua M. Boniface
3d563ca3a3 Merge pull request #2523 from JustAMan/logging-migration
Improve migrations so they are more maintainable
2020-03-07 21:14:14 -05:00
Mark Monteiro
1295f6c79b Documentation and log message cleanup 2020-03-07 20:26:06 +01:00
dkanada
adc3ab1991 Merge pull request #2534 from joshuaboniface/disable-ssl-default
Set EnableHttps disabled by default
2020-03-08 03:03:16 +09:00
Mark Monteiro
7ecb16a46e do not ignore exceptions during migration execution 2020-03-07 18:23:32 +01:00
Joshua M. Boniface
2610bb2cc1 Merge pull request #2532 from MrTimscampi/attachment-baseurl
Add baseURL to attachments API url
2020-03-07 12:21:01 -05:00
Joshua M. Boniface
e0381c8854 Set EnableHttps disabled by default
Prevents issues on first setup when behind a reverse proxy. Also
prevents issues saving the Networking page by default if SSL is not
fully configured.
2020-03-07 11:55:02 -05:00
MrTimscampi
e8c593f413 Add baseURL to attachments 2020-03-07 17:41:36 +01:00
Terrance M
f3db3cacf6 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-03-06 21:35:24 -05:00
Marcus Schelin
b373721d29 Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2020-03-06 21:35:24 -05:00
Mark Monteiro
4c2b543b30 Rename IUpdater to IMigrationRoutine 2020-03-06 21:51:50 +01:00
Mark Monteiro
6660006f01 Load user logging config file into application configuration 2020-03-06 19:28:36 +01:00
Mark Monteiro
1a9908d094 Add migration to create "logging.user.json" 2020-03-06 19:11:42 +01:00
Mark Monteiro
f2fdf50b3b Create separate constants for the two logging file names 2020-03-06 19:07:34 +01:00
Vasily
5a0f1fe848 Implement review suggestion 2020-03-06 19:01:07 +03:00
Vasily
098d3538e3 Disable logging.json migration as it is not ready yet 2020-03-06 17:22:22 +03:00
Vasily
d4564d8e29 More logging, mark all migrations as applied if setup wizard is not complete 2020-03-06 13:22:44 +03:00
Anthony Lavado
b99a5843dd Merge pull request #2524 from ferferga/nsis-fixes
Replaces NSIS uninstaller icon so it's more visible
2020-03-05 13:09:38 -05:00
ferferga
e36c4de9f6 Replaces uninstaller icon so it's more visible 2020-03-05 18:53:04 +01:00
Vasily
216e425cc5 Fix comment 2020-03-05 20:52:00 +03:00
Vasily
55b429e5e8 Moved migration routines to their own directory 2020-03-05 20:40:17 +03:00
Vasily
ccafebca68 Extract "migrations" config name to a proper constant 2020-03-05 20:37:49 +03:00
Vasily
ecaa7f8014 Improve migration logic 2020-03-05 20:09:33 +03:00
Vasily
66e11879ef Shuffle migrations in a more manageable structure 2020-03-05 18:21:27 +03:00
Joshua M. Boniface
dcf3dbb250 Merge pull request #2515 from JustAMan/migration-scripts
Implement ability to run migration routines when updating Jellyfin
2020-03-05 10:03:43 -05:00
Vasily
9eef0e8ca0 Implement EnableThrottling migration for pre-10.5.0 to 10.5.0 or newer 2020-03-05 17:41:32 +03:00
Andrew Rabert
ca585f12b3 Fix Docker packages (#2499)
* Fix Vaapi Intel packages

https://github.com/jellyfin/jellyfin/issues/1901#issuecomment-593114951

Still need to compile with the packages to verify it builds properly. Arm builds probably need it too.

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile.arm

* Update Dockerfile.arm

* Update Dockerfile.arm64

* Update Dockerfile.arm

* Update Dockerfile.arm

* Update Dockerfile.arm

* Update Dockerfile.arm64

* Update Dockerfile.arm64

* Update Dockerfile.arm

* Update Dockerfile

* shift from curl to git for web install

removed the necessity of curl, tar and package availability and using the source directly

* Update Dockerfile.arm

* Update Dockerfile.arm64

* Update Dockerfile

* Update Dockerfile

* Update Dockerfile.arm

* Update Dockerfile.arm64

* clean up packages and remove unnecessary ARG

* Update Dockerfile

* Update Dockerfile.arm64

* Update Dockerfile

* Update Dockerfile.arm64

* Update Dockerfile

* Update Dockerfile.arm

* Update Dockerfile.arm64

* Explainations

* Update Dockerfile.arm

* Update Dockerfile.arm64
2020-03-05 09:41:14 -05:00
Vasily
acd67c7152 Add tracking of JF version used to run this config previously 2020-03-05 16:22:15 +03:00
Vasily
e80c9bb8c6 Merge pull request #2513 from Bond-009/alpha
Improve alpha numeric sorting
2020-03-05 15:01:05 +03:00
Bond-009
375cf212dd Update AlphanumComparatorTests.cs 2020-03-05 12:24:12 +01:00
Joshua M. Boniface
434f665e81 Merge pull request #2512 from Artiume/patch-4
Update Fedora build container version
2020-03-04 20:03:02 -05:00
Bond_009
be1d4b32c6 Add speed for alpha numeric sorting 2020-03-05 00:57:24 +01:00
Bond_009
ada3f96668 Add tests for alpha numeric sorting 2020-03-05 00:54:46 +01:00
artiume
7931a7a7d0 update fedora 2020-03-04 17:43:50 -05:00
Joshua M. Boniface
a987b68f7c Merge pull request #2508 from joshuaboniface/contributors-update
Update contributors list
2020-03-03 23:27:11 -05:00
Joshua M. Boniface
3016e78aef Remove dependabotbot 2020-03-03 23:22:29 -05:00
Joshua M. Boniface
0e98d8bbad Update contributors list
Refreshes the contributors list with the data available from all merged
PRs. Includes a huge number of people who had never added themselves
manually. Going forward this is probably not needed anymore as we can
update this fairly easily.
2020-03-03 22:51:16 -05:00
Bond-009
5276c75cde Merge pull request #2500 from mark-monteiro/2498-register-logging-correctly
Register Logging Services Correctly
2020-03-03 21:53:53 +01:00
dkanada
c07e1e4f84 Merge pull request #2476 from JustAMan/playto-sort
Bring back sorting when needed to fix PlayTo
2020-03-04 01:53:26 +09:00
dkanada
2dc1a18203 Merge pull request #2501 from JustAMan/pedal-to-the-metal-from-the-get-go
Default transcoding throttling to false for new installs
2020-03-04 01:37:44 +09:00
Vasily
c1aafd2ba0 Default transcoding throttling to false for new installs 2020-03-03 19:14:31 +03:00
Bond-009
20ac3c36e2 Merge pull request #2483 from xosdy/fix-download-filename
Fix download file with non-ASCII filename
2020-03-03 14:28:48 +01:00
Bond-009
464039043d Merge pull request #2491 from mark-monteiro/2425-fix-playlists
Fix Playlist Deletion
2020-03-03 14:23:43 +01:00
Mark Monteiro
a4bf645ba5 Fix compilation error 2020-03-03 01:10:26 +01:00
Mark Monteiro
9a6c279473 Increase min log level to 'Warning' framework namespaces 2020-03-03 00:36:54 +01:00
Mark Monteiro
c376f4ca51 Register Serilog logging services correctly 2020-03-03 00:35:41 +01:00
dkanada
76e49a1eb7 migrate audiodb to plugin 2020-03-03 02:07:31 +09:00
Ilija Apostolovski
1c1484389a Translated using Weblate (Macedonian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/mk/
2020-03-02 08:05:17 -05:00
Bond-009
1c21248e2e Merge pull request #2474 from JustAMan/simplify-sorting
Simplify AlphanumericComparer, reduce code duplication
2020-03-02 12:28:31 +01:00
Vasily
13d30a0a79 Merge pull request #2436 from dkanada/music
Add config options for MusicBrainz
2020-03-02 12:54:17 +03:00
Vasily
ba8d8cede9 Replace foreach with for - MOAR SPEED 2020-03-02 12:39:34 +03:00
Vasily
9a9f2aa293 Apply suggestions from code review
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-03-02 12:36:44 +03:00
Vasily
376bbb40bd Apply code review suggestion 2020-03-02 12:34:34 +03:00
Mark Monteiro
3ab51712b8 Fix warnings in PlaylistXmlSaver 2020-03-01 18:41:17 +01:00
Mark Monteiro
1204818698 Clean up and document PlaylistResolver 2020-03-01 18:28:19 +01:00
Mark Monteiro
41a26f8ecd Correctly resolve playlists that are stored using a directory path 2020-03-01 18:28:02 +01:00
Mark Monteiro
f00356e9fe Use a constant for the default playlist file name 2020-03-01 18:23:51 +01:00
dkanada
49f6809254 fix build error 2020-03-01 22:48:41 +09:00
Ignatius Bagus
0b0c5984f9 Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-02-29 15:49:17 -05:00
Adam Bokor
03a294a706 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-02-29 04:10:17 -05:00
dkanada
d86e5c2ab7 add code suggestions 2020-02-29 16:24:07 +09:00
dkanada
630d79fc96 prefix private fields with underscore 2020-02-29 16:22:45 +09:00
Steven Tang
2e856ad9fe Fix download file with non-ASCII filename 2020-02-29 12:11:27 +08:00
Ilija Apostolovski
6261e4e7f6 Translated using Weblate (Macedonian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/mk/
2020-02-28 13:12:32 -05:00
Ilija Apostolovski
77963c7a8c Added translation using Weblate (Macedonian) 2020-02-28 10:12:47 -05:00
Vasily
7f38af3701 Remove custom queue class as it is not needed 2020-02-28 17:27:16 +03:00
Vasily
f81cd037f0 Small speed improvement - no need to convert an array to a list to just iterate over it 2020-02-28 16:19:51 +03:00
Vasily
ae1f975b99 Implement fast sorting 2020-02-27 20:21:34 +03:00
Vasily
0f0b89f344 Trying to be more safe 2020-02-27 20:14:56 +03:00
Vasily
e125db4fe3 Bring back sorting when needed to fix PlayTo
This is partial revert of https://github.com/jellyfin/jellyfin/pull/1011
2020-02-27 20:11:40 +03:00
dkanada
e80444d11b use the custom server for external ids 2020-02-28 01:43:57 +09:00
Vasily
d1670f8180 Apply suggestions from code review
Co-Authored-By: Claus Vium <cvium@users.noreply.github.com>
2020-02-27 16:02:18 +03:00
Vasily
8e20d2e931 Simplify AlphanumericComparer, reduce code duplication 2020-02-27 14:51:34 +03:00
Bond-009
13bf5e94b3 Merge pull request #2472 from Narfinger/tests-fix3
moves shows tests to Theory and InlineData format
2020-02-27 08:52:12 +01:00
Narfinger
107974e3f8 moves shows tests to Theory and InlineData format 2020-02-27 11:35:01 +09:00
sharkykh
9d53fd0e73 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-02-26 14:01:46 -05:00
dkanada
fd3ee279de Merge pull request #2448 from Narfinger/tests-fix2
adds names from the episodenumber tests to path tests
2020-02-27 02:05:16 +09:00
sharkykh
6c6b5d7f28 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2020-02-25 18:29:17 -05:00
MOLOKAL
f11678ae4b Translated using Weblate (Malay)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ms/
2020-02-25 07:10:03 -05:00
Vasily
a075fefca9 Merge pull request #2160 from Artiume/master
Force Transcoding LiveTV
2020-02-25 14:40:06 +03:00
dkanada
4ae80a5d56 partially fix issue with music scans 2020-02-24 14:35:30 +09:00
Andreas Olsson
b40ac479a2 Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: http://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2020-02-23 23:21:31 -05:00
R0flcopt3r
3e2f09ecf8 Translated using Weblate (Norwegian Nynorsk)
Translation: Jellyfin/Jellyfin
Translate-URL: http://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nn/
2020-02-23 23:21:31 -05:00
Daniel De Jesus
6b634026e6 Translated using Weblate (Spanish (Dominican Republic))
Translation: Jellyfin/Jellyfin
Translate-URL: http://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_DO/
2020-02-23 23:21:31 -05:00
artiume
697aee5b0c Merge pull request #21 from jellyfin/master
nightly
2020-02-23 10:57:52 -05:00
dkanada
940990708e remove unused assignment 2020-02-24 00:25:27 +09:00
dkanada
19a609a889 update musicbrainz options 2020-02-24 00:24:03 +09:00
dkanada
a34826008f update external ids 2020-02-24 00:22:23 +09:00
dkanada
0a55eb9106 Merge pull request #2444 from Narfinger/tests-fix
converted tests to inlinedata
2020-02-23 21:55:06 +09:00
dkanada
a3bb81553d Merge pull request #2176 from Bond-009/nullable2
Enable nullable reference types for Emby.Photos and Emby.Notifications
2020-02-23 21:52:46 +09:00
dkanada
de40f22a46 Merge pull request #2384 from Bond-009/warn16
Fix some warnings in Emby.Server.Implementations
2020-02-23 21:46:15 +09:00
Narfinger
496bdc65f3 adds names from the episodenumber tests to path tests 2020-02-23 19:45:29 +09:00
Narfinger
fd5f0c54a6 fixes formatting and enabling another test 2020-02-23 18:50:33 +09:00
Narfinger
b306b8b881 add todos and fixes some todo tests 2020-02-23 18:46:10 +09:00
Narfinger
4dabc50f09 fixes last tests and cleanup 2020-02-23 18:31:23 +09:00
Narfinger
c2fe628c79 removed failing tests 2020-02-23 18:19:19 +09:00
dkanada
72c98e41ca Merge pull request #2442 from Bond-009/remux
Switch remux and direct stream
2020-02-23 16:23:12 +09:00
Narfinger
21f11c600a converted tests to inlinedata 2020-02-23 12:12:48 +09:00
dkanada
6e239c52c5 Merge pull request #2291 from Bond-009/sessionmanager
Fix warnings in SessionManager
2020-02-23 10:53:44 +09:00
dkanada
6715450598 Merge pull request #2427 from Bond-009/minor
Minor improvements
2020-02-23 10:48:47 +09:00
Bond_009
ffc9eb67f0 Switch remux and direct stream 2020-02-23 00:05:28 +01:00
artiume
4becaf83dd Update MediaInfoService.cs 2020-02-22 10:03:17 -05:00
dkanada
65a9d618cc add config options for musicbrainz 2020-02-22 15:04:52 +09:00
Saksol
804ca0543b Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2020-02-21 14:29:23 -05:00
R0flcopt3r
583f171f9e Added translation using Weblate (Norwegian Nynorsk) 2020-02-21 14:29:23 -05:00
dkanada
557b165f01 Merge pull request #2434 from Bond-009/photo
Fix photo serialization
2020-02-22 00:21:34 +09:00
dkanada
4355b453d4 Merge pull request #2429 from Bond-009/episode
Fix episode parsing
2020-02-22 00:17:37 +09:00
dkanada
61015c1d0f Merge pull request #2321 from Bond-009/images
Simplify image processing by removing image enhancers
2020-02-21 12:32:54 +09:00
artiume
eb67117b83 Merge pull request #20 from jellyfin/master
nightly
2020-02-20 19:44:58 -05:00
Bond-009
b02a3a29f5 Fix photo serialization 2020-02-20 15:30:04 +01:00
Daniel De Jesus
28cc210a5e Translated using Weblate (Spanish (Dominican Republic))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_DO/
2020-02-20 09:18:14 -05:00
SleepyJesse
d240321e87 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-02-20 09:18:14 -05:00
SleepyJesse
b2bf0f1796 Translated using Weblate (Chinese (Hong Kong))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant_HK/
2020-02-20 09:18:14 -05:00
SleepyJesse
107e43aaac Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-02-20 09:18:14 -05:00
Bond-009
7df6d4e7a0 Update EpisodeNumberTests.cs 2020-02-20 12:02:45 +01:00
Vasily
c73370ad92 Merge pull request #2421 from viaregio/master
#2407: Prefer episode and season numbers from the embedded MP4-metadata
2020-02-20 13:17:07 +03:00
Bond_009
adc9fc282c Minor improvements 2020-02-19 23:08:58 +01:00
Bond_009
dfd74adc15 Add test 2020-02-19 22:51:30 +01:00
Bond_009
620047ab9a Fix episode parsing 2020-02-19 22:35:40 +01:00
Bond-009
0f173e1778 Merge branch 'master' into sessionmanager 2020-02-19 21:07:09 +01:00
Bond_009
184ad29f3f Address comments 2020-02-19 21:04:28 +01:00
Ulrich Wagner
3bd7633cbf Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 19:47:03 +01:00
Ulrich Wagner
a9e744bea0 Curly braces on new lines 2020-02-19 19:41:10 +01:00
Ulrich Wagner
3d9dc59554 Omitting the parameter ExtraChapters 2020-02-19 19:03:42 +01:00
Ulrich Wagner
f4d0fa8dc8 Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 18:58:28 +01:00
Ulrich Wagner
d6971581d6 Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 17:46:50 +01:00
Ulrich Wagner
0f2ee2686d Constructor of the LibraryManager takes the mediaEncoder as parameter 2020-02-19 16:06:30 +01:00
Ulrich Wagner
b16ba7d985 Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 13:40:27 +01:00
Ulrich Wagner
7005326685 Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 13:40:06 +01:00
Ulrich Wagner
4d0ee3f6cc Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 13:39:51 +01:00
Ulrich Wagner
39b6d6586f Update Emby.Server.Implementations/Library/LibraryManager.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-19 13:37:36 +01:00
artiume
8f5ffba29f Merge pull request #19 from Artiume/Artiume-livetv-1
Update MediaInfoService.cs
2020-02-19 06:26:06 -05:00
artiume
a4e0364139 Update MediaInfoService.cs 2020-02-19 06:15:55 -05:00
artiume
b375aeb56a fix indentation
it was tabs
2020-02-19 06:07:48 -05:00
artiume
967f8c6dcd Merge pull request #18 from jellyfin/master
nightly
2020-02-19 06:02:26 -05:00
Ulrich Wagner
5fed4d10ab Only reading the result of GetMediaInfo if it completed successfully 2020-02-19 08:39:01 +01:00
Ulrich Wagner
a62196afc7 Merge pull request #1 from jellyfin/master
Up-to-date
2020-02-19 08:09:37 +01:00
artiume
cef796a5ba Update Bug Report for System Details (#2422)
* Update bug_report.md

Increase priority for system details, constantly have to ask people for their deets. also increased details that should be asked.

* Update bug_report.md

* Update bug_report.md

* Update .github/ISSUE_TEMPLATE/bug_report.md

Co-Authored-By: dkanada <dkanada@users.noreply.github.com>

* Update .github/ISSUE_TEMPLATE/bug_report.md

Co-Authored-By: telans <telans@protonmail.com>

* Update bug_report.md

* Update bug_report.md

Co-authored-by: dkanada <dkanada@users.noreply.github.com>
Co-authored-by: telans <telans@protonmail.com>
2020-02-19 13:56:02 +09:00
Protik Das
a68d4396e5 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-02-18 21:46:15 -05:00
Christian Elbrianno
b672d105b6 Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-02-18 21:46:15 -05:00
Kaspar Laineste
e2a36a5b14 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-02-18 21:46:15 -05:00
Adam Bokor
6783878711 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-02-18 21:46:15 -05:00
Daniel De Jesus
b6ae5242c5 Added translation using Weblate (Spanish (Dominican Republic)) 2020-02-18 21:46:15 -05:00
Ulrich Wagner
d7f199bb1c #2407: Prefer MP4-Metadata for episodes 2020-02-17 14:57:07 +01:00
Bond-009
3bc0ce070d Merge pull request #2382 from dkanada/refactor
Refactor some API services
2020-02-17 10:41:19 +01:00
Protik Das
0387c73d64 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-02-16 03:16:09 -05:00
Pramit Biswas
ae049f7fc8 Translated using Weblate (Bengali)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bn/
2020-02-16 03:16:08 -05:00
Pramit Biswas
6b4f1f3b5b Added translation using Weblate (Bengali) 2020-02-15 12:23:53 -05:00
Adam Bokor
0591d118f9 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2020-02-14 22:49:44 -05:00
Andrew Rabert
eff8d2466e Merge pull request #2405 from nvllsvm/fuckit
Fix arm32 built on amd64 host
2020-02-14 20:13:43 -05:00
Andrew Rabert
dcac99c1a4 Fix arm32 built on amd64 host
dotnet doesn't support building arm32 from QEMU (fuck knows why).
also change arm64 image for the sake of consistency
2020-02-13 20:03:40 -05:00
artiume
63f13df6fc Merge pull request #17 from jellyfin/master
10.5
2020-02-13 13:09:50 -05:00
dkanada
53db526667 merge branch master into refactor 2020-02-14 03:02:06 +09:00
dkanada
cf2626428c Merge pull request #2400 from Bond-009/baseurl
Another baseurl related fix
2020-02-14 01:16:52 +09:00
Bond-009
407ba755f1 Merge pull request #2258 from geilername/transcoding-throttling
Enable Throttling when transcoding without Hardware-Acceleration
2020-02-13 17:01:09 +01:00
dkanada
8ee917143f Merge pull request #2358 from Bond-009/tests
Enable TreatWarningsAsErrors and Nullable for test projects
2020-02-14 00:31:00 +09:00
artiume
40ad6f843f Merge pull request #16 from jellyfin/master
nightly
2020-02-13 05:53:23 -05:00
Bond_009
f5db4c8402 Another baseurl related fix
Baseurl always starts with a '/' (unless it's empty)
2020-02-12 20:57:34 +01:00
Bond-009
64800de29d Merge pull request #2394 from mark-monteiro/xml-documentation
Add Some XML Documentation
2020-02-12 20:43:51 +01:00
Mark Monteiro
8ffb073ccb Enable documentation warnings for fully documented files 2020-02-12 20:05:26 +01:00
Bond-009
a2490a7ae5 Merge branch 'master' into images 2020-02-12 17:41:46 +01:00
Mark Monteiro
33761c3658 Use "implement" instead of "apply" when referring to an interface 2020-02-12 14:08:06 +01:00
Vasily
e241f83ff1 Merge pull request #2398 from Artiume/patch-1
Update dockerfile to install git for new dependency
2020-02-12 14:24:19 +03:00
Vasily
a26c1ab17d Remove commented code 2020-02-12 14:19:11 +03:00
Anthony Lavado
42066ee326 Merge branch 'master' into transcoding-throttling 2020-02-12 02:01:56 -05:00
Anthony Lavado
684568e6d2 Merge pull request #2393 from DMouse10462/patch-1
Fix Fedora build
2020-02-12 01:56:12 -05:00
Johan
6813efd1a2 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-02-12 00:17:58 -05:00
j7johnny
a7c7d536a7 Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2020-02-12 00:17:58 -05:00
Anthony Lavado
00073c162a Merge pull request #2363 from dkanada/view
Add session view endpoint
2020-02-11 23:56:47 -05:00
dkanada
662e1164c9 Merge pull request #2326 from Bond-009/dlnawarnings
Improvements to dlna server
2020-02-12 02:23:52 +09:00
artiume
fd55164410 Merge pull request #15 from Artiume/Artiume-livetv
Fix MaxBitrate
2020-02-11 12:21:43 -05:00
artiume
b5342bb7d9 Fix MaxBitrate 2020-02-11 10:57:16 -05:00
artiume
8fb86cb5ff git to arm64 2020-02-11 10:30:30 -05:00
artiume
e47185160e Add git to arm 2020-02-11 10:30:15 -05:00
artiume
8acfc264fc Update dockerfile to install git for new dependency
https://github.com/jellyfin/jellyfin-web/pull/735

I had to install git to get it to build ✌️
2020-02-11 10:29:26 -05:00
Mark Monteiro
a381eb884c add-some-xml-documentation 2020-02-10 10:26:28 +01:00
David Mouse
422c440743 Fix Fedora build
Fedora builds were broken due to dotnet-sdk-3.1 and dotnet-runtime-3.1 not being available on the @dotnet-sig/dotnet repo as well as a lack of the git package (needed for yarn when installing jellyfin/jellyfin-noto per https://github.com/jellyfin/jellyfin-web/pull/735). Replaces the outdated repo with the official repo found in Microsoft's documentation.
2020-02-10 04:12:37 -05:00
artiume
4d324046ac Merge pull request #14 from jellyfin/master
nightly
2020-02-08 21:14:45 -05:00
Bond_009
867835a474 Fix build 2020-02-08 22:25:44 +01:00
Bond_009
f96bc23c4f Merge branch 'master' into nullable2 2020-02-08 21:49:28 +01:00
diegoalrey
77428d338d Translated using Weblate (Galician)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/gl/
2020-02-08 10:17:50 -05:00
The Iiseppi
e7dcaa7d08 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2020-02-08 10:17:50 -05:00
dkanada
75d6545145 Merge pull request #2373 from Bond-009/warn14
Fix some warnings in MediaBrowser.Model
2020-02-07 23:45:21 +09:00
artiume
81396a11cb Update CONTRIBUTORS.md 2020-02-06 17:35:47 -05:00
artiume
ab59848d92 Merge pull request #13 from Artiume/Artiume-LiveTV
Update MediaInfoService.cs
2020-02-06 17:34:04 -05:00
artiume
a73ce1d781 Update MediaInfoService.cs 2020-02-06 17:21:10 -05:00
artiume
c3f749ec66 Update MediaBrowser.Model/Users/UserPolicy.cs
Co-Authored-By: Anthony Lavado <anthonylavado@me.com>
2020-02-06 14:02:46 -05:00
Bond_009
7060934792 Fix some warnings in Emby.Server.Implementations 2020-02-06 15:21:38 +01:00
Bond-009
cefac4f886 Update Emby.Server.Implementations/Session/SessionManager.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-06 13:16:22 +01:00
Bond-009
1ae9ed6e2a Merge pull request #2381 from sebPomme/fix_readme_link
Fix quick start guide url in readme
2020-02-06 13:16:06 +01:00
Bond-009
0a43814596 Merge branch 'master' into sessionmanager 2020-02-06 13:04:07 +01:00
Bond-009
3fe84c3213 Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-06 13:03:02 +01:00
Bond-009
22510909fb Update Jellyfin.Naming.Tests.csproj 2020-02-06 13:00:15 +01:00
dkanada
df739b5b2f Merge pull request #2325 from Bond-009/naming
Clean up Emby.Naming
2020-02-06 20:59:30 +09:00
Bond-009
d5fcca3d05 Merge branch 'master' into naming 2020-02-05 23:28:00 +01:00
dkanada
1cb51a8ac7 rename session folder 2020-02-06 00:47:50 +09:00
sebpomme
a954d5e953 Fix qui start guide url in README.md 2020-02-05 16:26:51 +01:00
dkanada
c2733ac0dc split api keys into their own service 2020-02-06 00:26:21 +09:00
dkanada
e8984ed3a9 Merge pull request #2379 from joshuaboniface/nodejs-deb
Use NodeJS 10.X for NPM builds
2020-02-05 14:06:51 +09:00
ariqfadlan
ebd0771dca Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2020-02-04 23:17:44 -05:00
Joshua M. Boniface
e3c64b9fee Use NodeJS 10.X for NPM builds 2020-02-04 22:07:01 -05:00
dkanada
9af149b02d Merge pull request #2374 from Bond-009/warn15
Fix some warnings in MediaBrowser.Controller
2020-02-05 01:23:04 +09:00
Bond-009
91707f13a8 Add endpoints back 2020-02-04 12:29:14 +01:00
Bond-009
6a6472bb8a Update MediaBrowser.Controller/Entities/PersonInfo.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-04 12:28:16 +01:00
Bond-009
ba1ffbabd3 Merge branch 'master' into nullable2 2020-02-04 12:21:42 +01:00
Bond-009
c9e11c95ee Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-04 12:05:14 +01:00
artiume
3b6a4c3a33 Merge pull request #11 from jellyfin/master
nightly
2020-02-04 06:02:38 -05:00
Bond_009
32dcd372f4 Fix some warnings in MediaBrowser.Controller 2020-02-04 02:10:44 +01:00
Bond_009
f47ad85011 Fix warnings MediaBrowser.Model 2020-02-04 01:49:27 +01:00
Noitty
176e850973 Translated using Weblate (Catalan)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ca/
2020-02-03 16:17:42 -05:00
dkanada
f93edb7ade add code suggestions 2020-02-04 01:29:18 +09:00
Claus Vium
241e351a61 Merge branch 'master' into dlnawarnings 2020-02-03 13:51:34 +01:00
dkanada
b7a9900556 Merge pull request #2357 from Bond-009/warn13
Fix warnings
2020-02-03 17:15:03 +09:00
dkanada
fe325a6e73 Merge pull request #2359 from Bond-009/username
Allow changing capitalization of usernames
2020-02-03 17:14:50 +09:00
dkanada
ba724f158c Merge pull request #2367 from Artiume/patch-4
fix SSL issue in arm and arm64
2020-02-03 15:59:18 +09:00
dkanada
c1ecd886d9 Merge pull request #2368 from nyanmisaka/master
Fix framerate info not showing when mediasource is in H264 format.
2020-02-03 15:58:26 +09:00
Nyanmisaka
c149fcb3ee Update MediaBrowser.Controller/MediaEncoding/JobLogger.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-03 00:02:24 +08:00
Nyanmisaka
2c3b1bb8cb Update JobLogger.cs 2020-02-02 16:46:56 +08:00
Nyanmisaka
7472ae5ca9 fix fps info issue when the video is h264.
Fixed an issue that when the media source is in H264 format and the frame rate info is not displayed due to missing space characters in ffmpeg log.
2020-02-02 16:27:02 +08:00
Nyanmisaka
8eced835c0 Update JobLogger.cs 2020-02-02 15:58:29 +08:00
artiume
4302f16925 Update Dockerfile.arm64 2020-02-01 14:50:45 -05:00
artiume
78bb45e8fa fix SSL issue in arm and arm64
verified arm build on raspbian
2020-02-01 14:46:11 -05:00
Andrew Rabert
021427d881 Merge pull request #2365 from mcarlton00/docker-ssl-fix
Add root certificates to docker image
2020-02-01 12:26:49 -05:00
Matt
994481213f Add root certificates to docker image 2020-02-01 11:02:44 -05:00
dkanada
1bc8ca2542 add session view endpoint 2020-02-02 00:16:11 +09:00
dkanada
26dd67a441 change authentication flow 2020-02-02 00:09:18 +09:00
dkanada
6341d986a9 fix a few warnings 2020-02-02 00:07:46 +09:00
Bond-009
87c5047b13 Merge pull request #2362 from dkanada/tasks
Improve scan progress and fix a few bugs
2020-02-01 15:37:16 +01:00
dkanada
692a9bfdd0 update some comments
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-01 23:36:40 +09:00
dkanada
7df6f8d54e update error message
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2020-02-01 23:14:27 +09:00
dkanada
afe9ed977b improve scan progress and fix a few bugs 2020-02-01 22:44:27 +09:00
dkanada
ab2349ff3c update task names and descriptions 2020-02-01 22:27:25 +09:00
Bond-009
70bc03c795 Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-02-01 12:54:48 +01:00
Bond_009
acc1846e3e Allow changing capitalization of usernames 2020-01-31 22:56:24 +01:00
Bond_009
71abf1d3ce Enable TreatWarningsAsErrors and Nullable for test projects 2020-01-31 22:46:10 +01:00
Bond_009
87d2479b78 Fix warnings 2020-01-31 22:26:53 +01:00
dkanada
cd13f718fb Merge pull request #2247 from Bond-009/stringhelper
Remove StringHelper functions
2020-02-01 03:29:16 +09:00
Bond-009
6cd9c84ddf Update MediaBrowser.Model/Extensions/StringHelper.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-31 18:10:15 +01:00
dkanada
b3811a9498 Merge pull request #2349 from Bond-009/deps
Update deps
2020-01-31 11:22:30 +09:00
WNotCoder
a3615dec69 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-01-30 13:17:32 -05:00
Bond-009
d69870680b Close xmlwriter first 2020-01-29 17:30:27 +01:00
artiume
d4470b5709 Merge pull request #9 from jellyfin/master
nightly
2020-01-28 21:41:52 -05:00
artiume
a012a4574f remove test patch 2020-01-28 21:36:51 -05:00
Bond_009
2186df8ac4 Update deps 2020-01-28 22:42:07 +01:00
mtanECECS
81fae5932b Translated using Weblate (Filipino)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fil/
2020-01-28 16:09:23 -05:00
Pooka Mustard
1ff74dd8f0 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-01-28 16:09:23 -05:00
diegoalrey
f7b4dfc1cb Added translation using Weblate (Galician) 2020-01-28 16:09:23 -05:00
Bond_009
6ee04855cd Style 2020-01-28 21:54:51 +01:00
Bond-009
ae9c1e29e7 My bad 2020-01-28 17:50:25 +01:00
Bond-009
acfacabf0c Merge pull request #2347 from Matt07211/fix-2255
Fix broken webserver caused by dotnet publish. Temp Fix for #2255
2020-01-28 15:01:29 +01:00
Bond-009
36d62c3093 Fix? 2020-01-28 13:19:25 +01:00
Matt07211
84fbf64867 Fix broken webserver caused by dotnet publish.
This should be considered a temp fix, as it fixes the symptom and not
the actual root cause of the issue. Why this works? I *feel like* this is
a dependency issue and this change forces it to evalute dependencys in a
different order, avoiding the bug.
2020-01-28 19:37:13 +11:00
Bond_009
6b68521bae Try again 2020-01-27 23:34:40 +01:00
Bond_009
fc578de3b3 Try possible solutions 2020-01-27 22:43:58 +01:00
Vasily
0a95c3a1c2 Merge pull request #2343 from Bond-009/spacing
Fix spacing logs
2020-01-27 19:31:42 +03:00
Bond-009
71bdcd7307 Fix spacing logs 2020-01-27 17:24:29 +01:00
Bond-009
04b9e94c7c Merge pull request #2338 from ferferga/master
Removed old 'automatic restart after update' features
2020-01-27 17:02:30 +01:00
dkanada
1ed92b05fb Merge pull request #2332 from pR0Ps/bugfix/dlna
Fix another issue with DLNA responses not properly paginating
2020-01-27 23:18:33 +09:00
Vasily
8c520160cc Merge pull request #2331 from nyanmisaka/master
fix an issue that could not correctly determine 'IsSecondaryAudio' in some cases.
2020-01-27 15:51:50 +03:00
mtanECECS
b5be0c567f Added translation using Weblate (Filipino) 2020-01-26 22:25:14 -05:00
Bond-009
bade35958a Fix 2020-01-26 17:41:34 +01:00
Bond-009
3a338c1899 Address comments 2020-01-26 17:37:47 +01:00
artiume
918df5e352 Merge remote-tracking branch 'jellyfin/master' 2020-01-26 09:33:31 -05:00
ferferga
d6786c7304 Removed old 'automatic restart after update' features' 2020-01-25 23:01:48 +01:00
dkanada
e58aa57ed7 Merge pull request #2337 from ThreeFive-O/AddTranscodingFramerate
Add transcoding framerate info
2020-01-26 01:06:28 +09:00
SaddFox
ad5081f276 Translated using Weblate (Slovenian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sl/
2020-01-25 10:17:25 -05:00
a-alshabib
eb04126473 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2020-01-25 10:17:25 -05:00
ThreeFive-O
4f3bfd9146 Add Transcoding framerate info 2020-01-24 23:33:32 +01:00
Carey Metcalfe
d3de91dab6 Fix another issue with DLNA responses not properly paginating
The `UserRootFolder.GetItemsInternal` method now applies any sorting and
pagination requested by the `InternalItemsQuery` that was passed to it.

Previous pagination fix: #2304
Original issue #2303
2020-01-24 00:43:28 -05:00
Nyanmisaka
48e9c004b4 fix an issue about determining 'IsSecondaryAudio'
fix an issue that could not correctly determine 'IsSecondaryAudio' in some cases.
2020-01-24 00:55:14 +08:00
Vasily
8ff07e17e6 Merge pull request #2242 from Bond-009/getstream
Remove FileSystem.GetStream
2020-01-23 19:33:40 +03:00
Bond_009
c751ba9f70 Fix build 2020-01-22 22:27:03 +01:00
Bond-009
c8409d2ea1 Remove FileSystem.GetStream 2020-01-22 22:20:35 +01:00
Bond_009
dc62e436c4 Clean up Emby.Naming 2020-01-22 22:18:56 +01:00
Bond_009
82112b6788 Improvements to dlna server
* Improve response writer
* Add analyzers
* Error on warnings in release mode
* Disable doc warnings
2020-01-22 21:00:07 +01:00
Marco
6eac7f0fa7 Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2020-01-22 12:17:19 -05:00
dkanada
1dd4abebbd Merge pull request #2297 from Bond-009/asyncio
Kestrel doesn't like sync IO operations
2020-01-23 01:59:52 +09:00
Bond-009
5340eb9363 Update Emby.Dlna/Service/BaseControlHandler.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-22 17:46:26 +01:00
Bond_009
ddf9b38799 Simplify image processing by removing image enhancers 2020-01-21 20:26:30 +01:00
Bond-009
ac3b958c67 Use async methods 2020-01-21 17:59:41 +01:00
dkanada
d4de78693f Merge pull request #2184 from WiiPlayer2/bug/global-header-flag-support
Add check if output container supports "global_header" flag
2020-01-21 19:24:35 +09:00
Vasily
f23434f4f7 Merge pull request #2299 from dkanada/testing
Fix a few more tests for music and episodes
2020-01-21 13:21:24 +03:00
dkanada
4abcbc66be Merge pull request #2295 from shemanaev/patch-1
Enable path mapping in `PlaybackInfo` endpoint
2020-01-21 19:20:14 +09:00
Waldemar Tomme
ef487441d1 Remove configuration of global_header flag 2020-01-21 06:48:25 +01:00
dkanada
11c758b6be remove unsupported test cases 2020-01-21 00:20:24 +09:00
Vasily
2f8f064a23 Merge pull request #2304 from pR0Ps/master
Fix pagination for DLNA root folder list
2020-01-20 16:07:51 +03:00
Andrew Rabert
da2c998e28 Update ARM images to debian buster (#2313)
Also has the effect of updating ffmpeg to 4.1
2020-01-19 12:34:33 -05:00
Andrew Rabert
075dad8720 Fix ARM images (#2302)
Allow for native building of Docker images. Use buildx if
cross-compilation is needed.
2020-01-19 07:51:38 -05:00
Carey Metcalfe
f2eea89ff0 Fix pagination for DLNA root folder list
Previously, when responding to a DLNA "Browse" request, the
`StartingIndex` was not respected and all of the root items were
returned each time. This caused infinite loops with in DLNA clients that
ignored the `TotalMatches` data in the response and just continued
asking for the next page until they got an empty response.

This fix makes the root folder list respect the `StartingIndex` and
`RequestedCount` parameters like all other responses.

Fixes issue #2303
2020-01-19 01:37:52 -05:00
dkanada
a562a4d505 minor linting for ci files 2020-01-19 00:19:19 +09:00
dkanada
e700fc8a07 fix and remove a few more tests 2020-01-19 00:18:55 +09:00
dkanada
c618f3f8eb Merge pull request #2257 from Bond-009/cleantests
Fix a couple of tests
2020-01-19 00:08:37 +09:00
dkanada
1e65cc4695 Merge pull request #2269 from EraYaN/azp-coverlet-reports
Split CI YAML files and update code coverage collection
2020-01-18 23:53:55 +09:00
Bond_009
2610f377c0 Kestrel doesn't like sync IO operations 2020-01-18 00:09:25 +01:00
Denis
549a2d8b6d Enable path mapping in PlaybackInfo endpoint 2020-01-17 22:48:28 +03:00
4d1m
8e71046a3c Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-01-17 04:17:10 -05:00
artiume
73a47e934d Fix Docker Arm Nightly (#2286)
* Fix Docker Arm Nightly

Updated image base.

There was an error for libssl missing. I attempted to add libssl1.0.0 but it wasn't found so I fell back to libssl-dev.

Much more work needs to be done. ffmpeg is still debian based. I attempted to add jellyfin-ffmpeg but I was having too many issues so I'm saving it for another day, but it at least builds out successfully.

* Fix docker arm64 nightly
2020-01-17 00:35:41 -05:00
Bond_009
c601def484 Fix warnings in SessionManager 2020-01-17 00:19:58 +01:00
Bond-009
686d1ff9fb Update StringHelper.cs 2020-01-16 23:23:06 +01:00
Bond-009
47d3337124 Update StringHelper.cs 2020-01-16 23:22:42 +01:00
artiume
0cbae4a06d Tcoding
https://github.com/jellyfin/jellyfin/pull/2184
2020-01-16 12:51:34 -05:00
Vasily
bdbf7a69f6 Merge pull request #2289 from Bond-009/dvd
Add back support for DVDs copied as folders
2020-01-16 19:43:36 +03:00
Vasily
1cb142fbab Merge pull request #2290 from anthonylavado/master
Update SQLitePCL to new version
2020-01-16 18:26:44 +03:00
Anthony Lavado
dcd6ceb9a2 Update SQLitePCL to new version 2020-01-16 09:31:20 -05:00
Bond-009
f3a1729964 Address comments 2020-01-16 15:02:50 +01:00
Vasily
ad481322f6 Merge pull request #2288 from Bond-009/logging
Add brackets around thread id
2020-01-16 16:45:46 +03:00
Vasily
88d66d5f5c Merge pull request #2249 from Narfinger/docker-fix
fixes dockerfile building on recent linux installations
2020-01-16 16:40:12 +03:00
Bond-009
e882b03e81 Add back support for DVDs copied as folders 2020-01-16 13:30:38 +01:00
Bond-009
96c9af5904 Add brackets around thread id 2020-01-16 13:20:01 +01:00
dkanada
bc4c67e6fa Merge pull request #2287 from nyanmisaka/master
New upstream ffmpeg version 4.2.1 for windows nightly channel
2020-01-16 20:54:59 +09:00
Nyanmisaka
2ce16d4bb5 fix indentation 2020-01-16 18:47:54 +08:00
Nyanmisaka
0a7ea36c68 Update build-jellyfin.ps1 2020-01-16 18:10:14 +08:00
Nyanmisaka
e92e105c42 New upstream ffmpeg version 4.2.1 on windows 2020-01-16 17:57:19 +08:00
Nyanmisaka
ac0b30285e New upstream ffmpeg version 4.2.1 on windows 2020-01-16 16:32:07 +08:00
Nyanmisaka
15c52867ea New upstream ffmpeg version 4.2.1 on windows 2020-01-16 16:32:04 +08:00
4d1m
42213d94e5 Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-01-16 02:17:12 -05:00
nextlooper42
d4745957b3 Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2020-01-16 02:17:12 -05:00
dkanada
4aa0b940e3 Merge pull request #2251 from nyanmisaka/master
add support for AMD AMF hardware encoding on Windows & Linux
2020-01-16 15:26:46 +09:00
dkanada
884c3e5614 Merge pull request #2283 from EraYaN/nsis-create-speedup
Change NSIS log verbosity and use lesser but faster compression.
2020-01-16 15:04:16 +09:00
Joshua M. Boniface
3b3718e437 Merge pull request #2275 from Artiume/patch-1
Explicitly ask for ffmpeg logs
2020-01-15 10:05:35 -05:00
artiume
2cad58e5cd Update .github/ISSUE_TEMPLATE/media_playback.md
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-15 10:02:01 -05:00
Erwin de Haan
ec8baaf48d Switch around SetCompressor arguments. Hide progress bars for powershell. 2020-01-15 12:17:42 +01:00
Nyanmisaka
2c10891b66 turn on indentation. 2020-01-15 18:45:28 +08:00
Nyanmisaka
8868ff2ffa remove useless comment 2020-01-15 18:40:58 +08:00
Erwin de Haan
67cae37308 Formatting and comment removal. 2020-01-15 11:39:47 +01:00
Erwin de Haan
1ad6f01617 Switch to slightly more verbose logging. 2020-01-15 11:37:37 +01:00
Erwin de Haan
9aa870cf24 Enable /SOLID switch for compression 2020-01-15 11:36:54 +01:00
Erwin de Haan
d3bd22d7a2 Enable Unicode
ANSI targets are deprecated
2020-01-15 11:36:22 +01:00
Vasily
3ab979c6ba Merge pull request #2264 from Bond-009/discovery
Clean up server discovery code
2020-01-15 13:34:29 +03:00
Erwin de Haan
22f408201a Less output and lesser compression. 2020-01-15 11:20:01 +01:00
Erwin de Haan
da91b4fa4c Split CI testing files
Switch to cobertura for code coverage
Switch to dotnet test for tests
Add matrix run for different platforms
Add extra variables for easier maintenance
2020-01-15 11:05:57 +01:00
Vasily
c6484c0220 Merge pull request #2181 from BnMcG/2179-authentication-tests
Test Jellyfin.Api authentication handling
2020-01-14 18:03:25 +03:00
dkanada
b1e76db21e Merge pull request #2266 from Bond-009/nullref2
Try to fix nullreff
2020-01-14 18:46:09 +09:00
dkanada
d43d39f9b8 Merge pull request #2272 from Bond-009/logging
Add thread ID and source to logging
2020-01-14 18:03:26 +09:00
Artiume
c1350f30d2 Update .github/ISSUE_TEMPLATE/media_playback.md
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-13 21:25:41 -05:00
Artiume
cd5e5cda61 Update .github/ISSUE_TEMPLATE/media_playback.md
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-13 21:25:21 -05:00
Artiume
402691b5e1 Explicitly ask for ffmpeg logs
gimme yo ffmpeg logs, yo
2020-01-13 17:16:43 -05:00
Bond-009
facbd87cfc Merge pull request #2268 from dkanada/absolute-path-fix
Fix tests for absolute paths
2020-01-13 19:58:45 +01:00
Bond-009
65fe243afb Add thread ID and source to logging 2020-01-13 19:44:17 +01:00
Slobodan Simić
138bff4327 Translated using Weblate (Serbian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sr/
2020-01-13 06:17:07 -05:00
Z Yang
ab0130e9e2 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2020-01-13 06:17:07 -05:00
Alexander Brissman
7b91df1994 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-01-13 06:17:07 -05:00
hbo
faf898ea0d Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-13 06:17:07 -05:00
Philmo67
31347de792 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-13 06:17:07 -05:00
punkch
9c2c31b0c6 Translated using Weblate (Bulgarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/
2020-01-13 06:17:07 -05:00
dkanada
536237c35d move the split usage to the proper location 2020-01-13 17:37:07 +09:00
dkanada
d461f46bef ignore drive name in windows environments 2020-01-13 17:31:14 +09:00
dkanada
9eac19c75a change invariant culture to ordinal 2020-01-13 17:09:22 +09:00
Bond-009
cf13e89ad6 Update MediaBrowser.Api/Playback/MediaInfoService.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-13 09:01:14 +01:00
Bond-009
665ca5cf1f Update UdpServer.cs 2020-01-13 09:00:30 +01:00
dkanada
d00fd7ca82 switch two incorrectly used variables 2020-01-13 15:43:06 +09:00
dkanada
65e9a705d3 check operating system for absolute path test 2020-01-13 15:34:50 +09:00
dkanada
a8cd963d46 fix tests for absolute paths 2020-01-13 15:25:54 +09:00
dkanada
c3efcbf77e Merge pull request #2245 from BnMcG/1874-regression-test
Add a test to prevent a regression of absolute path generation behaviour
2020-01-13 14:18:11 +09:00
Bond_009
56f580cdf6 Add test to prevent regressions 2020-01-12 23:57:13 +01:00
Bond_009
93ab829df5 Attempt #3 2020-01-12 23:25:57 +01:00
Bond_009
84d1b12530 Attempt #2 2020-01-12 21:55:04 +01:00
Bond_009
da5893b0f1 Try to fix nullreff 2020-01-12 21:21:20 +01:00
dkanada
ce7744806c Merge pull request #2216 from gnattu/master
Let HLS fallback to mpegts in case device reports unsupported container
2020-01-13 03:43:59 +09:00
gnattu
ea075c1b48 Add reminder to remove the workaround
This will be no longer needed when ffmpeg is ready

Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-12 13:22:20 -05:00
Bond-009
ded9857f45 Clean up server discovery code 2020-01-12 18:59:10 +01:00
dkanada
d217f1614e Merge pull request #2096 from Bond-009/embytv
Clean up Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
2020-01-13 00:41:52 +09:00
Bond-009
2a09f05ff3 Fix build 2020-01-12 16:30:31 +01:00
Nyanmisaka
08c4d3797f add support for AMF hardware encoding on Linux.
1) h264_amf is now supported on linux with 'amdgpu-pro' installed and '--enable-amf' when compiling ffmpeg.
2) Using vaapi decode and h264_amf encode on linux platform can avoid some weird transcoding errors in h264_vaapi with amd gpu.
2020-01-12 21:38:28 +08:00
Maximilian Marschall
081d942d03 Enable Throttling when transcoding without Hardware-Acceleration 2020-01-12 00:33:57 +01:00
Bond_009
9f5bbb126e Fix tests 2020-01-11 22:29:46 +01:00
Bond_009
abf03f7d3a Clean up some more 2020-01-11 22:17:05 +01:00
Bond_009
ec0ef2a2c5 Remove useless statement 2020-01-11 22:17:05 +01:00
Bond_009
cd0592ea8f Improve parsers 2020-01-11 22:17:05 +01:00
Bond_009
dd254eddac Simplify CleanDateTimeParser 2020-01-11 22:17:05 +01:00
Bond_009
b1dc595be1 Fix a couple of tests 2020-01-11 22:17:05 +01:00
Bond_009
a647dc5705 Cleanup tests 2020-01-11 22:17:05 +01:00
dkanada
a272638a84 Merge pull request #2170 from Bond-009/mediainfoservice
Minor changes to MediaInfoService
2020-01-11 16:54:23 +09:00
dkanada
bca48b5d5c Merge pull request #2248 from jellyfin/azp-vstest-fix
Fix the VSTest runner
2020-01-11 15:34:22 +09:00
dkanada
d63debd008 Merge pull request #2254 from Bond-009/regex
Fix regex for movies released after 2019
2020-01-11 15:12:39 +09:00
Bond_009
801c356d66 Fix regex for movies released after 2019 2020-01-11 00:23:14 +01:00
Vasily
dd7feacd34 Merge pull request #2105 from Bond-009/namingtests
Add back all old emby tests
2020-01-11 02:11:13 +03:00
Bond_009
0d6a4c2909 Fix build 2020-01-11 00:08:47 +01:00
Vasily
aca4d678a2 Merge pull request #2136 from Bond-009/warn12
More warnings (removed)
2020-01-11 02:02:48 +03:00
Slobodan Simić
fa1aeeb18a Added translation using Weblate (Serbian) 2020-01-10 15:27:17 -05:00
Bond_009
d9ec502ff9 Address comments 2020-01-10 21:25:45 +01:00
Bond_009
bb236b9591 Merge branch 'master' into warn12 2020-01-10 21:18:16 +01:00
Bond_009
e714b9930e Merge branch 'master' into embytv 2020-01-10 21:16:46 +01:00
Nyanmisaka
e95239e281 add support for AMD h264_amf & hevc_amf 2020-01-11 01:36:25 +08:00
archon eleven
0a39e54984 Translated using Weblate (Malay)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ms/
2020-01-10 10:17:05 -05:00
Philmo67
81ae6d8afd Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-10 10:17:05 -05:00
keitaro62
0a92200c6f Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-10 10:17:05 -05:00
Narfinger
c3ff4e0b9f fixes dockerfile building on recent linux installations 2020-01-10 19:42:07 +09:00
Ben Magee
64baca9fac Renamed project and namespace 2020-01-09 22:03:57 +00:00
Bond_009
b50c4938e1 Merge branch 'master' into namingtests 2020-01-09 18:26:22 +01:00
Artiume
a40cb7bbd8 Merge pull request #7 from jellyfin/master
nightly
2020-01-09 12:14:54 -05:00
Erwin de Haan
312987aea5 Build all test projects using a wildcard 2020-01-09 17:39:17 +01:00
Erwin de Haan
654336990f Added plural glob for test assemblies 2020-01-09 17:31:44 +01:00
Erwin de Haan
d328fc51cf Apply suggestions from code review
Co-Authored-By: Bond-009 <bond.009@outlook.com>
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-09 17:28:20 +01:00
Erwin de Haan
6792fa111e Fix the test selection glob. 2020-01-09 17:27:48 +01:00
Erwin de Haan
1ea613a9bd Update Jellyfin.Api.Test to 3.1 2020-01-09 17:26:42 +01:00
Erwin de Haan
1fecb9efb2 Fix the VSTest runner 2020-01-09 17:17:52 +01:00
Bond-009
fdbb329118 Remove StringHelper functions 2020-01-09 17:07:13 +01:00
gnattu
d5204f572a Fix typo and plural 2020-01-09 02:25:05 -05:00
dkanada
162c1ac7b7 Merge pull request #2185 from Bond-009/scanerrors
Fix exceptions while scanning
2020-01-09 15:10:29 +09:00
Ben Magee
140673fcf6 Add a test case which doesn't specify the parent directory. 2020-01-08 23:03:17 +00:00
Ben Magee
43c76b48c9 Added a test to prevent a regression of the issue seen in #1874. This issue was fixed in PR#2240 2020-01-08 22:52:33 +00:00
Bond-009
b1af8a4178 Rename function 2020-01-08 18:14:01 +01:00
Bond-009
277e9d2b0b fix build 2020-01-08 18:13:11 +01:00
Bond-009
c3752b1a30 Merge branch 'master' into scanerrors 2020-01-08 18:10:17 +01:00
Andrew Rabert
124a852787 Merge pull request #2240 from anthonylavado/fix-pathfinding
Re-order the path statement to avoid file issues
2020-01-08 08:29:03 -05:00
Anthony Lavado
75f19a762c Re-order the path statement to avoid file issues
Fixes #31874.
2020-01-08 04:05:07 -05:00
dkanada
423d50e978 Merge pull request #1838 from Unhelpful/media-attachments
Add support for embedded attachments in media files
2020-01-08 11:04:21 +09:00
dkanada
73fac50e57 rename two properties based on code suggestions 2020-01-08 10:52:48 +09:00
Bond_009
8a0ef41036 Minor improvements 2020-01-08 01:24:12 +09:00
Bond_009
a253fa616d Fix build and address comments 2020-01-08 01:23:57 +09:00
dkanada
aca31457c0 merge branch master into media-attachments 2020-01-08 01:21:09 +09:00
Bond-009
9dfafb9e9f Update MediaBrowser.MediaEncoding/Probing/MediaFormatInfo.cs
Co-Authored-By: Erwin de Haan <EraYaN@users.noreply.github.com>
2020-01-07 11:13:47 +01:00
Bond-009
49fef5f09c Update MediaBrowser.MediaEncoding/Probing/MediaChapter.cs
Co-Authored-By: Erwin de Haan <EraYaN@users.noreply.github.com>
2020-01-07 11:13:11 +01:00
dkanada
534716d9c9 Merge pull request #2220 from Bond-009/unicode
Replace unicode char with its integer value
2020-01-06 21:16:22 +09:00
Bond-009
70210b47a4 Update MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2020-01-06 10:39:01 +01:00
dkanada
e5c68834a3 Merge pull request #2221 from Bond-009/baseurlfix
Fix baseurl (again)
2020-01-06 15:05:11 +09:00
dkanada
f48269a319 Merge pull request #2219 from Bond-009/subtitle
Fix JSON subtitle writer
2020-01-06 14:43:07 +09:00
samucamg
80dfc78ba5 Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-01-05 16:47:41 -05:00
Thoscellen
a4d0e4b38e Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2020-01-05 16:47:41 -05:00
Cota Fainado
0a483c83f9 Translated using Weblate (Portuguese)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt/
2020-01-05 16:47:41 -05:00
Bond-009
a21645d6be Merge pull request #2230 from dkanada/update-ci
Fix dependency issue for CI
2020-01-05 21:05:29 +01:00
Erwin de Haan
21b78f44c8 Add new dotnet version to compat stage as well. 2020-01-05 19:30:32 +01:00
Erwin de Haan
65f65db8b9 Re-enable compat checks. 2020-01-05 19:25:33 +01:00
Erwin de Haan
2ca7200a05 Updated for v0.0.5 of the compat checker. 2020-01-05 19:24:24 +01:00
Artiume
5b55997984 Merge pull request #6 from jellyfin/master
nightly
2020-01-05 11:49:45 -05:00
dkanada
d599124508 manually disable compatibility check 2020-01-05 16:39:48 +09:00
dkanada
c7d5f35eb7 update display names for some ci steps 2020-01-05 16:32:24 +09:00
dkanada
303385dfa2 remove unused parameters 2020-01-05 16:08:19 +09:00
dkanada
f1008ab58d update job names 2020-01-05 16:01:42 +09:00
dkanada
e5e0166951 update dotnet version for ci 2020-01-05 15:59:31 +09:00
Constantin Matel
0b592376d5 Translated using Weblate (Romanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ro/
2020-01-04 18:01:30 -05:00
Cota Fainado
aa7aadb2b2 Added translation using Weblate (Portuguese) 2020-01-04 18:01:30 -05:00
dkanada
aac0a1ed26 Merge pull request #2206 from Bond-009/userconfig
Delete user config dir on user deletion
2020-01-04 22:55:42 +09:00
Bond-009
77a9ebf13f Merge pull request #2222 from sachk/master
Update the build script to use .NET core SDK 3.1
2020-01-04 11:30:38 +01:00
Sacha Korban
2497573b7f Update the build script to use .NET core SDK 3.1 2020-01-04 15:02:38 +11:00
shoeflydbm
5cd8338e73 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2020-01-03 10:37:00 -05:00
Constantin Matel
295eaa2ccb Added translation using Weblate (Romanian) 2020-01-03 10:37:00 -05:00
Bond_009
5994328903 Fix baseurl (again) 2020-01-02 21:22:10 +01:00
Bond_009
09d1f976d9 Replace unicode char with its integer value 2020-01-02 20:19:01 +01:00
Bond-009
59cdfdc2d9 Fix JSON subtitle writer 2020-01-02 14:38:13 +01:00
dkanada
d756233f62 Merge pull request #2144 from neilsb/feature/Add-Excluded-Tags-to-SQLite-query-using-parameters
Add Excluded Tags to SQLite query using parameters
2020-01-02 15:32:25 +09:00
dkanada
653610d578 Merge pull request #2165 from Ullmie02/master
Add Tmdb as a Provider for Season Images
2020-01-02 11:27:34 +09:00
dkanada
fb61a1f882 Merge pull request #2150 from Bond-009/releaseerror
Enable TreatWarningsAsErrors for some projects
2020-01-02 10:13:57 +09:00
Joshua M. Boniface
d3bce6e380 Merge pull request #2107 from Bond-009/dotnet3.1
Move to .Net Core 3.1
2020-01-01 13:30:20 -05:00
erikasne6152
72d2b5910a Translated using Weblate (Lithuanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/
2020-01-01 04:16:39 -05:00
marty
c62599f873 Translated using Weblate (Lithuanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/
2020-01-01 04:16:39 -05:00
dkanada
529cff3920 Merge pull request #2153 from dkanada/fix-playlist
Fix playlist deletion and a few warning fixes
2020-01-01 15:00:57 +09:00
dkanada
c10cb66169 remove directory check 2020-01-01 14:45:09 +09:00
gnattu
167549f5f1 Let HLS fallback to mpegts in case device reported unsupported container 2019-12-31 22:33:14 -05:00
dkanada
e476125cf8 Merge pull request #2208 from Bond-009/todo
Fix a couple of TODOs
2019-12-31 03:03:42 -08:00
marty
f672ecbac5 Translated using Weblate (Lithuanian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/
2019-12-30 11:16:34 -05:00
Bond-009
49330e3082 Fix a couple of TODOs 2019-12-30 16:03:20 +01:00
Bond_009
ab57b504fe Delete user config dir on user deletion 2019-12-29 19:32:12 +01:00
Z Yang
49ce876c2c Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-12-28 17:16:32 -05:00
Allan
d7164d2eb7 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-12-28 17:16:32 -05:00
dkanada
b3963058db Merge pull request #1891 from stanionascu/bdinfo-uhd
Upgrade BDInfo plugin to UHD/Atmos/DTS:X support
2019-12-28 04:16:45 +09:00
Odd Stråbø
5bf0eb2b0e Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2019-12-25 19:16:26 -05:00
arg2009
ef62df69df Translated using Weblate (Indonesian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/id/
2019-12-24 05:16:25 -05:00
Bond_009
a41ec5c9d4 Fix typo 2019-12-23 15:29:30 +01:00
arg2009
a22f1dabb4 Added translation using Weblate (Indonesian) 2019-12-23 04:13:48 -05:00
Ben Magee
d1461b4238 Changed cast style as suggested, improved some member names to make them less ambiguous 2019-12-22 23:21:20 +00:00
Ben Magee
00c6d392a1 Added tests for FirstTimeSetupOrElevatedHandler 2019-12-22 23:18:42 +00:00
Ben Magee
ef75455178 Test RequiresElevationHandler for all roles 2019-12-22 22:54:46 +00:00
Ben Magee
8d06d0dbdf Removed unneeded dependency 2019-12-22 22:39:29 +00:00
Ben Magee
8c4e679ff4 PR style comments 2019-12-22 22:36:11 +00:00
Bond_009
f9a454628d Preformance!!! 2019-12-22 22:21:41 +01:00
Bond_009
cf2e2a3f30 Fix exceptions while scanning
Fixes these exceptions:
```
[2019-12-22 20:48:14.779 +01:00] [ERR] Error in WaitForExit
System.InvalidOperationException: No process is associated with this object.
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.GetWaitState()
   at System.Diagnostics.Process.WaitForExitCore(Int32 milliseconds)
   at System.Diagnostics.Process.WaitForExit(Int32 milliseconds)
   at Emby.Server.Implementations.Diagnostics.CommonProcess.WaitForExit(Int32 timeMs) in /home/pi/dev/jellyfin/Emby.Server.Implementations/Diagnostics/CommonProcess.cs:line 100
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.StopProcess(ProcessWrapper process, Int32 waitTimeMs) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 785
[2019-12-22 20:48:14.790 +01:00] [INF] Killing ffmpeg process
[2019-12-22 20:48:14.795 +01:00] [ERR] Error killing process
System.InvalidOperationException: No process is associated with this object.
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.Kill()
   at Emby.Server.Implementations.Diagnostics.CommonProcess.Kill() in /home/pi/dev/jellyfin/Emby.Server.Implementations/Diagnostics/CommonProcess.cs:line 95
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.StopProcess(ProcessWrapper process, Int32 waitTimeMs) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 799
[2019-12-22 20:48:14.808 +01:00] [ERR] Error in "ffprobe"
System.Text.Json.JsonException: The JSON value could not be converted to System.String. Path: $.streams[0].start_pts | LineNumber: 32 | BytePositionInLine: 26.
 ---> System.InvalidOperationException: Cannot get the value of a token type 'Number' as a string.
   at System.Text.Json.Utf8JsonReader.GetString()
   at System.Text.Json.Serialization.Converters.JsonConverterString.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options)
   at System.Text.Json.JsonPropertyInfoNotNullable`4.OnRead(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonPropertyInfo.Read(JsonTokenType tokenType, ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonSerializer.HandleValue(JsonTokenType tokenType, JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack)
   --- End of inner exception stack trace ---
   at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& readStack, Utf8JsonReader& reader, Exception ex)
   at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack)
   at System.Text.Json.JsonSerializer.ReadCore(JsonReaderState& readerState, Boolean isFinalBlock, ReadOnlySpan`1 buffer, JsonSerializerOptions options, ReadStack& readStack)
   at System.Text.Json.JsonSerializer.ReadAsync[TValue](Stream utf8Json, Type returnType, JsonSerializerOptions options, CancellationToken cancellationToken)
   at MediaBrowser.MediaEncoding.Encoder.MediaEncoder.GetMediaInfoInternal(String inputPath, String primaryPath, MediaProtocol protocol, Boolean extractChapters, String probeSizeArgument, Boolean isAudio, Nullable`1 videoType, Boolean forceEnableLogging, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs:line 399
   at MediaBrowser.Providers.MediaInfo.FFProbeVideoInfo.ProbeVideo[T](T item, MetadataRefreshOptions options, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs:line 122
   at MediaBrowser.Providers.Manager.MetadataService`2.RunCustomProvider(ICustomMetadataProvider`1 provider, TItemType item, String logName, MetadataRefreshOptions options, RefreshResult refreshResult, CancellationToken cancellationToken) in /home/pi/dev/jellyfin/MediaBrowser.Providers/Manager/MetadataService.cs:line 815
```
2019-12-22 22:09:09 +01:00
Waldemar Tomme
57aec873d0 Add check if output container supports "global_header" flag 2019-12-22 13:01:18 +01:00
Ben Magee
f47c7959af Wrote tests to cover CustomAuthenticationHandler 2019-12-22 09:46:09 +00:00
Artiume
c2db45bad9 Merge pull request #5 from Artiume/revert-4-server-validation
Revert "Allow valid https requests in .NET Core"
2019-12-21 00:01:54 -05:00
Artiume
1bab76d80c Revert "Allow valid https requests in .NET Core" 2019-12-21 00:01:43 -05:00
Artiume
0e920a6d5f Update MediaInfoService.cs 2019-12-20 23:40:36 -05:00
Artiume
963b69c7b2 Update MediaInfoService.cs 2019-12-20 23:17:01 -05:00
Artiume
82911c8a20 Merge pull request #4 from stevehayles/server-validation
Allow valid https requests in .NET Core
2019-12-20 23:09:35 -05:00
Bond_009
b87750d8e0 Update vs code workspace 2019-12-20 21:50:15 +01:00
Bond_009
5751d86536 Fix warnings and move to System.Text.Json 2019-12-20 21:49:16 +01:00
Bond_009
5dc3874ebd Enable nullable reference types for Emby.Photos and Emby.Notifications
* Enable TreatWarningsAsErrors for Emby.Notifications
* Add analyzers to Emby.Notifications
2019-12-20 21:30:51 +01:00
David
94d3dda324 Refactor seriesId 2019-12-20 20:10:02 +01:00
David
d720d8f356 Add requested changes 2019-12-20 20:04:27 +01:00
Bond_009
7f5a174dff Merge branch 'master' into warn12 2019-12-20 19:43:57 +01:00
Artiume
6a6e02e1ec Merge pull request #3 from jellyfin/master
nightly, big one
2019-12-19 20:51:45 -05:00
Bond-009
137db45fc7 Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-12-19 22:01:05 +01:00
David
ce8754d052 Refactor list of RemoteImageInfo 2019-12-19 19:58:00 +01:00
David
1f323683b3 Add requested changes 2019-12-19 18:59:55 +01:00
Bond-009
bb62dd14c2 Limit size for playbacktest 2019-12-19 17:46:17 +01:00
Vasily
06dfa2e687 Merge pull request #2134 from Bond-009/dlnam3u8
Fix comparison between different types
2019-12-19 18:51:51 +03:00
Bond-009
a5cd11735c Minor changes to MediaInfoService 2019-12-19 15:54:27 +01:00
David
eb12754fc5 Add Tmdb as a Provider for Season Images
Changes to be committed:
	modified:   CONTRIBUTORS.md
	new file:   MediaBrowser.Providers/Tmdb/TV/TmdbSeasonImageProvider.cs
	modified:   MediaBrowser.Providers/Tmdb/TV/TmdbSeasonProvider.cs
2019-12-18 17:27:44 +01:00
Bond-009
5c9e849b85 Enable analyzers 2019-12-18 12:03:54 +01:00
Bond-009
a1ca50fd5a Merge branch 'namingtests' of https://github.com/Bond-009/jellyfin into namingtests 2019-12-18 11:53:41 +01:00
Bond-009
8723bdbb4f Fix tests 2019-12-18 11:52:32 +01:00
dkanada
bc7cbfb21a Merge pull request #1941 from Bond-009/mediaencoding
Make probesize and analyzeduration configurable and simplify circular dependencies
2019-12-18 08:54:40 +09:00
pagaiba
0f444c21e9 Translated using Weblate (Catalan)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ca/
2019-12-17 13:16:15 -05:00
Bond_009
742d84e53f Enable analyzers for Emby.Naming 2019-12-17 17:41:12 +01:00
Bond-009
91562a4392 Merge pull request #2155 from mark-monteiro/2149-jellyfin-drawing-skia-warnings
Jellyfin.Drawing.Skia Warnings and Analyzers
2019-12-17 17:39:35 +01:00
Bond-009
6b185119aa Merge branch 'master' into namingtests 2019-12-17 17:35:27 +01:00
Artiume
d2e9ce7644 Merge pull request #2 from jellyfin/master
refresh
2019-12-16 15:48:17 -05:00
Artiume
b626508bc8 Update Dockerfile 2019-12-16 15:23:43 -05:00
Artiume
f3e7c72bac Update MediaInfoService.cs 2019-12-16 15:22:18 -05:00
Artiume
b31f4ccbc2 Update MediaInfoService.cs 2019-12-16 14:53:42 -05:00
Óskar Freyr
db61a58c39 Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2019-12-16 12:16:14 -05:00
tanto faz
dda431dff1 Translated using Weblate (Portuguese (Brazil))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2019-12-16 12:16:14 -05:00
Roland Vet
6fb7999a14 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2019-12-16 12:16:14 -05:00
Robin
a7a4974d95 Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2019-12-16 12:16:14 -05:00
schbal
c6851bd72c Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-12-16 12:16:14 -05:00
Artiume
5a9e08e0de Update Dockerfile 2019-12-16 01:26:36 -05:00
Artiume
4e43c70439 Update Dockerfile 2019-12-16 01:12:50 -05:00
Artiume
c96d3c35a0 Update Dockerfile 2019-12-16 01:09:45 -05:00
Artiume
0d571b3ad1 Update Dockerfile 2019-12-16 00:59:38 -05:00
Artiume
2457e43dec Update Dockerfile 2019-12-16 00:44:10 -05:00
Artiume
46442e24f8 Update MediaInfoService.cs 2019-12-16 00:43:03 -05:00
Artiume
3fb7aabfde Update MediaInfoService.cs 2019-12-16 00:40:25 -05:00
Artiume
64c313a8fb Update MediaInfoService.cs 2019-12-16 00:27:48 -05:00
Artiume
77fc77eb82 Update UserPolicy.cs 2019-12-15 23:59:46 -05:00
Artiume
1443583a41 Merge pull request #1 from Artiume/branch1
Update MediaInfoService.cs
2019-12-15 23:57:58 -05:00
Artiume
be956dfd02 Update MediaInfoService.cs 2019-12-15 23:52:07 -05:00
dkanada
61b9845e0f Merge pull request #2099 from cryptobank/master
Fix VAAPI encoding on 10-bit hevc. Update QSV encoding and scaling to...
2019-12-15 19:54:20 +09:00
cryptobank
d063300af4 Add space
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-15 20:35:52 +10:30
Bond-009
b8c61a5c40 Merge pull request #2146 from cromefire/patch-1
Fix invalid username handling
2019-12-15 10:07:22 +01:00
Joshua M. Boniface
d79242c3c7 Remove broken Microsoft SDK image (#2158)
* Remove broken Microsoft SDK image

This was not working; for some reason the Microsoft .NET Docker image
for 3.0 still had a 2.1 binary which was wreaking havoc. Replace it with
the manual download that all the other .deb packages use.

* Install missing dependency
2019-12-15 01:55:07 -05:00
dkanada
28e922326d remove space
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-15 13:38:59 +09:00
Mark Monteiro
3924df9c51 Move CA1032 rule to correct location 2019-12-14 23:35:28 +01:00
Neil Burrows
d9c0721e3d Reformatting code 2019-12-14 17:48:30 +00:00
Mark Monteiro
47805d89fe Set CA1032 (Implement standard exception constructors) severity to info globally
This replaces the existing [SurpressMessage] attribute
2019-12-14 16:01:24 +01:00
Mark Monteiro
4c30557527 Remove commented code 2019-12-14 15:48:35 +01:00
Mark Monteiro
f7eef1aa7f Use the correct verbiage for documenting thrown exceptions 2019-12-14 15:47:35 +01:00
dkanada
623e85a9e4 add suggested changes
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 22:34:18 +09:00
Bond-009
831d1daa68 Merge pull request #2152 from dkanada/progress
Track progress for any item that supports the feature
2019-12-14 14:06:13 +01:00
Mark Monteiro
c1c1672d0f Fix remaining StyleCop warnings 2019-12-14 12:20:52 +01:00
Mark Monteiro
c05933234a Enable TreatWarningsAsErrors flag is project file 2019-12-14 11:46:25 +01:00
Mark Monteiro
2c3e1b8562 Enable StyleCop analyzer and fix existing issues 2019-12-14 11:04:22 +01:00
Mark Monteiro
b8c8d45b8d Enable Serilog and multithreading analyzer 2019-12-14 10:53:54 +01:00
Bond-009
c824c564cd Move Emby.XmlTv to a NuGet package (#2042)
* Move Emby.XmlTv to a NuGet package

* Update Emby.Server.Implementations/Emby.Server.Implementations.csproj

Co-Authored-By: Anthony Lavado <anthonylavado@me.com>
2019-12-14 00:45:29 -05:00
dkanada
1b2453b4e9 fix playlist deletion 2019-12-14 12:51:27 +09:00
dkanada
02928128b9 track progress for any item that supports the feature 2019-12-14 11:36:06 +09:00
cryptobank
bafcadbe58 Use case insensitive contains (4)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:43 +10:30
cryptobank
d0febd6c37 Use case insensitive contains (3)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:43 +10:30
cryptobank
802a66a9e6 Use case insensitive contains (2)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:43 +10:30
cryptobank
867b61025d Use case insensitive contains (1)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:43 +10:30
cryptobank
f18d3ed33b Formatting fix (3)
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-12-14 11:27:41 +10:30
Óskar Freyr
c36467c496 Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2019-12-13 18:16:10 -05:00
Mark Monteiro
0cf9e59d5a Enable FxCop Analysis and fix issues 2019-12-13 21:17:05 +01:00
Mark Monteiro
88928118eb Add missing documentation in Jellyfun.Drawing.Skia 2019-12-13 20:57:23 +01:00
Bond_009
5a8e972952 Enable TreatWarningsAsErrors for some projects
Analyzers are only run in debug build, so setting TreatWarningsAsErrors
for release build will catch the compiler warnings until we resolve all
analyzer warnings.
2019-12-13 20:11:37 +01:00
Vasily
54dbdc695a Merge pull request #2138 from mark-monteiro/fix-episode-search
Fix Tvdb Provider Episode Search
2019-12-13 19:56:41 +03:00
dkanada
dc32050a2e Merge pull request #2142 from Bond-009/livetverrormsg
Add improved error message for #2141
2019-12-13 23:33:59 +09:00
Cromefire_
7e987b9642 Remove whitespace
Co-Authored-By: Claus Vium <cvium@users.noreply.github.com>
2019-12-13 15:30:08 +01:00
Cromefire_
6231fc18ea Fixed invalid username handling 2019-12-13 15:27:12 +01:00
Neil Burrows
55317b5c74 Fixing index error & split out code for readability 2019-12-13 13:45:20 +00:00
Neil Burrows
12bb4a92eb Tidying up code 2019-12-13 11:08:19 +00:00
Neil Burrows
554c967dd6 Add Excluded Tags using SQLite parameters 2019-12-13 10:29:38 +00:00
Mark Monteiro
a2462704d1 Add self to Jellyfin contributors 2019-12-12 17:48:41 +01:00
Bond-009
a4ca259a64 Add improved error error for #2141 2019-12-12 17:25:58 +01:00
Bond-009
6464bca791 Use extension methods 2019-12-12 17:02:42 +01:00
Bond-009
2c0259f920 Replace '_' with ':' in config keys 2019-12-12 16:57:16 +01:00
Bond-009
baadb504bb Merge branch 'master' into mediaencoding 2019-12-12 16:34:34 +01:00
dkanada
96a5dda9ff Merge pull request #2109 from Bond-009/plugin
Fix plugin installation and correct api behaviour
2019-12-12 15:40:22 +09:00
Joshua M. Boniface
9744f5aee3 Merge pull request #2118 from chaosinnovator/master
Add StartIndex result to /Items API query
2019-12-11 23:42:02 -05:00
Mark Monteiro
421092b478 Clean up checks for Dictionary keys 2019-12-11 23:48:41 +01:00
Mark Monteiro
1e0967f43c Fix issue with episode search 2019-12-11 23:47:51 +01:00
Bond_009
2ef4ffd698 More warnings (removed) 2019-12-11 00:13:57 +01:00
Bond_009
0bf8bfbb0c Merge branch 'master' into mediaencoding 2019-12-10 23:00:59 +01:00
chaosinnovator
b98e25a07e Add StartIndex result to /Items API query 2019-12-10 09:30:44 -08:00
Bond-009
b20b648659 Fix comparison between different types 2019-12-10 17:25:21 +01:00
dkanada
f1fc6ef59f Merge pull request #2106 from Bond-009/docker
Fix ubuntu x64 docker build
2019-12-11 01:15:31 +09:00
dkanada
67922dff50 Merge pull request #2041 from Bond-009/warn11
Fix more warnings
2019-12-11 01:14:55 +09:00
dkanada
2a7210ca28 Merge pull request #2133 from Bond-009/loggerfix
Fix typo
2019-12-11 01:13:09 +09:00
Bond-009
19844a2c2a Fix typo 2019-12-10 17:07:23 +01:00
Bond-009
affb58ef9e Apply suggestions from code review
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-12-10 16:22:03 +01:00
dkanada
dee3076eaf Merge pull request #1923 from Bond-009/random
Don't shuffle some types by default
2019-12-10 22:28:44 +09:00
dkanada
b5d0bd0d76 Merge pull request #2020 from Bond-009/baseurl
Add support for multi segment base urls
2019-12-10 22:11:32 +09:00
gustinn
1b5da55ae5 Translated using Weblate (Icelandic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/is/
2019-12-09 21:16:05 -05:00
Michael Berggren
f25c1e40d4 Translated using Weblate (Swedish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sv/
2019-12-09 21:16:05 -05:00
nextlooper42
cf1eb2798c Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2019-12-09 21:16:05 -05:00
translit
7d4c4c369e Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2019-12-09 21:16:05 -05:00
tanto faz
f0dbcfca6e Translated using Weblate (Portuguese (Brazil))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2019-12-09 21:16:05 -05:00
Matzi24GR
52f31775fc Translated using Weblate (Greek)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2019-12-09 21:16:05 -05:00
antoniy
4fa8f9ccfe Translated using Weblate (Bulgarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/
2019-12-09 21:16:05 -05:00
Petr Janda
1cec41baf8 Merge remote-tracking branch 'upstream/master' 2019-12-07 20:21:24 +10:30
Bond_009
ec70f3ac75 Fix plugin installation and correct api behaviour
The `/Packages/{Name}` endpoint would return a package that had either
the corrent name or the correct guid. In reality it shoud check if both
are correct.
2019-12-06 22:06:16 +01:00
Bond_009
c8f403238e Move to .Net Core 3.1 2019-12-06 21:28:47 +01:00
cryptobank
408cf017a4 Remove newline
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-12-07 06:48:44 +10:30
cryptobank
5b5d527a09 Use string.Equals instead of of equals operator
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-12-07 06:47:57 +10:30
cryptobank
68edb9734d Add space between if statement and boolean expression
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-12-07 06:46:24 +10:30
Joshua M. Boniface
6f283d80dc Merge pull request #2104 from cvium/avoid_catastrophic_backtracking
Simplify regex to avoid catastrophic backtracking
2019-12-06 15:13:23 -05:00
Bond_009
803ec15150 Fix ubuntu x64 docker build 2019-12-06 21:08:11 +01:00
Bond_009
35151553e3 Add back all old emby tests 2019-12-06 20:41:39 +01:00
Claus Vium
8befab5b5d Simplify regex to avoid catastrophic backtracking 2019-12-06 20:21:18 +01:00
Bond-009
a2c35e6dba Merge remote-tracking branch 'upstream/master' into random 2019-12-06 12:06:13 +01:00
Bond-009
94edb5b9f9 Add else 2019-12-06 11:58:45 +01:00
Vasily
935525e77a Merge pull request #2102 from jellyfin/Bond-009-plugins
Add installed plugins to bug reports
2019-12-06 12:53:42 +03:00
Petr Janda
75426d0004 Add logging when force_key_frames is disabled 2019-12-06 17:21:24 +10:30
Petr Janda
3f43aef997 Add back code removed during testing/debugging 2019-12-06 16:04:29 +10:30
Petr Janda
535390bb64 QSV can hardware deinterlace too now 2019-12-06 06:30:09 +10:30
Petr Janda
a9766992b7 Do not force original aspect ratio to decrease, it causes bitmap subtitles to be off-centre 2019-12-06 06:08:45 +10:30
Petr Janda
9ee0804407 Move scaling filters and definitions before deinterlacing 2019-12-06 05:52:40 +10:30
Petr Janda
7d2bfabb32 Force original aspect ratio can be used for QSV subtitle scaling 2019-12-06 05:12:16 +10:30
Petr Janda
8368815788 Remove trailing spaces 2019-12-06 05:03:46 +10:30
memnos
caa57d5bda Translated using Weblate (Italian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/it/
2019-12-05 13:29:41 -05:00
gustinn
8694577c71 Added translation using Weblate (Icelandic) 2019-12-05 13:29:41 -05:00
Bond-009
8718e1ea6b Add installed plugins to bug reports 2019-12-05 18:30:56 +01:00
Bond-009
5f6bca8aeb Merge remote-tracking branch 'upstream/master' into baseurl 2019-12-05 17:49:15 +01:00
Bond-009
a6f883345f Reduce #lines 2019-12-05 17:44:46 +01:00
Vasily
e05c02263a Merge pull request #2097 from Bond-009/unused2
Remove unused fields and properties
2019-12-05 12:06:14 +03:00
Vasily
e41dd316d1 Merge pull request #2098 from Bond-009/config2
Fix GetTranscodePath function and cache path update logline
2019-12-05 12:05:46 +03:00
Petr Janda
7cde256402 Merge remote-tracking branch 'upstream/master' 2019-12-05 19:29:20 +10:30
WtK0040
82575db662 Translated using Weblate (Afrikaans)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/af/
2019-12-05 03:57:07 -05:00
Pavel Sochor
fccc90ae1a Translated using Weblate (Slovak)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2019-12-05 03:57:07 -05:00
Yuval Pecht
fc4bbee39f Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2019-12-05 03:57:07 -05:00
bugthug
9144c84dc9 Translated using Weblate (Hebrew)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/he/
2019-12-05 03:57:07 -05:00
TheGoose
5234c686e7 Translated using Weblate (English (United States))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/en_US/
2019-12-05 03:57:07 -05:00
Dominik
7d2f066cd4 Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-12-05 03:57:07 -05:00
woodmichl
383733044f Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-12-05 03:57:07 -05:00
Petr Janda
70530e1f14 Fix formatting (2) 2019-12-05 19:20:47 +10:30
Petr Janda
3d8f3da5d6 Add comments 2019-12-05 18:39:09 +10:30
Petr Janda
78a161138f Fix formatting stuffed up by previous commit 2019-12-05 18:07:46 +10:30
Petr Janda
89605d4fb1 Fix VAAPI encoding on 10-bit hevc. Update QSV encoding and scaling to take advantage of scale_qsv and overlay_qsv 2019-12-05 17:39:36 +10:30
dkanada
a7ef1aa7ec Merge pull request #2050 from Bond-009/nullref
Fix possible nullref when updating packages
2019-12-05 15:23:48 +09:00
Bond_009
4a0df15bbd Fix GetTranscodePath function and cache path update logline
* GetTranscodePath returned an empty string after the option was left
blank in the web UI
* Unified the log style for all paths
2019-12-04 22:18:37 +01:00
Bond_009
f7d71a2bc7 Remove unused fields and properties 2019-12-04 21:53:01 +01:00
Bond_009
5cab79c839 Clean up Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs 2019-12-04 21:39:27 +01:00
Vasily
e44a7ae3f6 Merge pull request #2073 from Bond-009/networkcode
Minor improvements to network code
2019-12-04 20:03:10 +03:00
WtK0040
903752b77b Translated using Weblate (English (United States))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/en_US/
2019-12-04 02:25:32 -05:00
WtK0040
df10cf8012 Added translation using Weblate (Afrikaans) 2019-12-03 07:59:34 -05:00
Bond-009
caca2b31fe Fix build 2019-12-03 10:55:22 +01:00
Bond-009
01c5dcea77 Merge pull request #2082 from excelite/add_centralized_logging_support
added required nuget package to enable serilog based centralized logging in gelf format
2019-12-03 09:12:03 +01:00
Bond-009
7765b43eea Merge pull request #2089 from escabe/fix2088
Fix #2088
2019-12-02 14:22:26 +01:00
dkanada
203bf7b794 Merge pull request #2052 from EraYaN/azp-tag-checkout-windows
Add tag building support to Windows Web build.
2019-12-02 18:23:22 +09:00
KingsFourze
a7461f3ba7 Translated using Weblate (Chinese (Hong Kong))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant_HK/
2019-12-01 23:15:46 -05:00
EscAbe
3b7b8eba4c Fix for #2088 2019-12-01 20:50:24 +01:00
Bond-009
84c136b1f2 Update Emby.Server.Implementations/SocketSharp/WebSocketSharpRequest.cs
Co-Authored-By: Claus Vium <cvium@users.noreply.github.com>
2019-12-01 19:30:18 +01:00
penguinfuko
28f71b445f Translated using Weblate (Chinese (Traditional))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2019-11-30 05:15:47 -05:00
Mehmet Can Kanpolat
be14b91f23 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-11-30 05:15:47 -05:00
excelite
12dd2c51a7 added required nuget package to enable serilog based centralized logging in gelf fromat 2019-11-29 23:03:59 +01:00
Vasily
8f56baf6d9 Merge pull request #2071 from excelite/add_default_values_to_logconfig
add filesize limit for logfiles and a maximum logfile count
2019-11-29 18:55:50 +03:00
Vasily
32519a5471 Merge pull request #2058 from ferferga/master
Add full Raspberry Pi hardware accelerated decoding support
2019-11-29 13:06:06 +03:00
Bond-009
6f45d95951 Minor improvements to network code 2019-11-28 17:46:06 +01:00
excelite
60691349a1 added filesize limit for logfiles and a maximum logfile count 2019-11-28 11:20:46 +01:00
Bond_009
42ffddc269 Fix more warnings 2019-11-27 16:29:56 +01:00
Vasily
f3ca4631c3 Merge pull request #2062 from Bond-009/docker
Use .Net Core 3.0 in all docker images
2019-11-27 16:20:41 +03:00
Vasily
5263aaa026 Merge pull request #1503 from cvium/webapi_v2
Move StartupWizard to ASP.NET Web Api
2019-11-27 11:50:06 +03:00
Vasily
c45d54efb2 Merge pull request #1942 from Bond-009/nullable
Enable nullable reference types for Jellyfin.Server
2019-11-27 11:48:41 +03:00
Mehmet Can Kanpolat
1606706070 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-11-26 11:15:39 -05:00
Leo Verto
22f50de1fe Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-11-26 11:15:39 -05:00
dkanada
5bb6e605fa Merge pull request #2054 from jellyfin/Bond-009-dlna-getpathvalue
dlna GetPathValue
2019-11-26 18:43:49 +09:00
dkanada
3dc1bfc179 Merge pull request #2049 from jellyfin/dkanada-patch-1
Update readme
2019-11-26 18:41:01 +09:00
Claus Vium
080b106991 Update Jellyfin.Api/Auth/FirstTimeSetupOrElevatedPolicy/FirstTimeSetupOrElevatedRequirement.cs
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-11-26 10:20:45 +01:00
Bond-009
50a535e6e4 Use .Net Core 3.0 in all docker images 2019-11-26 09:47:26 +01:00
ferferga
94ef239de0 Add full Raspberry Pi hardware decoding support 2019-11-25 23:09:23 +01:00
dkanada
65ae4eb0dd fix some html tags in the readme 2019-11-26 00:32:14 +09:00
Bond-009
c6d48f51f6 Fix naming const 2019-11-25 12:29:51 +01:00
Vasily
47e6eede71 Merge pull request #2055 from Bond-009/fixbuild
Fix master build
2019-11-25 14:17:56 +03:00
Bond_009
cc5acf37f7 Make probesize and analyzeduration configurable and simplify circular
dependencies

Makes the probesize and analyzeduration configurable with env args.
(`JELLYFIN_FFmpeg_probesize` and `FFmpeg_analyzeduration`)
2019-11-25 12:07:59 +01:00
Bond_009
3221e837f9 * Add support for multi segment base urls
* Make baseurl case-insensitive
2019-11-25 11:55:24 +01:00
Bond-009
a4c2886ac0 Fix master build
I was wrong, it did break...
2019-11-25 11:04:51 +01:00
Bond-009
69d76af054 dlna GetPathValue
Forgot to update this last time, just copied the code from `MediaBrowser.Api/BaseApiService.cs`
2019-11-25 10:56:23 +01:00
Madokami
e7098f1997 Translated using Weblate (German)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-11-24 21:18:03 -05:00
Erwin de Haan
f12c9bf3b0 Added tag building support to Windows Web build. 2019-11-24 23:01:18 +01:00
Mehmet Can Kanpolat
afa1d6b708 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-11-24 16:15:35 -05:00
Joshua M. Boniface
48120d01dc Merge pull request #1991 from Bond-009/transtemp
Don't append transcodes to transcoding temp path
2019-11-24 15:13:50 -05:00
Bond-009
e808e8b2d2 Update MediaBrowser.Common/Configuration/EncodingConfigurationExtensions.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-11-24 20:15:53 +01:00
Joshua M. Boniface
db581c4d9b Merge pull request #2045 from Bond-009/baseurlfix2
Fix baseurl issues part 2
2019-11-24 13:25:52 -05:00
Claus Vium
47a4f2f387 Fix more review comments 2019-11-24 19:25:46 +01:00
Claus Vium
2af5922af0 Fix review comments 2019-11-24 18:25:43 +01:00
Bond_009
6a6bfa6da9 Fix possible nullref when updating packages 2019-11-24 17:23:36 +01:00
Claus Vium
27e3cf1558 Move appbuilder and service collection to Jellyfin.Server 2019-11-24 15:27:58 +01:00
dkanada
47ad21b6e3 Merge pull request #2039 from Bond-009/fixcondition
Fix always false condition
2019-11-24 21:41:19 +09:00
dkanada
6889d09cf7 Merge pull request #2040 from Bond-009/https
Validate https certificates
2019-11-24 21:41:03 +09:00
dkanada
dbda76e842 Update readme 2019-11-24 21:27:43 +09:00
Bond_009
602ebe3fdb Fix baseurl (attempt #2) 2019-11-23 22:50:37 +01:00
Claus Vium
111b46599a Remove unused reference 2019-11-23 20:46:01 +01:00
Claus Vium
c2cdbc909b Add style rules and fix it all 2019-11-23 20:31:17 +01:00
Claus Vium
c9669a0d21 Split a long line 2019-11-23 19:59:45 +01:00
Claus Vium
706739dbe6 Move API stuff to the api project 2019-11-23 19:43:30 +01:00
Claus Vium
3f651de24c Add authentication and remove versioning 2019-11-23 16:31:02 +01:00
dkanada
51cdc6ea16 Merge pull request #1926 from Bond-009/auth
Add clearer exceptions, warnings and docs
2019-11-23 01:14:32 +09:00
Bond_009
d7335f6ae6 Reword exception message 2019-11-22 17:02:28 +01:00
Vasily
7b3c394a3e Merge pull request #1967 from Bond-009/warn10
Fix some warnings
2019-11-22 18:29:17 +03:00
Bond_009
526776372e Validate https certificates 2019-11-22 16:23:42 +01:00
Bond_009
d884ed353f Fix always false condition 2019-11-22 16:19:19 +01:00
Bond_009
06596feaa7 Address comments 2019-11-22 16:15:31 +01:00
Bond-009
b477b3874e Fix some warnings 2019-11-22 16:15:31 +01:00
Vasily
7846e9cb3c Merge pull request #1977 from Bond-009/deps
Update deps
2019-11-22 15:53:34 +03:00
Vasily
ace45fb3f6 Merge pull request #1968 from Bond-009/CA1720
Disable CA1720: Identifiers should not contain type names
2019-11-22 14:14:51 +03:00
Vasily
13dd63d631 Merge pull request #2034 from Bond-009/easypass
Fix easy password
2019-11-22 11:17:24 +03:00
AdmiralAnimE
883011dd64 Translated using Weblate (Bulgarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/bg/
2019-11-21 12:15:31 -05:00
Bond-009
413ae86dbc Fix easy password 2019-11-21 17:32:29 +01:00
Bond_009
3cf9313c86 Update deps 2019-11-21 17:08:06 +01:00
Bond-009
d4b438791f Don't append transcodes to transcoding temp path 2019-11-21 16:57:49 +01:00
Bond-009
d868a8da6c Merge pull request #1934 from dkanada/transcode
Minor changes to transcode cleanup scheduled task
2019-11-21 16:18:46 +01:00
dkanada
37eed8cf1f revert settings to their old names 2019-11-21 21:55:10 +09:00
dkanada
b1f9b03b17 rename some missed variables and fix warnings 2019-11-21 21:55:10 +09:00
dkanada
f3ca37e523 minor changes to transcode cleanup scheduled task 2019-11-21 21:55:10 +09:00
Claus Vium
05b7e22808 Add SwaggerUI 2019-11-19 22:51:02 +01:00
Claus Vium
c011fa2ea8 Remove old instantiation of serviceProvider in app host 2019-11-19 21:49:20 +01:00
Claus Vium
e5d57bd82f Move StartupWizard to ASP.NET Web Api 2019-11-19 21:48:16 +01:00
Joshua M. Boniface
c0d10800ab Merge pull request #1925 from joshuaboniface/integrate-web-build-debuntu
Integrate web build into Debuntu package build steps
2019-11-19 01:37:38 -05:00
Vasily
a8c878f48c Merge pull request #2016 from joshuaboniface/stalebot-wording
Update stalebot timings and message
2019-11-18 13:59:57 +03:00
Vasily
0836241e90 Merge pull request #2019 from Bond-009/baseurlhotfix
Remove leading / from baseurl
2019-11-18 13:55:56 +03:00
Joshua M. Boniface
84009b534d Merge pull request #1937 from justinfenn/docker-entrypoint-exec
use exec form for Dockerfile entrypoint
2019-11-17 17:29:55 -05:00
Stanislav Ionascu
9989b7b68f Replace BDInfo plugin with nupkg and UHD/Atmos/DTS:X support 2019-11-17 20:56:13 +01:00
Joshua M. Boniface
78e0afae2f Merge pull request #1992 from Bond-009/namingtests
Fix naming tests
2019-11-17 13:55:27 -05:00
Bond_009
5ee070eb29 Remove leading / from baseurl 2019-11-17 19:53:12 +01:00
Joshua Boniface
6c7b592131 Update stalebot timings and message
1. Bump up the timings, since the project releases have slowed down a
   fair bit. 120 days stale with 21 days for a response still gets us
   the desired effect while loosening the timeline for issue submitters.
2. Revamp the wording to better explain what the author (or others) need
   to do, and why this bot exists.
2019-11-17 12:24:27 -05:00
dkanada
c87f459ec2 Merge pull request #2008 from Bond-009/pathvalue
Fix GetPathValue function
2019-11-16 01:25:20 +09:00
Bond-009
d161b9cbfc Fix GetPathValue function for DLNA service 2019-11-13 16:40:34 +01:00
Bond-009
aea4ef9471 Fix logic 2019-11-13 16:32:33 +01:00
Bond-009
b14d6d0417 Fix GetPathValue function 2019-11-13 16:32:33 +01:00
Andrew Mahone
dee247453e Throw InvalidOperationException when attachment extraction exits abnormally or doesn't produce output. 2019-11-13 08:52:37 -05:00
dkanada
0b02c77691 Merge pull request #1864 from Bond-009/installationmanager
Improve IInstallationManager interface
2019-11-13 21:12:52 +09:00
dkanada
f51f59d675 Merge pull request #1965 from Bond-009/dbjson
Deserialize with the correct type (and warning fixes)
2019-11-10 16:51:54 +09:00
Sander Lambrechts
522df3196d Translated using Weblate (Dutch)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nl/
2019-11-09 18:15:12 -05:00
DJSweder
92b6d84433 Translated using Weblate (Czech)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/cs/
2019-11-09 18:15:12 -05:00
Bond_009
dd749dde5f Add comment 2019-11-09 20:26:56 +01:00
Bond_009
03fe0e762d Fix typos in docs 2019-11-09 20:23:09 +01:00
Bond_009
a2df6e0e36 Fix naming tests 2019-11-08 19:59:48 +01:00
Andrew Mahone
7ea05bb86b Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-07 14:30:43 -05:00
Andrew Mahone
79858eb26c Remove use of ProcessFactory, as well as arbitrary timeout in AttachmentExtractor. 2019-11-07 14:24:49 -05:00
dkanada
61b9b4046a Merge pull request #1929 from Narfinger/parser-fix4
[Draft][Help wanted] Fix parsing of certain names and adds a default season if no season was found
2019-11-08 02:14:01 +09:00
Andrew Mahone
3a9bf84e3b Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 12:00:47 -05:00
Andrew Mahone
1eb3df1d6c Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting / style

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:59:54 -05:00
Andrew Mahone
380d023351 Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-07 11:58:13 -05:00
Andrew Mahone
2f728fd2a1 Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:58:26 -05:00
Andrew Mahone
2338a53229 Don't user ILoggerFactory. 2019-11-07 11:55:39 -05:00
Andrew Mahone
c6855e6a2a Simplify AttachmentExtractor instantiation. 2019-11-07 11:53:39 -05:00
Andrew Mahone
743685110c Update MediaBrowser.Controller/Library/IMediaSourceManager.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:29:34 -05:00
Andrew Mahone
0fd7886a12 Update MediaBrowser.Controller/Library/IMediaSourceManager.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:28:11 -05:00
Andrew Mahone
d73f46dcda Update Emby.Server.Implementations/Library/MediaSourceManager.cs
docs

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:27:55 -05:00
Andrew Mahone
492bbc9e13 Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
String -> string

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:25:44 -05:00
Andrew Mahone
92aae268a3 Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:24:53 -05:00
Andrew Mahone
8b2d7062c4 Update Emby.Server.Implementations/Library/MediaSourceManager.cs
docs

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:24:30 -05:00
Andrew Mahone
193a1fa474 Update Emby.Server.Implementations/Library/MediaSourceManager.cs
docs

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:23:28 -05:00
Andrew Mahone
d6aa02ff09 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:22:07 -05:00
Andrew Mahone
4b75e6518e Update MediaBrowser.Api/Attachments/AttachmentService.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:21:40 -05:00
Andrew Mahone
f60e9b0b62 formatting
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-07 11:20:29 -05:00
Andrew Mahone
c09eb34708 Check for attachment file before trying to remove it during cleanup. 2019-11-07 08:56:12 -05:00
Andrew Mahone
6defe80b62 Check for cancellation between each batch of MediaAttachment inserts. 2019-11-07 08:38:36 -05:00
dkanada
b103aa20c1 Merge pull request #1970 from Bond-009/nat
Use Mono.Nat Nuget package
2019-11-07 18:56:46 +09:00
Bond-009
126165080b Doc improvements 2019-11-07 10:55:02 +01:00
Bond-009
983d38a43b Merge branch 'master' into installationmanager 2019-11-07 10:50:55 +01:00
Terrance Siu
2779d9d3bc Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-11-07 04:15:06 -05:00
dkanada
ad852ffd9a Merge pull request #1973 from EraYaN/docs-warning-fixes
Fix the last of the docs warnings
2019-11-07 18:12:26 +09:00
Narfinger
9cd62d661f removed restriction to 3 digits in episodenumber and 4 in season numbers 2019-11-07 10:50:02 +09:00
Andrew Mahone
74fb63a898 Use block rather than local using statement. 2019-11-06 10:43:14 -05:00
Andrew Mahone
4f3b883155 Clean up handling of missing source/attachment in AttachmentExtractor. 2019-11-06 09:46:31 -05:00
Andrew Mahone
79bbf09ecb Revert "Simplify AttachmentExtractor instantiation."
This reverts commit d33e0a4e2c.
2019-11-06 08:43:49 -05:00
Andrew Mahone
8505ee9d6c Extract the prefix for MediaAttachment insertions to a static member instead of generating it per-query. 2019-11-05 14:53:46 -05:00
Andrew Mahone
cc7741efd4 Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-05 08:35:42 -05:00
Andrew Mahone
3602251cf5 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:36:17 -05:00
Andrew Mahone
a78aec56e3 Format attachment DeliveryURL with CultureInfo.InvariantCulture.
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:21:06 -05:00
Andrew Mahone
e5b65ed034 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:19:07 -05:00
Andrew Mahone
cdc7d83c22 Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-05 08:18:04 -05:00
Andrew Mahone
d33e0a4e2c Simplify AttachmentExtractor instantiation.
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:17:34 -05:00
Andrew Mahone
349310787c Update MediaBrowser.MediaEncoding/Attachments/AttachmentExtractor.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:16:46 -05:00
Andrew Mahone
25bc7b81c3 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:13:35 -05:00
Andrew Mahone
24a460dc93 Update Emby.Server.Implementations/Data/SqliteItemRepository.cs
formatting

Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-11-05 08:13:22 -05:00
Andrew Mahone
b936c530aa Merge branch 'media-attachments' of github.com:Unhelpful/jellyfin into media-attachments 2019-11-05 08:13:15 -05:00
Andrew Mahone
bd4da93d1e Throw ArgumentException instead of ArgumentNullException on empty Guid. 2019-11-05 07:48:32 -05:00
Andrew Mahone
6ca252ba5c Remove check for "[0]" in codec_tag. 2019-11-05 07:09:55 -05:00
Andrew Mahone
28a6718d8e Return path of extracted attachment, which is always a file, instead of AttachmentInfo with path and protocol. 2019-11-04 14:48:28 -05:00
Andrew Mahone
04a96788f9 Convert exceptions for missing MediaSource or MediaAttachment to ResourceNotFoundException with appropriate message. 2019-11-04 14:34:21 -05:00
Andrew Mahone
154fb1fe9b AttachmentExtractor code cleanup. 2019-11-04 11:45:31 -05:00
Andrew Mahone
c7d303a6ae MediaExtractor logging cleanup. 2019-11-04 11:39:40 -05:00
Andrew Mahone
262a8f47af Remove attachment filenames from attachment URLs. 2019-11-04 11:31:41 -05:00
Andrew Mahone
9eef5f860d AttachmentExtractor logging cleanup. 2019-11-04 11:16:57 -05:00
Andrew Mahone
e9c893f07e Fail attachment extraction on non-zero exit code. 2019-11-04 10:58:56 -05:00
Andrew Mahone
bd545891c0 Indentation fix. 2019-11-04 10:38:53 -05:00
Andrew Mahone
7110069b39 Return list result directly for MediaAttachments. 2019-11-04 10:37:19 -05:00
Andrew Mahone
ad2101ce52 Rename "limit" to "insertAtOnce" in InsertMediaAttachments. 2019-11-04 10:33:50 -05:00
Andrew Mahone
c2d8f210b1 Check for cancellation in SaveMediaAttachments. 2019-11-04 10:31:32 -05:00
Andrew Mahone
0dde5e46df Flatten using connection in GetMediaAttachments/SaveMediaAttachments 2019-11-04 10:28:33 -05:00
Andrew Mahone
4573fb5301 Use ToByteArray instead of ToGuidBlob. 2019-11-04 10:19:53 -05:00
Andrew Mahone
1600d5b53f Merge remote-tracking branch 'origin/master' into media-attachments-clean 2019-11-04 10:03:18 -05:00
Andrew Mahone
90dfe729bb Add space when building query string for attachments.
Co-Authored-By: Vasily <JustAMan@users.noreply.github.com>
2019-11-04 08:48:27 -05:00
Joshua M. Boniface
9756bdb76e Merge pull request #1903 from anthonylavado/nsis-update
Update NSIS Installer
2019-11-03 14:36:56 -05:00
Joshua M. Boniface
a460814182 Merge pull request #1904 from JustAMan/hls-move-2
Switch ffmpeg to hls muxer (from segment) to fix premature stop on non-patched ffmpeg
2019-11-03 14:36:34 -05:00
Joshua M. Boniface
5d5fa55fe5 Merge pull request #1859 from joshuaboniface/copr-fix
Fix COPR build and Fedora packaging
2019-11-03 14:05:13 -05:00
Joshua Boniface
d4474d493b Remove extraneous newline 2019-11-03 12:39:45 -05:00
Erwin de Haan
f0e2f243ad Conform MovieResult.cs to the formatting standards. 2019-11-03 17:55:46 +01:00
Erwin de Haan
45a670f15b Revert the project inclusion that created a cycle. 2019-11-03 16:40:35 +01:00
Erwin de Haan
387051c409 Fix the last docs warnings. 2019-11-03 15:52:10 +01:00
Anthony Lavado
e877ef92d7 Always download the latest tray app release 2019-11-03 02:51:29 -05:00
Bond_009
210af0e73e Properly remove event handler 2019-11-02 10:31:27 +01:00
Joshua Boniface
fd4a9d13b7 Update path of SOS readme
Seems like this changed upstream as it's not our file.
2019-11-02 01:34:43 -04:00
Joshua Boniface
4fc2bd56ee Add master fallback for web build 2019-11-02 01:24:26 -04:00
Joshua Boniface
e40c82be88 REVERT-ME Update to .NET 3.0 2019-11-02 01:17:12 -04:00
Juhos István
0f769fe979 Translated using Weblate (Hungarian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2019-11-02 00:14:59 -04:00
Bond_009
558baeac48 Add docs 2019-11-01 21:25:37 +01:00
Bond_009
b0a25c4237 Use Mono.Nat Nuget package 2019-11-01 21:22:35 +01:00
Joshua M. Boniface
33ddca12ed Merge pull request #1969 from jellyfin/stale-bread
Add an exemption for the confirmed label
2019-11-01 16:11:17 -04:00
Anthony Lavado
3a741936c5 Add an exemption for the confirmed label
Adds an exemption we can use to keep issues open when they are confirmed/real
2019-11-01 16:06:00 -04:00
dkanada
3bfb36a67d Merge pull request #1915 from Bond-009/hex
Rewrite hex encoder/decoder
2019-11-02 04:03:36 +09:00
Bond_009
28df726c33 Disable CA1720: Identifiers should not contain type names 2019-11-01 18:45:16 +01:00
dkanada
48a99366b6 Merge pull request #1789 from Bond-009/deps
Update deps and add MultiThreading analyzer
2019-11-02 02:07:20 +09:00
Bond_009
81c135c5bb Fix PR issues 2019-11-01 17:57:19 +01:00
Bond_009
d529f81cd9 Improve IInstallationManager interface 2019-11-01 17:57:19 +01:00
Bond_009
5e0858d13f Fix xml docs 2019-11-01 17:55:44 +01:00
Bond_009
3f7836d9eb Update deps and add MultiThreading analyzer 2019-11-01 17:55:44 +01:00
Bond_009
60cb256835 Fix benches 2019-11-01 17:52:29 +01:00
Bond_009
593107e190 Multiplication is faster than bit shifting 2019-11-01 17:52:29 +01:00
Bond_009
b6627af65f Make decode even faster 2019-11-01 17:52:29 +01:00
Bond_009
a245f5a0d4 Rewrite hex encoder/decoder 2019-11-01 17:52:29 +01:00
dkanada
89a21c96c0 Merge pull request #1852 from Bond-009/warn9
Fix some more warnings
2019-11-02 01:24:44 +09:00
Bond_009
846857b60e Deserialize with the correct type (and warning fixes) 2019-11-01 17:07:42 +01:00
Bond-009
92abc202a4 Style fix 2019-11-01 16:42:47 +01:00
Bond-009
443422ddb4 Merge pull request #1931 from grafixeyehero/PersonServies
update persons service
2019-11-01 16:38:54 +01:00
Bond-009
43f51b2d90 Fix build 2019-11-01 16:35:44 +01:00
Anthony Lavado
57cf3e24f8 Use the correct file copy operation for the icon 2019-11-01 01:55:09 -04:00
Anthony Lavado
0c003feac6 Fix an incorrect argument type in build script 2019-11-01 01:25:45 -04:00
Steve Hayles
da9a59de1e Allow valid https requests in .NET Core
ServerCertificateValidationCallback on the ServicePointManager is not supported in .NET Core and outgoing https requests will fail if the certificate is not trusted.

This adds the equivalent functionality
2019-10-31 18:48:34 +00:00
Anthony Lavado
bde1af5def Add the tray app download to the build script, use it in the installer shortcuts
Adds the tray app download to build-jellyfin, adjusts the shortcuts in the installer, and adds the switch to the pipeline configuration.
2019-10-30 18:16:31 -04:00
Thomas Büttner
e6e9cd8ce2 Remove the SPEC edit hack, replace with proper repos (#7)
* Remove the SPEC edit hack, replace with proper repos

Signed-off-by: Thomas Büttner <thomas@vergesslicher.tech>

* Fix bad rpmbuild flag

Signed-off-by: Thomas Büttner <thomas@vergesslicher.tech>
2019-10-29 18:16:08 -04:00
Anthony Lavado
aca4f83333 Remove extra EndIf 2019-10-29 16:24:45 -04:00
Bond_009
d868530d1e Fix comments 2019-10-29 18:37:10 +01:00
Bond_009
10ae815bb4 Address comments 2019-10-29 17:56:06 +01:00
Bond_009
016be02cd6 More warning fixes 2019-10-29 17:56:05 +01:00
Bond_009
d9a03c9bb1 Fix more warnings 2019-10-29 17:55:16 +01:00
Bond-009
2b1e766c17 Update MediaBrowser.Controller/Library/IUserManager.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-10-29 17:50:09 +01:00
Bond-009
24c076eff3 Update Emby.Server.Implementations/Library/UserViewManager.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-10-29 17:50:01 +01:00
Bond-009
1258a3766f Update Jellyfin.Server/Program.cs
Co-Authored-By: dkanada <dkanada@users.noreply.github.com>
2019-10-29 17:49:41 +01:00
dkanada
ef623f5129 Merge pull request #1954 from LogicalPhallacy/LogicalPhallacy-patch-NSSM
Use mirror for NSSM
2019-10-29 16:22:58 +09:00
dkanada
0449d7c5e1 Merge pull request #1949 from stevehayles/master
Update to Dockerfile
2019-10-29 16:19:46 +09:00
LogicalPhallacy
9c65853ddd updates win32 build script with nssm mirror 2019-10-28 22:10:36 -07:00
LogicalPhallacy
8c0580aa24 Updating win-x64 build NSSM address 2019-10-28 22:09:46 -07:00
LogicalPhallacy
fd8d4894ca Updated build-jellyfin.ps1 to pull from my mirror
Updated it to pull from my mirror on Azure.
2019-10-28 22:07:01 -07:00
LogicalPhallacy
8edb1c49d8 Merge pull request #6 from jellyfin/master
Bringing my branch up to sync
2019-10-28 21:54:40 -07:00
Steve Hayles
b1e65c6cd4 Adding OpenSSL library
Depending on configuration the docker container may need OpenSSL to support https access
2019-10-28 08:22:59 +00:00
Steve Hayles
26ce62d318 Update Dockerfile
debian-stretch packages were missing for libva-drm2 so would not build

the base image mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} is incorrectly referencing .NET Core 3-preview6 which will cause issues at runtime with library references being mismatched
2019-10-27 20:22:17 +00:00
Steve Hayles
5eb9d10287 Merge remote-tracking branch 'jellyfin/master' 2019-10-27 20:17:41 +00:00
Justin Fenn
435c30aed9 use exec form for Dockerfile entrypoint
This causes the jellyfin process to be pid 1 in the container.  It can
receive signals like SIGTERM (from "docker stop", for example) and shut
down properly.
2019-10-27 12:28:56 -07:00
Joshua M. Boniface
53ee78170a Merge branch 'master' into copr-fix 2019-10-27 13:52:08 -04:00
Joshua Boniface
2cdf5c203a Correct CentOS build for new Fedora spec 2019-10-27 13:51:32 -04:00
Vasily
8cf8c36708 Move throwing if cancelled after logging that fact 2019-10-27 16:48:42 +03:00
Vasily
dd7ae7747e Apply suggestions from code review
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-10-27 16:47:00 +03:00
Bond-009
c9f4a74af0 Merge pull request #1930 from grafixeyehero/vsc-workspace
update vsc workspace launch for net core 3
2019-10-27 11:44:16 +01:00
Bond_009
2702dca8b6 Enable nullable reference types for Jellyfin.Server 2019-10-26 23:58:23 +02:00
Joshua M. Boniface
588b554ef0 Merge pull request #6 from Wuerfelbecher/copr-fix
Fix build script
2019-10-26 16:48:38 -04:00
Joshua M. Boniface
67be3f8c9e Merge branch 'copr-fix' into copr-fix 2019-10-26 16:41:16 -04:00
Joshua M. Boniface
ee488dcb83 Merge pull request #5 from brianjmurrell/fix-copr
Fix jellyfin-web URL
2019-10-26 16:40:12 -04:00
Thomas Büttner
bf11426f7d Add comments about Source URLs and remove no longer needed dependency
Signed-off-by: Thomas Büttner <thomas@vergesslicher.tech>
2019-10-26 19:24:44 +02:00
Brian J. Murrell
d5cbfee82b Fix jellyfin-web URL 2019-10-26 13:22:52 -04:00
Andrew Rabert
873225a7f2 Merge pull request #1922 from Bond-009/docker
Use the correct dotnet runtime in Docker images
2019-10-25 12:26:18 -04:00
Bond_009
f1167ace7e Use the correct dotnet runtime in Docker images
The self contained packages already contains the dotnet runtime
No need to use the dotnet runtime base image.

This should decrease the size of the image.
2019-10-25 18:04:01 +02:00
delfino434
0add74240f Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-10-24 11:14:42 -04:00
emmanuel billeaud
cb0aeeb189 Translated using Weblate (French)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2019-10-24 11:14:42 -04:00
Joshua M. Boniface
f8556b3d89 Merge pull request #1918 from nvllsvm/dockermaster
Docker fixes
2019-10-24 09:14:20 -04:00
Bond-009
da7ba822b0 Merge pull request #1933 from cvium/autoreload_log_config
Reload logging.json on changes
2019-10-24 10:27:35 +02:00
Claus Vium
c3eac58dda Reload logging.json on changes 2019-10-23 19:52:12 +02:00
Anthony Lavado
5e90747541 More preparations for the tray app 2019-10-23 04:14:58 -04:00
Anthony Lavado
cfaf2b97fe Add the "service" argument to the service parameters
This will avoid an exception when the server cannot launch a browser process for the web interface.
2019-10-23 03:49:31 -04:00
Anthony Lavado
14a850b4a8 Change the default AppExit action to Exit
When the service should fail to launch Jellyfin, or should Jellyfin crash, the default action is changed from Restart to AppExit. This prevents the service from entering a constant restart due to a permissions issue or similar.
2019-10-23 03:34:12 -04:00
grafixeyehero
90c1eceec7 update vsc workspace launch for net core 3 2019-10-23 01:57:38 +03:00
grafixeyehero
752cf08e5c update persons service 2019-10-23 01:54:32 +03:00
Andrew Mahone
20727906c8 Use attachment filename if available. 2019-10-22 11:54:59 -04:00
Andrew Mahone
01b1c847e9 Provide delivery URLs for attachments in PlaybackInfo. 2019-10-22 11:54:59 -04:00
Andrew Mahone
8c89d89932 Attachment service. 2019-10-22 11:54:59 -04:00
Andrew Mahone
a9a85f251e Instantiate AttachmentExtractor in ApplicationHost. 2019-10-22 11:50:07 -04:00
Andrew Mahone
12f752d8b1 FFMPEG extractor for attachments. 2019-10-22 11:50:07 -04:00
Andrew Mahone
f22ca6dd9e Retrieve media attachments in BaseItem. 2019-10-22 10:36:54 -04:00
Andrew Mahone
1513c76a3e Support MediaAttachment retrieval in MediaSourceManager. 2019-10-22 10:35:00 -04:00
Andrew Mahone
03ecf57548 Store MediaAttachments in DB. 2019-10-22 10:32:40 -04:00
Andrew Mahone
321e5cba60 Add new MediaAttachment to store attachments found during media probing. 2019-10-22 10:30:55 -04:00
Anthony Lavado
94932ea216 Make installer shortcut check better
During an upgrade, only create shortcuts if the existing install was not a service install. Otherwise, do not create them.
2019-10-22 04:33:06 -04:00
Anthony Lavado
a278b380b6 Fix syntax errors, move order of upgrade checks, enhance folder check, fix shortcuts
Fixes a syntax error with the NoServiceUninstall section. Moves the detection of an existing Service and datadir further up, so it happens before we decide how the installation will happen. Removed a newline from a comment, and enhanced the existing directory check. Adds an existing folder check, as well as a prompt if the user wants to continue with it or not. Also adds the datadir property to shortcuts.
2019-10-22 04:16:08 -04:00
Narfinger
4a20260a27 add another parser case and allow parsing of seasonless
Add another parser case and we now allow parsing of seasonless series which hopefully should cover more cases of directory structure
2019-10-22 15:46:35 +09:00
Thomas Büttner
59995c20f1 Fix buildscript failure, remove unnecessary yarn repo for Fedora build 2019-10-21 23:42:54 +02:00
Vasily
3743137c31 Address Bond-009 review comments 2019-10-21 12:05:49 +03:00
Vasily
ae2b95024f Update MediaBrowser.Api/Playback/BaseStreamingService.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-10-21 11:58:04 +03:00
Joshua M. Boniface
91600b1c81 Merge pull request #1898 from Bond-009/jsonfix
Fix Json serialization error
2019-10-20 15:16:01 -04:00
Bond_009
fef35d0505 Add clearer exceptions, warnings and docs 2019-10-20 21:12:03 +02:00
Joshua Boniface
17c1de7bf2 Clean up ubuntu-armhf build steps
Installs the nodejs package via NodeSource, since the Bionic npm
package is heckin' broken.
2019-10-20 13:01:52 -04:00
Joshua Boniface
44e2d91b2f Clean up ubuntu-arm64 build steps
Installs the nodejs package via NodeSource, since the Bionic npm
package is heckin' broken.
2019-10-20 13:01:44 -04:00
Joshua Boniface
f02ab9818a Clean up ubuntu-x64 build steps
Installs the nodejs package via NodeSource, since the Bionic npm
package is heckin' broken.
2019-10-20 13:00:38 -04:00
Joshua Boniface
9a48486838 Clean up debian-armhf build steps 2019-10-20 13:00:14 -04:00
Joshua Boniface
d9f6c6f289 Clean up debian-arm64 build steps 2019-10-20 12:59:52 -04:00
Joshua Boniface
07d45e82f0 Move web-build into Debian build rules
This removes the convoluted steps in docker-build.sh in favour of
integrating the web-build sequence into the Debian rules file
explicitly. This will allow the web-build to work properly outside of
the boutique Docker container we build, thus allowing it to be build
properly directly on a target system with dpkg-buildpackage.
2019-10-20 12:58:10 -04:00
Joshua Boniface
c30866fc93 Remove web frontend build from docker-build.sh
This is now handled in the RPM spec.
2019-10-20 11:18:12 -04:00
Joshua Boniface
d57ee0b2b8 Remove spec version bump
This will be taken care of with the 10.4.1 bump in stable.
2019-10-20 11:12:45 -04:00
Bond-009
fdb0c3a1df Merge pull request #1909 from KerryRJ/FixDvdsFailingToPlay
Fix System.NullReferenceException when playing Dvds copied to HDD
2019-10-20 17:10:43 +02:00
Bond_009
bbc0875387 Don't shuffle some types by default 2019-10-20 16:08:40 +02:00
Andrew Rabert
4ace99ad76 Fix Docker ffmpeg 2019-10-19 21:01:01 -04:00
Andrew Rabert
64eca9e1c7 Update Docker containers to dotnet 3.0 2019-10-19 19:36:56 -04:00
Andrew Rabert
cd3c14961f Default to jellyfin-web master 2019-10-19 19:32:19 -04:00
schbal
e3f1f62a8b Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-19 09:14:27 -04:00
Marius Lindvall
3f16e6d947 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2019-10-18 07:14:26 -04:00
schbal
f469f18756 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-18 07:14:26 -04:00
Joshua M. Boniface
e211f821c9 Merge pull request #4 from brianjmurrell/fix-copr
Support building jellyfin-web webpack
2019-10-17 09:27:13 -04:00
Brian J. Murrell
145df92265 Support buiding jellyfin-web webpack
Needs nodejs >= 8 on EL7
- from https://rpm.nodesource.com/pub_8.x/el/7/x86_64/ on EL7.
Needs yarn
- from yarnpkg.com on EL7
2019-10-17 06:22:35 -04:00
KerryJ
ef3df7baaf Fix System.NullReferenceException when playing Dvds copied to HDD 2019-10-17 11:31:11 +02:00
Vasily
6b6fede2e0 Address review comments 2019-10-16 16:13:59 +03:00
Vasily
9040ef87dc Merge pull request #1871 from Bond-009/doc
Enable `TreatWarningsAsErrors` for MediaBrowser.Common and Emby.Photos
2019-10-16 12:40:20 +03:00
Vasily
dd83784da2 Merge pull request #1887 from joshuaboniface/bump-version
Bump version to 10.5.0 for next stable release
2019-10-16 12:40:01 +03:00
Anthony Lavado
330395e8b6 Check for the presence of AppDataLocal folder before using it 2019-10-16 03:25:39 -04:00
Anthony Lavado
6f504a246b Use the registry path for datadir, don't override it here
Removes an assumption on directory if the user has a datadir from the previous install, use that
2019-10-16 03:18:34 -04:00
Anthony Lavado
63e0bd1d61 Only create/remove shortcuts on non-service install
Should only remove shortcuts if the install type was non-service. On upgrade, check if the install type was non-service, and if so, set the variables correctly and create shortcuts.
2019-10-16 03:14:12 -04:00
Anthony Lavado
5232302532 Adds icons to shortcuts, fixes nsis warning
Adds the icon as a resource file in the program folder, and uses it for the shortcuts created.
Removes an extra section from the dialog creator file, so NSIS won't show a warning for unused code.
2019-10-16 02:29:37 -04:00
Anthony Lavado
dc46620a81 Automatically creates shortcuts for non-service installs
If the user is not installing as a service, then the installer creates a Start Menu shortcut, and a desktop shortcut. Commented out future shortcuts for a tray app.
2019-10-16 02:01:26 -04:00
Anthony Lavado
f80343bf9d Fix the Setup Type dialog titles
I had put the title and subtitle in the wrong order. This corrects the issue.
2019-10-16 01:43:53 -04:00
Bond_009
5edb8159a7 Fix Json serialization error 2019-10-15 17:49:49 +02:00
Vasily
0ccbc2f374 Merge pull request #1884 from Bond-009/netcore3.0
Move to netcore3.0
2019-10-15 15:35:37 +03:00
Anthony Lavado
9ad781324e Fix up Setup Type dialog, and add logic for basic setup
Fix up the Setup Type dialog, by removing an unused function from the page.
Adds logic to the installer to check for a basic or advanced setup choice. Ensures that the service is only installed if the "advanced" method is chosen. Note - it may be possible to remove some defaults from the .onInit, considering they get set through the program now.
2019-10-15 04:24:30 -04:00
Vasily
adccc18298 Revert "yarn build" as it is fixed in master, fix typo 2019-10-14 14:07:12 +03:00
Vasily
3132280b07 * Make sure force_key_frames expression arguments are properly converted to strings
* Fore usage of keyframe cuts only in HLS
2019-10-14 13:22:53 +03:00
Vasily
1bd12083c3 Respect non-inversed setting of "enable break on non-keyframes" 2019-10-14 13:22:53 +03:00
Vasily
82f8345aa5 Log to debug all HTTP 500 response urls 2019-10-14 13:22:53 +03:00
Vasily
2f6879e869 Add limiting max keyframe interval when full transcoding 2019-10-14 13:22:53 +03:00
Vasily
986ea5c636 Fix log message - log args were swapped 2019-10-14 13:22:53 +03:00
Vasily
3740228100 Don't start waiting for a segment which doesn't exist if transcoding is not running 2019-10-14 13:22:52 +03:00
Vasily
7aea9266d0 Stop waiting for a segment to become ready if there's no alive transcode
Remove extra quotes in logging

Fix typo in comment
2019-10-14 13:22:39 +03:00
Vasily
c1f9107b8b Add more logging
Trying to fix hls muxer plus ffmpeg 4.1+ combo

Try to fix waiting for segment being ready

This is needed because hls muxer in ffmpeg >= 4.1 creates the
playlist only when it finishes transcoding.

Also cleaned up logs a bit.

Lower log level for "StartFfmpeg finished" to debug
2019-10-14 13:22:15 +03:00
Vasily
6746f708f2 Revert "Revert "Fix premature stop when streaming""
This reverts commit 575b96d03a.
2019-10-14 13:16:30 +03:00
schbal
c9851db4c7 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-13 17:14:18 -04:00
Axel Gabriel Calle Granda
aa5cd46b6c Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2019-10-13 17:14:18 -04:00
Marius Lindvall
510c2d01c7 Translated using Weblate (Norwegian Bokmål)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2019-10-13 17:14:18 -04:00
Anthony Lavado
05fb84ba22 Make service setup an optional component, remove setuptype page config for now 2019-10-12 04:39:34 -04:00
Anthony Lavado
04c4ad731e Begin to add setup type dialog 2019-10-12 03:56:46 -04:00
Anthony Lavado
c8ffa2fb1d Set service install default to no 2019-10-12 03:03:33 -04:00
Joshua Boniface
fffc5e3a6f Bump version to 10.5.0 for next stable release 2019-10-11 20:12:52 -04:00
Bond_009
516933aab5 Move to netcore3.0 2019-10-11 18:32:13 +02:00
Bond-009
d64b43286e Delete Doxyfile (#1879) 2019-10-11 00:11:23 -04:00
Narfinger
45f906c556 added a couple more tests 2019-10-11 11:46:51 +09:00
Vasily
79f9887625 Merge pull request #1854 from Bond-009/json
Use System.Text.Json api for databases
2019-10-10 18:15:48 +03:00
Vasily
c6cb4b7cf8 Merge pull request #1840 from Bond-009/ruleset
Ignore warning CA1308 and SA1108
2019-10-10 16:53:37 +03:00
Vasily
094852ce30 Merge pull request #1861 from joshuaboniface/fix-centos-build
Use NVM to install nodejs v8 and yarn for CentOS
2019-10-10 10:35:11 +03:00
schbal
697450a619 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-10 02:14:10 -04:00
Narfinger
8da012c8c5 add tests for Emby.Naming/TV/EpisodePathParser.cs
This should in the future help to detect working and non working name matchings
2019-10-10 13:22:42 +09:00
Joshua M. Boniface
b7586335a6 Merge pull request #1872 from thornbill/translate-badge
Update translate badge in README
2019-10-09 18:46:10 -04:00
Vasily
1176749f14 Merge pull request #1863 from joshuaboniface/fix-baseurl-issues
Fix inconsistent BaseUrl behavior
2019-10-09 19:24:41 +03:00
Bill Thornton
5437434339 Update translate badge in README 2019-10-09 11:47:55 -04:00
Bond_009
9d4ce82ab9 Enable TreatWarningsAsErrors for MediaBrowser.Common and Emby.Photos
Adds `#pragma warning disable CS1591` to all files in
MediaBrowser.Common containing undocumented members.
2019-10-09 17:14:15 +02:00
Joshua Boniface
345a14ff55 Use value instead of assigning baseUrl first 2019-10-09 10:52:51 -04:00
Joshua Boniface
b10e06ff45 Fix spacing issues 2019-10-09 10:40:52 -04:00
Bond-009
d8d2e52e3f Merge pull request #1870 from JustAMan/fix-http-ex1
Fix exception when handling error, log errors better
2019-10-09 16:08:50 +02:00
Joshua Boniface
b96079fee6 Make NormalizeUrlPath static 2019-10-09 09:22:55 -04:00
dkanada
8d7ac291bc Merge pull request #1855 from Bond-009/stylefixes
Minor style fixes
2019-10-09 22:21:32 +09:00
dkanada
0c329736cc Merge pull request #1853 from Bond-009/startup
Log startup time
2019-10-09 22:19:49 +09:00
Vasily
cadfd5bf3f Merge pull request #1866 from Bond-009/sqlslow
Change slow query time logging to debug
2019-10-09 15:52:29 +03:00
Vasily
03450f383f Fix template for logging 2019-10-09 14:05:32 +03:00
Vasily
8109c7eb30 Always log at least error message when error happens during request processing 2019-10-09 14:00:22 +03:00
Vasily
33b69a7099 Set response length and mime type correctly when reporting an error 2019-10-09 13:54:05 +03:00
Joshua Boniface
2a79ae0a6e Normalize baseUrl behaviour
Fully normalizes the baseUrl behaviour to better match how this sort of
feature works in other programs.

1. The baseUrl is always appended to paths, even the built-in `/emby`
and `/mediabrowser` paths.
2. The baseUrl is set statically at class instance creation, to ensure
it persists through changes until the next restart.
3. Configuration is normalized using a function when set, to ensure it's
in a standard `/mypath` format with leading `/`.
4. Cleans up the conditionals around default redirects. For sanity after
changing the URL, it will match *any* path that doesn't match the
current baseUrl and redirect it back to the main page (with baseUrl).
5. Adds a second method, NormalizeUrlPath, to avoid lots of `+ "/" +`
string manipulations which are unclean - we should always have a leading
slash.
6. Sets the default baseUrl to an empty string to avoid unexpected
behaviour, though this would be worked-around automatically.
7. Adds some debug logs whenever a URL is normalized, to help track down
issues with this code (if any arise).
2019-10-08 18:06:03 -04:00
Bond_009
ac93a5a85c Change slow query time logging to debug 2019-10-08 22:17:15 +02:00
Bond_009
e553eba31e Use System.Text.Json api 2019-10-08 20:59:53 +02:00
Vasily
531642fc53 Improve gitattributes for images 2019-10-08 16:54:41 +03:00
Vasily
aa9d7d7f04 Merge pull request #1862 from joshuaboniface/bump-version
Fix bump_version for submodule removal
2019-10-08 16:04:55 +03:00
Joshua Boniface
f20555bf4a Use NVM to install nodejs v8 and yarn
Prevents failure of the installation of jellyfin-web dependencies due
to the NodeJS version in EPEL being too old. v8 might be a little
conservative but is the earliest compatible version. Instead of using
their repo to install Yarn, use the new nvm binary to install Yarn, thus
forcing it to use the updated NodeJS version.
2019-10-07 23:34:02 -04:00
Joshua Boniface
3fc71731a3 Remove jellyfin-web submodule from bump_version 2019-10-07 22:37:19 -04:00
Joshua Boniface
218015063b Port former create_tarball into COPR Makefile
This script was removed in #1793; instead of restoring it, instead
implement its functionality directly in the COPR Makefile.
2019-10-07 22:30:23 -04:00
Joshua M. Boniface
d8c3b26fa6 Merge pull request #1846 from jellyfin/EraYaN-patch-1
Switch to custom patched build for ffmpeg for the Windows installer
2019-10-06 19:23:01 -04:00
Erwin de Haan
adde41c533 Remove /bin from ffmpeg path. 2019-10-06 22:26:17 +02:00
Erwin de Haan
3925e1dced Fix extracted path from ffmpeg zip. 2019-10-06 22:20:49 +02:00
Erwin de Haan
c7d1206dcb Switch to custom patched build for ffmpeg 2019-10-06 22:03:44 +02:00
Vasily
f1567c64a5 Merge pull request #1844 from dkanada/poster
Fix missing image on seasons without posters
2019-10-06 22:16:21 +03:00
Joshua M. Boniface
d900cc5c53 Merge pull request #1845 from joshuaboniface/mesa-va-drivers-fix
Correct missing mesa-va-drivers package
2019-10-06 15:12:48 -04:00
Poki
5c456231b1 Translated using Weblate (Finnish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fi/
2019-10-06 09:14:04 -04:00
Joshua Boniface
abde7c0242 Make the comment nicer 2019-10-05 18:38:55 -04:00
Joshua Boniface
762d17c3df Move copy steps further so they're not overwriting 2019-10-05 18:24:38 -04:00
dkanada
e006b7f1e1 add comment explaining a bug fix 2019-10-06 01:24:04 +09:00
dkanada
db10f380d1 fix missing image on seasons without posters 2019-10-06 00:58:27 +09:00
Poki
60f8aa540f Added translation using Weblate (Finnish) 2019-10-05 08:04:16 -04:00
Joshua M. Boniface
7b64c696f7 Merge pull request #1841 from joshuaboniface/docs-url
Update Docs to docs.jellyfin.org URL
2019-10-04 15:13:07 -04:00
Joshua Boniface
0367dc21f8 Update GitHub templates 2019-10-04 15:07:59 -04:00
Joshua Boniface
7a172a9051 Update Docs to docs.jellyfin.org URL 2019-10-04 14:37:36 -04:00
Bond_009
416155c35f Ignore warning SA1108 2019-10-04 20:21:47 +02:00
Bond_009
0cd2bfc428 Ignore warning CA1308 2019-10-04 19:55:14 +02:00
Joshua M. Boniface
5bb44c36e1 Merge pull request #1822 from anthonylavado/readme-fix
Update README for new docs location
2019-10-04 13:24:17 -04:00
Bond-009
3ad34de808 Update ApplicationHost.cs 2019-10-04 18:53:26 +02:00
Joo-Hong Lee
4025b2c6a1 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-04 00:13:59 -04:00
Joshua M. Boniface
6b00cc1a06 Merge pull request #1829 from thornbill/fix-sd-auth
Fix SchedulesDirect authentication
2019-10-02 12:36:25 -04:00
Bill Thornton
80dccdef22 Add using block and HexHelper 2019-10-02 09:51:53 -04:00
SaddFox
b0ec5c527d Translated using Weblate (Slovenian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sl/
2019-10-02 02:13:58 -04:00
Kamilake
5d073713b6 Translated using Weblate (Korean)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-10-02 02:13:58 -04:00
WontTell
d93853375e Translated using Weblate (Spanish (Mexico))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_MX/
2019-10-02 02:13:58 -04:00
h4ss2
26872eb2c2 Translated using Weblate (Arabic)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ar/
2019-10-02 02:13:58 -04:00
Bill Thornton
119041a425 Fix SchedulesDirect authentication 2019-10-02 01:35:28 -04:00
Joshua M. Boniface
9c85566da7 Merge pull request #1825 from jellyfin/revert-1802-fix-premature-stop
Revert "Fix premature stop when streaming"
2019-10-01 13:55:11 -04:00
Joshua M. Boniface
575b96d03a Revert "Fix premature stop when streaming" 2019-10-01 12:07:09 -04:00
Anthony Lavado
823f648955 Update README for new docs location
Updates several links in the readme to point to our new docs location.
2019-09-30 17:49:37 -04:00
Joshua M. Boniface
7203f463f4 Merge pull request #1820 from joshuaboniface/fix-portable
Properly build DLL for porable
2019-09-30 01:40:50 -04:00
Joshua Boniface
3651755984 Properly build DLL for porable 2019-09-30 01:11:11 -04:00
Joshua M. Boniface
180fb857ed Merge pull request #1819 from nvllsvm/ffmpeg_kill
Ignore exception when attempting to kill ffmpeg that has exited
2019-09-29 20:23:19 -04:00
Joshua M. Boniface
cb09459ad1 Merge pull request #1818 from jellyfin/EraYaN-ci-web-clone-fix
Fix SourceBranch -> SourceBranchName in git clone for Web UI
2019-09-29 19:52:05 -04:00
Andrew Rabert
fd1bdad0e2 Ignore exception when attempting to kill ffmpeg that has exited
A race condition where this code attempts to kill an already exited
ffmpeg process is possible. This results in unnecessary error logging.

This change replaces the generic exception handling with the above
mentioned exception. No log output is produced.
2019-09-29 19:19:53 -04:00
Erwin de Haan
b2ba3a5922 Fix SourceBranch -> SourceBranchName in git clone for Web UI 2019-09-29 23:46:09 +02:00
Joshua M. Boniface
749023bf02 Merge pull request #1811 from joshuaboniface/fix-listen
Configure Kestrel listener to use configured IPs
2019-09-29 17:22:40 -04:00
Joshua M. Boniface
dcc8c7b92a Merge pull request #1808 from joshuaboniface/fix-amf-win
Change Win32 AMF flag to d3d11va
2019-09-29 17:19:23 -04:00
Joshua M. Boniface
f63d591b08 Merge pull request #1817 from joshuaboniface/change-pragma-mode
Change PRAGMA mode from WAL to TRUNCATE
2019-09-29 17:19:08 -04:00
Joshua Boniface
387192610f Handle Kestrel startup failures with a nice error 2019-09-29 17:17:19 -04:00
Joshua M. Boniface
9aec21f6b5 Nicer link format for comment
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-09-29 16:18:05 -04:00
Joshua M. Boniface
e183a14933 Merge pull request #1814 from Bond-009/ffmpeg_fix
Fix ffmpeg version check for unknown versions
2019-09-29 16:16:58 -04:00
Joshua Boniface
72edf5b555 Change PRAGMA mode from WAL to TRUNCATE 2019-09-29 15:53:35 -04:00
Joshua Boniface
7fd75bf071 Change Win32 AMF flag to d3d11va for Windows 8+ 2019-09-29 12:39:52 -04:00
Joshua M. Boniface
d64005df40 Merge pull request #1812 from dkanada/settings
Avoid editing preferences without user interaction
2019-09-29 11:43:03 -04:00
Joshua M. Boniface
c523e576c4 Merge pull request #1815 from Bond-009/fix_tests
Fix tests
2019-09-29 11:26:09 -04:00
Bond_009
d1a6e8c99e Fix tests 2019-09-29 13:57:43 +02:00
Bond_009
3e1aab6b29 Fix ffmpeg version check for unknown versions 2019-09-29 13:43:47 +02:00
dkanada
7a88e7fa34 avoid editing preferences without user interaction 2019-09-29 16:21:32 +09:00
Joshua Boniface
cabb9aed31 Configure Kestrel listener to use configured IPs 2019-09-29 00:37:48 -04:00
Joshua M. Boniface
61f2c41b76 Recursively zip Windows packages (#1809)
Without -r the directory is not properly zipped up.
2019-09-29 00:33:31 -04:00
Bond_009
1745f0181c Log startup time 2019-09-29 00:29:28 +02:00
Joshua M. Boniface
3249fbb715 Merge pull request #1804 from Bond-009/ffmpeg_tests
Add tests for EncoderValidator and add support for ffmpeg 4.2
2019-09-28 18:08:38 -04:00
Joshua M. Boniface
2d797adc08 Merge pull request #1773 from sparky8251/remove-wan-ddns
Remove WAN DDNS
2019-09-28 18:08:24 -04:00
Joshua M. Boniface
c069496b27 Merge pull request #1770 from sparky8251/remove-wan-ip
Remove WAN IP Detection
2019-09-28 18:08:10 -04:00
Joshua M. Boniface
c1e8087b11 Merge pull request #1803 from Bond-009/revision
Don't log revision number
2019-09-28 17:16:38 -04:00
Joshua M. Boniface
427d52cf9a Merge pull request #1805 from Bond-009/plugin_fix
Fix plugin installation
2019-09-28 15:23:08 -04:00
Bond_009
06d420f743 Fix plugin installation 2019-09-28 21:06:58 +02:00
Bond_009
05a1510b31 Add more test data 2019-09-28 19:49:41 +02:00
Bond_009
1b01a6ece1 Add tests for EncoderValidator
* Add support for ffmpeg 4.2
* Parse the complete ffmpeg version instead of only the first 2 digits
* Make max and min version optional
* Remove max limitation (for now)
* Style improvements
2019-09-28 19:41:34 +02:00
Joshua M. Boniface
3577ef6814 Merge pull request #1802 from JustAMan/fix-premature-stop
Fix premature stop when streaming
2019-09-28 11:15:33 -04:00
Joshua M. Boniface
75b7c9ac36 Do explicit dotnet publish in Dockerfiles (#1801)
The common.build.sh script was removed in #1793 but the Dockerfiles
still used this to perform the dotnet publish. Remove that call and do
the publish explicitly.
2019-09-27 23:02:18 -04:00
Bond_009
4f63bfd616 Don't log revision number 2019-09-27 23:58:04 +02:00
Vasily
4fae733eef Cleaned up move to HLS muxer 2019-09-27 18:22:43 +03:00
Vasily
36a34f911e Replaced "stream" muxer with "hls" trying to fix "premature stop" issue 2019-09-27 16:37:41 +03:00
Joshua M. Boniface
e4d5e5bf91 Merge pull request #1793 from joshuaboniface/fix-build
Clean up and update builds to use new jellyfin-web
2019-09-26 22:24:41 -04:00
Joshua Boniface
547a6121b0 Remove redundant yarn build command 2019-09-26 22:09:19 -04:00
Anthony Lavado
bae5e3795e Fix SetImage to avoid out of range exception (#1798)
* Fix SetImage to avoid out of range exception

* Actually use the new images we've retrieved
2019-09-26 09:47:48 -04:00
Joshua Boniface
3b935d8fd0 Clean up old changelog entires from Debian package 2019-09-25 14:54:39 -04:00
Joshua Boniface
15b83f8b55 Clean up and fix Fedora/CentOS builds
This performs a lot of bugfixing and general cleanup to the
Fedora/CentOS builds, including moving the create_tarball into the
docker-build.sh script, remove some old long versions from the spec
file, correcting several bugs with the Docker environment including
splitting them into more discrete layers, and finally making sure
jellyfin-web is included properly in the RPM.
2019-09-25 14:45:15 -04:00
Joshua Boniface
56a879e148 Use redirection instead of tee 2019-09-25 14:20:49 -04:00
Bond_009
c5995af493 Some style fixes 2019-09-25 17:19:48 +02:00
Vasily
fc99f1f563 Merge pull request #1785 from dkanada/compat
Add mediabrowser route back for now
2019-09-25 14:18:21 +03:00
Joshua Boniface
4b257b7b4a Clean up web_build_dir in docker-build.sh 2019-09-25 01:36:20 -04:00
Joshua Boniface
172a81b22c Clean up deployment directory
1. Update README.md to remove some old info
2. Remove common.build.sh from all the build scripts
3. Remove common.build.sh script
4. Remove the docker folder as this isn't used at all
2019-09-25 01:28:07 -04:00
Joshua Boniface
5c7ca6b363 Port Windows x86 build to Docker and add web build 2019-09-25 01:27:35 -04:00
Joshua Boniface
93b213b59f Port Windows x64 build to Docker and add web build 2019-09-25 01:27:28 -04:00
Joshua Boniface
3b669521da Port Portable build to Docker and add web build 2019-09-25 01:10:04 -04:00
Joshua Boniface
05f01b2c45 Port MacOS build to Docker and add web build 2019-09-25 01:06:50 -04:00
Joshua Boniface
f36b898a4d Port Linux build to Docker and add web build 2019-09-25 01:06:18 -04:00
Joshua Boniface
fa9b0d9da1 Add web build to Fedora package build 2019-09-24 23:25:46 -04:00
Joshua Boniface
1c2fd4ef84 Add web build to CentOS package build 2019-09-24 23:24:22 -04:00
Joshua Boniface
be3b05df68 Add web build to Ubuntu arm64 package build 2019-09-24 23:17:11 -04:00
Joshua Boniface
601a50e430 Add web build to Ubuntu armhf package build 2019-09-24 23:15:31 -04:00
Joshua Boniface
03d60438e2 Add web build to Ubuntu amd64 package build 2019-09-24 23:13:40 -04:00
Joshua Boniface
9b6720ce80 Add web build to Debian arm64 package build 2019-09-24 23:11:18 -04:00
Joshua Boniface
b9e0a0b1ac Add web build to Debian armhf package build 2019-09-24 23:09:47 -04:00
Joshua Boniface
d22fd964c2 Add web build to Debian amd64 package build 2019-09-24 23:06:47 -04:00
Joshua Boniface
188ad540ee Remove submodule handling from build script 2019-09-24 23:06:27 -04:00
Joshua Boniface
12f24674fb Fix up Windows build script copy 2019-09-24 22:10:12 -04:00
Vasily
ac9dfa8e93 Merge pull request #1775 from Bond-009/fixes
Fix multiple mistakes and warnings
2019-09-24 19:08:39 +03:00
dkanada
b5b7db1f32 add an exception to logging 2019-09-24 23:59:24 +09:00
dkanada
ab7e697f30 add mediabrowser route back for now 2019-09-24 23:59:24 +09:00
Joshua M. Boniface
b086f6d330 Merge pull request #1791 from EraYaN/ci-web-build
Remove submodule and add clone and build to CI for web UI
2019-09-24 10:48:09 -04:00
Erwin de Haan
a73d87229a Add extra conditions. 2019-09-24 16:38:51 +02:00
Erwin de Haan
e9fb46b0cd Fix path typo and add same code to main build. 2019-09-24 16:32:57 +02:00
Erwin de Haan
0ca0d9d01e Remove submodule and add clone and build to CI 2019-09-24 16:22:26 +02:00
dkanada
1156b8f100 Merge pull request #1788 from joshuaboniface/ssl-dep-ubu
Include libssl-dev dep in Ubuntu build containers
2019-09-24 13:12:03 +09:00
Bond_009
c9820d30ed Fix multiple mistakes and warnings 2019-09-23 20:32:44 +02:00
Dan Johansen
b8fd6a7ec3 Translated using Weblate (Danish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/da/
2019-09-23 12:28:24 -04:00
WWWesten
2c2a55abab Translated using Weblate (Russian)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ru/
2019-09-22 23:13:44 -04:00
Mário Victor Ribeiro Silva
f7e9b0a27f Translated using Weblate (Portuguese (Brazil))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2019-09-22 23:13:44 -04:00
pucherot
6b33089274 Translated using Weblate (Spanish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2019-09-22 23:13:44 -04:00
Anthony Lavado
229bd598b5 Add escapes for path quotes in the NSIS Installer (#1777)
This adds backslashes to escape the `--datadir` path in the Windows Installer. Without this, the path would be dropped at the first space (e.g. `C:\Test Area\Jellyfin` would become `C:\Test`).

Fixes #1773.
2019-09-20 13:45:20 -04:00
Joshua Boniface
260dd37bd5 Include libssl-dev dep in Ubuntu build containers 2019-09-20 11:55:51 -04:00
Mark Bai
54d33c06c7 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-09-20 03:13:39 -04:00
Vasily
a7358171cf Merge pull request #1772 from sparky8251/better-hidden-defaults
Hide new users from public API by default
2019-09-19 23:28:53 +03:00
sparky8251
14f563d7c2 Removed WAN DDNS
It's odd that JF still had code lying around for generating a self signed cert. Currently, it does not do this so this code has been removed.

JF also appears to have functions in place to modify provided certs? Warrants deeper investigation. JF should not be attempting modifications of any certs under any circumstance.
2019-09-19 15:56:54 -04:00
sparky8251
44a3e0a97b Hide new users from public API by default 2019-09-19 15:16:57 -04:00
Joshua M. Boniface
e19474d22f Merge pull request #1643 from Bond-009/docs3
Fix some documentation warnings for MediaBrowser.XbmcMetadata
2019-09-19 11:26:26 -04:00
sparky8251
208c8b2b9d Remove missed unused functions
Forgot to remove these in the previous WAN IP detection removal commit
2019-09-19 11:21:19 -04:00
sparky8251
0562b4cf6f Remove WAN IP Detection 2019-09-19 10:55:58 -04:00
Joshua M. Boniface
8ba86fe272 Merge pull request #1765 from EraYaN/ci-add-submodule-update
Add submodule update to CI build.
2019-09-18 14:55:19 -04:00
Bond-009
fad4594062 Merge pull request #1768 from whooo/filewrite-log2
Set log level to debug for HTTP range requests
2019-09-18 20:22:44 +02:00
Erik Larsson
74864832ca Set log level to debug for HTTP range requests
This removes some spam when a DLNA renderer uses byte seeking.
2019-09-18 18:29:15 +02:00
Erwin de Haan
9c95eba5a1 Add VSTest support to CI (#1696)
* Add VSTest support to CI

Add result publishing

Move tests to windows.

Spacing issue.

Image name update.

* Passthrough main debug build

* Rectify mistake and build test assemblies seperately.

* Remove Test dependency
2019-09-18 11:43:02 -04:00
Bond-009
6f17a0b7af Remove legacy auth code (#1677)
* Remove legacy auth code

* Adds tests so we don't break PasswordHash (again)
* Clean up interfaces
* Remove duplicate code

* Use auto properties

* static using

* Don't use 'this'

* Fix build
2019-09-17 12:07:15 -04:00
Erwin de Haan
f8fed49225 Another condition update. 2019-09-17 16:45:18 +02:00
Erwin de Haan
8b438b68cc Added Better submodule updates. 2019-09-17 16:40:11 +02:00
Erwin de Haan
8f2ec3b197 Add submodule update to build. 2019-09-17 16:23:27 +02:00
Joshua M. Boniface
adc2a68a98 Merge pull request #1744 from Bond-009/dataprovider
Rewrite `ItemDataProvider` to be more robust
2019-09-17 09:11:50 -04:00
Joshua M. Boniface
39faadc9dc Merge pull request #1751 from Bond-009/login
Reset invalid login counter on successfull login
2019-09-17 09:11:25 -04:00
Joshua M. Boniface
c4c7ced948 Merge pull request #1764 from EraYaN/publish-ci-fault
Fix publish CI YAML parse error
2019-09-16 21:49:01 -04:00
Erwin de Haan
6fa1c5e214 Fix release symlink name. 2019-09-17 01:41:14 +02:00
Erwin de Haan
831ce4da13 Skip checkout for Publish CI pipelines 2019-09-17 01:37:42 +02:00
Erwin de Haan
24a5bebabe Fix yaml parse error 2019-09-17 01:33:17 +02:00
Erwin de Haan
42f761582f Add two manually triggered pipelines for publishing artifacts. (#1763)
* Added two extra pipelines.

* Change the sshEndpoint
2019-09-16 19:23:52 -04:00
nevado
cb32bf1c4f Add mesa-va-drivers to main Dockerfile (#1727) 2019-09-15 00:31:13 -04:00
Bond-009
318b9949f2 Improve Skia error handling (#1752) 2019-09-15 00:27:42 -04:00
Bond-009
221b831bb2 Reset invalid login counter on successfull login 2019-09-13 17:18:45 +02:00
Andrew Rabert
cc8609d0aa Merge pull request #1746 from nvllsvm/yarn
Docker - Build jellyfin-web
2019-09-12 22:19:35 -04:00
Andrew Rabert
03f32978c0 Docker - Build jellyfin-web 2019-09-12 18:24:09 -04:00
Bond_009
8fe7b6551f Rewrite ItemDataProvider to be more robust
* Stop locking 2+ times per operation
* Don't clone the list multiple times
* Keep the lock for the duration of the operation
2019-09-12 21:34:55 +02:00
Bond-009
2919cf28ea Update deps (#1735) 2019-09-11 13:31:35 -04:00
Abdulkadir Furkan Şanlı
e131078673 Translated using Weblate (Turkish)
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/tr/
2019-09-11 10:13:20 -04:00
qqq-qqqq
e1b445d133 Translated using Weblate (Chinese (Simplified))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-09-11 10:13:20 -04:00
tluciomiranda
177ca3ccba Translated using Weblate (Portuguese (Portugal))
Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/
2019-09-11 10:13:20 -04:00
Joshua M. Boniface
c63a53959c Merge pull request #1731 from EraYaN/segment-time-delta-culture-fix
Fix culture problem on Windows for segment_time_delta argument.
2019-09-10 10:41:59 -04:00
Erwin de Haan
e8b13ea8a9 Fix culture problem on Windows for segment_time_delta argument. 2019-09-10 16:31:35 +02:00
Erwin de Haan
2f2010ce59 NSIS improvements (#1692)
* Much better, but still broken

It crashes with two custom pages after one another. (So when the service should be installed).

* Fixed the problems and finished the NSIS installer.

Also ignored some of the artifacts.

* Added changes to CI for setup building.

Consolidate building and fixed git error.

Small CI fixes.

Move UX repo to SourcesDirectory

Fix stupid checkout <> clone error.

Fix typo in PowerShell command.

Artifact publish tasks can not have wildcards.
2019-09-09 17:40:51 -04:00
Anthony Lavado
e6a1407786 Merge pull request #1723 from Bond-009/mrmc
Possible fix for MrMC
2019-09-08 18:10:47 -04:00
Bond_009
3eca8b9c98 Address comments 2019-09-08 21:19:41 +02:00
Bond_009
0803a916aa Fix some documentation warnings for MediaBrowser.XbmcMetadata 2019-09-08 21:19:41 +02:00
Bond_009
675754bc5c Possible fix for MrMC 2019-09-08 21:07:29 +02:00
Joshua M. Boniface
2638759b42 Merge pull request #1708 from crobibero/patch-1
Fix translate link
2019-09-03 00:03:05 -04:00
Joshua M. Boniface
b4d722b9f2 Merge pull request #1709 from joshuaboniface/fix-rootdir-crash
Fix crash due to missing userRootFolder data
2019-09-03 00:02:39 -04:00
Joshua Boniface
baa30b41de Add debug logs and try/catch when creating folder 2019-09-02 23:32:03 -04:00
Cody Robibero
299193e2bd Fix translate link 2019-09-02 20:06:22 -06:00
Joshua M. Boniface
fde9dd2a61 Merge pull request #1693 from joshuaboniface/update-libssl
Update Debian build to Buster and LibSSL 1.1
2019-09-02 21:11:57 -04:00
Joshua Boniface
5552e8cbd7 Add missing build dependency 2019-09-02 20:13:28 -04:00
Joshua M. Boniface
2aecc3fa1b Merge pull request #1699 from joshuaboniface/bump-version
Bump version to 10.4.0
2019-09-02 20:03:31 -04:00
Anthony Lavado
e2577ea1c7 Merge pull request #1707 from nvllsvm/default_build_arg
Fix default build arg
2019-09-02 15:45:52 -04:00
Andrew Rabert
11346c000e Fix default build arg 2019-09-02 15:13:08 -04:00
Bond-009
ee637e8fec Fix warnings, improve performance (#1665)
* Fix warnings, improve performance

`QueryResult.Items` is now a `IReadOnlyList` so we don't need to
allocate a new `Array` when we have a `List` (and `Items` shouldn't need to
be mutable anyway)

* Update Providers .csproj to latest C#

* Remove extra newline from DtoService.cs

* Remove extra newline from UserLibraryService.cs
2019-09-02 02:19:29 -04:00
Anthony Lavado
cb393c215a Merge pull request #1686 from Bond-009/warn7
More warning fixes
2019-09-02 02:07:19 -04:00
Anthony Lavado
c4eac8b3c6 Merge pull request #1702 from Bond-009/warn8
Fix more warnings
2019-09-02 02:05:20 -04:00
Anthony Lavado
852e5e29ca Merge pull request #1704 from nvllsvm/fix_replace_multiple_spaces
Fix replace multiple spaces
2019-09-02 01:33:14 -04:00
Andrew Rabert
907b3185c2 Use regex to replace multiple spaces with one space
This communicates the intent of the code more clearly than before.
No noticeable performance impact.
2019-09-01 21:44:34 -04:00
Andrew Rabert
6478cd2ea4 Fix infinite looping when scanning TV metadata
It's a possible that name and sb will never be equal. This is caused by
additional replacements before this loop.
Regression introduced in c699c546e4
2019-09-01 21:40:47 -04:00
Bond_009
1616f24cee Fix more warnings 2019-09-01 18:39:23 +02:00
Bond-009
160718efe2 Merge pull request #1691 from sammyrc34/vaapifix
Enable VAAPI decoding without hardware encoding
2019-09-01 17:30:58 +02:00
Bond-009
a266b54ad6 Merge pull request #1683 from dkanada/misc
Move the transcode path and other small fixes
2019-09-01 17:27:08 +02:00
Anthony Lavado
fde024e7b8 Merge pull request #1700 from thornbill/flac
Restore flac mime type
2019-09-01 02:05:15 -04:00
Bill Thornton
3a600687ea Restore flac mime type 2019-09-01 01:15:34 -04:00
Anthony Lavado
67f38006f8 Merge pull request #1680 from marius-luca-87/q6fn_dlna_seek
Fix q6fn dlna seek for direct play
2019-09-01 00:48:30 -04:00
Samantha Collard
627bde4b72 Fix VAAPI 8-bit HW to SW transcoding for some media 2019-09-01 13:20:18 +10:00
Joshua Boniface
742102b541 Bump version to 10.4.0 2019-08-31 21:39:10 -04:00
Joshua Boniface
5251a5ca79 Allow selecting web branch and fix Docker sed 2019-08-31 21:38:26 -04:00
Joshua M. Boniface
ba06ef57a9 Merge pull request #1687 from Bond-009/isomounter
Move IsoMounter to plugin
2019-08-31 21:22:41 -04:00
Joshua M. Boniface
0d7adc3382 Merge pull request #1695 from nvllsvm/dfa
Make Docker ffmpeg version configurable
2019-08-31 21:12:37 -04:00
Andrew Rabert
1c4755f26a docker - make ffmpeg version configurable 2019-08-31 13:26:13 -04:00
Joshua Boniface
93a668de8b Add libssl-dev dependency 2019-08-31 01:17:23 -04:00
Joshua Boniface
1d5b11f7f6 Update GCC crossbuild to version 8 2019-08-31 01:12:11 -04:00
Joshua Boniface
b1c7b88b5b Use latest 2.2.6 dotnet SDK image (2.2.401) 2019-08-31 00:39:46 -04:00
Joshua Boniface
bedc2be525 Add libssl-dev build dependency 2019-08-31 00:32:26 -04:00
Samantha Collard
a321ca5b39 Enable VAAPI decoding without hardware encoding
Enable VAAPI command arguments to ffmpeg if VAAPI is selected, and
add the "hwdownload" filter if transcoding from VAAPI to software.
Also support transforming 10 bit colourspace to 8-bit, consistent
with other hardware encoding options, at least until client pixel
formats are configurable.
2019-08-31 12:04:31 +10:00
Bond_009
14fbd845c2 Move IsoMounter to plugin 2019-08-29 23:11:55 +02:00
Bond_009
e4f893a0eb More warning fixes 2019-08-29 22:28:33 +02:00
Anthony Lavado
a30876c3ff Merge pull request #1685 from Bond-009/format
Fix invalid arg for
2019-08-29 15:55:31 -04:00
Bond_009
0aaaaab7a0 Fix invalid arg for 2019-08-29 20:25:56 +02:00
dkanada
21ff63c371 move the transcode path 2019-08-29 00:14:50 -07:00
marius
3deeca43a1 - use streamInfo.StartPositionTicks if provided over userdata.PlaybackPositionTicks when creating the Samsung Bookmark Info 2019-08-29 02:38:53 +03:00
Bond-009
503ab56a59 Merge pull request #1678 from marius-luca-87/dlna_seek_exception_fix
Fix ArgumentOutOfRangeException in ParseTimeSeekHeader
2019-08-28 20:13:58 +02:00
marius
b711ece829 - fix ArgumentOutOfRangeException at MediaBrowser.Api.Playback.BaseStreamingService.ParseTimeSeekHeader (second substring argument is length) 2019-08-28 21:05:17 +03:00
Anthony Lavado
efaa668158 Merge pull request #1633 from Bond-009/udpclient
Attempt to fix #1391
2019-08-28 09:41:11 -04:00
Anthony Lavado
a2fd82137c Merge pull request #1676 from Bond-009/login
Fix login
2019-08-28 09:38:12 -04:00
Bond_009
efc4805233 Fix login 2019-08-28 14:45:46 +02:00
Bond_009
dc194015c2 Remove unused args 2019-08-28 13:59:17 +02:00
Bond_009
5dd332b63d Attempt to fix #1391 2019-08-28 13:55:36 +02:00
Anthony Lavado
874f02631b Merge pull request #1641 from cvium/tmdb_cleanup
Tmdb cleanup and re-add Writer and Producer
2019-08-27 23:29:01 -04:00
Andrew Rabert
24775f4988 Merge pull request #1651 from sl1288/master
Fix local trailers playback
2019-08-27 19:02:05 -04:00
Odd Stråbø
f255788383 Translated using Weblate (Norwegian Bokmål)
Currently translated at 95.7% (90 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/nb_NO/
2019-08-26 22:06:50 -04:00
Pafzedog
ba0997a8db Translated using Weblate (French)
Currently translated at 95.7% (90 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fr/
2019-08-26 22:06:50 -04:00
Axel Gabriel Calle Granda
7d4bb28d18 Translated using Weblate (Spanish)
Currently translated at 95.7% (90 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2019-08-26 22:06:50 -04:00
Matzi24GR
d2c69e7733 Translated using Weblate (Greek)
Currently translated at 95.7% (90 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2019-08-26 22:06:50 -04:00
Βασίλης Μουρατίδης
143a408342 Translated using Weblate (Greek)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2019-08-26 22:06:50 -04:00
Matzi24GR
6be68a3656 Translated using Weblate (Greek)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/el/
2019-08-26 22:06:50 -04:00
Anthony Lavado
b744ebb3b3 Merge pull request #1656 from loli10K/fix_firewalld_service
Fix firewall-cmd: Error: INVALID_SERVICE: 'jellyfin' not among existing services
2019-08-26 17:02:05 -04:00
Joshua Boniface
fb37f4a1d5 Use base Debian image in Docker build 2019-08-26 11:05:15 -04:00
Joshua Boniface
5945a638ff Update builds to Debian 10 and OpenSSL to 1.1-only 2019-08-26 11:00:36 -04:00
Bond-009
e87d7cfaf3 Merge pull request #1659 from jellyfin/fix_ffmpeg
Fix segment_time_delta value for ffmpeg 4.1
2019-08-25 13:38:11 +02:00
Claus Vium
2e66361482 Move argument to new line 2019-08-24 11:38:33 +02:00
Claus Vium
15b054be94 Fix style issues 2019-08-24 11:17:17 +02:00
Joshua M. Boniface
1dfd5000ff Merge pull request #1499 from crobibero/log-password-ip
Log IP address on failed login attempt
2019-08-23 23:40:45 -04:00
crobibero
4f974122f8 log password on failed login attempt 2019-08-23 23:28:52 -04:00
Joshua M. Boniface
dc1782d049 Merge pull request #1646 from Bond-009/lock
Return DB lock immediately
2019-08-21 18:24:47 -04:00
loli10K
588db95e2a Fix firewall-cmd: Error: INVALID_SERVICE: 'jellyfin' not among existing services 2019-08-20 20:27:31 +02:00
Joshua M. Boniface
1bce9a89b6 Merge pull request #1433 from fhriley/h265
Add support for encoding with libx265 and hevc_nvenc
2019-08-19 16:28:43 -04:00
Joshua M. Boniface
d95c04787c Merge branch 'master' into h265 2019-08-19 14:57:48 -04:00
Joshua M. Boniface
d99278da1d Merge pull request #1650 from Bond-009/sqlitepclv2
Upgrade SQLitePCL to v2
2019-08-19 14:43:54 -04:00
SL1288
fdc24ec2ee Fix LocalTrailers playback. 2019-08-19 18:56:41 +02:00
Bond_009
3fd489d1cb Upgrade SQLitePCL to v2 2019-08-19 17:03:21 +02:00
Claus Vium
058e077422 Add newline after end tag 2019-08-19 12:13:34 +02:00
Claus Vium
d2b8672c1c Require latest C# version in Providers project 2019-08-19 12:12:00 +02:00
dkanada
c8474f734c Merge pull request #1644 from Bond-009/hiddenwarn
Fix possible hidden exceptions
2019-08-19 01:59:07 -07:00
dkanada
5626709de5 Merge pull request #1645 from Bond-009/fixusers
Fix UserNotFoundError
2019-08-19 01:58:24 -07:00
Bond_009
f70a63d575 Return DB asap 2019-08-18 22:05:06 +02:00
Bond_009
24fac4b191 Fix UserNotFoundError 2019-08-18 20:12:25 +02:00
Bond_009
99aea27723 Fix possible hidden exceptions
If an error occurred while starting the server which in turn caused an
exception in the dispose method of the apphost, the first exception
wouldn't get logged.
2019-08-18 20:01:08 +02:00
Joshua M. Boniface
94e25e898a Merge pull request #1511 from crankdoofus/master
Add NSIS installer build support
2019-08-18 13:56:20 -04:00
Joshua M. Boniface
4bb0c2d053 Merge pull request #1642 from cvium/fix_slow_db
Speed up BaseItem deserialization
2019-08-18 13:42:08 -04:00
Claus Vium
f48eaccc51 Use reader.GetString instead of indexing 2019-08-18 17:32:41 +02:00
Claus Vium
e7c05dcfaf Speed up BaseItem deserialization 2019-08-18 17:22:45 +02:00
Claus Vium
82b0015b30 Fix style issues 2019-08-18 14:50:26 +02:00
Claus Vium
78441730a7 Add Writer and Producer to crew list 2019-08-18 14:50:26 +02:00
Claus Vium
5ea1299030 Fix api url 2019-08-18 14:50:26 +02:00
Claus Vium
817d9b3389 Move and rename tmdb providers for better separation 2019-08-18 14:50:26 +02:00
dkanada
25a590e8cd Merge pull request #1636 from Bond-009/isomounter
Add analysers to Emby.IsoMounting and enable TreatWarningsAsErrors
2019-08-18 03:19:27 -07:00
Anthony Lavado
6766e04dd6 Merge pull request #1521 from Bond-009/hdhomerun
Clean up livestreaming code
2019-08-17 02:24:39 -04:00
Anthony Lavado
28d707604b Merge pull request #1629 from cvium/fix_tvdb_guest_stars
Fix tvdb guest stars with multiple roles
2019-08-17 02:22:07 -04:00
Anthony Lavado
f1f4b1a184 Merge pull request #1628 from cvium/fix_tvdb_ep_provider_id
Always fetch episode id as EpisodeInfo does not contain it
2019-08-17 02:10:36 -04:00
Anthony Lavado
f41a608f11 Merge pull request #1452 from Bond-009/usermanager2
Improvements to UserManager
2019-08-17 02:02:55 -04:00
Bond_009
1bc9b42c57 More fixes 2019-08-16 21:18:37 +02:00
Bond-009
4b37caa63a Update SharedHttpStream.cs 2019-08-16 21:13:18 +02:00
Bond_009
237db8ae92 Clean up livestreaming code 2019-08-16 21:13:18 +02:00
Claus Vium
9e3f4ac954 Move the first argument to its own line 2019-08-16 21:10:42 +02:00
Bond_009
8d3b5c851d Improvements to UserManager 2019-08-16 21:06:11 +02:00
Bond_009
dc662beefe Add analysers to Emby.IsoMounting and enable TreatWarningsAsErrors 2019-08-16 21:03:45 +02:00
Anthony Lavado
7a27dd8a1b Merge pull request #1632 from Bond-009/locale
Improve LocalizationManager
2019-08-16 14:17:01 -04:00
Anthony Lavado
af3c4e0ce8 Merge pull request #1588 from dkanada/url
Add base url option to server configuration
2019-08-16 14:16:18 -04:00
Claus Vium
e4158d9703 Continue 2019-08-16 20:11:01 +02:00
Claus Vium
8d230e67a2 Place args on separate lines 2019-08-16 20:09:30 +02:00
Claus Vium
daf29233e6 Invert the second if 2019-08-16 20:07:00 +02:00
Claus Vium
15f7a2078b Invert the if 2019-08-16 19:58:44 +02:00
Claus Vium
26b4fb21fe Update MediaBrowser.Providers/TV/TheTVDB/TvdbEpisodeProvider.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-08-16 19:53:28 +02:00
Claus Vium
617f7e8b5b Fix segment_time_delta value for ffmpeg 4.1 2019-08-16 19:52:54 +02:00
Anthony Lavado
be5a819621 Merge pull request #1634 from Bond-009/fixbuild
Fix build on .Net Core 2.x
2019-08-16 13:49:02 -04:00
Bond_009
c0e71cdea7 Fix build on .Net Core 2.x 2019-08-16 19:05:30 +02:00
Anthony Lavado
b89c26ab57 Merge pull request #1631 from Bond-009/fixbuild
Fix build for .Net Core 2.x
2019-08-16 12:03:27 -04:00
Bond_009
499c3dbdca Fix build for .Net Core 2.x 2019-08-16 17:37:40 +02:00
Bond_009
c699c546e4 Improve LocalizationManager 2019-08-16 17:31:47 +02:00
dkanada
bb04545068 Merge pull request #1614 from Bond-009/docs2
Document all public/internal members of Emby.Drawing
2019-08-15 21:01:44 -07:00
Claus Vium
11504321b5 Handle negative roleStartIndex since not all guest stars have roles 2019-08-15 19:54:01 +02:00
Claus Vium
f7f3627bb1 Remove unused import 2019-08-15 14:56:49 +02:00
Claus Vium
f4a99beb16 Fix tvdb guest stars loop 2019-08-15 14:54:22 +02:00
Claus Vium
38b0967044 Log episode id and series id when either request fails 2019-08-15 13:43:12 +02:00
Claus Vium
14575f0a06 Always fetch episode id as EpisodeInfo does not contain it 2019-08-15 13:39:56 +02:00
dkanada
685e9e4f58 Merge pull request #1584 from Bond-009/checksum
Check checksum for plugin downloads
2019-08-15 01:00:33 -07:00
dkanada
535e0d2553 Merge pull request #1625 from Bond-009/crash
Fix instant crash.
2019-08-14 15:05:35 -07:00
Bond_009
d62a3f0e57 Fix master 2019-08-15 00:00:21 +02:00
dkanada
ca12763adc Merge pull request #1624 from Bond-009/nullref
Fix possible Nullref
2019-08-14 12:42:58 -07:00
Bond_009
2fdf7f1098 Properly dispose DisplayPreferencesRepository 2019-08-14 20:35:36 +02:00
Bond_009
e5b163b86a Fix possible nullref 2019-08-14 20:24:44 +02:00
Anthony Lavado
f8202384a6 Merge pull request #1622 from anthonylavado/transcoding-cleanup
Add a task to clean up transcode cache
2019-08-14 12:25:05 -04:00
Anthony Lavado
35da4ffa3e Remove unneeded comment 2019-08-14 11:59:14 -04:00
Anthony Lavado
4762e2fc6c Add a task to clean up transcode cache 2019-08-14 01:51:46 -04:00
dkanada
8f8d8e3d0b Merge pull request #1581 from Bond-009/socket1
Use System.Net abstractions instead of raw socket
2019-08-13 19:58:57 -07:00
Anthony Lavado
29623d36e8 Merge pull request #1568 from whooo/master
Add DLNA headers if requested by the client
2019-08-13 01:29:16 -04:00
dkanada
443ccbf426 Merge pull request #1613 from Bond-009/docs
Update deps + document startup project
2019-08-12 18:42:30 -07:00
Bond_009
838e5d05d5 Document all public/internal members of Emby.Drawing
Forces all new public/internal members to be documented.
Enables TreatWarningsAsErrors for Emby.Drawing
2019-08-11 16:52:37 +02:00
Bond_009
7243689215 Minor improvements 2019-08-11 15:57:36 +02:00
Bond_009
5eaf5465a5 Check checksum for plugin downloads
* Compare the MD5 checksum when downloading plugins
* Reduced log spam due to http requests
* Removed 'GetTempFileResponse' function from HttpClientManager
* Fixed caching for HttpClientManager
2019-08-11 15:54:58 +02:00
Bond_009
cb492fe3c7 Improve clickable link 2019-08-11 15:17:39 +02:00
Bond_009
003238ef5e Update deps + document startup project
* Fixed the release build
* Documented all public/internal members of Jellyfin.Server
* Enable TreatWarningsAsErrors for debug builds for Jellyfin.Server

This will ensure that any new public/internal members of Jellyfin.Server
are documented
2019-08-11 15:11:53 +02:00
dkanada
1ad67e223f Merge pull request #1462 from Bond-009/installationmanager
Improvements to InstallationManager
2019-08-11 03:47:10 -07:00
whooo
9556561a77 Merge branch 'master' into master 2019-08-11 12:42:19 +02:00
dkanada
97d6c2db6b keep old base url for now 2019-08-11 00:35:18 -07:00
dkanada
d521e5c36a add base url to server configuration 2019-08-11 00:35:18 -07:00
dkanada
c987203f5a remove old routes from http server 2019-08-11 00:33:13 -07:00
Joshua M. Boniface
a96fa7a5c7 Merge pull request #1397 from Bond-009/passfast
Streamline authentication proccess
2019-08-10 21:42:46 -04:00
dkanada
5c366e4697 Merge pull request #1612 from Bond-009/warn4
Fix warnings
2019-08-10 15:12:54 -07:00
dkanada
4f592e9c33 Merge pull request #1484 from SenorSmartyPants/DVD-Order
Update TVDB provider to search based on series display order
2019-08-09 23:26:42 -07:00
dkanada
b5f3f28f41 Merge pull request #1578 from Bond-009/httpresponse
Replace custom code with Asp.Net Core code
2019-08-09 23:26:10 -07:00
Joshua M. Boniface
f8ad6655fb Merge pull request #1023 from Bond-009/cultinvar
Use CultureInvariant string conversion for Guids
2019-08-09 22:33:18 -04:00
Bond_009
25917db07a Fix doc releated warnings 2019-08-09 23:50:40 +02:00
Bond_009
9b2cf8501f Add last one 2019-08-09 23:24:04 +02:00
Bond_009
52c1b45feb Fix build 2019-08-09 23:17:54 +02:00
Bond-009
6032f31aa6 Use CultureInvariant string conversion for Guids 2019-08-09 23:17:54 +02:00
Bond_009
2a58c643d2 Fix more warnings 2019-08-09 23:16:24 +02:00
Anthony Lavado
aafa11b48b Merge pull request #1608 from Marenz/patch-1
Add link to feature request hub to readme
2019-08-09 17:08:40 -04:00
Bond-009
a5cb069f26 Update HdHomerunManager.cs 2019-08-09 22:38:31 +02:00
Bond_009
1cad93c276 Use System.Net abstractions instead of raw socket 2019-08-09 22:38:31 +02:00
Bond_009
0116190050 Minor changes 2019-08-09 22:37:44 +02:00
Bond_009
cf7290343f Fix build 2019-08-09 22:36:20 +02:00
Bond_009
9fff4b060e Replace custom code with Asp.Net Core code 2019-08-09 22:36:20 +02:00
Mathias L. Baumann
6c58ac5c55 Add link to feature request hub to readme 2019-08-09 10:00:16 +02:00
dkanada
cf0460c7f9 move comment to separate line 2019-08-07 02:24:56 -07:00
dkanada
779f0c637f Merge pull request #1580 from Bond-009/linklocal
Ignore Ipv6 link-local addresses
2019-08-07 02:18:22 -07:00
Andrew Rabert
dac22887cf Merge pull request #1605 from nvllsvm/fix_docker
Fix Docker build
2019-08-07 00:04:34 -04:00
Andrew Rabert
da01376294 Fix Docker build 2019-08-06 23:57:39 -04:00
Joshua M. Boniface
74f88b3c50 Merge pull request #1602 from anthonylavado/stale-update
Update the Stale-bot config
2019-08-06 13:21:05 -04:00
Anthony Lavado
ff93b162ee Update the Stale-bot config
Updates the Stale bot to mark an issue after 90 days, and allows 14
days before closing the issue.
2019-08-06 12:59:45 -04:00
LogicalPhallacy
984e415c66 Merge pull request #5 from jellyfin/master
Merge up to latest master
2019-08-06 00:26:19 -07:00
Tradutor da Silva
89f592687e Translated using Weblate (Portuguese (Brazil))
Currently translated at 95.7% (90 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2019-08-04 19:24:29 -04:00
Tamás Mogyorósi
5e6e52d397 Translated using Weblate (Hungarian)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/hu/
2019-08-04 19:24:29 -04:00
AndersMachmueller
20cbbd4f4c Translated using Weblate (Danish)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/da/
2019-08-04 19:24:29 -04:00
Michał
b637cdabae Translated using Weblate (Polish)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pl/
2019-08-04 19:24:29 -04:00
Joshua M. Boniface
0f9fd38053 Merge pull request #1593 from nvllsvm/docker_web_master
Docker - make web version more configurable
2019-08-03 15:53:07 -04:00
Bond-009
20f0a8a1c4 Merge pull request #1597 from whooo/filewriter-log
Set log level to debug for HTTP range requests
2019-08-03 15:50:56 +02:00
Erik Larsson
0e6417c9fa Set log level to debug for HTTP range requests 2019-08-03 12:37:02 +02:00
Anthony Lavado
cc4bf60092 Merge pull request #1590 from anthonylavado/null_check
Adds null check on studio/network name
2019-08-02 14:12:17 -04:00
Andrew Rabert
358665d944 Docker - make web version more configurable
This allows for building against jellyfin-web master. Ex.

docker build . --build-arg JELLYFIN_WEB_VERSION=master
2019-08-01 01:03:52 -04:00
Anthony Lavado
d05440d267 Update MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs
Co-Authored-By: Claus Vium <cvium@users.noreply.github.com>
2019-07-31 12:21:46 -04:00
dkanada
ca8e0796d9 Merge pull request #1582 from Bond-009/ipnetwork
Include library via NuGet instead of via source
2019-07-30 23:45:32 -07:00
dkanada
3949048dde Merge pull request #1573 from Bond-009/mimetype
Use a dictionary to look up mimetypes
2019-07-30 23:44:58 -07:00
dkanada
bf083c1429 Merge pull request #1579 from Bond-009/ass
Fix #1388 and #1472
2019-07-29 15:15:17 -07:00
Joshua M. Boniface
8c15ac7fab Merge pull request #1583 from jellyfin/EraYaN-fider-readme
Add Fider to README
2019-07-29 14:53:35 -04:00
Erwin de Haan
487ba2b928 Add Fider to README 2019-07-29 20:21:47 +02:00
Anthony Lavado
2fc1f39061 Merge pull request #1555 from jellyfin/EraYaN-stale-app-config
Add Stale app configuration starting point
2019-07-29 13:47:03 -04:00
Erwin de Haan
9e1adec5e0 Update message for stale issues and also ignore feature and enhancement labels 2019-07-29 19:42:38 +02:00
Anthony Lavado
43748d439a Merge pull request #1572 from jellyfin/remove-feature-requests
Remove the issue template for feature requests.
2019-07-29 13:20:07 -04:00
Bond_009
998017a76d Include library via NuGet instead of via source 2019-07-29 16:01:14 +02:00
Bond_009
5c9d041423 Ignore Ipv6 link-local addresses 2019-07-29 13:57:36 +02:00
dkanada
e4644599af Merge pull request #1513 from Bond-009/style2
Fix style issues
2019-07-29 00:16:56 -07:00
Bond_009
e6ef6088ff Fix #1388 and #1472 2019-07-29 00:43:57 +02:00
Erwin de Haan
b4f446fe42 Delete enhancement-request.md 2019-07-28 22:50:41 +02:00
Anthony Lavado
da7abea9aa Merge pull request #1574 from jellyfin/compat-checker-ci
Add the --azure-pipelines switch to the compat checker
2019-07-28 16:48:49 -04:00
Erwin de Haan
9faf035413 Add the --azure-pipelines switch to the compat checker 2019-07-28 21:01:18 +02:00
Bond-009
8b1bd7ac6b Use a dictionary to look up mimetypes 2019-07-28 20:20:03 +02:00
Erwin de Haan
7faf3ab04a Delete feature_request.md 2019-07-28 19:41:36 +02:00
Anthony Lavado
a8014b3942 Merge pull request #1540 from HelloWorld017/sami-fix
Fixed SMI Encoding Bug
2019-07-28 00:42:21 -04:00
dkanada
85b277b872 Merge pull request #1524 from Bond-009/ipaddress
Remove IpAddressInfo and IpEndPointInfo classes
2019-07-27 17:50:17 -07:00
Erik Larsson
a1efe4caca Add DLNA headers if requested by the client.
And remove the code which adds the headers as ResponseHelper.WriteToResponse
will do it.
2019-07-27 19:55:18 +02:00
crankdoofus
c6111a7fb5 Change service install user
The default is Network Service, with advanced option to use Local System
2019-07-27 20:23:22 +10:00
Anthony Lavado
80145cd5a3 Merge pull request #1562 from Bond-009/buffered
Don't copy the complete response stream
2019-07-27 03:01:34 -04:00
Anthony Lavado
d39decf918 Adds null check on studio/network name 2019-07-27 02:30:42 -04:00
crankdoofus
5517d912bf Rework based on review comments 2019-07-25 21:52:44 +10:00
crankdoofus
fbbcba95d3 Update installer name to copy 2019-07-25 21:51:53 +10:00
Bond_009
8270d0cc91 Move IPv6 scope id removal logic to it's own function 2019-07-25 00:23:56 +02:00
Bond_009
ddd1a282ea Remove IpAddressInfo and IpEndPointInfo classes 2019-07-25 00:15:06 +02:00
Bond_009
773af2eef9 Don't copy the complete response stream 2019-07-24 23:46:58 +02:00
Bond-009
e8028de4d7 Merge pull request #1560 from jellyfin/release-10.3.z
Backmerge for 10.3.7
2019-07-24 19:10:04 +02:00
Joshua M. Boniface
595a68b822 Bump version for 10.3.7 2019-07-24 10:48:35 -04:00
Vladimir Jendrol
18bc6c69d5 Translated using Weblate (Slovak)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/sk/
2019-07-22 22:28:01 -04:00
tluciomiranda
d56725a43d Translated using Weblate (Portuguese (Portugal))
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_PT/
2019-07-22 22:28:01 -04:00
Tradutor da Silva
b3aaa9216d Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2019-07-22 22:28:01 -04:00
vaheed
ea41155c6b Translated using Weblate (Persian)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/fa/
2019-07-22 22:28:01 -04:00
polVRtong
b337df889e Translated using Weblate (Korean)
Currently translated at 97.8% (92 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-07-22 22:28:01 -04:00
exveria1015
00c92e88c5 Translated using Weblate (Japanese)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ja/
2019-07-22 22:28:01 -04:00
Moritz
8c94187c75 Translated using Weblate (German)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/de/
2019-07-22 22:28:01 -04:00
Matsuri
cd504e6ee5 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-07-22 22:28:01 -04:00
ZhiGang Zhung
6e29b8ad6f Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hans/
2019-07-22 22:28:01 -04:00
ancarvalho
0d9cdb98f2 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/pt_BR/
2019-07-22 22:28:01 -04:00
Anthony Lavado
c5d9480313 Merge pull request #1552 from cvium/fix_livetv_v2
Disable buffering in HttpClient as it causes big requests to timeout
2019-07-22 02:28:38 -04:00
Erwin de Haan
67e32a2c44 Add Stale app configuration starting point
Link: https://github.com/apps/stale
2019-07-21 01:07:39 +02:00
Claus Vium
dadfc09c01 Add HttpCompletionOption.ResponseHeadersRead to the buffering option to avoid potentially having 2 copies in memory 2019-07-20 13:36:59 +02:00
Claus Vium
886c88576c Use HttpCompletionOption.ResponseHeadersRead and resort to Content-Length header for non-buffered content 2019-07-19 23:22:30 +02:00
Joshua M. Boniface
4ba33eb3e1 Merge pull request #1541 from joshuaboniface/fix-deb-rules
Override the Debian installinit name
2019-07-14 23:40:03 -04:00
Khinenw
59518ec87e Fixed SMI to SRT UTF-16 Encoding bug 2019-07-15 12:20:59 +09:00
Joshua M. Boniface
953f077f9d Override the installinit name
Without this, when building the `jellyfin-nightly` package, it attempts
to find service/init files with the name `jellyfin-nightly` instead of
the proper name. This override prevents this by forcing the name to
`jellyfin`. Required for nightly builds.
2019-07-14 23:11:17 -04:00
Joshua M. Boniface
cf2f5b2026 Merge pull request #1538 from joshuaboniface/epg
Try to fix XmlTvListingsProvider
2019-07-14 17:09:00 -04:00
Joshua M. Boniface
135c16c721 Merge pull request #1537 from joshuaboniface/contenttype
Properly set content type
2019-07-14 17:08:54 -04:00
Joshua M. Boniface
e94fa791a9 Merge pull request #1519 from Bond-009/mergefix
Fix merge errors
2019-07-13 17:32:45 -04:00
Bond_009
5d9fa06675 Cleanup 2019-07-13 17:18:39 -04:00
Bond_009
b294b802a8 Try to fix XmlTvListingsProvider 2019-07-13 17:18:27 -04:00
Bond_009
7bb504d491 Create a new HttpMethod from the function name 2019-07-13 17:12:06 -04:00
Bond_009
b1bd062709 Properly set content type 2019-07-13 17:12:06 -04:00
Joshua M. Boniface
0d3b399b61 Merge pull request #1536 from joshuaboniface/fix-symlinks
Fix broken symlinks in deployment
2019-07-13 15:26:48 -04:00
Joshua M. Boniface
0f8e2600e3 Fix broken symlinks
These were removed somehow in defc5f1cf9b486357b379c610663e1bad48428ad;
restore them to their proper link state.
2019-07-13 14:23:57 -04:00
Joshua M. Boniface
3d71e9b509 Merge pull request #1534 from joshuaboniface/nightly-deb-fix
Use dash or underscore on mv command
2019-07-13 13:29:32 -04:00
Joshua M. Boniface
881f385a61 Use dash or underscore on mv command
Required for nightlies, which would not match this file format with the
underscore then wildcard. Enables nightly builds.
2019-07-13 13:03:50 -04:00
crankdoofus
e31851d25e Update to uninstall silently if already installed 2019-07-13 21:16:56 +10:00
crankdoofus
aff72323c6 Update code for in-place upgrades 2019-07-09 22:56:23 +10:00
Bond-009
a31a396780 Merge pull request #1518 from jellyfin/EraYaN-azp-grant-auth
Update the GitHub token to a Grant Auth token
2019-07-07 12:25:58 +02:00
crankdoofus
8555c5fae1 Correct comment 2019-07-07 09:17:03 +10:00
crankdoofus
da71354e82 Remove Emby migration section, include License 2019-07-07 09:13:27 +10:00
crankdoofus
3d0e7f6cb6 Include License file with installation 2019-07-07 09:10:35 +10:00
Bond_009
c7d12cc481 Fix merge errors 2019-07-07 00:43:43 +02:00
Erwin de Haan
440177a43d Update the GitHub token to a Grant Auth token. 2019-07-07 00:20:37 +02:00
Bond-009
953eb6e906 Merge pull request #1517 from jellyfin/EraYaN-azp-github-token-name
Update the GitHub connection name to use the GitHub App token
2019-07-07 00:08:27 +02:00
Erwin de Haan
fc55b44e4b Update the GitHub connection name to use the GitHub App token 2019-07-07 00:03:59 +02:00
Bond-009
f2a56fcd80 Merge pull request #1516 from jellyfin/EraYaN-vacuum-merge-fix
Move VACUUM command to fix merge error
2019-07-06 23:57:27 +02:00
Erwin de Haan
0dbc294836 Move VACUUM command to fix merge error
This fixes a syntax error.
2019-07-06 23:50:06 +02:00
Joshua M. Boniface
3b49c1bac0 Merge pull request #1515 from jellyfin/release-10.3.z
Backmerge for 10.3.6
2019-07-06 17:48:48 -04:00
Bond-009
82f041d050 Merge branch 'master' into release-10.3.z 2019-07-06 23:08:52 +02:00
Joshua M. Boniface
4f17ed961e Merge pull request #1514 from Bond-009/httpclient2
Fix issues with HttpClientManager
2019-07-06 17:01:35 -04:00
Joshua M. Boniface
ba551b48e1 Merge pull request #1111 from EraYaN/azp-hardcoded-try
Azure Pipelines DownloadBuildArtifacts@0 Experiment
2019-07-06 14:21:35 -04:00
Bond_009
5fc4ad6c4e Address comments 2019-07-06 20:04:45 +02:00
Bond_009
b117b364f2 Remove duplicate code 2019-07-06 20:04:45 +02:00
Bond_009
3603c64fa6 Use HttpResponseHeaders instead of a dictionary 2019-07-06 20:04:45 +02:00
Bond_009
d405a400aa Fixes issues with HttpClientManager 2019-07-06 20:04:42 +02:00
Joshua M. Boniface
54c6f02ebb Merge pull request #1455 from ferferga/release-10.3.z
Vacuum databases at startup
2019-07-06 13:57:18 -04:00
Joshua M. Boniface
b3f9d04501 Bump version for 10.3.6 2019-07-06 13:34:38 -04:00
Bond_009
ab7ef9c9cb Fix style issues 2019-07-06 16:15:38 +02:00
Bond_009
0f897589ed Streamline authentication proccess 2019-07-06 14:52:24 +02:00
crankdoofus
cea6a2217e Correct Service handling & LocalAppData folder
The service is now completely controlled by nssm as with the install-jellyfin.ps1
The LocalAppData had the global context, its now 
Corrected order of Mandatory and Optional components.
2019-07-06 18:34:48 +10:00
crankdoofus
dc3eceec6a Changed order to include install scripts in installer 2019-07-06 18:02:00 +10:00
crankdoofus
a6819ffd1d Cleaned up code 2019-07-06 12:19:57 +10:00
crankdoofus
de9ee10abc Uncomment accidental commenting of compilation 2019-07-06 12:18:20 +10:00
crankdoofus
43989800ba Added -Force to nsis extraction 2019-07-06 12:16:34 +10:00
crankdoofus
1fd827fa77 Create jellyfin.nsi 2019-07-06 11:43:20 +10:00
crankdoofus
3b9766f58c Added option for NSIS
This change will 
1. download NSIS zip, 
2. unzip in temp folder, 
3. use nsis to build the installer
2019-07-06 11:41:33 +10:00
Erwin de Haan
2c8df07753 Fix some task names. 2019-07-05 13:03:34 +02:00
Erwin de Haan
08421311b9 Switch download order around. 2019-07-05 12:10:57 +02:00
Erwin de Haan
dc68fa2c8b Disable seperate build and restore. 2019-07-05 12:06:01 +02:00
Erwin de Haan
ff373621b3 Switch to next gen artifacts. 2019-07-05 12:02:35 +02:00
Erwin de Haan
272691aacd Switched to specific download. 2019-07-05 11:37:14 +02:00
Erwin de Haan
46623bc985 Try with hardcoded name. 2019-07-05 11:32:25 +02:00
Erwin de Haan
3462147195 Switched to latest ubuntu image and hardcoded definitionId. 2019-07-05 11:17:48 +02:00
Erwin de Haan
268fe5efe8 Small attempts at making previous build downloads work. 2019-07-05 11:11:46 +02:00
dkanada
0e0c70f782 Merge pull request #1505 from trumblejoe/patch-1
Qualified Namespace of pscredential
2019-07-04 20:18:46 -07:00
Erwin de Haan
acf52b9b55 Cleanup extra spaces. 2019-07-04 20:55:49 +02:00
Erwin de Haan
7587fe56d8 Moved VACUUM down to the end of the list. 2019-07-04 20:54:57 +02:00
Anthony Lavado
ab34a95142 Merge pull request #1473 from DrPandemic/apply-deprecation-WebRequest-on-10.3.z
Apply deprecation web request on 10.3.z
2019-07-04 14:51:24 -04:00
dkanada
9e9952d81f Merge pull request #1247 from bugfixin/master
Adjust detection of 'sample' in filenames to use regex boundaries
2019-07-04 11:38:01 -07:00
dkanada
4f2d601f02 Merge pull request #1167 from Bond-009/eol
Force LF line endings
2019-07-02 13:02:29 -07:00
dkanada
e722801f80 Merge pull request #956 from Bond-009/db
Simplify db code
2019-07-02 11:56:13 -07:00
dkanada
6cf9204219 Merge pull request #1500 from dkanada/password
Add optional password field on user creation
2019-07-02 11:55:44 -07:00
trumblejoe
b719ca5a33 Qualified Namespace of pscredential
Qualified Namespace of pscredential, otherwise script fails in Powershell builds <3.0.
2019-07-02 13:29:28 -04:00
Bond_009
29ae7b9aeb Add docs 2019-07-01 18:24:35 +02:00
Bond_009
45c13141f9 Address comments 2019-07-01 17:59:01 +02:00
dkanada
9079b3e8da add optional password field on user creation 2019-06-30 01:58:01 -07:00
Andrew Rabert
0ee40cb636 Merge pull request #1495 from joshuaboniface/better-restart-script
Add nicer restart script
2019-06-29 19:48:54 -04:00
Joshua M. Boniface
62105c249f Use which to find the service binary path 2019-06-28 11:15:08 -04:00
Joshua M. Boniface
a629f209b9 Make message wording more consistent 2019-06-28 11:06:55 -04:00
Bond_009
ecb8d8991b Fix whitespace 2019-06-28 12:22:33 +02:00
Bond_009
2e4c0fee77 Add removed line 2019-06-28 12:16:51 +02:00
Bond_009
d961278b3d Reduce amount of raw sql 2019-06-28 12:14:27 +02:00
Bond_009
db2765aae5 Last bit of cleanup 2019-06-28 12:14:27 +02:00
Bond_009
7898af4ceb Reworked PRAGMA statements use 2019-06-28 12:14:27 +02:00
Bond_009
edfd2d0cd9 Fix startup 2019-06-28 12:14:27 +02:00
Bond_009
d00ad28efd Address comments 2019-06-28 12:14:27 +02:00
Bond-009
02b864e41b Last line? 2019-06-28 12:14:27 +02:00
Bond-009
e88ebd748d Final fixes 2019-06-28 12:14:27 +02:00
Bond-009
b6954f3bfd More 2019-06-28 12:14:27 +02:00
Bond-009
27c29bbb4c Back to a single connection 2019-06-28 12:13:34 +02:00
Bond-009
30842656a7 Properly dispose 2019-06-28 12:12:54 +02:00
Bond-009
e5248cfaa2 Properly dispose 2019-06-28 12:12:54 +02:00
Bond-009
c30ba14c1f Use a connection pool instead of creating new connections 2019-06-28 12:12:54 +02:00
Bond-009
cec22ad10d Simplify db code 2019-06-28 12:12:54 +02:00
Joshua M. Boniface
c08c0272b5 Add nicer restart script
The old restart script was buggy, as reported in #1320. This updated
script seems to work far more reliably and conforms to the existing
jellyfin-sudoers packages sudo configuration.
2019-06-27 18:05:03 -04:00
dkanada
c52e8a2027 Merge pull request #1394 from joern-h/bugfix-issue1347
Check if an item is a child of an EnabledFolder
2019-06-26 01:19:34 -07:00
Jörn
1fd8164756 fix issue #1347 introduced in pr #930 2019-06-26 01:13:54 -07:00
dkanada
b3b08fecb2 Merge pull request #1453 from Bond-009/cleanup2
Improve main code flow
2019-06-26 01:03:09 -07:00
dkanada
3c16c34386 Merge pull request #1485 from DrPandemic/fix-skia-segfault
Fix skia segfault
2019-06-25 12:44:29 -05:00
DrPandemic
394d96246b Check path before opening image 2019-06-24 20:13:07 -04:00
Andrew Rabert
fc439cc02a Merge pull request #1448 from joshuaboniface/nice-userconfig-paths
Use the username for the user config path
2019-06-24 12:54:24 -04:00
SenorSmartyPants
18e6cd429a Update TVDB provider to search based on series display order 2019-06-22 16:11:47 -05:00
dkanada
1b2621cd30 Merge pull request #1454 from Bond-009/webresource
Simplify file serving code
2019-06-21 23:33:37 -07:00
Anthony Lavado
084854d71d Merge pull request #1478 from cvium/fix_tvdb_again
Wait for the async authentication to finish when the JTW token expires
2019-06-22 02:08:46 -04:00
Claus Vium
c2ab0ad641 Wait for the async authentication to finish when the JTW token expires 2019-06-21 19:08:04 +02:00
dkanada
dbc2cda9d4 Merge pull request #1369 from teacupx/master
Enable Exynos MFC encoder and fix transcoding bitrate control
2019-06-20 16:55:09 -07:00
dkanada
65fa61a636 add comment explaining GetMinBitrate 2019-06-20 16:44:27 -07:00
Erwin de Haan
04784b4e43 Create Media Playback issue template (#1451)
Added media playback issue template. We might want to add some more information requests in there.
2019-06-19 12:41:52 -04:00
Claus Vium
7eb94e9674 Update MediaBrowser.Common/Net/IHttpClient.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-06-18 22:21:07 -04:00
Bond-009
0a5550b13d Remove more unused stuff 2019-06-18 22:20:34 -04:00
Bond-009
067200be83 Remove usage of depricated 'WebRequest'
Ref: https://docs.microsoft.com/en-us/dotnet/api/system.net.webrequest?view=netframework-4.7.2
2019-06-17 19:35:05 -04:00
Joshua M. Boniface
2baddc1709 Merge pull request #1463 from Bond-009/deps
Update deps
2019-06-14 15:43:59 -04:00
Bond_009
5554595255 Update deps 2019-06-14 18:49:57 +02:00
Bond_009
65a0ca2f32 Improvements to InstallationManager 2019-06-14 18:38:14 +02:00
Anthony Lavado
d4a42a1680 Merge pull request #1080 from Bond-009/httpclient
Remove usage of deprecated 'WebRequest'
2019-06-14 09:19:56 -04:00
Bond-009
af099a9b53 Update Emby.Server.Implementations/ApplicationHost.cs
Co-Authored-By: Jean-Samuel Aubry-Guzzi <DrPandemic@users.noreply.github.com>
2019-06-14 08:21:06 +02:00
Bond-009
6ebac0e500 Update Emby.Server.Implementations/ApplicationHost.cs
Co-Authored-By: Jean-Samuel Aubry-Guzzi <DrPandemic@users.noreply.github.com>
2019-06-14 08:20:52 +02:00
Anthony Lavado
b25c08e79a Merge pull request #1156 from Bond-009/sep
Small cleanups here and there
2019-06-13 22:27:00 -04:00
Bond-009
8fd47dd658 Merge pull request #1457 from TrisMcC/fix-path-substitution-1446
Stop path substitution in SubtitleEncoder - Fix #1446
2019-06-13 15:18:01 +02:00
Joshua M. Boniface
687255aa31 Merge pull request #1442 from jellyfin/release-10.3.z
Backmerge for Release 10.3.4 and 10.3.5
2019-06-12 23:30:57 -04:00
Tristan McCann
5c1fbfca03 Stop path substitution in SubtitleEncoder
This fixes jellyfin/jellyfin#1446. I am not an expert in this section of
code, but I cannot think of a need to do path substitution during
subtitle encoding.
2019-06-11 21:36:42 -04:00
ferferga
b136f14084 Vacuum databases at startup 2019-06-10 11:31:38 +02:00
Joshua M. Boniface
d5fe82314e Bump version for 10.3.5 2019-06-09 21:47:45 -04:00
Bond_009
253e72f667 Simplify file serving code 2019-06-10 00:53:16 +02:00
Bond_009
aa30227545 Improve main code flow
Improved the way how some parts of the code depend on eachother
Fixed some style issues
2019-06-09 23:51:52 +02:00
Joshua M. Boniface
06834fefef Merge pull request #1447 from joshuaboniface/implement-invalidauth
Implement InvalidAuthProvider
2019-06-09 15:36:25 -04:00
Joshua M. Boniface
2946ae1009 Revert "Don't set a default reset provider"
This reverts commit c230d49d7c.

This reenables an edge case where an admin might want to reset, with
the default auth provider, the password of an externally-provided
user so they could "unlock" the account while it was failing. There
might be minor security implications to this, but the malicious
actor would need FS access to do it (as they would with any password
resets) so it's probably best to keep it as-is.

Removing this in the first place was due to a misunderstanding
anyways so no harm.
2019-06-09 15:29:43 -04:00
Joshua M. Boniface
4b8f735cb8 Remove superfluous conditional
This wasn't needed to prevent updating the policy on-disk from my
tests and can be removed as suggested by @Bond-009
2019-06-09 13:57:49 -04:00
Joshua M. Boniface
c230d49d7c Don't set a default reset provider 2019-06-09 13:46:53 -04:00
Joshua M. Boniface
20e2cb2d86 Use SecurityException for auth failure 2019-06-09 13:45:51 -04:00
Joshua M. Boniface
b70083f3b3 Apply suggestions from code review
Co-Authored-By: Claus Vium <cvium@users.noreply.github.com>
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-06-09 13:41:14 -04:00
Joshua M. Boniface
74ef389879 Add nicer log message and comment 2019-06-09 11:07:35 -04:00
Joshua M. Boniface
d1d0ddf62f Use the username for the user config path
Use the username to construct the UserConfigurationDirectory,
instead of the user ID, and move the old ID-based path to the new
path if needed when loading (temporary transitional code). Removes
administrator guesswork as to what user each directory belongs to,
which I found very annoying when investigating user configs.
2019-06-08 23:54:26 -04:00
Joshua M. Boniface
d78a55adb4 Implement InvalidAuthProvider
Implements the InvalidAuthProvider, which acts as a fallback if a
configured authentication provider, e.g. LDAP, is unavailable due
to a load failure or removal. Until the user or the authentication
plugin is corrected, this will cause users with the missing provider
to be locked out, while throwing errors in the logs about the issue.

Fixes #1445 part 2
2019-06-08 22:54:31 -04:00
Bond_009
77ecb0a70c Make script executable again 2019-06-08 19:57:46 +02:00
Bond-009
cb07822aa3 Add execute permissions back 2019-06-08 19:56:08 +02:00
Bond_009
defc5f1cf9 Force LF line endings 2019-06-08 19:56:08 +02:00
Andrew Rabert
6f99ed3955 Merge pull request #1443 from jellyfin/qemu
Docker - Update arm* Dockerfiles for latest multiarch
2019-06-07 18:41:35 -04:00
Andrew Rabert
247a5e12ab Docker - Update arm* Dockerfiles for latest multiarch
Relates to this change 7bdafb96ee
2019-06-07 00:00:14 -04:00
Joshua M. Boniface
855911333a Bump version for 10.3.4 2019-06-06 22:45:37 -04:00
Anthony Lavado
127bfc7d3b Merge pull request #1437 from pjeanjean/master
Fix issue #1436: media folders appear empty unless user has all libraries access
2019-06-06 17:21:20 -04:00
pjeanjean
7919dd81da Skip user permission checking for UserRootFolder
Fix #1436
UserRootFolders are used to represent virtual folders that exist outside
of libraries. As such, it doesn't make sense to check if a user has the
right to access their library (named `Media Folders`).
2019-06-06 08:30:56 +02:00
Bond-009
e3a3aebbf6 Merge pull request #1440 from cvium/fix-build
Change UsCulture to InvariantCulture
2019-06-05 21:31:09 +02:00
Claus Vium
c05b7c382a Change UsCulture to InvariantCulture 2019-06-05 20:59:06 +02:00
Anthony Lavado
d7aaa1489c Merge pull request #1427 from dkanada/fanart
Move fanart image provider to plugin
2019-06-05 01:19:54 -04:00
Anthony Lavado
aee3360841 Merge pull request #1366 from Bond-009/warn3
Fix more warnings
2019-06-05 01:17:21 -04:00
Anthony Lavado
256f44a870 Merge pull request #994 from Bond-009/tasks
Remove Tasks wrapped in a Task
2019-06-05 01:11:25 -04:00
Anthony Lavado
f631b2ecdc Merge pull request #1159 from Bond-009/streamjob
Trying to make sense of the streaming code
2019-06-04 00:20:43 -04:00
Anthony Lavado
a623dd1921 Merge pull request #1368 from dkanada/drives
Only return useful drives
2019-06-04 00:19:35 -04:00
dkanada
b768ad978e split the new command to more than one line 2019-06-02 21:49:12 -07:00
Juvenal Yescas
6b6776042c Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es_MX/
2019-06-01 20:50:19 -04:00
Julio García
4adaeee054 Translated using Weblate (Spanish)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/es/
2019-06-01 20:50:19 -04:00
Hyunsu Nam
a2d9420139 Translated using Weblate (Korean)
Currently translated at 97.8% (92 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ko/
2019-06-01 20:50:19 -04:00
exveria1015
3431a85adf Translated using Weblate (Japanese)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/ja/
2019-06-01 20:50:18 -04:00
dracocephalum
430483c7a1 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/zh_Hant/
2019-06-01 20:50:16 -04:00
Frank
3ba709fcc3 Fix #1432. Add support for encoding with libx265 and hevc_nvenc. 2019-06-01 15:46:41 -07:00
Bond-009
ce1fa42f9d Merge branch 'master' into tasks 2019-06-01 17:06:01 +02:00
Bond_009
08ac5b6ec3 Fix build 2019-06-01 11:34:28 +02:00
Bond-009
a6f9ceedd8 Fix more warnings 2019-06-01 11:31:27 +02:00
Anthony Lavado
e1da046960 Merge pull request #1426 from jellyfin/cvium-fix-tvdb-refresh
Fix inverted comparison in the tvdb token refresh logic
2019-05-31 21:27:33 -04:00
dkanada
09dfa071dc move fanart image provider to plugin 2019-05-31 01:48:20 -07:00
Claus Vium
a756026962 Fix inverted comparison in the tvdb token refresh logic 2019-05-31 07:24:52 +02:00
Anthony Lavado
75260a960b Merge pull request #1406 from DrPandemic/fix-pin-update
Format the PIN when updating it
2019-05-31 00:58:53 -04:00
exveria1015
b1f764984f Added translation using Weblate (Japanese) 2019-05-30 18:28:11 -04:00
DrPandemic
69ee49bee6 Format correctly the PIN when updating it 2019-05-25 13:46:55 -04:00
erikasne6152
2aed2d164b Translated using Weblate (Lithuanian)
Currently translated at 100.0% (94 of 94 strings)

Translation: Jellyfin/Jellyfin
Translate-URL: https://translate.jellyfin.org/projects/jellyfin/jellyfin-core/lt/
2019-05-24 14:28:14 -04:00
Bond-009
2d011b781e Merge pull request #1383 from jellyfin/release-10.3.z
Backmerge for Release 10.3.3
2019-05-18 12:56:42 +02:00
dkanada
4a9b349c04 only return useful drives 2019-05-16 16:45:56 -07:00
Joshua M. Boniface
71f81c5fb0 Merge pull request #1367 from Bond-009/photo
Ignore casing photo extensions
2019-05-14 21:25:46 -04:00
JMCC
012e4a3e63 Fix transcode bitrate control 2019-05-11 17:19:20 +02:00
JMCC
5d85076ad5 Enable Exynos V4L2-m2m HW encoder 2019-05-11 17:17:32 +02:00
Bond-009
35d7e97258 Ignore casing photo extensions 2019-05-11 11:55:41 +02:00
Joshua M. Boniface
89537abdc4 Merge pull request #1293 from Bond-009/query-time
Fix query time logging
2019-05-10 09:19:05 -04:00
Anthony Lavado
abfc41f382 Merge pull request #1363 from joshuaboniface/readme
Update getting-help link in README
2019-05-09 23:44:47 -04:00
Joshua Boniface
84ac6ea12a Update getting-help link in README 2019-05-09 18:57:40 -04:00
Bond-009
d9c159122f Merge pull request #1229 from voodoos/cleanup/SocketSharp
Cleaning WebSocketSharp continued
2019-05-09 17:16:51 +02:00
Joshua M. Boniface
2bc378a9c3 Merge pull request #1337 from jellyfin/release-10.3.z
Backmerge for 10.3.2 release
2019-04-30 23:35:11 -04:00
Bond-009
61d7bed181 Merge pull request #1304 from jellyfin/release-10.3.z
Backmerge 10.3.1
2019-04-25 07:27:37 +02:00
Bond_009
a9337033c1 Fix query time logging 2019-04-24 15:25:22 +02:00
Bond-009
a0e61ee67f Merge pull request #1274 from bugfixin/content-type-fix
Prevent null reference when request content type is x-www-form-urlencoded
2019-04-24 14:54:18 +02:00
bugfixin
08d3a5d2fe Fix null reference when request content type is application/x-www-form-urlencoded 2019-04-21 19:29:05 +00:00
Bond-009
a8da122fb3 Merge pull request #1252 from jellyfin/release-10.3.z
Backmerge release 10.3.0
2019-04-20 12:25:29 +02:00
bugfixin
da842d5a73 Fix incorrect escaping in regex pattern 2019-04-19 18:35:28 +00:00
bugfixin
0794a3edf4 Adjust detection of 'sample' in filenames to use regex boundaries 2019-04-19 17:53:51 +00:00
Anthony Lavado
7bea62adbf Merge pull request #1245 from Bond-009/updateevent
Remove unused event
2019-04-18 14:16:48 -04:00
Bond-009
8f703f4744 Remove unused event
Release builds were failing because of this unused event.
2019-04-18 13:19:16 +02:00
Joshua M. Boniface
c3532b92f7 Merge pull request #1158 from Bond-009/httpclean
Reduce complexity http routes
2019-04-17 22:12:17 -04:00
Joshua M. Boniface
0539861dc0 Merge pull request #1182 from Bond-009/deepcopy
Speed up DeepCopy
2019-04-17 22:11:53 -04:00
Joshua M. Boniface
deedf2a36c Merge pull request #1224 from Terror-Gene/patch-1
Fix missing Unraid cache mount and name capitalization
2019-04-17 22:11:30 -04:00
Bond-009
e89c8dbf76 Use CultureInfo.InvariantCulture 2019-04-17 15:23:03 +02:00
Anthony Lavado
b031a55a59 Merge pull request #1225 from DrPandemic/update-build-path-help
Fix help message to indicate the right output folder
2019-04-16 16:20:12 -04:00
DrPandemic
65f9141764 Update the help message to indicate the right output folder 2019-04-15 17:51:26 -04:00
VooDooS
ba12d96d23 Removed wrapping of HeaderNames fields 2019-04-12 15:25:18 +02:00
VooDooS
bb807554e2 Replace CRLF injection mitigation by use of .NET ip parsing 2019-04-12 13:48:12 +02:00
VooDooS
56d1050bac Replace custom ip "normalization" by methods from IPAddress 2019-04-11 17:49:18 +02:00
VooDooS
a6e1b23eb0 Simplify headers use in WSS 2019-04-11 17:49:14 +02:00
VooDooS
5f6ab836de Extend Microsoft.Net.Http.Headers.HeaderNames 2019-04-11 15:35:06 +02:00
Terror-Gene
a9f790e101 Fix directory capitalization 2019-04-11 04:00:46 +09:30
Terror-Gene
f888c4b641 Fix missing Unraid cache mount
Cache folder was not mounted outside of the Docker image since its separation from the config folder.
Config HostDir was only updated for consistency, previous directory was overridden by unraid into the appdata/appname folder anyway.
Name capitalization was corrected as this is only used by new installations & does not affect current installations/updates.
2019-04-11 03:19:05 +09:30
Ulysse
a1d50a6d05 Clean WebSocketSharpRequest.PathInfo (#1212)
* rm useless ResolvePathInfoFromMappedPath method

* rm useless NormalizePathInfo method

* Use request.Path instead of RawUrl

* Removing unused `HandlerFactoryPath` field

* Use an  expression body definition and rm field `pathInfo`

* More (syntactic) sugar

* Who needs blocks in cases ?
2019-04-09 20:19:27 +02:00
Anthony Lavado
d7df2ac60c Merge pull request #1210 from DrPandemic/fix-readme-link
Fix README documentation link
2019-04-09 12:23:07 -04:00
Bond-009
dcae3daf43 Merge pull request #1218 from EraYaN/disable-azure-ci-compatcheck
Disable dotnet_compat part of pipeline
2019-04-09 07:45:15 +02:00
Andrew Rabert
941ee53e7a Merge pull request #1211 from Terror-Gene/patch-2
Update Unraid Docker icon
2019-04-08 18:53:57 -04:00
Erwin de Haan
7b4e16bb8f Disabled dotnet_compat part of pipeline. 2019-04-09 00:43:25 +02:00
Terror-Gene
c72393c970 Updated Unraid Docker icon
Logo was set to use emby, but binhex has since added the jellyfin logo.
2019-04-08 14:56:42 +09:30
DrPandemic
f96d1e9e69 Fix README documentation link 2019-04-07 22:26:27 -04:00
Bond-009
2f33e99006 Speed up DeepCopy 2019-04-02 18:17:50 +02:00
Vasily
79d9b8e693 Merge pull request #1168 from Bond-009/io
Improve IO code
2019-04-01 16:20:23 +03:00
Vasily
91e3b3b491 Merge pull request #1176 from Bond-009/namingdep
Remove unused dependency for Emby.Naming
2019-04-01 16:19:44 +03:00
Bond_009
f2e2065fd4 Remove unused dependency for Emby.Naming 2019-03-31 15:25:30 +02:00
Bond_009
f911fda34f Merge ifs 2019-03-29 20:34:42 +01:00
Bond_009
41df562419 Improve IO code
* Style changes
* Remove remnants of SMB support
* Use `GetInvalidFileNameChars` instead of rolling our own
* Remove possible unexpected behaviour with async file streams
* Remove some dead code
2019-03-28 23:26:43 +01:00
Bond-009
73a9079ee2 Merge branch 'master' into httpclient 2019-03-27 19:43:02 +01:00
Bond_009
9aaeb19418 Self-documenting code 2019-03-27 17:05:08 +01:00
Claus Vium
be86ea2982 Update MediaBrowser.Common/Net/IHttpClient.cs
Co-Authored-By: Bond-009 <bond.009@outlook.com>
2019-03-27 16:34:56 +01:00
Bond-009
d0fbd260d5 Merge branch 'master' into httpclient 2019-03-27 16:34:26 +01:00
Bond_009
b69b19ddce Move messageId out of outer loop 2019-03-27 16:28:52 +01:00
Bond_009
b647959ec4 Add EnableOutputInSubFolder back 2019-03-27 16:26:33 +01:00
Bond_009
6c0e2e249d Even more duplicate code removed 2019-03-27 16:13:36 +01:00
Bond_009
8ed5d154b7 Remove duplicate code 2019-03-27 16:07:08 +01:00
Bond_009
157a86d0f1 Remove dead code 2019-03-27 12:43:46 +01:00
Bond_009
ca37ca291f More style changes 2019-03-26 23:06:38 +01:00
Bond_009
93e535d3a1 Trying to make sense of the streaming code
Mostly small changes as I was looking through the code.

* async void -> async Task
* Properly implemented dispose methods
* Pass the logstream directly to the JobLogger
* Style fixes
2019-03-26 23:00:14 +01:00
Bond-009
a332092769 Reduce complexity http routes 2019-03-26 19:20:40 +01:00
Bond_009
2696ac5eac Lower the amount of running tasks 2019-03-25 21:33:48 +01:00
Bond-009
6566c91360 Seperate changes from #1023
The unrelated changes from #1023 (and more)
2019-03-25 21:27:03 +01:00
Bond-009
7f42dcc60f Remove more unused stuff 2019-03-08 20:32:14 +01:00
Bond-009
369785c184 Remove usage of depricated 'WebRequest'
Ref: https://docs.microsoft.com/en-us/dotnet/api/system.net.webrequest?view=netframework-4.7.2
2019-03-08 20:17:17 +01:00
1402 changed files with 30424 additions and 45351 deletions

View File

@@ -0,0 +1,96 @@
parameters:
- name: Packages
type: object
default: {}
- name: LinuxImage
type: string
default: "ubuntu-latest"
- name: DotNetSdkVersion
type: string
default: 3.1.100
jobs:
- job: CompatibilityCheck
displayName: Compatibility Check
pool:
vmImage: "${{ parameters.LinuxImage }}"
# only execute for pull requests
condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber'])
strategy:
matrix:
${{ each Package in parameters.Packages }}:
${{ Package.key }}:
NugetPackageName: ${{ Package.value.NugetPackageName }}
AssemblyFileName: ${{ Package.value.AssemblyFileName }}
maxParallel: 2
dependsOn: MainBuild
steps:
- checkout: none
- task: UseDotNet@2
displayName: "Update DotNet"
inputs:
packageType: sdk
version: ${{ parameters.DotNetSdkVersion }}
- task: DownloadPipelineArtifact@2
displayName: "Download New Assembly Build Artifact"
inputs:
source: "current"
artifact: "$(NugetPackageName)"
path: "$(System.ArtifactsDirectory)/new-artifacts"
runVersion: "latest"
- task: CopyFiles@2
displayName: "Copy New Assembly Build Artifact"
inputs:
sourceFolder: $(System.ArtifactsDirectory)/new-artifacts
contents: "**/*.dll"
targetFolder: $(System.ArtifactsDirectory)/new-release
cleanTargetFolder: true
overWrite: true
flattenFolders: true
- task: DownloadPipelineArtifact@2
displayName: "Download Reference Assembly Build Artifact"
inputs:
source: "specific"
artifact: "$(NugetPackageName)"
path: "$(System.ArtifactsDirectory)/current-artifacts"
project: "$(System.TeamProjectId)"
pipeline: "$(System.DefinitionId)"
runVersion: "latestFromBranch"
runBranch: "refs/heads/$(System.PullRequest.TargetBranch)"
- task: CopyFiles@2
displayName: "Copy Reference Assembly Build Artifact"
inputs:
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts
contents: "**/*.dll"
targetFolder: $(System.ArtifactsDirectory)/current-release
cleanTargetFolder: true
overWrite: true
flattenFolders: true
- task: DownloadGitHubRelease@0
displayName: "Download ABI Compatibility Check Tool"
inputs:
connection: Jellyfin Release Download
userRepository: EraYaN/dotnet-compatibility
defaultVersionType: "latest"
itemPattern: "**-ci.zip"
downloadPath: "$(System.ArtifactsDirectory)"
- task: ExtractFiles@1
displayName: "Extract ABI Compatibility Check Tool"
inputs:
archiveFilePatterns: "$(System.ArtifactsDirectory)/*-ci.zip"
destinationFolder: $(System.ArtifactsDirectory)/tools
cleanDestinationFolder: true
# The `--warnings-only` switch will swallow the return code and not emit any errors.
- task: CmdLine@2
displayName: "Execute ABI Compatibility Check Tool"
inputs:
script: "dotnet tools/CompatibilityCheckerCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName) --azure-pipelines --warnings-only"
workingDirectory: $(System.ArtifactsDirectory)

View File

@@ -0,0 +1,101 @@
parameters:
LinuxImage: "ubuntu-latest"
RestoreBuildProjects: "Jellyfin.Server/Jellyfin.Server.csproj"
DotNetSdkVersion: 3.1.100
jobs:
- job: MainBuild
displayName: Main Build
strategy:
matrix:
Release:
BuildConfiguration: Release
Debug:
BuildConfiguration: Debug
maxParallel: 2
pool:
vmImage: "${{ parameters.LinuxImage }}"
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: true
- task: CmdLine@2
displayName: "Clone Web Client (Master, Release, or Tag)"
condition: and(succeeded(), or(contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
script: "git clone --single-branch --branch $(Build.SourceBranchName) --depth=1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
- task: CmdLine@2
displayName: "Clone Web Client (PR)"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest'))
inputs:
script: "git clone --single-branch --branch $(System.PullRequest.TargetBranch) --depth 1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
- task: NodeTool@0
displayName: "Install Node"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
versionSpec: "10.x"
- task: CmdLine@2
displayName: "Build Web Client"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
script: yarn install
workingDirectory: $(Agent.TempDirectory)/jellyfin-web
- task: CopyFiles@2
displayName: "Copy Web Client"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), eq(variables['BuildConfiguration'], 'Release'), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
sourceFolder: $(Agent.TempDirectory)/jellyfin-web/dist
contents: "**"
targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
cleanTargetFolder: true
overWrite: true
flattenFolders: false
- task: UseDotNet@2
displayName: "Update DotNet"
inputs:
packageType: sdk
version: ${{ parameters.DotNetSdkVersion }}
- task: DotNetCoreCLI@2
displayName: "Publish Server"
inputs:
command: publish
publishWebProjects: false
projects: "${{ parameters.RestoreBuildProjects }}"
arguments: "--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)"
zipAfterPublish: false
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Naming"
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: "$(build.artifactstagingdirectory)/Jellyfin.Server/Emby.Naming.dll"
artifactName: "Jellyfin.Naming"
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Controller"
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: "$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Controller.dll"
artifactName: "Jellyfin.Controller"
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Model"
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: "$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Model.dll"
artifactName: "Jellyfin.Model"
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Common"
condition: and(succeeded(), eq(variables['BuildConfiguration'], 'Release'))
inputs:
targetPath: "$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Common.dll"
artifactName: "Jellyfin.Common"

View File

@@ -0,0 +1,65 @@
parameters:
- name: ImageNames
type: object
default:
Linux: "ubuntu-latest"
Windows: "windows-latest"
macOS: "macos-latest"
- name: TestProjects
type: string
default: "tests/**/*Tests.csproj"
- name: DotNetSdkVersion
type: string
default: 3.1.100
jobs:
- job: MainTest
displayName: Main Test
strategy:
matrix:
${{ each imageName in parameters.ImageNames }}:
${{ imageName.key }}:
ImageName: ${{ imageName.value }}
maxParallel: 3
pool:
vmImage: "$(ImageName)"
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: false
- task: UseDotNet@2
displayName: "Update DotNet"
inputs:
packageType: sdk
version: ${{ parameters.DotNetSdkVersion }}
- task: DotNetCoreCLI@2
displayName: Run .NET Core CLI tests
inputs:
command: "test"
projects: ${{ parameters.TestProjects }}
arguments: '--configuration Release --collect:"XPlat Code Coverage" --settings tests/coverletArgs.runsettings --verbosity minimal "-p:GenerateDocumentationFile=False"'
publishTestResults: true
testRunTitle: $(Agent.JobName)
workingDirectory: "$(Build.SourcesDirectory)"
- task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) # !! THIS is for V1 only V2 will/should support merging
displayName: ReportGenerator (merge)
inputs:
reports: "$(Agent.TempDirectory)/**/coverage.cobertura.xml"
targetdir: "$(Agent.TempDirectory)/merged/"
reporttypes: "Cobertura"
## V2 is already in the repository but it does not work "wrong number of segments" YAML error.
- task: PublishCodeCoverageResults@1
condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) # !! THIS is for V1 only V2 will/should support merging
displayName: Publish Code Coverage
inputs:
codeCoverageTool: "cobertura"
#summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml' # !!THIS IS FOR V2
summaryFileLocation: "$(Agent.TempDirectory)/merged/**.xml"
pathToSources: $(Build.SourcesDirectory)
failIfCoverageEmpty: true

View File

@@ -0,0 +1,82 @@
parameters:
WindowsImage: "windows-latest"
TestProjects: "tests/**/*Tests.csproj"
DotNetSdkVersion: 3.1.100
jobs:
- job: PublishWindows
displayName: Publish Windows
pool:
vmImage: ${{ parameters.WindowsImage }}
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: true
- task: CmdLine@2
displayName: "Clone Web Client (Master, Release, or Tag)"
condition: and(succeeded(), or(contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master'), contains(variables['Build.SourceBranch'], 'tag')), in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
script: "git clone --single-branch --branch $(Build.SourceBranchName) --depth=1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
- task: CmdLine@2
displayName: "Clone Web Client (PR)"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest'))
inputs:
script: "git clone --single-branch --branch $(System.PullRequest.TargetBranch) --depth 1 https://github.com/jellyfin/jellyfin-web.git $(Agent.TempDirectory)/jellyfin-web"
- task: NodeTool@0
displayName: "Install Node"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
versionSpec: "10.x"
- task: CmdLine@2
displayName: "Build Web Client"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
script: yarn install
workingDirectory: $(Agent.TempDirectory)/jellyfin-web
- task: CopyFiles@2
displayName: "Copy Web Client"
condition: and(succeeded(), or(contains(variables['System.PullRequest.TargetBranch'], 'release'), contains(variables['System.PullRequest.TargetBranch'], 'master'), contains(variables['Build.SourceBranch'], 'release'), contains(variables['Build.SourceBranch'], 'master')), in(variables['Build.Reason'], 'PullRequest', 'IndividualCI', 'BatchedCI', 'BuildCompletion'))
inputs:
sourceFolder: $(Agent.TempDirectory)/jellyfin-web/dist
contents: "**"
targetFolder: $(Build.SourcesDirectory)/MediaBrowser.WebDashboard/jellyfin-web
cleanTargetFolder: true
overWrite: true
flattenFolders: false
- task: CmdLine@2
displayName: "Clone UX Repository"
inputs:
script: git clone --depth=1 https://github.com/jellyfin/jellyfin-ux $(Agent.TempDirectory)\jellyfin-ux
- task: PowerShell@2
displayName: "Build NSIS Installer"
inputs:
targetType: "filePath"
filePath: ./deployment/windows/build-jellyfin.ps1
arguments: -InstallFFMPEG -InstallNSSM -MakeNSIS -InstallTrayApp -UXLocation $(Agent.TempDirectory)\jellyfin-ux -InstallLocation $(build.artifactstagingdirectory)
errorActionPreference: "stop"
workingDirectory: $(Build.SourcesDirectory)
- task: CopyFiles@2
displayName: "Copy NSIS Installer"
inputs:
sourceFolder: $(Build.SourcesDirectory)/deployment/windows/
contents: "jellyfin*.exe"
targetFolder: $(System.ArtifactsDirectory)/setup
cleanTargetFolder: true
overWrite: true
flattenFolders: true
- task: PublishPipelineArtifact@0
displayName: "Publish Artifact Setup"
condition: succeeded()
inputs:
targetPath: "$(build.artifactstagingdirectory)/setup"
artifactName: "Jellyfin Server Setup"

View File

@@ -2,9 +2,11 @@ name: $(Date:yyyyMMdd)$(Rev:.r)
variables:
- name: TestProjects
value: 'Jellyfin.Server.Tests/Jellyfin.Server.Tests.csproj'
value: "tests/**/*Tests.csproj"
- name: RestoreBuildProjects
value: 'Jellyfin.Server/Jellyfin.Server.csproj'
value: "Jellyfin.Server/Jellyfin.Server.csproj"
- name: DotNetSdkVersion
value: 3.1.100
pr:
autoCancel: true
@@ -13,95 +15,26 @@ trigger:
batch: true
jobs:
- job: main_build
displayName: Main Build
pool:
vmImage: ubuntu-16.04
strategy:
matrix:
release:
BuildConfiguration: Release
debug:
BuildConfiguration: Debug
maxParallel: 2
steps:
- checkout: self
clean: true
submodules: true
persistCredentials: false
- template: azure-pipelines-main.yml
parameters:
LinuxImage: "ubuntu-latest"
RestoreBuildProjects: $(RestoreBuildProjects)
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '$(RestoreBuildProjects)'
- template: azure-pipelines-test.yml
parameters:
ImageNames:
Linux: "ubuntu-latest"
Windows: "windows-latest"
macOS: "macos-latest"
- task: DotNetCoreCLI@2
displayName: Build
inputs:
projects: '$(RestoreBuildProjects)'
arguments: '--configuration $(BuildConfiguration)'
- template: azure-pipelines-windows.yml
parameters:
WindowsImage: "windows-latest"
TestProjects: $(TestProjects)
- task: DotNetCoreCLI@2
displayName: Test
inputs:
command: test
projects: '$(RestoreBuildProjects)'
arguments: '--configuration $(BuildConfiguration)'
enabled: false
- task: DotNetCoreCLI@2
displayName: Publish
inputs:
command: publish
publishWebProjects: false
projects: '$(RestoreBuildProjects)'
arguments: '--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)'
zipAfterPublish: false
# - task: PublishBuildArtifacts@1
# displayName: 'Publish Artifact'
# inputs:
# PathtoPublish: '$(build.artifactstagingdirectory)'
# artifactName: 'jellyfin-build-$(BuildConfiguration)'
# zipAfterPublish: true
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact Naming'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)/Jellyfin.Server/Emby.Naming.dll'
artifactName: 'Jellyfin.Naming'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact Controller'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Controller.dll'
artifactName: 'Jellyfin.Controller'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact Model'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Model.dll'
artifactName: 'Jellyfin.Model'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact Common'
condition: and(eq(variables['BuildConfiguration'], 'Release'), succeeded())
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)/Jellyfin.Server/MediaBrowser.Common.dll'
artifactName: 'Jellyfin.Common'
- job: dotnet_compat
displayName: Compatibility Check
pool:
vmImage: ubuntu-16.04
dependsOn: main_build
condition: and(succeeded(), variables['System.PullRequest.PullRequestNumber']) # Only execute if the pullrequest numer is defined. (So not for normal CI builds)
strategy:
matrix:
- template: azure-pipelines-compat.yml
parameters:
Packages:
Naming:
NugetPackageName: Jellyfin.Naming
AssemblyFileName: Emby.Naming.dll
@@ -114,79 +47,4 @@ jobs:
Common:
NugetPackageName: Jellyfin.Common
AssemblyFileName: MediaBrowser.Common.dll
maxParallel: 2
steps:
- checkout: none
- task: DownloadBuildArtifacts@0
displayName: Download the Reference Assembly Build Artifact
inputs:
buildType: 'specific' # Options: current, specific
project: $(System.TeamProjectId) # Required when buildType == Specific
pipeline: $(System.DefinitionId) # Required when buildType == Specific, not sure if this will take a name too
#specificBuildWithTriggering: false # Optional
buildVersionToDownload: 'latestFromBranch' # Required when buildType == Specific# Options: latest, latestFromBranch, specific
allowPartiallySucceededBuilds: false # Optional
branchName: '$(System.PullRequest.TargetBranch)' # Required when buildType == Specific && BuildVersionToDownload == LatestFromBranch
#buildId: # Required when buildType == Specific && BuildVersionToDownload == Specific
#tags: # Optional
downloadType: 'single' # Options: single, specific
artifactName: '$(NugetPackageName)'# Required when downloadType == Single
#itemPattern: '**' # Optional
downloadPath: '$(System.ArtifactsDirectory)/current-artifacts'
#parallelizationLimit: '8' # Optional
- task: CopyFiles@2
displayName: Copy Nuget Assembly to current-release folder
inputs:
sourceFolder: $(System.ArtifactsDirectory)/current-artifacts # Optional
contents: '**/*.dll'
targetFolder: $(System.ArtifactsDirectory)/current-release
cleanTargetFolder: true # Optional
overWrite: true # Optional
flattenFolders: true # Optional
- task: DownloadBuildArtifacts@0
displayName: Download the New Assembly Build Artifact
inputs:
buildType: 'current' # Options: current, specific
allowPartiallySucceededBuilds: false # Optional
downloadType: 'single' # Options: single, specific
artifactName: '$(NugetPackageName)' # Required when downloadType == Single
downloadPath: '$(System.ArtifactsDirectory)/new-artifacts'
- task: CopyFiles@2
displayName: Copy Artifact Assembly to new-release folder
inputs:
sourceFolder: $(System.ArtifactsDirectory)/new-artifacts # Optional
contents: '**/*.dll'
targetFolder: $(System.ArtifactsDirectory)/new-release
cleanTargetFolder: true # Optional
overWrite: true # Optional
flattenFolders: true # Optional
- task: DownloadGitHubRelease@0
displayName: Download ABI compatibility check tool from GitHub
inputs:
connection: Jellyfin GitHub
userRepository: EraYaN/dotnet-compatibility
defaultVersionType: 'latest' # Options: latest, specificVersion, specificTag
#version: # Required when defaultVersionType != Latest
itemPattern: '**-ci.zip' # Optional
downloadPath: '$(System.ArtifactsDirectory)'
- task: ExtractFiles@1
displayName: Extract ABI compatibility check tool
inputs:
archiveFilePatterns: '$(System.ArtifactsDirectory)/*-ci.zip'
destinationFolder: $(System.ArtifactsDirectory)/tools
cleanDestinationFolder: true
- task: CmdLine@2
displayName: Execute ABI compatibility check tool
inputs:
script: 'dotnet tools/CompatibilityCheckerCoreCLI.dll current-release/$(AssemblyFileName) new-release/$(AssemblyFileName)'
workingDirectory: $(System.ArtifactsDirectory) # Optional
#failOnStderr: false # Optional
LinuxImage: "ubuntu-latest"

View File

@@ -1,8 +1,59 @@
srpm:
dnf -y install git
git submodule update --init --recursive
cd deployment/fedora-package-x64; \
./create_tarball.sh; \
rpmbuild -bs pkg-src/jellyfin.spec \
--define "_sourcedir $$PWD/pkg-src/" \
--define "_srcrpmdir $(outdir)"
VERSION := $(shell sed -ne '/^Version:/s/.* *//p' \
deployment/fedora-package-x64/pkg-src/jellyfin.spec)
deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz:
curl -f -L -o deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz \
https://github.com/jellyfin/jellyfin-web/archive/v$(VERSION).tar.gz \
|| curl -f -L -o deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz \
https://github.com/jellyfin/jellyfin-web/archive/master.tar.gz \
srpm: deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz
cd deployment/fedora-package-x64; \
SOURCE_DIR=../.. \
WORKDIR="$${PWD}"; \
package_temporary_dir="$${WORKDIR}/pkg-dist-tmp"; \
pkg_src_dir="$${WORKDIR}/pkg-src"; \
GNU_TAR=1; \
tar \
--transform "s,^\.,jellyfin-$(VERSION)," \
--exclude='.git*' \
--exclude='**/.git' \
--exclude='**/.hg' \
--exclude='**/.vs' \
--exclude='**/.vscode' \
--exclude='deployment' \
--exclude='**/bin' \
--exclude='**/obj' \
--exclude='**/.nuget' \
--exclude='*.deb' \
--exclude='*.rpm' \
-czf "pkg-src/jellyfin-$(VERSION).tar.gz" \
-C $${SOURCE_DIR} ./ || GNU_TAR=0; \
if [ $${GNU_TAR} -eq 0 ]; then \
package_temporary_dir="$$(mktemp -d)"; \
mkdir -p "$${package_temporary_dir}/jellyfin"; \
tar \
--exclude='.git*' \
--exclude='**/.git' \
--exclude='**/.hg' \
--exclude='**/.vs' \
--exclude='**/.vscode' \
--exclude='deployment' \
--exclude='**/bin' \
--exclude='**/obj' \
--exclude='**/.nuget' \
--exclude='*.deb' \
--exclude='*.rpm' \
-czf "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz" \
-C $${SOURCE_DIR} ./; \
mkdir -p "$${package_temporary_dir}/jellyfin-$(VERSION)"; \
tar -xzf "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz" \
-C "$${package_temporary_dir}/jellyfin-$(VERSION); \
rm -f "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz"; \
tar -czf "$${SOURCE_DIR}/SOURCES/pkg-src/jellyfin-$(VERSION).tar.gz" \
-C "$${package_temporary_dir}" "jellyfin-$(VERSION); \
rm -rf $${package_temporary_dir}; \
fi; \
rpmbuild -bs pkg-src/jellyfin.spec \
--define "_sourcedir $$PWD/pkg-src/" \
--define "_srcrpmdir $(outdir)"

4
.gitattributes vendored
View File

@@ -1 +1,5 @@
* text=auto eol=lf
*.png binary
*.jpg binary
CONTRIBUTORS.md merge=union

View File

@@ -10,6 +10,19 @@ assignees: ''
**Describe the bug**
<!-- A clear and concise description of what the bug is. -->
**System (please complete the following information):**
- OS: [e.g. Debian, Windows]
- Virtualization: [e.g. Docker, KVM, LXC]
- Clients: [Browser, Android, Fire Stick, etc.]
- Browser: [e.g. Firefox 72, Chrome 80, Safari 13]
- Jellyfin Version: [e.g. 10.4.3, nightly 20191231]
- Playback: [Direct Play, Remux, Direct Stream, Transcode]
- Installed Plugins: [e.g. none, Fanart, Anime, etc.]
- Reverse Proxy: [e.g. none, nginx, apache, etc.]
- Base URL: [e.g. none, yes: /example]
- Networking: [e.g. Host, Bridge/NAT]
- Storage: [e.g. local, NFS, cloud]
**To Reproduce**
<!-- Steps to reproduce the behavior: -->
1. Go to '...'
@@ -26,11 +39,5 @@ assignees: ''
**Screenshots**
<!-- If applicable, add screenshots to help explain your problem. -->
**System (please complete the following information):**
- OS: [e.g. Docker, Debian, Windows]
- Browser: [e.g. Firefox, Chrome, Safari]
- Jellyfin Version: [e.g. 10.0.1]
- Reverse proxy: [e.g. no, nginx, apache, etc.]
**Additional context**
<!-- Add any other context about the problem here. -->

View File

@@ -1,20 +0,0 @@
---
name: Enhancement request
about: Suggest an modification to an existing feature
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
**Describe the solution you'd like**
<!-- A clear and concise description of what you want to happen. -->
**Describe alternatives you've considered**
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
**Additional context**
<!-- Add any other context or screenshots about the feature request here. -->

View File

@@ -1,14 +0,0 @@
---
name: Feature request
about: Suggest a new feature
title: ''
labels: feature
assignees: ''
---
**Describe the feature you'd like**
<!-- A clear and concise description of what you want to happen. -->
**Additional context**
<!-- Add any other context or screenshots about the feature request here. -->

View File

@@ -0,0 +1,34 @@
---
name: Media playback issue
about: Create a media playback issue report
title: ''
labels: mediaplayback
assignees: ''
---
**Media Info of the file**
<!-- Use the Media Info tool (set to text format, download here: https://mediaarea.net/en/MediaInfo) or copy the info from the web ui for the file with the playback issue. -->
**Logs**
<!-- Please paste any log messages from during the playback issue. -->
**FFmpeg Logs**
<!-- Please paste any FFmpeg logs if remuxing or transcoding appears to be part of the issue. -->
**Stats for Nerds Screenshots**
<!-- If available, add screenshots of the stats for nerds screen to help show the issue problem. -->
**Server System (please complete the following information):**
- OS: [e.g. Docker on Linux, Docker on Windows, Debian, Windows]
- Jellyfin Version: [e.g. 10.0.1]
- Hardware settings & device: [e.g. NVENC on GTX1060, VAAPI on Intel i7 8700K]
- Reverse proxy: [e.g. no, nginx, apache, etc.]
- Other hardware notes: [e.g. Media mounted in CIFS/SMB share, Media mounted from Google Drive]
**Client System (please complete the following information):**
- Device: [e.g. Apple iPhone XS, Xbox One S, LG OLED55C8, Samsung Galaxy Note9, Custom HTPC]
- OS: [e.g. iOS, Android, Windows, macOS]
- Client: [e.g. Web/Browser, webOS, Android, Android TV, Electron]
- Browser (if Web client): [e.g. Firefox, Chrome, Safari]
- Client and Browser Version: [e.g. 10.3.4 and 68.0]

View File

@@ -1,6 +1,6 @@
<!--
Ensure your title is short, descriptive, and in the imperative mood (Fix X, Change Y, instead of Fixed X, Changed Y).
For a good inspiration of what to write in commit messages and PRs please review https://chris.beams.io/posts/git-commit/ and our https://jellyfin.readthedocs.io/en/latest/developer-docs/contributing/ page.
For a good inspiration of what to write in commit messages and PRs please review https://chris.beams.io/posts/git-commit/ and our documentation.
-->
**Changes**

25
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 120
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 21
# Issues with these labels will never be considered stale
exemptLabels:
- regression
- security
- dotnet-3.0-future
- roadmap
- future
- feature
- enhancement
- confirmed
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has gone 120 days without comment. To avoid abandoned issues, it will be closed in 21 days if there are no new comments.
If you're the original submitter of this issue, please comment confirming if this issue still affects you in the latest release or nightlies, or close the issue if it has been fixed. If you're another user also affected by this bug, please comment confirming so. Either action will remove the stale label.
This bot exists to prevent issues from becoming stale and forgotten. Jellyfin is always moving forward, and bugs are often fixed as side effects of other changes. We therefore ask that bug report authors remain vigilant about their issues to ensure they are closed if fixed, or re-confirmed - perhaps with fresh logs or reproduction examples - regularly. If you have any questions you can reach us on [Matrix or Social Media](https://docs.jellyfin.org/general/getting-help.html).
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

14
.gitignore vendored
View File

@@ -239,11 +239,6 @@ pip-log.txt
##########
.idea/
##########
# Visual Studio Code
##########
.vscode/
#########################
# Build artifacts
#########################
@@ -268,4 +263,11 @@ jellyfin_version.ini
ci/
# Doxygen
doc/
doc/
# Deployment artifacts
dist
*.exe
# BenchmarkDotNet artifacts
BenchmarkDotNet.Artifacts

4
.gitmodules vendored
View File

@@ -1,4 +0,0 @@
[submodule "MediaBrowser.WebDashboard/jellyfin-web"]
path = MediaBrowser.WebDashboard/jellyfin-web
url = https://github.com/jellyfin/jellyfin-web.git
branch = .

4
.vscode/launch.json vendored
View File

@@ -10,7 +10,7 @@
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/netcoreapp2.1/jellyfin.dll",
"program": "${workspaceFolder}/Jellyfin.Server/bin/Debug/netcoreapp3.1/jellyfin.dll",
"args": [],
"cwd": "${workspaceFolder}/Jellyfin.Server",
// For more information about the 'console' field, see https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md#console-terminal-window
@@ -25,4 +25,4 @@
"processId": "${command:pickProcess}"
}
,]
}
}

View File

@@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<Compile Include="..\SharedVersion.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj" />
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
</Project>

View File

@@ -1,33 +0,0 @@
namespace BDInfo
{
class BDInfoSettings
{
public static bool GenerateStreamDiagnostics => true;
public static bool EnableSSIF => true;
public static bool AutosaveReport => false;
public static bool GenerateFrameDataFile => false;
public static bool FilterLoopingPlaylists => true;
public static bool FilterShortPlaylists => false;
public static int FilterShortPlaylistsValue => 0;
public static bool UseImagePrefix => false;
public static string UseImagePrefixValue => null;
/// <summary>
/// Setting this to false throws an IComparer error on some discs.
/// </summary>
public static bool KeepStreamOrder => true;
public static bool GenerateTextSummary => false;
public static string LastPath => string.Empty;
}
}

View File

@@ -1,456 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using MediaBrowser.Model.IO;
namespace BDInfo
{
public class BDROM
{
public FileSystemMetadata DirectoryRoot = null;
public FileSystemMetadata DirectoryBDMV = null;
public FileSystemMetadata DirectoryBDJO = null;
public FileSystemMetadata DirectoryCLIPINF = null;
public FileSystemMetadata DirectoryPLAYLIST = null;
public FileSystemMetadata DirectorySNP = null;
public FileSystemMetadata DirectorySSIF = null;
public FileSystemMetadata DirectorySTREAM = null;
public string VolumeLabel = null;
public ulong Size = 0;
public bool IsBDPlus = false;
public bool IsBDJava = false;
public bool IsDBOX = false;
public bool IsPSP = false;
public bool Is3D = false;
public bool Is50Hz = false;
private readonly IFileSystem _fileSystem;
public Dictionary<string, TSPlaylistFile> PlaylistFiles =
new Dictionary<string, TSPlaylistFile>();
public Dictionary<string, TSStreamClipFile> StreamClipFiles =
new Dictionary<string, TSStreamClipFile>();
public Dictionary<string, TSStreamFile> StreamFiles =
new Dictionary<string, TSStreamFile>();
public Dictionary<string, TSInterleavedFile> InterleavedFiles =
new Dictionary<string, TSInterleavedFile>();
public delegate bool OnStreamClipFileScanError(
TSStreamClipFile streamClipFile, Exception ex);
public event OnStreamClipFileScanError StreamClipFileScanError;
public delegate bool OnStreamFileScanError(
TSStreamFile streamClipFile, Exception ex);
public event OnStreamFileScanError StreamFileScanError;
public delegate bool OnPlaylistFileScanError(
TSPlaylistFile playlistFile, Exception ex);
public event OnPlaylistFileScanError PlaylistFileScanError;
public BDROM(string path, IFileSystem fileSystem)
{
if (string.IsNullOrEmpty(path))
{
throw new ArgumentNullException(nameof(path));
}
_fileSystem = fileSystem;
//
// Locate BDMV directories.
//
DirectoryBDMV =
GetDirectoryBDMV(path);
if (DirectoryBDMV == null)
{
throw new Exception("Unable to locate BD structure.");
}
DirectoryRoot =
_fileSystem.GetDirectoryInfo(Path.GetDirectoryName(DirectoryBDMV.FullName));
DirectoryBDJO =
GetDirectory("BDJO", DirectoryBDMV, 0);
DirectoryCLIPINF =
GetDirectory("CLIPINF", DirectoryBDMV, 0);
DirectoryPLAYLIST =
GetDirectory("PLAYLIST", DirectoryBDMV, 0);
DirectorySNP =
GetDirectory("SNP", DirectoryRoot, 0);
DirectorySTREAM =
GetDirectory("STREAM", DirectoryBDMV, 0);
DirectorySSIF =
GetDirectory("SSIF", DirectorySTREAM, 0);
if (DirectoryCLIPINF == null
|| DirectoryPLAYLIST == null)
{
throw new Exception("Unable to locate BD structure.");
}
//
// Initialize basic disc properties.
//
VolumeLabel = GetVolumeLabel(DirectoryRoot);
Size = (ulong)GetDirectorySize(DirectoryRoot);
if (null != GetDirectory("BDSVM", DirectoryRoot, 0))
{
IsBDPlus = true;
}
if (null != GetDirectory("SLYVM", DirectoryRoot, 0))
{
IsBDPlus = true;
}
if (null != GetDirectory("ANYVM", DirectoryRoot, 0))
{
IsBDPlus = true;
}
if (DirectoryBDJO != null &&
_fileSystem.GetFilePaths(DirectoryBDJO.FullName).Any())
{
IsBDJava = true;
}
if (DirectorySNP != null &&
GetFilePaths(DirectorySNP.FullName, ".mnv").Any())
{
IsPSP = true;
}
if (DirectorySSIF != null &&
_fileSystem.GetFilePaths(DirectorySSIF.FullName).Any())
{
Is3D = true;
}
if (File.Exists(Path.Combine(DirectoryRoot.FullName, "FilmIndex.xml")))
{
IsDBOX = true;
}
//
// Initialize file lists.
//
if (DirectoryPLAYLIST != null)
{
FileSystemMetadata[] files = GetFiles(DirectoryPLAYLIST.FullName, ".mpls").ToArray();
foreach (var file in files)
{
PlaylistFiles.Add(
file.Name.ToUpper(), new TSPlaylistFile(this, file));
}
}
if (DirectorySTREAM != null)
{
FileSystemMetadata[] files = GetFiles(DirectorySTREAM.FullName, ".m2ts").ToArray();
foreach (var file in files)
{
StreamFiles.Add(
file.Name.ToUpper(), new TSStreamFile(file, _fileSystem));
}
}
if (DirectoryCLIPINF != null)
{
FileSystemMetadata[] files = GetFiles(DirectoryCLIPINF.FullName, ".clpi").ToArray();
foreach (var file in files)
{
StreamClipFiles.Add(
file.Name.ToUpper(), new TSStreamClipFile(file));
}
}
if (DirectorySSIF != null)
{
FileSystemMetadata[] files = GetFiles(DirectorySSIF.FullName, ".ssif").ToArray();
foreach (var file in files)
{
InterleavedFiles.Add(
file.Name.ToUpper(), new TSInterleavedFile(file));
}
}
}
private IEnumerable<FileSystemMetadata> GetFiles(string path, string extension)
{
return _fileSystem.GetFiles(path, new[] { extension }, false, false);
}
private IEnumerable<string> GetFilePaths(string path, string extension)
{
return _fileSystem.GetFilePaths(path, new[] { extension }, false, false);
}
public void Scan()
{
var errorStreamClipFiles = new List<TSStreamClipFile>();
foreach (var streamClipFile in StreamClipFiles.Values)
{
try
{
streamClipFile.Scan();
}
catch (Exception ex)
{
errorStreamClipFiles.Add(streamClipFile);
if (StreamClipFileScanError != null)
{
if (StreamClipFileScanError(streamClipFile, ex))
{
continue;
}
else
{
break;
}
}
else throw;
}
}
foreach (var streamFile in StreamFiles.Values)
{
string ssifName = Path.GetFileNameWithoutExtension(streamFile.Name) + ".SSIF";
if (InterleavedFiles.ContainsKey(ssifName))
{
streamFile.InterleavedFile = InterleavedFiles[ssifName];
}
}
TSStreamFile[] streamFiles = new TSStreamFile[StreamFiles.Count];
StreamFiles.Values.CopyTo(streamFiles, 0);
Array.Sort(streamFiles, CompareStreamFiles);
var errorPlaylistFiles = new List<TSPlaylistFile>();
foreach (var playlistFile in PlaylistFiles.Values)
{
try
{
playlistFile.Scan(StreamFiles, StreamClipFiles);
}
catch (Exception ex)
{
errorPlaylistFiles.Add(playlistFile);
if (PlaylistFileScanError != null)
{
if (PlaylistFileScanError(playlistFile, ex))
{
continue;
}
else
{
break;
}
}
else throw;
}
}
var errorStreamFiles = new List<TSStreamFile>();
foreach (var streamFile in streamFiles)
{
try
{
var playlists = new List<TSPlaylistFile>();
foreach (var playlist in PlaylistFiles.Values)
{
foreach (var streamClip in playlist.StreamClips)
{
if (streamClip.Name == streamFile.Name)
{
playlists.Add(playlist);
break;
}
}
}
streamFile.Scan(playlists, false);
}
catch (Exception ex)
{
errorStreamFiles.Add(streamFile);
if (StreamFileScanError != null)
{
if (StreamFileScanError(streamFile, ex))
{
continue;
}
else
{
break;
}
}
else throw;
}
}
foreach (var playlistFile in PlaylistFiles.Values)
{
playlistFile.Initialize();
if (!Is50Hz)
{
foreach (var videoStream in playlistFile.VideoStreams)
{
if (videoStream.FrameRate == TSFrameRate.FRAMERATE_25 ||
videoStream.FrameRate == TSFrameRate.FRAMERATE_50)
{
Is50Hz = true;
}
}
}
}
}
private FileSystemMetadata GetDirectoryBDMV(
string path)
{
if (string.IsNullOrEmpty(path))
{
throw new ArgumentNullException(nameof(path));
}
FileSystemMetadata dir = _fileSystem.GetDirectoryInfo(path);
while (dir != null)
{
if (string.Equals(dir.Name, "BDMV", StringComparison.OrdinalIgnoreCase))
{
return dir;
}
var parentFolder = Path.GetDirectoryName(dir.FullName);
if (string.IsNullOrEmpty(parentFolder))
{
dir = null;
}
else
{
dir = _fileSystem.GetDirectoryInfo(parentFolder);
}
}
return GetDirectory("BDMV", _fileSystem.GetDirectoryInfo(path), 0);
}
private FileSystemMetadata GetDirectory(
string name,
FileSystemMetadata dir,
int searchDepth)
{
if (dir != null)
{
FileSystemMetadata[] children = _fileSystem.GetDirectories(dir.FullName).ToArray();
foreach (var child in children)
{
if (string.Equals(child.Name, name, StringComparison.OrdinalIgnoreCase))
{
return child;
}
}
if (searchDepth > 0)
{
foreach (var child in children)
{
GetDirectory(
name, child, searchDepth - 1);
}
}
}
return null;
}
private long GetDirectorySize(FileSystemMetadata directoryInfo)
{
long size = 0;
//if (!ExcludeDirs.Contains(directoryInfo.Name.ToUpper())) // TODO: Keep?
{
FileSystemMetadata[] pathFiles = _fileSystem.GetFiles(directoryInfo.FullName).ToArray();
foreach (var pathFile in pathFiles)
{
if (pathFile.Extension.ToUpper() == ".SSIF")
{
continue;
}
size += pathFile.Length;
}
FileSystemMetadata[] pathChildren = _fileSystem.GetDirectories(directoryInfo.FullName).ToArray();
foreach (var pathChild in pathChildren)
{
size += GetDirectorySize(pathChild);
}
}
return size;
}
private string GetVolumeLabel(FileSystemMetadata dir)
{
return dir.Name;
}
public int CompareStreamFiles(
TSStreamFile x,
TSStreamFile y)
{
// TODO: Use interleaved file sizes
if ((x == null || x.FileInfo == null) && (y == null || y.FileInfo == null))
{
return 0;
}
else if ((x == null || x.FileInfo == null) && (y != null && y.FileInfo != null))
{
return 1;
}
else if ((x != null || x.FileInfo != null) && (y == null || y.FileInfo == null))
{
return -1;
}
else
{
if (x.FileInfo.Length > y.FileInfo.Length)
{
return 1;
}
else if (y.FileInfo.Length > x.FileInfo.Length)
{
return -1;
}
else
{
return 0;
}
}
}
}
}

View File

@@ -1,493 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class LanguageCodes
{
public static string GetName(string code)
{
switch (code)
{
case "abk": return "Abkhazian";
case "ace": return "Achinese";
case "ach": return "Acoli";
case "ada": return "Adangme";
case "aar": return "Afar";
case "afh": return "Afrihili";
case "afr": return "Afrikaans";
case "afa": return "Afro-Asiatic (Other)";
case "aka": return "Akan";
case "akk": return "Akkadian";
case "alb": return "Albanian";
case "sqi": return "Albanian";
case "ale": return "Aleut";
case "alg": return "Algonquian languages";
case "tut": return "Altaic (Other)";
case "amh": return "Amharic";
case "apa": return "Apache languages";
case "ara": return "Arabic";
case "arc": return "Aramaic";
case "arp": return "Arapaho";
case "arn": return "Araucanian";
case "arw": return "Arawak";
case "arm": return "Armenian";
case "hye": return "Armenian";
case "art": return "Artificial (Other)";
case "asm": return "Assamese";
case "ath": return "Athapascan languages";
case "aus": return "Australian languages";
case "map": return "Austronesian (Other)";
case "ava": return "Avaric";
case "ave": return "Avestan";
case "awa": return "Awadhi";
case "aym": return "Aymara";
case "aze": return "Azerbaijani";
case "ban": return "Balinese";
case "bat": return "Baltic (Other)";
case "bal": return "Baluchi";
case "bam": return "Bambara";
case "bai": return "Bamileke languages";
case "bad": return "Banda";
case "bnt": return "Bantu (Other)";
case "bas": return "Basa";
case "bak": return "Bashkir";
case "baq": return "Basque";
case "eus": return "Basque";
case "btk": return "Batak (Indonesia)";
case "bej": return "Beja";
case "bel": return "Belarusian";
case "bem": return "Bemba";
case "ben": return "Bengali";
case "ber": return "Berber (Other)";
case "bho": return "Bhojpuri";
case "bih": return "Bihari";
case "bik": return "Bikol";
case "bin": return "Bini";
case "bis": return "Bislama";
case "bos": return "Bosnian";
case "bra": return "Braj";
case "bre": return "Breton";
case "bug": return "Buginese";
case "bul": return "Bulgarian";
case "bua": return "Buriat";
case "bur": return "Burmese";
case "mya": return "Burmese";
case "cad": return "Caddo";
case "car": return "Carib";
case "cat": return "Catalan";
case "cau": return "Caucasian (Other)";
case "ceb": return "Cebuano";
case "cel": return "Celtic (Other)";
case "cai": return "Central American Indian (Other)";
case "chg": return "Chagatai";
case "cmc": return "Chamic languages";
case "cha": return "Chamorro";
case "che": return "Chechen";
case "chr": return "Cherokee";
case "chy": return "Cheyenne";
case "chb": return "Chibcha";
case "chi": return "Chinese";
case "zho": return "Chinese";
case "chn": return "Chinook jargon";
case "chp": return "Chipewyan";
case "cho": return "Choctaw";
case "chu": return "Church Slavic";
case "chk": return "Chuukese";
case "chv": return "Chuvash";
case "cop": return "Coptic";
case "cor": return "Cornish";
case "cos": return "Corsican";
case "cre": return "Cree";
case "mus": return "Creek";
case "crp": return "Creoles and pidgins (Other)";
case "cpe": return "Creoles and pidgins,";
case "cpf": return "Creoles and pidgins,";
case "cpp": return "Creoles and pidgins,";
case "scr": return "Croatian";
case "hrv": return "Croatian";
case "cus": return "Cushitic (Other)";
case "cze": return "Czech";
case "ces": return "Czech";
case "dak": return "Dakota";
case "dan": return "Danish";
case "day": return "Dayak";
case "del": return "Delaware";
case "din": return "Dinka";
case "div": return "Divehi";
case "doi": return "Dogri";
case "dgr": return "Dogrib";
case "dra": return "Dravidian (Other)";
case "dua": return "Duala";
case "dut": return "Dutch";
case "nld": return "Dutch";
case "dum": return "Dutch, Middle (ca. 1050-1350)";
case "dyu": return "Dyula";
case "dzo": return "Dzongkha";
case "efi": return "Efik";
case "egy": return "Egyptian (Ancient)";
case "eka": return "Ekajuk";
case "elx": return "Elamite";
case "eng": return "English";
case "enm": return "English, Middle (1100-1500)";
case "ang": return "English, Old (ca.450-1100)";
case "epo": return "Esperanto";
case "est": return "Estonian";
case "ewe": return "Ewe";
case "ewo": return "Ewondo";
case "fan": return "Fang";
case "fat": return "Fanti";
case "fao": return "Faroese";
case "fij": return "Fijian";
case "fin": return "Finnish";
case "fiu": return "Finno-Ugrian (Other)";
case "fon": return "Fon";
case "fre": return "French";
case "fra": return "French";
case "frm": return "French, Middle (ca.1400-1600)";
case "fro": return "French, Old (842-ca.1400)";
case "fry": return "Frisian";
case "fur": return "Friulian";
case "ful": return "Fulah";
case "gaa": return "Ga";
case "glg": return "Gallegan";
case "lug": return "Ganda";
case "gay": return "Gayo";
case "gba": return "Gbaya";
case "gez": return "Geez";
case "geo": return "Georgian";
case "kat": return "Georgian";
case "ger": return "German";
case "deu": return "German";
case "nds": return "Saxon";
case "gmh": return "German, Middle High (ca.1050-1500)";
case "goh": return "German, Old High (ca.750-1050)";
case "gem": return "Germanic (Other)";
case "gil": return "Gilbertese";
case "gon": return "Gondi";
case "gor": return "Gorontalo";
case "got": return "Gothic";
case "grb": return "Grebo";
case "grc": return "Greek, Ancient (to 1453)";
case "gre": return "Greek";
case "ell": return "Greek";
case "grn": return "Guarani";
case "guj": return "Gujarati";
case "gwi": return "Gwich´in";
case "hai": return "Haida";
case "hau": return "Hausa";
case "haw": return "Hawaiian";
case "heb": return "Hebrew";
case "her": return "Herero";
case "hil": return "Hiligaynon";
case "him": return "Himachali";
case "hin": return "Hindi";
case "hmo": return "Hiri Motu";
case "hit": return "Hittite";
case "hmn": return "Hmong";
case "hun": return "Hungarian";
case "hup": return "Hupa";
case "iba": return "Iban";
case "ice": return "Icelandic";
case "isl": return "Icelandic";
case "ibo": return "Igbo";
case "ijo": return "Ijo";
case "ilo": return "Iloko";
case "inc": return "Indic (Other)";
case "ine": return "Indo-European (Other)";
case "ind": return "Indonesian";
case "ina": return "Interlingua (International";
case "ile": return "Interlingue";
case "iku": return "Inuktitut";
case "ipk": return "Inupiaq";
case "ira": return "Iranian (Other)";
case "gle": return "Irish";
case "mga": return "Irish, Middle (900-1200)";
case "sga": return "Irish, Old (to 900)";
case "iro": return "Iroquoian languages";
case "ita": return "Italian";
case "jpn": return "Japanese";
case "jav": return "Javanese";
case "jrb": return "Judeo-Arabic";
case "jpr": return "Judeo-Persian";
case "kab": return "Kabyle";
case "kac": return "Kachin";
case "kal": return "Kalaallisut";
case "kam": return "Kamba";
case "kan": return "Kannada";
case "kau": return "Kanuri";
case "kaa": return "Kara-Kalpak";
case "kar": return "Karen";
case "kas": return "Kashmiri";
case "kaw": return "Kawi";
case "kaz": return "Kazakh";
case "kha": return "Khasi";
case "khm": return "Khmer";
case "khi": return "Khoisan (Other)";
case "kho": return "Khotanese";
case "kik": return "Kikuyu";
case "kmb": return "Kimbundu";
case "kin": return "Kinyarwanda";
case "kir": return "Kirghiz";
case "kom": return "Komi";
case "kon": return "Kongo";
case "kok": return "Konkani";
case "kor": return "Korean";
case "kos": return "Kosraean";
case "kpe": return "Kpelle";
case "kro": return "Kru";
case "kua": return "Kuanyama";
case "kum": return "Kumyk";
case "kur": return "Kurdish";
case "kru": return "Kurukh";
case "kut": return "Kutenai";
case "lad": return "Ladino";
case "lah": return "Lahnda";
case "lam": return "Lamba";
case "lao": return "Lao";
case "lat": return "Latin";
case "lav": return "Latvian";
case "ltz": return "Letzeburgesch";
case "lez": return "Lezghian";
case "lin": return "Lingala";
case "lit": return "Lithuanian";
case "loz": return "Lozi";
case "lub": return "Luba-Katanga";
case "lua": return "Luba-Lulua";
case "lui": return "Luiseno";
case "lun": return "Lunda";
case "luo": return "Luo (Kenya and Tanzania)";
case "lus": return "Lushai";
case "mac": return "Macedonian";
case "mkd": return "Macedonian";
case "mad": return "Madurese";
case "mag": return "Magahi";
case "mai": return "Maithili";
case "mak": return "Makasar";
case "mlg": return "Malagasy";
case "may": return "Malay";
case "msa": return "Malay";
case "mal": return "Malayalam";
case "mlt": return "Maltese";
case "mnc": return "Manchu";
case "mdr": return "Mandar";
case "man": return "Mandingo";
case "mni": return "Manipuri";
case "mno": return "Manobo languages";
case "glv": return "Manx";
case "mao": return "Maori";
case "mri": return "Maori";
case "mar": return "Marathi";
case "chm": return "Mari";
case "mah": return "Marshall";
case "mwr": return "Marwari";
case "mas": return "Masai";
case "myn": return "Mayan languages";
case "men": return "Mende";
case "mic": return "Micmac";
case "min": return "Minangkabau";
case "mis": return "Miscellaneous languages";
case "moh": return "Mohawk";
case "mol": return "Moldavian";
case "mkh": return "Mon-Khmer (Other)";
case "lol": return "Mongo";
case "mon": return "Mongolian";
case "mos": return "Mossi";
case "mul": return "Multiple languages";
case "mun": return "Munda languages";
case "nah": return "Nahuatl";
case "nau": return "Nauru";
case "nav": return "Navajo";
case "nde": return "Ndebele, North";
case "nbl": return "Ndebele, South";
case "ndo": return "Ndonga";
case "nep": return "Nepali";
case "new": return "Newari";
case "nia": return "Nias";
case "nic": return "Niger-Kordofanian (Other)";
case "ssa": return "Nilo-Saharan (Other)";
case "niu": return "Niuean";
case "non": return "Norse, Old";
case "nai": return "North American Indian (Other)";
case "sme": return "Northern Sami";
case "nor": return "Norwegian";
case "nob": return "Norwegian Bokmål";
case "nno": return "Norwegian Nynorsk";
case "nub": return "Nubian languages";
case "nym": return "Nyamwezi";
case "nya": return "Nyanja";
case "nyn": return "Nyankole";
case "nyo": return "Nyoro";
case "nzi": return "Nzima";
case "oci": return "Occitan";
case "oji": return "Ojibwa";
case "ori": return "Oriya";
case "orm": return "Oromo";
case "osa": return "Osage";
case "oss": return "Ossetian";
case "oto": return "Otomian languages";
case "pal": return "Pahlavi";
case "pau": return "Palauan";
case "pli": return "Pali";
case "pam": return "Pampanga";
case "pag": return "Pangasinan";
case "pan": return "Panjabi";
case "pap": return "Papiamento";
case "paa": return "Papuan (Other)";
case "per": return "Persian";
case "fas": return "Persian";
case "peo": return "Persian, Old (ca.600-400 B.C.)";
case "phi": return "Philippine (Other)";
case "phn": return "Phoenician";
case "pon": return "Pohnpeian";
case "pol": return "Polish";
case "por": return "Portuguese";
case "pra": return "Prakrit languages";
case "pro": return "Provençal";
case "pus": return "Pushto";
case "que": return "Quechua";
case "roh": return "Raeto-Romance";
case "raj": return "Rajasthani";
case "rap": return "Rapanui";
case "rar": return "Rarotongan";
case "roa": return "Romance (Other)";
case "rum": return "Romanian";
case "ron": return "Romanian";
case "rom": return "Romany";
case "run": return "Rundi";
case "rus": return "Russian";
case "sal": return "Salishan languages";
case "sam": return "Samaritan Aramaic";
case "smi": return "Sami languages (Other)";
case "smo": return "Samoan";
case "sad": return "Sandawe";
case "sag": return "Sango";
case "san": return "Sanskrit";
case "sat": return "Santali";
case "srd": return "Sardinian";
case "sas": return "Sasak";
case "sco": return "Scots";
case "gla": return "Gaelic";
case "sel": return "Selkup";
case "sem": return "Semitic (Other)";
case "scc": return "Serbian";
case "srp": return "Serbian";
case "srr": return "Serer";
case "shn": return "Shan";
case "sna": return "Shona";
case "sid": return "Sidamo";
case "sgn": return "Sign languages";
case "bla": return "Siksika";
case "snd": return "Sindhi";
case "sin": return "Sinhalese";
case "sit": return "Sino-Tibetan (Other)";
case "sio": return "Siouan languages";
case "den": return "Slave (Athapascan)";
case "sla": return "Slavic (Other)";
case "slo": return "Slovak";
case "slk": return "Slovak";
case "slv": return "Slovenian";
case "sog": return "Sogdian";
case "som": return "Somali";
case "son": return "Songhai";
case "snk": return "Soninke";
case "wen": return "Sorbian languages";
case "nso": return "Sotho, Northern";
case "sot": return "Sotho, Southern";
case "sai": return "South American Indian (Other)";
case "spa": return "Spanish";
case "suk": return "Sukuma";
case "sux": return "Sumerian";
case "sun": return "Sundanese";
case "sus": return "Susu";
case "swa": return "Swahili";
case "ssw": return "Swati";
case "swe": return "Swedish";
case "syr": return "Syriac";
case "tgl": return "Tagalog";
case "tah": return "Tahitian";
case "tai": return "Tai (Other)";
case "tgk": return "Tajik";
case "tmh": return "Tamashek";
case "tam": return "Tamil";
case "tat": return "Tatar";
case "tel": return "Telugu";
case "ter": return "Tereno";
case "tet": return "Tetum";
case "tha": return "Thai";
case "tib": return "Tibetan";
case "bod": return "Tibetan";
case "tig": return "Tigre";
case "tir": return "Tigrinya";
case "tem": return "Timne";
case "tiv": return "Tiv";
case "tli": return "Tlingit";
case "tpi": return "Tok Pisin";
case "tkl": return "Tokelau";
case "tog": return "Tonga (Nyasa)";
case "ton": return "Tonga (Tonga Islands)";
case "tsi": return "Tsimshian";
case "tso": return "Tsonga";
case "tsn": return "Tswana";
case "tum": return "Tumbuka";
case "tur": return "Turkish";
case "ota": return "Turkish, Ottoman (1500-1928)";
case "tuk": return "Turkmen";
case "tvl": return "Tuvalu";
case "tyv": return "Tuvinian";
case "twi": return "Twi";
case "uga": return "Ugaritic";
case "uig": return "Uighur";
case "ukr": return "Ukrainian";
case "umb": return "Umbundu";
case "und": return "Undetermined";
case "urd": return "Urdu";
case "uzb": return "Uzbek";
case "vai": return "Vai";
case "ven": return "Venda";
case "vie": return "Vietnamese";
case "vol": return "Volapük";
case "vot": return "Votic";
case "wak": return "Wakashan languages";
case "wal": return "Walamo";
case "war": return "Waray";
case "was": return "Washo";
case "wel": return "Welsh";
case "cym": return "Welsh";
case "wol": return "Wolof";
case "xho": return "Xhosa";
case "sah": return "Yakut";
case "yao": return "Yao";
case "yap": return "Yapese";
case "yid": return "Yiddish";
case "yor": return "Yoruba";
case "ypk": return "Yupik languages";
case "znd": return "Zande";
case "zap": return "Zapotec";
case "zen": return "Zenaga";
case "zha": return "Zhuang";
case "zul": return "Zulu";
case "zun": return "Zuni";
default: return code;
}
}
}
}

View File

@@ -1,21 +0,0 @@
using System.Reflection;
using System.Resources;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("BDInfo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Jellyfin Project")]
[assembly: AssemblyProduct("Jellyfin Server")]
[assembly: AssemblyCopyright("Copyright © 2016 CinemaSquid. Copyright © 2019 Jellyfin Contributors. Code released under the GNU General Public License")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: NeutralResourcesLanguage("en")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

View File

@@ -1,5 +0,0 @@
The source is taken from the BDRom folder of this project:
http://www.cinemasquid.com/blu-ray/tools/bdinfo
BDInfoSettings was taken from the FormSettings class, and changed so that the settings all return defaults.

View File

@@ -1,309 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
#undef DEBUG
using System.IO;
namespace BDInfo
{
public abstract class TSCodecAC3
{
private static byte[] eac3_blocks = new byte[] { 1, 2, 3, 6 };
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
ref string tag)
{
if (stream.IsInitialized) return;
byte[] sync = buffer.ReadBytes(2);
if (sync == null ||
sync[0] != 0x0B ||
sync[1] != 0x77)
{
return;
}
int sr_code = 0;
int frame_size = 0;
int frame_size_code = 0;
int channel_mode = 0;
int lfe_on = 0;
int dial_norm = 0;
int num_blocks = 0;
byte[] hdr = buffer.ReadBytes(4);
int bsid = (hdr[3] & 0xF8) >> 3;
buffer.Seek(-4, SeekOrigin.Current);
if (bsid <= 10)
{
byte[] crc = buffer.ReadBytes(2);
sr_code = buffer.ReadBits(2);
frame_size_code = buffer.ReadBits(6);
bsid = buffer.ReadBits(5);
int bsmod = buffer.ReadBits(3);
channel_mode = buffer.ReadBits(3);
int cmixlev = 0;
if (((channel_mode & 0x1) > 0) && (channel_mode != 0x1))
{
cmixlev = buffer.ReadBits(2);
}
int surmixlev = 0;
if ((channel_mode & 0x4) > 0)
{
surmixlev = buffer.ReadBits(2);
}
int dsurmod = 0;
if (channel_mode == 0x2)
{
dsurmod = buffer.ReadBits(2);
if (dsurmod == 0x2)
{
stream.AudioMode = TSAudioMode.Surround;
}
}
lfe_on = buffer.ReadBits(1);
dial_norm = buffer.ReadBits(5);
int compr = 0;
if (1 == buffer.ReadBits(1))
{
compr = buffer.ReadBits(8);
}
int langcod = 0;
if (1 == buffer.ReadBits(1))
{
langcod = buffer.ReadBits(8);
}
int mixlevel = 0;
int roomtyp = 0;
if (1 == buffer.ReadBits(1))
{
mixlevel = buffer.ReadBits(5);
roomtyp = buffer.ReadBits(2);
}
if (channel_mode == 0)
{
int dialnorm2 = buffer.ReadBits(5);
int compr2 = 0;
if (1 == buffer.ReadBits(1))
{
compr2 = buffer.ReadBits(8);
}
int langcod2 = 0;
if (1 == buffer.ReadBits(1))
{
langcod2 = buffer.ReadBits(8);
}
int mixlevel2 = 0;
int roomtyp2 = 0;
if (1 == buffer.ReadBits(1))
{
mixlevel2 = buffer.ReadBits(5);
roomtyp2 = buffer.ReadBits(2);
}
}
int copyrightb = buffer.ReadBits(1);
int origbs = buffer.ReadBits(1);
if (bsid == 6)
{
if (1 == buffer.ReadBits(1))
{
int dmixmod = buffer.ReadBits(2);
int ltrtcmixlev = buffer.ReadBits(3);
int ltrtsurmixlev = buffer.ReadBits(3);
int lorocmixlev = buffer.ReadBits(3);
int lorosurmixlev = buffer.ReadBits(3);
}
if (1 == buffer.ReadBits(1))
{
int dsurexmod = buffer.ReadBits(2);
int dheadphonmod = buffer.ReadBits(2);
if (dheadphonmod == 0x2)
{
// TODO
}
int adconvtyp = buffer.ReadBits(1);
int xbsi2 = buffer.ReadBits(8);
int encinfo = buffer.ReadBits(1);
if (dsurexmod == 2)
{
stream.AudioMode = TSAudioMode.Extended;
}
}
}
}
else
{
int frame_type = buffer.ReadBits(2);
int substreamid = buffer.ReadBits(3);
frame_size = (buffer.ReadBits(11) + 1) << 1;
sr_code = buffer.ReadBits(2);
if (sr_code == 3)
{
sr_code = buffer.ReadBits(2);
}
else
{
num_blocks = buffer.ReadBits(2);
}
channel_mode = buffer.ReadBits(3);
lfe_on = buffer.ReadBits(1);
}
switch (channel_mode)
{
case 0: // 1+1
stream.ChannelCount = 2;
if (stream.AudioMode == TSAudioMode.Unknown)
{
stream.AudioMode = TSAudioMode.DualMono;
}
break;
case 1: // 1/0
stream.ChannelCount = 1;
break;
case 2: // 2/0
stream.ChannelCount = 2;
if (stream.AudioMode == TSAudioMode.Unknown)
{
stream.AudioMode = TSAudioMode.Stereo;
}
break;
case 3: // 3/0
stream.ChannelCount = 3;
break;
case 4: // 2/1
stream.ChannelCount = 3;
break;
case 5: // 3/1
stream.ChannelCount = 4;
break;
case 6: // 2/2
stream.ChannelCount = 4;
break;
case 7: // 3/2
stream.ChannelCount = 5;
break;
default:
stream.ChannelCount = 0;
break;
}
switch (sr_code)
{
case 0:
stream.SampleRate = 48000;
break;
case 1:
stream.SampleRate = 44100;
break;
case 2:
stream.SampleRate = 32000;
break;
default:
stream.SampleRate = 0;
break;
}
if (bsid <= 10)
{
switch (frame_size_code >> 1)
{
case 18:
stream.BitRate = 640000;
break;
case 17:
stream.BitRate = 576000;
break;
case 16:
stream.BitRate = 512000;
break;
case 15:
stream.BitRate = 448000;
break;
case 14:
stream.BitRate = 384000;
break;
case 13:
stream.BitRate = 320000;
break;
case 12:
stream.BitRate = 256000;
break;
case 11:
stream.BitRate = 224000;
break;
case 10:
stream.BitRate = 192000;
break;
case 9:
stream.BitRate = 160000;
break;
case 8:
stream.BitRate = 128000;
break;
case 7:
stream.BitRate = 112000;
break;
case 6:
stream.BitRate = 96000;
break;
case 5:
stream.BitRate = 80000;
break;
case 4:
stream.BitRate = 64000;
break;
case 3:
stream.BitRate = 56000;
break;
case 2:
stream.BitRate = 48000;
break;
case 1:
stream.BitRate = 40000;
break;
case 0:
stream.BitRate = 32000;
break;
default:
stream.BitRate = 0;
break;
}
}
else
{
stream.BitRate = (long)
(4.0 * frame_size * stream.SampleRate / (num_blocks * 256));
}
stream.LFE = lfe_on;
if (stream.StreamType != TSStreamType.AC3_PLUS_AUDIO &&
stream.StreamType != TSStreamType.AC3_PLUS_SECONDARY_AUDIO)
{
stream.DialNorm = dial_norm - 31;
}
stream.IsVBR = false;
stream.IsInitialized = true;
}
}
}

View File

@@ -1,148 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecAVC
{
public static void Scan(
TSVideoStream stream,
TSStreamBuffer buffer,
ref string tag)
{
uint parse = 0;
byte accessUnitDelimiterParse = 0;
byte sequenceParameterSetParse = 0;
string profile = null;
string level = null;
byte constraintSet0Flag = 0;
byte constraintSet1Flag = 0;
byte constraintSet2Flag = 0;
byte constraintSet3Flag = 0;
for (int i = 0; i < buffer.Length; i++)
{
parse = (parse << 8) + buffer.ReadByte();
if (parse == 0x00000109)
{
accessUnitDelimiterParse = 1;
}
else if (accessUnitDelimiterParse > 0)
{
--accessUnitDelimiterParse;
if (accessUnitDelimiterParse == 0)
{
switch ((parse & 0xFF) >> 5)
{
case 0: // I
case 3: // SI
case 5: // I, SI
tag = "I";
break;
case 1: // I, P
case 4: // SI, SP
case 6: // I, SI, P, SP
tag = "P";
break;
case 2: // I, P, B
case 7: // I, SI, P, SP, B
tag = "B";
break;
}
if (stream.IsInitialized) return;
}
}
else if (parse == 0x00000127 || parse == 0x00000167)
{
sequenceParameterSetParse = 3;
}
else if (sequenceParameterSetParse > 0)
{
--sequenceParameterSetParse;
switch (sequenceParameterSetParse)
{
case 2:
switch (parse & 0xFF)
{
case 66:
profile = "Baseline Profile";
break;
case 77:
profile = "Main Profile";
break;
case 88:
profile = "Extended Profile";
break;
case 100:
profile = "High Profile";
break;
case 110:
profile = "High 10 Profile";
break;
case 122:
profile = "High 4:2:2 Profile";
break;
case 144:
profile = "High 4:4:4 Profile";
break;
default:
profile = "Unknown Profile";
break;
}
break;
case 1:
constraintSet0Flag = (byte)
((parse & 0x80) >> 7);
constraintSet1Flag = (byte)
((parse & 0x40) >> 6);
constraintSet2Flag = (byte)
((parse & 0x20) >> 5);
constraintSet3Flag = (byte)
((parse & 0x10) >> 4);
break;
case 0:
byte b = (byte)(parse & 0xFF);
if (b == 11 && constraintSet3Flag == 1)
{
level = "1b";
}
else
{
level = string.Format(
"{0:D}.{1:D}",
b / 10, (b - ((b / 10) * 10)));
}
stream.EncodingProfile = string.Format(
"{0} {1}", profile, level);
stream.IsVBR = true;
stream.IsInitialized = true;
break;
}
}
}
return;
}
}
}

View File

@@ -1,159 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecDTS
{
private static int[] dca_sample_rates =
{
0, 8000, 16000, 32000, 0, 0, 11025, 22050, 44100, 0, 0,
12000, 24000, 48000, 96000, 192000
};
private static int[] dca_bit_rates =
{
32000, 56000, 64000, 96000, 112000, 128000,
192000, 224000, 256000, 320000, 384000,
448000, 512000, 576000, 640000, 768000,
896000, 1024000, 1152000, 1280000, 1344000,
1408000, 1411200, 1472000, 1509000, 1920000,
2048000, 3072000, 3840000, 1/*open*/, 2/*variable*/, 3/*lossless*/
};
private static int[] dca_channels =
{
1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 6, 6, 6, 7, 8, 8
};
private static int[] dca_bits_per_sample =
{
16, 16, 20, 20, 0, 24, 24
};
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
long bitrate,
ref string tag)
{
if (stream.IsInitialized) return;
bool syncFound = false;
uint sync = 0;
for (int i = 0; i < buffer.Length; i++)
{
sync = (sync << 8) + buffer.ReadByte();
if (sync == 0x7FFE8001)
{
syncFound = true;
break;
}
}
if (!syncFound) return;
int frame_type = buffer.ReadBits(1);
int samples_deficit = buffer.ReadBits(5);
int crc_present = buffer.ReadBits(1);
int sample_blocks = buffer.ReadBits(7);
int frame_size = buffer.ReadBits(14);
if (frame_size < 95)
{
return;
}
int amode = buffer.ReadBits(6);
int sample_rate = buffer.ReadBits(4);
if (sample_rate < 0 || sample_rate >= dca_sample_rates.Length)
{
return;
}
int bit_rate = buffer.ReadBits(5);
if (bit_rate < 0 || bit_rate >= dca_bit_rates.Length)
{
return;
}
int downmix = buffer.ReadBits(1);
int dynrange = buffer.ReadBits(1);
int timestamp = buffer.ReadBits(1);
int aux_data = buffer.ReadBits(1);
int hdcd = buffer.ReadBits(1);
int ext_descr = buffer.ReadBits(3);
int ext_coding = buffer.ReadBits(1);
int aspf = buffer.ReadBits(1);
int lfe = buffer.ReadBits(2);
int predictor_history = buffer.ReadBits(1);
if (crc_present == 1)
{
int crc = buffer.ReadBits(16);
}
int multirate_inter = buffer.ReadBits(1);
int version = buffer.ReadBits(4);
int copy_history = buffer.ReadBits(2);
int source_pcm_res = buffer.ReadBits(3);
int front_sum = buffer.ReadBits(1);
int surround_sum = buffer.ReadBits(1);
int dialog_norm = buffer.ReadBits(4);
if (source_pcm_res < 0 || source_pcm_res >= dca_bits_per_sample.Length)
{
return;
}
int subframes = buffer.ReadBits(4);
int total_channels = buffer.ReadBits(3) + 1 + ext_coding;
stream.SampleRate = dca_sample_rates[sample_rate];
stream.ChannelCount = total_channels;
stream.LFE = (lfe > 0 ? 1 : 0);
stream.BitDepth = dca_bits_per_sample[source_pcm_res];
stream.DialNorm = -dialog_norm;
if ((source_pcm_res & 0x1) == 0x1)
{
stream.AudioMode = TSAudioMode.Extended;
}
stream.BitRate = (uint)dca_bit_rates[bit_rate];
switch (stream.BitRate)
{
case 1:
if (bitrate > 0)
{
stream.BitRate = bitrate;
stream.IsVBR = false;
stream.IsInitialized = true;
}
else
{
stream.BitRate = 0;
}
break;
case 2:
case 3:
stream.IsVBR = true;
stream.IsInitialized = true;
break;
default:
stream.IsVBR = false;
stream.IsInitialized = true;
break;
}
}
}
}

View File

@@ -1,246 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecDTSHD
{
private static int[] SampleRates = new int[]
{ 0x1F40, 0x3E80, 0x7D00, 0x0FA00, 0x1F400, 0x5622, 0x0AC44, 0x15888, 0x2B110, 0x56220, 0x2EE0, 0x5DC0, 0x0BB80, 0x17700, 0x2EE00, 0x5DC00 };
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
long bitrate,
ref string tag)
{
if (stream.IsInitialized &&
(stream.StreamType == TSStreamType.DTS_HD_SECONDARY_AUDIO ||
(stream.CoreStream != null &&
stream.CoreStream.IsInitialized))) return;
bool syncFound = false;
uint sync = 0;
for (int i = 0; i < buffer.Length; i++)
{
sync = (sync << 8) + buffer.ReadByte();
if (sync == 0x64582025)
{
syncFound = true;
break;
}
}
if (!syncFound)
{
tag = "CORE";
if (stream.CoreStream == null)
{
stream.CoreStream = new TSAudioStream();
stream.CoreStream.StreamType = TSStreamType.DTS_AUDIO;
}
if (!stream.CoreStream.IsInitialized)
{
buffer.BeginRead();
TSCodecDTS.Scan(stream.CoreStream, buffer, bitrate, ref tag);
}
return;
}
tag = "HD";
int temp1 = buffer.ReadBits(8);
int nuSubStreamIndex = buffer.ReadBits(2);
int nuExtSSHeaderSize = 0;
int nuExtSSFSize = 0;
int bBlownUpHeader = buffer.ReadBits(1);
if (1 == bBlownUpHeader)
{
nuExtSSHeaderSize = buffer.ReadBits(12) + 1;
nuExtSSFSize = buffer.ReadBits(20) + 1;
}
else
{
nuExtSSHeaderSize = buffer.ReadBits(8) + 1;
nuExtSSFSize = buffer.ReadBits(16) + 1;
}
int nuNumAudioPresent = 1;
int nuNumAssets = 1;
int bStaticFieldsPresent = buffer.ReadBits(1);
if (1 == bStaticFieldsPresent)
{
int nuRefClockCode = buffer.ReadBits(2);
int nuExSSFrameDurationCode = buffer.ReadBits(3) + 1;
long nuTimeStamp = 0;
if (1 == buffer.ReadBits(1))
{
nuTimeStamp = (buffer.ReadBits(18) << 18) + buffer.ReadBits(18);
}
nuNumAudioPresent = buffer.ReadBits(3) + 1;
nuNumAssets = buffer.ReadBits(3) + 1;
int[] nuActiveExSSMask = new int[nuNumAudioPresent];
for (int i = 0; i < nuNumAudioPresent; i++)
{
nuActiveExSSMask[i] = buffer.ReadBits(nuSubStreamIndex + 1); //?
}
for (int i = 0; i < nuNumAudioPresent; i++)
{
for (int j = 0; j < nuSubStreamIndex + 1; j++)
{
if (((j + 1) % 2) == 1)
{
int mask = buffer.ReadBits(8);
}
}
}
if (1 == buffer.ReadBits(1))
{
int nuMixMetadataAdjLevel = buffer.ReadBits(2);
int nuBits4MixOutMask = buffer.ReadBits(2) * 4 + 4;
int nuNumMixOutConfigs = buffer.ReadBits(2) + 1;
int[] nuMixOutChMask = new int[nuNumMixOutConfigs];
for (int i = 0; i < nuNumMixOutConfigs; i++)
{
nuMixOutChMask[i] = buffer.ReadBits(nuBits4MixOutMask);
}
}
}
int[] AssetSizes = new int[nuNumAssets];
for (int i = 0; i < nuNumAssets; i++)
{
if (1 == bBlownUpHeader)
{
AssetSizes[i] = buffer.ReadBits(20) + 1;
}
else
{
AssetSizes[i] = buffer.ReadBits(16) + 1;
}
}
for (int i = 0; i < nuNumAssets; i++)
{
long bufferPosition = buffer.Position;
int nuAssetDescriptorFSIZE = buffer.ReadBits(9) + 1;
int DescriptorDataForAssetIndex = buffer.ReadBits(3);
if (1 == bStaticFieldsPresent)
{
int AssetTypeDescrPresent = buffer.ReadBits(1);
if (1 == AssetTypeDescrPresent)
{
int AssetTypeDescriptor = buffer.ReadBits(4);
}
int LanguageDescrPresent = buffer.ReadBits(1);
if (1 == LanguageDescrPresent)
{
int LanguageDescriptor = buffer.ReadBits(24);
}
int bInfoTextPresent = buffer.ReadBits(1);
if (1 == bInfoTextPresent)
{
int nuInfoTextByteSize = buffer.ReadBits(10) + 1;
int[] InfoText = new int[nuInfoTextByteSize];
for (int j = 0; j < nuInfoTextByteSize; j++)
{
InfoText[j] = buffer.ReadBits(8);
}
}
int nuBitResolution = buffer.ReadBits(5) + 1;
int nuMaxSampleRate = buffer.ReadBits(4);
int nuTotalNumChs = buffer.ReadBits(8) + 1;
int bOne2OneMapChannels2Speakers = buffer.ReadBits(1);
int nuSpkrActivityMask = 0;
if (1 == bOne2OneMapChannels2Speakers)
{
int bEmbeddedStereoFlag = 0;
if (nuTotalNumChs > 2)
{
bEmbeddedStereoFlag = buffer.ReadBits(1);
}
int bEmbeddedSixChFlag = 0;
if (nuTotalNumChs > 6)
{
bEmbeddedSixChFlag = buffer.ReadBits(1);
}
int bSpkrMaskEnabled = buffer.ReadBits(1);
int nuNumBits4SAMask = 0;
if (1 == bSpkrMaskEnabled)
{
nuNumBits4SAMask = buffer.ReadBits(2);
nuNumBits4SAMask = nuNumBits4SAMask * 4 + 4;
nuSpkrActivityMask = buffer.ReadBits(nuNumBits4SAMask);
}
// TODO...
}
stream.SampleRate = SampleRates[nuMaxSampleRate];
stream.BitDepth = nuBitResolution;
stream.LFE = 0;
if ((nuSpkrActivityMask & 0x8) == 0x8)
{
++stream.LFE;
}
if ((nuSpkrActivityMask & 0x1000) == 0x1000)
{
++stream.LFE;
}
stream.ChannelCount = nuTotalNumChs - stream.LFE;
}
if (nuNumAssets > 1)
{
// TODO...
break;
}
}
// TODO
if (stream.CoreStream != null)
{
var coreStream = (TSAudioStream)stream.CoreStream;
if (coreStream.AudioMode == TSAudioMode.Extended &&
stream.ChannelCount == 5)
{
stream.AudioMode = TSAudioMode.Extended;
}
/*
if (coreStream.DialNorm != 0)
{
stream.DialNorm = coreStream.DialNorm;
}
*/
}
if (stream.StreamType == TSStreamType.DTS_HD_MASTER_AUDIO)
{
stream.IsVBR = true;
stream.IsInitialized = true;
}
else if (bitrate > 0)
{
stream.IsVBR = false;
stream.BitRate = bitrate;
if (stream.CoreStream != null)
{
stream.BitRate += stream.CoreStream.BitRate;
stream.IsInitialized = true;
}
stream.IsInitialized = (stream.BitRate > 0 ? true : false);
}
}
}
}

View File

@@ -1,123 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecLPCM
{
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
ref string tag)
{
if (stream.IsInitialized) return;
byte[] header = buffer.ReadBytes(4);
int flags = (header[2] << 8) + header[3];
switch ((flags & 0xF000) >> 12)
{
case 1: // 1/0/0
stream.ChannelCount = 1;
stream.LFE = 0;
break;
case 3: // 2/0/0
stream.ChannelCount = 2;
stream.LFE = 0;
break;
case 4: // 3/0/0
stream.ChannelCount = 3;
stream.LFE = 0;
break;
case 5: // 2/1/0
stream.ChannelCount = 3;
stream.LFE = 0;
break;
case 6: // 3/1/0
stream.ChannelCount = 4;
stream.LFE = 0;
break;
case 7: // 2/2/0
stream.ChannelCount = 4;
stream.LFE = 0;
break;
case 8: // 3/2/0
stream.ChannelCount = 5;
stream.LFE = 0;
break;
case 9: // 3/2/1
stream.ChannelCount = 5;
stream.LFE = 1;
break;
case 10: // 3/4/0
stream.ChannelCount = 7;
stream.LFE = 0;
break;
case 11: // 3/4/1
stream.ChannelCount = 7;
stream.LFE = 1;
break;
default:
stream.ChannelCount = 0;
stream.LFE = 0;
break;
}
switch ((flags & 0xC0) >> 6)
{
case 1:
stream.BitDepth = 16;
break;
case 2:
stream.BitDepth = 20;
break;
case 3:
stream.BitDepth = 24;
break;
default:
stream.BitDepth = 0;
break;
}
switch ((flags & 0xF00) >> 8)
{
case 1:
stream.SampleRate = 48000;
break;
case 4:
stream.SampleRate = 96000;
break;
case 5:
stream.SampleRate = 192000;
break;
default:
stream.SampleRate = 0;
break;
}
stream.BitRate = (uint)
(stream.SampleRate * stream.BitDepth *
(stream.ChannelCount + stream.LFE));
stream.IsVBR = false;
stream.IsInitialized = true;
}
}
}

View File

@@ -1,208 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
#undef DEBUG
namespace BDInfo
{
public abstract class TSCodecMPEG2
{
public static void Scan(
TSVideoStream stream,
TSStreamBuffer buffer,
ref string tag)
{
int parse = 0;
int pictureParse = 0;
int sequenceHeaderParse = 0;
int extensionParse = 0;
int sequenceExtensionParse = 0;
for (int i = 0; i < buffer.Length; i++)
{
parse = (parse << 8) + buffer.ReadByte();
if (parse == 0x00000100)
{
pictureParse = 2;
}
else if (parse == 0x000001B3)
{
sequenceHeaderParse = 7;
}
else if (sequenceHeaderParse > 0)
{
--sequenceHeaderParse;
switch (sequenceHeaderParse)
{
#if DEBUG
case 6:
break;
case 5:
break;
case 4:
stream.Width =
(int)((parse & 0xFFF000) >> 12);
stream.Height =
(int)(parse & 0xFFF);
break;
case 3:
stream.AspectRatio =
(TSAspectRatio)((parse & 0xF0) >> 4);
switch ((parse & 0xF0) >> 4)
{
case 0: // Forbidden
break;
case 1: // Square
break;
case 2: // 4:3
break;
case 3: // 16:9
break;
case 4: // 2.21:1
break;
default: // Reserved
break;
}
switch (parse & 0xF)
{
case 0: // Forbidden
break;
case 1: // 23.976
stream.FrameRateEnumerator = 24000;
stream.FrameRateDenominator = 1001;
break;
case 2: // 24
stream.FrameRateEnumerator = 24000;
stream.FrameRateDenominator = 1000;
break;
case 3: // 25
stream.FrameRateEnumerator = 25000;
stream.FrameRateDenominator = 1000;
break;
case 4: // 29.97
stream.FrameRateEnumerator = 30000;
stream.FrameRateDenominator = 1001;
break;
case 5: // 30
stream.FrameRateEnumerator = 30000;
stream.FrameRateDenominator = 1000;
break;
case 6: // 50
stream.FrameRateEnumerator = 50000;
stream.FrameRateDenominator = 1000;
break;
case 7: // 59.94
stream.FrameRateEnumerator = 60000;
stream.FrameRateDenominator = 1001;
break;
case 8: // 60
stream.FrameRateEnumerator = 60000;
stream.FrameRateDenominator = 1000;
break;
default: // Reserved
stream.FrameRateEnumerator = 0;
stream.FrameRateDenominator = 0;
break;
}
break;
case 2:
break;
case 1:
break;
#endif
case 0:
#if DEBUG
stream.BitRate =
(((parse & 0xFFFFC0) >> 6) * 200);
#endif
stream.IsVBR = true;
stream.IsInitialized = true;
break;
}
}
else if (pictureParse > 0)
{
--pictureParse;
if (pictureParse == 0)
{
switch ((parse & 0x38) >> 3)
{
case 1:
tag = "I";
break;
case 2:
tag = "P";
break;
case 3:
tag = "B";
break;
default:
break;
}
if (stream.IsInitialized) return;
}
}
else if (parse == 0x000001B5)
{
extensionParse = 1;
}
else if (extensionParse > 0)
{
--extensionParse;
if (extensionParse == 0)
{
if ((parse & 0xF0) == 0x10)
{
sequenceExtensionParse = 1;
}
}
}
else if (sequenceExtensionParse > 0)
{
--sequenceExtensionParse;
#if DEBUG
if (sequenceExtensionParse == 0)
{
uint sequenceExtension =
((parse & 0x8) >> 3);
if (sequenceExtension == 0)
{
stream.IsInterlaced = true;
}
else
{
stream.IsInterlaced = false;
}
}
#endif
}
}
}
}
}

View File

@@ -1,36 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
// TODO: Do something more interesting here...
public abstract class TSCodecMVC
{
public static void Scan(
TSVideoStream stream,
TSStreamBuffer buffer,
ref string tag)
{
stream.IsVBR = true;
stream.IsInitialized = true;
}
}
}

View File

@@ -1,186 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecTrueHD
{
public static void Scan(
TSAudioStream stream,
TSStreamBuffer buffer,
ref string tag)
{
if (stream.IsInitialized &&
stream.CoreStream != null &&
stream.CoreStream.IsInitialized) return;
bool syncFound = false;
uint sync = 0;
for (int i = 0; i < buffer.Length; i++)
{
sync = (sync << 8) + buffer.ReadByte();
if (sync == 0xF8726FBA)
{
syncFound = true;
break;
}
}
if (!syncFound)
{
tag = "CORE";
if (stream.CoreStream == null)
{
stream.CoreStream = new TSAudioStream();
stream.CoreStream.StreamType = TSStreamType.AC3_AUDIO;
}
if (!stream.CoreStream.IsInitialized)
{
buffer.BeginRead();
TSCodecAC3.Scan(stream.CoreStream, buffer, ref tag);
}
return;
}
tag = "HD";
int ratebits = buffer.ReadBits(4);
if (ratebits != 0xF)
{
stream.SampleRate =
(((ratebits & 8) > 0 ? 44100 : 48000) << (ratebits & 7));
}
int temp1 = buffer.ReadBits(8);
int channels_thd_stream1 = buffer.ReadBits(5);
int temp2 = buffer.ReadBits(2);
stream.ChannelCount = 0;
stream.LFE = 0;
int c_LFE2 = buffer.ReadBits(1);
if (c_LFE2 == 1)
{
stream.LFE += 1;
}
int c_Cvh = buffer.ReadBits(1);
if (c_Cvh == 1)
{
stream.ChannelCount += 1;
}
int c_LRw = buffer.ReadBits(1);
if (c_LRw == 1)
{
stream.ChannelCount += 2;
}
int c_LRsd = buffer.ReadBits(1);
if (c_LRsd == 1)
{
stream.ChannelCount += 2;
}
int c_Ts = buffer.ReadBits(1);
if (c_Ts == 1)
{
stream.ChannelCount += 1;
}
int c_Cs = buffer.ReadBits(1);
if (c_Cs == 1)
{
stream.ChannelCount += 1;
}
int c_LRrs = buffer.ReadBits(1);
if (c_LRrs == 1)
{
stream.ChannelCount += 2;
}
int c_LRc = buffer.ReadBits(1);
if (c_LRc == 1)
{
stream.ChannelCount += 2;
}
int c_LRvh = buffer.ReadBits(1);
if (c_LRvh == 1)
{
stream.ChannelCount += 2;
}
int c_LRs = buffer.ReadBits(1);
if (c_LRs == 1)
{
stream.ChannelCount += 2;
}
int c_LFE = buffer.ReadBits(1);
if (c_LFE == 1)
{
stream.LFE += 1;
}
int c_C = buffer.ReadBits(1);
if (c_C == 1)
{
stream.ChannelCount += 1;
}
int c_LR = buffer.ReadBits(1);
if (c_LR == 1)
{
stream.ChannelCount += 2;
}
int access_unit_size = 40 << (ratebits & 7);
int access_unit_size_pow2 = 64 << (ratebits & 7);
int a1 = buffer.ReadBits(16);
int a2 = buffer.ReadBits(16);
int a3 = buffer.ReadBits(16);
int is_vbr = buffer.ReadBits(1);
int peak_bitrate = buffer.ReadBits(15);
peak_bitrate = (peak_bitrate * stream.SampleRate) >> 4;
double peak_bitdepth =
(double)peak_bitrate /
(stream.ChannelCount + stream.LFE) /
stream.SampleRate;
if (peak_bitdepth > 14)
{
stream.BitDepth = 24;
}
else
{
stream.BitDepth = 16;
}
#if DEBUG
System.Diagnostics.Debug.WriteLine(string.Format(
"{0}\t{1}\t{2:F2}",
stream.PID, peak_bitrate, peak_bitdepth));
#endif
/*
// TODO: Get THD dialnorm from metadata
if (stream.CoreStream != null)
{
TSAudioStream coreStream = (TSAudioStream)stream.CoreStream;
if (coreStream.DialNorm != 0)
{
stream.DialNorm = coreStream.DialNorm;
}
}
*/
stream.IsVBR = true;
stream.IsInitialized = true;
}
}
}

View File

@@ -1,131 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
namespace BDInfo
{
public abstract class TSCodecVC1
{
public static void Scan(
TSVideoStream stream,
TSStreamBuffer buffer,
ref string tag)
{
int parse = 0;
byte frameHeaderParse = 0;
byte sequenceHeaderParse = 0;
bool isInterlaced = false;
for (int i = 0; i < buffer.Length; i++)
{
parse = (parse << 8) + buffer.ReadByte();
if (parse == 0x0000010D)
{
frameHeaderParse = 4;
}
else if (frameHeaderParse > 0)
{
--frameHeaderParse;
if (frameHeaderParse == 0)
{
uint pictureType = 0;
if (isInterlaced)
{
if ((parse & 0x80000000) == 0)
{
pictureType =
(uint)((parse & 0x78000000) >> 13);
}
else
{
pictureType =
(uint)((parse & 0x3c000000) >> 12);
}
}
else
{
pictureType =
(uint)((parse & 0xf0000000) >> 14);
}
if ((pictureType & 0x20000) == 0)
{
tag = "P";
}
else if ((pictureType & 0x10000) == 0)
{
tag = "B";
}
else if ((pictureType & 0x8000) == 0)
{
tag = "I";
}
else if ((pictureType & 0x4000) == 0)
{
tag = "BI";
}
else
{
tag = null;
}
if (stream.IsInitialized) return;
}
}
else if (parse == 0x0000010F)
{
sequenceHeaderParse = 6;
}
else if (sequenceHeaderParse > 0)
{
--sequenceHeaderParse;
switch (sequenceHeaderParse)
{
case 5:
int profileLevel = ((parse & 0x38) >> 3);
if (((parse & 0xC0) >> 6) == 3)
{
stream.EncodingProfile = string.Format(
"Advanced Profile {0}", profileLevel);
}
else
{
stream.EncodingProfile = string.Format(
"Main Profile {0}", profileLevel);
}
break;
case 0:
if (((parse & 0x40) >> 6) > 0)
{
isInterlaced = true;
}
else
{
isInterlaced = false;
}
break;
}
stream.IsVBR = true;
stream.IsInitialized = true;
}
}
}
}
}

View File

@@ -1,37 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using MediaBrowser.Model.IO;
// TODO: Do more interesting things here...
namespace BDInfo
{
public class TSInterleavedFile
{
public FileSystemMetadata FileInfo = null;
public string Name = null;
public TSInterleavedFile(FileSystemMetadata fileInfo)
{
FileInfo = fileInfo;
Name = fileInfo.Name.ToUpper();
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,780 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using System;
using System.Collections.Generic;
namespace BDInfo
{
public enum TSStreamType : byte
{
Unknown = 0,
MPEG1_VIDEO = 0x01,
MPEG2_VIDEO = 0x02,
AVC_VIDEO = 0x1b,
MVC_VIDEO = 0x20,
VC1_VIDEO = 0xea,
MPEG1_AUDIO = 0x03,
MPEG2_AUDIO = 0x04,
LPCM_AUDIO = 0x80,
AC3_AUDIO = 0x81,
AC3_PLUS_AUDIO = 0x84,
AC3_PLUS_SECONDARY_AUDIO = 0xA1,
AC3_TRUE_HD_AUDIO = 0x83,
DTS_AUDIO = 0x82,
DTS_HD_AUDIO = 0x85,
DTS_HD_SECONDARY_AUDIO = 0xA2,
DTS_HD_MASTER_AUDIO = 0x86,
PRESENTATION_GRAPHICS = 0x90,
INTERACTIVE_GRAPHICS = 0x91,
SUBTITLE = 0x92
}
public enum TSVideoFormat : byte
{
Unknown = 0,
VIDEOFORMAT_480i = 1,
VIDEOFORMAT_576i = 2,
VIDEOFORMAT_480p = 3,
VIDEOFORMAT_1080i = 4,
VIDEOFORMAT_720p = 5,
VIDEOFORMAT_1080p = 6,
VIDEOFORMAT_576p = 7,
}
public enum TSFrameRate : byte
{
Unknown = 0,
FRAMERATE_23_976 = 1,
FRAMERATE_24 = 2,
FRAMERATE_25 = 3,
FRAMERATE_29_97 = 4,
FRAMERATE_50 = 6,
FRAMERATE_59_94 = 7
}
public enum TSChannelLayout : byte
{
Unknown = 0,
CHANNELLAYOUT_MONO = 1,
CHANNELLAYOUT_STEREO = 3,
CHANNELLAYOUT_MULTI = 6,
CHANNELLAYOUT_COMBO = 12
}
public enum TSSampleRate : byte
{
Unknown = 0,
SAMPLERATE_48 = 1,
SAMPLERATE_96 = 4,
SAMPLERATE_192 = 5,
SAMPLERATE_48_192 = 12,
SAMPLERATE_48_96 = 14
}
public enum TSAspectRatio
{
Unknown = 0,
ASPECT_4_3 = 2,
ASPECT_16_9 = 3,
ASPECT_2_21 = 4
}
public class TSDescriptor
{
public byte Name;
public byte[] Value;
public TSDescriptor(byte name, byte length)
{
Name = name;
Value = new byte[length];
}
public TSDescriptor Clone()
{
var descriptor =
new TSDescriptor(Name, (byte)Value.Length);
Value.CopyTo(descriptor.Value, 0);
return descriptor;
}
}
public abstract class TSStream
{
public TSStream()
{
}
public override string ToString()
{
return string.Format("{0} ({1})", CodecShortName, PID);
}
public ushort PID;
public TSStreamType StreamType;
public List<TSDescriptor> Descriptors = null;
public long BitRate = 0;
public long ActiveBitRate = 0;
public bool IsVBR = false;
public bool IsInitialized = false;
public string LanguageName;
public bool IsHidden = false;
public ulong PayloadBytes = 0;
public ulong PacketCount = 0;
public double PacketSeconds = 0;
public int AngleIndex = 0;
public ulong PacketSize => PacketCount * 192;
private string _LanguageCode;
public string LanguageCode
{
get => _LanguageCode;
set
{
_LanguageCode = value;
LanguageName = LanguageCodes.GetName(value);
}
}
public bool IsVideoStream
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_VIDEO:
case TSStreamType.MPEG2_VIDEO:
case TSStreamType.AVC_VIDEO:
case TSStreamType.MVC_VIDEO:
case TSStreamType.VC1_VIDEO:
return true;
default:
return false;
}
}
}
public bool IsAudioStream
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_AUDIO:
case TSStreamType.MPEG2_AUDIO:
case TSStreamType.LPCM_AUDIO:
case TSStreamType.AC3_AUDIO:
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
case TSStreamType.AC3_TRUE_HD_AUDIO:
case TSStreamType.DTS_AUDIO:
case TSStreamType.DTS_HD_AUDIO:
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
case TSStreamType.DTS_HD_MASTER_AUDIO:
return true;
default:
return false;
}
}
}
public bool IsGraphicsStream
{
get
{
switch (StreamType)
{
case TSStreamType.PRESENTATION_GRAPHICS:
case TSStreamType.INTERACTIVE_GRAPHICS:
return true;
default:
return false;
}
}
}
public bool IsTextStream
{
get
{
switch (StreamType)
{
case TSStreamType.SUBTITLE:
return true;
default:
return false;
}
}
}
public string CodecName
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_VIDEO:
return "MPEG-1 Video";
case TSStreamType.MPEG2_VIDEO:
return "MPEG-2 Video";
case TSStreamType.AVC_VIDEO:
return "MPEG-4 AVC Video";
case TSStreamType.MVC_VIDEO:
return "MPEG-4 MVC Video";
case TSStreamType.VC1_VIDEO:
return "VC-1 Video";
case TSStreamType.MPEG1_AUDIO:
return "MP1 Audio";
case TSStreamType.MPEG2_AUDIO:
return "MP2 Audio";
case TSStreamType.LPCM_AUDIO:
return "LPCM Audio";
case TSStreamType.AC3_AUDIO:
if (((TSAudioStream)this).AudioMode == TSAudioMode.Extended)
return "Dolby Digital EX Audio";
else
return "Dolby Digital Audio";
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
return "Dolby Digital Plus Audio";
case TSStreamType.AC3_TRUE_HD_AUDIO:
return "Dolby TrueHD Audio";
case TSStreamType.DTS_AUDIO:
if (((TSAudioStream)this).AudioMode == TSAudioMode.Extended)
return "DTS-ES Audio";
else
return "DTS Audio";
case TSStreamType.DTS_HD_AUDIO:
return "DTS-HD High-Res Audio";
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
return "DTS Express";
case TSStreamType.DTS_HD_MASTER_AUDIO:
return "DTS-HD Master Audio";
case TSStreamType.PRESENTATION_GRAPHICS:
return "Presentation Graphics";
case TSStreamType.INTERACTIVE_GRAPHICS:
return "Interactive Graphics";
case TSStreamType.SUBTITLE:
return "Subtitle";
default:
return "UNKNOWN";
}
}
}
public string CodecAltName
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_VIDEO:
return "MPEG-1";
case TSStreamType.MPEG2_VIDEO:
return "MPEG-2";
case TSStreamType.AVC_VIDEO:
return "AVC";
case TSStreamType.MVC_VIDEO:
return "MVC";
case TSStreamType.VC1_VIDEO:
return "VC-1";
case TSStreamType.MPEG1_AUDIO:
return "MP1";
case TSStreamType.MPEG2_AUDIO:
return "MP2";
case TSStreamType.LPCM_AUDIO:
return "LPCM";
case TSStreamType.AC3_AUDIO:
return "DD AC3";
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
return "DD AC3+";
case TSStreamType.AC3_TRUE_HD_AUDIO:
return "Dolby TrueHD";
case TSStreamType.DTS_AUDIO:
return "DTS";
case TSStreamType.DTS_HD_AUDIO:
return "DTS-HD Hi-Res";
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
return "DTS Express";
case TSStreamType.DTS_HD_MASTER_AUDIO:
return "DTS-HD Master";
case TSStreamType.PRESENTATION_GRAPHICS:
return "PGS";
case TSStreamType.INTERACTIVE_GRAPHICS:
return "IGS";
case TSStreamType.SUBTITLE:
return "SUB";
default:
return "UNKNOWN";
}
}
}
public string CodecShortName
{
get
{
switch (StreamType)
{
case TSStreamType.MPEG1_VIDEO:
return "MPEG-1";
case TSStreamType.MPEG2_VIDEO:
return "MPEG-2";
case TSStreamType.AVC_VIDEO:
return "AVC";
case TSStreamType.MVC_VIDEO:
return "MVC";
case TSStreamType.VC1_VIDEO:
return "VC-1";
case TSStreamType.MPEG1_AUDIO:
return "MP1";
case TSStreamType.MPEG2_AUDIO:
return "MP2";
case TSStreamType.LPCM_AUDIO:
return "LPCM";
case TSStreamType.AC3_AUDIO:
if (((TSAudioStream)this).AudioMode == TSAudioMode.Extended)
return "AC3-EX";
else
return "AC3";
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
return "AC3+";
case TSStreamType.AC3_TRUE_HD_AUDIO:
return "TrueHD";
case TSStreamType.DTS_AUDIO:
if (((TSAudioStream)this).AudioMode == TSAudioMode.Extended)
return "DTS-ES";
else
return "DTS";
case TSStreamType.DTS_HD_AUDIO:
return "DTS-HD HR";
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
return "DTS Express";
case TSStreamType.DTS_HD_MASTER_AUDIO:
return "DTS-HD MA";
case TSStreamType.PRESENTATION_GRAPHICS:
return "PGS";
case TSStreamType.INTERACTIVE_GRAPHICS:
return "IGS";
case TSStreamType.SUBTITLE:
return "SUB";
default:
return "UNKNOWN";
}
}
}
public virtual string Description => "";
public abstract TSStream Clone();
protected void CopyTo(TSStream stream)
{
stream.PID = PID;
stream.StreamType = StreamType;
stream.IsVBR = IsVBR;
stream.BitRate = BitRate;
stream.IsInitialized = IsInitialized;
stream.LanguageCode = _LanguageCode;
if (Descriptors != null)
{
stream.Descriptors = new List<TSDescriptor>();
foreach (var descriptor in Descriptors)
{
stream.Descriptors.Add(descriptor.Clone());
}
}
}
}
public class TSVideoStream : TSStream
{
public TSVideoStream()
{
}
public int Width;
public int Height;
public bool IsInterlaced;
public int FrameRateEnumerator;
public int FrameRateDenominator;
public TSAspectRatio AspectRatio;
public string EncodingProfile;
private TSVideoFormat _VideoFormat;
public TSVideoFormat VideoFormat
{
get => _VideoFormat;
set
{
_VideoFormat = value;
switch (value)
{
case TSVideoFormat.VIDEOFORMAT_480i:
Height = 480;
IsInterlaced = true;
break;
case TSVideoFormat.VIDEOFORMAT_480p:
Height = 480;
IsInterlaced = false;
break;
case TSVideoFormat.VIDEOFORMAT_576i:
Height = 576;
IsInterlaced = true;
break;
case TSVideoFormat.VIDEOFORMAT_576p:
Height = 576;
IsInterlaced = false;
break;
case TSVideoFormat.VIDEOFORMAT_720p:
Height = 720;
IsInterlaced = false;
break;
case TSVideoFormat.VIDEOFORMAT_1080i:
Height = 1080;
IsInterlaced = true;
break;
case TSVideoFormat.VIDEOFORMAT_1080p:
Height = 1080;
IsInterlaced = false;
break;
}
}
}
private TSFrameRate _FrameRate;
public TSFrameRate FrameRate
{
get => _FrameRate;
set
{
_FrameRate = value;
switch (value)
{
case TSFrameRate.FRAMERATE_23_976:
FrameRateEnumerator = 24000;
FrameRateDenominator = 1001;
break;
case TSFrameRate.FRAMERATE_24:
FrameRateEnumerator = 24000;
FrameRateDenominator = 1000;
break;
case TSFrameRate.FRAMERATE_25:
FrameRateEnumerator = 25000;
FrameRateDenominator = 1000;
break;
case TSFrameRate.FRAMERATE_29_97:
FrameRateEnumerator = 30000;
FrameRateDenominator = 1001;
break;
case TSFrameRate.FRAMERATE_50:
FrameRateEnumerator = 50000;
FrameRateDenominator = 1000;
break;
case TSFrameRate.FRAMERATE_59_94:
FrameRateEnumerator = 60000;
FrameRateDenominator = 1001;
break;
}
}
}
public override string Description
{
get
{
string description = "";
if (Height > 0)
{
description += string.Format("{0:D}{1} / ",
Height,
IsInterlaced ? "i" : "p");
}
if (FrameRateEnumerator > 0 &&
FrameRateDenominator > 0)
{
if (FrameRateEnumerator % FrameRateDenominator == 0)
{
description += string.Format("{0:D} fps / ",
FrameRateEnumerator / FrameRateDenominator);
}
else
{
description += string.Format("{0:F3} fps / ",
(double)FrameRateEnumerator / FrameRateDenominator);
}
}
if (AspectRatio == TSAspectRatio.ASPECT_4_3)
{
description += "4:3 / ";
}
else if (AspectRatio == TSAspectRatio.ASPECT_16_9)
{
description += "16:9 / ";
}
if (EncodingProfile != null)
{
description += EncodingProfile + " / ";
}
if (description.EndsWith(" / "))
{
description = description.Substring(0, description.Length - 3);
}
return description;
}
}
public override TSStream Clone()
{
var stream = new TSVideoStream();
CopyTo(stream);
stream.VideoFormat = _VideoFormat;
stream.FrameRate = _FrameRate;
stream.Width = Width;
stream.Height = Height;
stream.IsInterlaced = IsInterlaced;
stream.FrameRateEnumerator = FrameRateEnumerator;
stream.FrameRateDenominator = FrameRateDenominator;
stream.AspectRatio = AspectRatio;
stream.EncodingProfile = EncodingProfile;
return stream;
}
}
public enum TSAudioMode
{
Unknown,
DualMono,
Stereo,
Surround,
Extended
}
public class TSAudioStream : TSStream
{
public TSAudioStream()
{
}
public int SampleRate;
public int ChannelCount;
public int BitDepth;
public int LFE;
public int DialNorm;
public TSAudioMode AudioMode;
public TSAudioStream CoreStream;
public TSChannelLayout ChannelLayout;
public static int ConvertSampleRate(
TSSampleRate sampleRate)
{
switch (sampleRate)
{
case TSSampleRate.SAMPLERATE_48:
return 48000;
case TSSampleRate.SAMPLERATE_96:
case TSSampleRate.SAMPLERATE_48_96:
return 96000;
case TSSampleRate.SAMPLERATE_192:
case TSSampleRate.SAMPLERATE_48_192:
return 192000;
}
return 0;
}
public string ChannelDescription
{
get
{
if (ChannelLayout == TSChannelLayout.CHANNELLAYOUT_MONO &&
ChannelCount == 2)
{
}
string description = "";
if (ChannelCount > 0)
{
description += string.Format(
"{0:D}.{1:D}",
ChannelCount, LFE);
}
else
{
switch (ChannelLayout)
{
case TSChannelLayout.CHANNELLAYOUT_MONO:
description += "1.0";
break;
case TSChannelLayout.CHANNELLAYOUT_STEREO:
description += "2.0";
break;
case TSChannelLayout.CHANNELLAYOUT_MULTI:
description += "5.1";
break;
}
}
if (AudioMode == TSAudioMode.Extended)
{
if (StreamType == TSStreamType.AC3_AUDIO)
{
description += "-EX";
}
if (StreamType == TSStreamType.DTS_AUDIO ||
StreamType == TSStreamType.DTS_HD_AUDIO ||
StreamType == TSStreamType.DTS_HD_MASTER_AUDIO)
{
description += "-ES";
}
}
return description;
}
}
public override string Description
{
get
{
string description = ChannelDescription;
if (SampleRate > 0)
{
description += string.Format(
" / {0:D} kHz", SampleRate / 1000);
}
if (BitRate > 0)
{
description += string.Format(
" / {0:D} kbps", (uint)Math.Round((double)BitRate / 1000));
}
if (BitDepth > 0)
{
description += string.Format(
" / {0:D}-bit", BitDepth);
}
if (DialNorm != 0)
{
description += string.Format(
" / DN {0}dB", DialNorm);
}
if (ChannelCount == 2)
{
switch (AudioMode)
{
case TSAudioMode.DualMono:
description += " / Dual Mono";
break;
case TSAudioMode.Surround:
description += " / Dolby Surround";
break;
}
}
if (description.EndsWith(" / "))
{
description = description.Substring(0, description.Length - 3);
}
if (CoreStream != null)
{
string codec = "";
switch (CoreStream.StreamType)
{
case TSStreamType.AC3_AUDIO:
codec = "AC3 Embedded";
break;
case TSStreamType.DTS_AUDIO:
codec = "DTS Core";
break;
}
description += string.Format(
" ({0}: {1})",
codec,
CoreStream.Description);
}
return description;
}
}
public override TSStream Clone()
{
var stream = new TSAudioStream();
CopyTo(stream);
stream.SampleRate = SampleRate;
stream.ChannelLayout = ChannelLayout;
stream.ChannelCount = ChannelCount;
stream.BitDepth = BitDepth;
stream.LFE = LFE;
stream.DialNorm = DialNorm;
stream.AudioMode = AudioMode;
if (CoreStream != null)
{
stream.CoreStream = (TSAudioStream)CoreStream.Clone();
}
return stream;
}
}
public class TSGraphicsStream : TSStream
{
public TSGraphicsStream()
{
IsVBR = true;
IsInitialized = true;
}
public override TSStream Clone()
{
var stream = new TSGraphicsStream();
CopyTo(stream);
return stream;
}
}
public class TSTextStream : TSStream
{
public TSTextStream()
{
IsVBR = true;
IsInitialized = true;
}
public override TSStream Clone()
{
var stream = new TSTextStream();
CopyTo(stream);
return stream;
}
}
}

View File

@@ -1,130 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using System;
using System.Collections.Specialized;
using System.IO;
namespace BDInfo
{
public class TSStreamBuffer
{
private MemoryStream Stream = new MemoryStream();
private int SkipBits = 0;
private byte[] Buffer;
private int BufferLength = 0;
public int TransferLength = 0;
public TSStreamBuffer()
{
Buffer = new byte[4096];
Stream = new MemoryStream(Buffer);
}
public long Length => (long)BufferLength;
public long Position => Stream.Position;
public void Add(
byte[] buffer,
int offset,
int length)
{
TransferLength += length;
if (BufferLength + length >= Buffer.Length)
{
length = Buffer.Length - BufferLength;
}
if (length > 0)
{
Array.Copy(buffer, offset, Buffer, BufferLength, length);
BufferLength += length;
}
}
public void Seek(
long offset,
SeekOrigin loc)
{
Stream.Seek(offset, loc);
}
public void Reset()
{
BufferLength = 0;
TransferLength = 0;
}
public void BeginRead()
{
SkipBits = 0;
Stream.Seek(0, SeekOrigin.Begin);
}
public void EndRead()
{
}
public byte[] ReadBytes(int bytes)
{
if (Stream.Position + bytes >= BufferLength)
{
return null;
}
byte[] value = new byte[bytes];
Stream.Read(value, 0, bytes);
return value;
}
public byte ReadByte()
{
return (byte)Stream.ReadByte();
}
public int ReadBits(int bits)
{
long pos = Stream.Position;
int shift = 24;
int data = 0;
for (int i = 0; i < 4; i++)
{
if (pos + i >= BufferLength) break;
data += (Stream.ReadByte() << shift);
shift -= 8;
}
var vector = new BitVector32(data);
int value = 0;
for (int i = SkipBits; i < SkipBits + bits; i++)
{
value <<= 1;
value += (vector[1 << (32 - i - 1)] ? 1 : 0);
}
SkipBits += bits;
Stream.Seek(pos + (SkipBits >> 3), SeekOrigin.Begin);
SkipBits = SkipBits % 8;
return value;
}
}
}

View File

@@ -1,107 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
using System;
using System.Collections.Generic;
namespace BDInfo
{
public class TSStreamClip
{
public int AngleIndex = 0;
public string Name;
public double TimeIn;
public double TimeOut;
public double RelativeTimeIn;
public double RelativeTimeOut;
public double Length;
public ulong FileSize = 0;
public ulong InterleavedFileSize = 0;
public ulong PayloadBytes = 0;
public ulong PacketCount = 0;
public double PacketSeconds = 0;
public List<double> Chapters = new List<double>();
public TSStreamFile StreamFile = null;
public TSStreamClipFile StreamClipFile = null;
public TSStreamClip(
TSStreamFile streamFile,
TSStreamClipFile streamClipFile)
{
if (streamFile != null)
{
Name = streamFile.Name;
StreamFile = streamFile;
FileSize = (ulong)StreamFile.FileInfo.Length;
if (StreamFile.InterleavedFile != null)
{
InterleavedFileSize = (ulong)StreamFile.InterleavedFile.FileInfo.Length;
}
}
StreamClipFile = streamClipFile;
}
public string DisplayName
{
get
{
if (StreamFile != null &&
StreamFile.InterleavedFile != null &&
BDInfoSettings.EnableSSIF)
{
return StreamFile.InterleavedFile.Name;
}
return Name;
}
}
public ulong PacketSize => PacketCount * 192;
public ulong PacketBitRate
{
get
{
if (PacketSeconds > 0)
{
return (ulong)Math.Round(((PacketSize * 8.0) / PacketSeconds));
}
return 0;
}
}
public bool IsCompatible(TSStreamClip clip)
{
foreach (var stream1 in StreamFile.Streams.Values)
{
if (clip.StreamFile.Streams.ContainsKey(stream1.PID))
{
var stream2 = clip.StreamFile.Streams[stream1.PID];
if (stream1.StreamType != stream2.StreamType)
{
return false;
}
}
}
return true;
}
}
}

View File

@@ -1,244 +0,0 @@
//============================================================================
// BDInfo - Blu-ray Video and Audio Analysis Tool
// Copyright © 2010 Cinema Squid
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//=============================================================================
#undef DEBUG
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using MediaBrowser.Model.IO;
namespace BDInfo
{
public class TSStreamClipFile
{
public FileSystemMetadata FileInfo = null;
public string FileType = null;
public bool IsValid = false;
public string Name = null;
public Dictionary<ushort, TSStream> Streams =
new Dictionary<ushort, TSStream>();
public TSStreamClipFile(FileSystemMetadata fileInfo)
{
FileInfo = fileInfo;
Name = fileInfo.Name.ToUpper();
}
public void Scan()
{
Stream fileStream = null;
BinaryReader fileReader = null;
try
{
#if DEBUG
Debug.WriteLine(string.Format(
"Scanning {0}...", Name));
#endif
Streams.Clear();
fileStream = File.OpenRead(FileInfo.FullName);
fileReader = new BinaryReader(fileStream);
byte[] data = new byte[fileStream.Length];
fileReader.Read(data, 0, data.Length);
byte[] fileType = new byte[8];
Array.Copy(data, 0, fileType, 0, fileType.Length);
FileType = Encoding.ASCII.GetString(fileType, 0, fileType.Length);
if (FileType != "HDMV0100" &&
FileType != "HDMV0200")
{
throw new Exception(string.Format(
"Clip info file {0} has an unknown file type {1}.",
FileInfo.Name, FileType));
}
#if DEBUG
Debug.WriteLine(string.Format(
"\tFileType: {0}", FileType));
#endif
int clipIndex =
((int)data[12] << 24) +
((int)data[13] << 16) +
((int)data[14] << 8) +
((int)data[15]);
int clipLength =
((int)data[clipIndex] << 24) +
((int)data[clipIndex + 1] << 16) +
((int)data[clipIndex + 2] << 8) +
((int)data[clipIndex + 3]);
byte[] clipData = new byte[clipLength];
Array.Copy(data, clipIndex + 4, clipData, 0, clipData.Length);
int streamCount = clipData[8];
#if DEBUG
Debug.WriteLine(string.Format(
"\tStreamCount: {0}", streamCount));
#endif
int streamOffset = 10;
for (int streamIndex = 0;
streamIndex < streamCount;
streamIndex++)
{
TSStream stream = null;
ushort PID = (ushort)
((clipData[streamOffset] << 8) +
clipData[streamOffset + 1]);
streamOffset += 2;
var streamType = (TSStreamType)
clipData[streamOffset + 1];
switch (streamType)
{
case TSStreamType.MVC_VIDEO:
// TODO
break;
case TSStreamType.AVC_VIDEO:
case TSStreamType.MPEG1_VIDEO:
case TSStreamType.MPEG2_VIDEO:
case TSStreamType.VC1_VIDEO:
{
var videoFormat = (TSVideoFormat)
(clipData[streamOffset + 2] >> 4);
var frameRate = (TSFrameRate)
(clipData[streamOffset + 2] & 0xF);
var aspectRatio = (TSAspectRatio)
(clipData[streamOffset + 3] >> 4);
stream = new TSVideoStream();
((TSVideoStream)stream).VideoFormat = videoFormat;
((TSVideoStream)stream).AspectRatio = aspectRatio;
((TSVideoStream)stream).FrameRate = frameRate;
#if DEBUG
Debug.WriteLine(string.Format(
"\t{0} {1} {2} {3} {4}",
PID,
streamType,
videoFormat,
frameRate,
aspectRatio));
#endif
}
break;
case TSStreamType.AC3_AUDIO:
case TSStreamType.AC3_PLUS_AUDIO:
case TSStreamType.AC3_PLUS_SECONDARY_AUDIO:
case TSStreamType.AC3_TRUE_HD_AUDIO:
case TSStreamType.DTS_AUDIO:
case TSStreamType.DTS_HD_AUDIO:
case TSStreamType.DTS_HD_MASTER_AUDIO:
case TSStreamType.DTS_HD_SECONDARY_AUDIO:
case TSStreamType.LPCM_AUDIO:
case TSStreamType.MPEG1_AUDIO:
case TSStreamType.MPEG2_AUDIO:
{
byte[] languageBytes = new byte[3];
Array.Copy(clipData, streamOffset + 3,
languageBytes, 0, languageBytes.Length);
string languageCode = Encoding.ASCII.GetString(languageBytes, 0, languageBytes.Length);
var channelLayout = (TSChannelLayout)
(clipData[streamOffset + 2] >> 4);
var sampleRate = (TSSampleRate)
(clipData[streamOffset + 2] & 0xF);
stream = new TSAudioStream();
((TSAudioStream)stream).LanguageCode = languageCode;
((TSAudioStream)stream).ChannelLayout = channelLayout;
((TSAudioStream)stream).SampleRate = TSAudioStream.ConvertSampleRate(sampleRate);
((TSAudioStream)stream).LanguageCode = languageCode;
#if DEBUG
Debug.WriteLine(string.Format(
"\t{0} {1} {2} {3} {4}",
PID,
streamType,
languageCode,
channelLayout,
sampleRate));
#endif
}
break;
case TSStreamType.INTERACTIVE_GRAPHICS:
case TSStreamType.PRESENTATION_GRAPHICS:
{
byte[] languageBytes = new byte[3];
Array.Copy(clipData, streamOffset + 2,
languageBytes, 0, languageBytes.Length);
string languageCode = Encoding.ASCII.GetString(languageBytes, 0, languageBytes.Length);
stream = new TSGraphicsStream();
stream.LanguageCode = languageCode;
#if DEBUG
Debug.WriteLine(string.Format(
"\t{0} {1} {2}",
PID,
streamType,
languageCode));
#endif
}
break;
case TSStreamType.SUBTITLE:
{
byte[] languageBytes = new byte[3];
Array.Copy(clipData, streamOffset + 3,
languageBytes, 0, languageBytes.Length);
string languageCode = Encoding.ASCII.GetString(languageBytes, 0, languageBytes.Length);
#if DEBUG
Debug.WriteLine(string.Format(
"\t{0} {1} {2}",
PID,
streamType,
languageCode));
#endif
stream = new TSTextStream();
stream.LanguageCode = languageCode;
}
break;
}
if (stream != null)
{
stream.PID = PID;
stream.StreamType = streamType;
Streams.Add(PID, stream);
}
streamOffset += clipData[streamOffset] + 1;
}
IsValid = true;
}
finally
{
if (fileReader != null) fileReader.Dispose();
if (fileStream != null) fileStream.Dispose();
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +1,132 @@
# Jellyfin Contributors
- [JoshuaBoniface](https://github.com/joshuaboniface)
- [nvllsvm](https://github.com/nvllsvm)
- [JustAMan](https://github.com/JustAMan)
- [dcrdev](https://github.com/dcrdev)
- [EraYaN](https://github.com/EraYaN)
- [flemse](https://github.com/flemse)
- [97carmine](https://github.com/97carmine)
- [Abbe98](https://github.com/Abbe98)
- [agrenott](https://github.com/agrenott)
- [AndreCarvalho](https://github.com/AndreCarvalho)
- [anthonylavado](https://github.com/anthonylavado)
- [Artiume](https://github.com/Artiume)
- [AThomsen](https://github.com/AThomsen)
- [bilde2910](https://github.com/bilde2910)
- [bfayers](https://github.com/bfayers)
- [Bond_009](https://github.com/Bond-009)
- [AnthonyLavado](https://github.com/anthonylavado)
- [sparky8251](https://github.com/sparky8251)
- [LeoVerto](https://github.com/LeoVerto)
- [grafixeyehero](https://github.com/grafixeyehero)
- [BnMcG](https://github.com/BnMcG)
- [Bond-009](https://github.com/Bond-009)
- [brianjmurrell](https://github.com/brianjmurrell)
- [bugfixin](https://github.com/bugfixin)
- [chaosinnovator](https://github.com/chaosinnovator)
- [ckcr4lyf](https://github.com/ckcr4lyf)
- [crankdoofus](https://github.com/crankdoofus)
- [crobibero](https://github.com/crobibero)
- [cromefire](https://github.com/cromefire)
- [cryptobank](https://github.com/cryptobank)
- [cvium](https://github.com/cvium)
- [wtayl0r](https://github.com/wtayl0r)
- [TtheCreator](https://github.com/Tthecreator)
- [dannymichel](https://github.com/dannymichel)
- [DaveChild](https://github.com/DaveChild)
- [dcrdev](https://github.com/dcrdev)
- [dhartung](https://github.com/dhartung)
- [dinki](https://github.com/dinki)
- [dkanada](https://github.com/dkanada)
- [LogicalPhallacy](https://github.com/LogicalPhallacy/)
- [RazeLighter777](https://github.com/RazeLighter777)
- [WillWill56](https://github.com/WillWill56)
- [Liggy](https://github.com/Liggy)
- [fruhnow](https://github.com/fruhnow)
- [Lynxy](https://github.com/Lynxy)
- [dlahoti](https://github.com/dlahoti)
- [dmitrylyzo](https://github.com/dmitrylyzo)
- [DMouse10462](https://github.com/DMouse10462)
- [DrPandemic](https://github.com/DrPandemic)
- [EraYaN](https://github.com/EraYaN)
- [escabe](https://github.com/escabe)
- [excelite](https://github.com/excelite)
- [fasheng](https://github.com/fasheng)
- [ploughpuff](https://github.com/ploughpuff)
- [ferferga](https://github.com/ferferga)
- [fhriley](https://github.com/fhriley)
- [flemse](https://github.com/flemse)
- [Froghut](https://github.com/Froghut)
- [fruhnow](https://github.com/fruhnow)
- [geilername](https://github.com/geilername)
- [gnattu](https://github.com/gnattu)
- [grafixeyehero](https://github.com/grafixeyehero)
- [h1nk](https://github.com/h1nk)
- [hawken93](https://github.com/hawken93)
- [HelloWorld017](https://github.com/HelloWorld017)
- [jftuga](https://github.com/jftuga)
- [joern-h](https://github.com/joern-h)
- [joshuaboniface](https://github.com/joshuaboniface)
- [JustAMan](https://github.com/JustAMan)
- [justinfenn](https://github.com/justinfenn)
- [KerryRJ](https://github.com/KerryRJ)
- [Larvitar](https://github.com/Larvitar)
- [LeoVerto](https://github.com/LeoVerto)
- [Liggy](https://github.com/Liggy)
- [LogicalPhallacy](https://github.com/LogicalPhallacy)
- [loli10K](https://github.com/loli10K)
- [lostmypillow](https://github.com/lostmypillow)
- [Lynxy](https://github.com/Lynxy)
- [ManfredRichthofen](https://github.com/ManfredRichthofen)
- [Marenz](https://github.com/Marenz)
- [marius-luca-87](https://github.com/marius-luca-87)
- [mark-monteiro](https://github.com/mark-monteiro)
- [Matt07211](https://github.com/Matt07211)
- [mcarlton00](https://github.com/mcarlton00)
- [mitchfizz05](https://github.com/mitchfizz05)
- [MrTimscampi](https://github.com/MrTimscampi)
- [n8225](https://github.com/n8225)
- [Narfinger](https://github.com/Narfinger)
- [NathanPickard](https://github.com/NathanPickard)
- [neilsb](https://github.com/neilsb)
- [nevado](https://github.com/nevado)
- [Nickbert7](https://github.com/Nickbert7)
- [nvllsvm](https://github.com/nvllsvm)
- [nyanmisaka](https://github.com/nyanmisaka)
- [oddstr13](https://github.com/oddstr13)
- [petermcneil](https://github.com/petermcneil)
- [Phlogi](https://github.com/Phlogi)
- [pjeanjean](https://github.com/pjeanjean)
- [ploughpuff](https://github.com/ploughpuff)
- [pR0Ps](https://github.com/pR0Ps)
- [PrplHaz4](https://github.com/PrplHaz4)
- [RazeLighter777](https://github.com/RazeLighter777)
- [redSpoutnik](https://github.com/redSpoutnik)
- [ringmatter](https://github.com/ringmatter)
- [ryan-hartzell](https://github.com/ryan-hartzell)
- [s0urcelab](https://github.com/s0urcelab)
- [sachk](https://github.com/sachk)
- [sammyrc34](https://github.com/sammyrc34)
- [samuel9554](https://github.com/samuel9554)
- [scheidleon](https://github.com/scheidleon)
- [sebPomme](https://github.com/sebPomme)
- [SenorSmartyPants](https://github.com/SenorSmartyPants)
- [shemanaev](https://github.com/shemanaev)
- [skaro13](https://github.com/skaro13)
- [sl1288](https://github.com/sl1288)
- [sorinyo2004](https://github.com/sorinyo2004)
- [sparky8251](https://github.com/sparky8251)
- [stanionascu](https://github.com/stanionascu)
- [stevehayles](https://github.com/stevehayles)
- [SuperSandro2000](https://github.com/SuperSandro2000)
- [tbraeutigam](https://github.com/tbraeutigam)
- [teacupx](https://github.com/teacupx)
- [Terror-Gene](https://github.com/Terror-Gene)
- [ThatNerdyPikachu](https://github.com/ThatNerdyPikachu)
- [ThibaultNocchi](https://github.com/ThibaultNocchi)
- [thornbill](https://github.com/thornbill)
- [ThreeFive-O](https://github.com/ThreeFive-O)
- [TrisMcC](https://github.com/TrisMcC)
- [trumblejoe](https://github.com/trumblejoe)
- [TtheCreator](https://github.com/TtheCreator)
- [twinkybot](https://github.com/twinkybot)
- [Ullmie02](https://github.com/Ullmie02)
- [Unhelpful](https://github.com/Unhelpful)
- [viaregio](https://github.com/viaregio)
- [vitorsemeano](https://github.com/vitorsemeano)
- [voodoos](https://github.com/voodoos)
- [whooo](https://github.com/whooo)
- [WiiPlayer2](https://github.com/WiiPlayer2)
- [WillWill56](https://github.com/WillWill56)
- [wtayl0r](https://github.com/wtayl0r)
- [Wuerfelbecher](https://github.com/Wuerfelbecher)
- [Wunax](https://github.com/Wunax)
- [WWWesten](https://github.com/WWWesten)
- [WX9yMOXWId](https://github.com/WX9yMOXWId)
- [xosdy](https://github.com/xosdy)
- [XVicarious](https://github.com/XVicarious)
- [YouKnowBlom](https://github.com/YouKnowBlom)
# Emby Contributors

View File

@@ -1,34 +1,64 @@
ARG DOTNET_VERSION=2.2
ARG DOTNET_VERSION=3.1
ARG FFMPEG_VERSION=latest
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=master
RUN apk add curl git \
&& curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& cd jellyfin-web-* \
&& yarn install \
&& yarn build \
&& mv dist /dist
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION}-buster as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
RUN bash -c "source deployment/common.build.sh && \
build_jellyfin Jellyfin.Server Release linux-x64 /jellyfin"
# because of changes in docker and systemd we need to not build in parallel at the moment
# see https://success.docker.com/article/how-to-reserve-resource-temporarily-unavailable-errors-due-to-tasksmax-setting
RUN dotnet publish Jellyfin.Server --disable-parallel --configuration Release --output="/jellyfin" --self-contained --runtime linux-x64 "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
FROM jellyfin/ffmpeg as ffmpeg
FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}
# libfontconfig1 is required for Skia
FROM jellyfin/ffmpeg:${FFMPEG_VERSION} as ffmpeg
FROM debian:buster-slim
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
ARG DEBIAN_FRONTEND="noninteractive"
# http://stackoverflow.com/questions/48162574/ddg#49462622
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
COPY --from=ffmpeg /opt/ffmpeg /opt/ffmpeg
COPY --from=builder /jellyfin /jellyfin
COPY --from=web-builder /dist /jellyfin/jellyfin-web
# Install dependencies:
# libfontconfig1: needed for Skia
# libgomp1: needed for ffmpeg
# libva-drm2: needed for ffmpeg
# mesa-va-drivers: needed for VAAPI
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y \
libfontconfig1 \
&& apt-get clean autoclean \
&& apt-get autoremove \
libgomp1 \
libva-drm2 \
mesa-va-drivers \
openssl \
ca-certificates \
vainfo \
i965-va-driver \
&& apt-get clean autoclean -y\
&& apt-get autoremove -y\
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /cache /config /media \
&& chmod 777 /cache /config /media
COPY --from=ffmpeg / /
COPY --from=builder /jellyfin /jellyfin
&& chmod 777 /cache /config /media \
&& ln -s /opt/ffmpeg/bin/ffmpeg /usr/local/bin \
&& ln -s /opt/ffmpeg/bin/ffprobe /usr/local/bin
ARG JELLYFIN_WEB_VERSION=10.3.3
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& rm -rf /jellyfin/jellyfin-web \
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
EXPOSE 8096
VOLUME /cache /config /media
ENTRYPOINT dotnet /jellyfin/jellyfin.dll \
--datadir /config \
--cachedir /cache \
--ffmpeg /usr/local/bin/ffmpeg
ENTRYPOINT ["./jellyfin/jellyfin", \
"--datadir", "/config", \
"--cachedir", "/cache", \
"--ffmpeg", "/usr/local/bin/ffmpeg"]

View File

@@ -1,43 +1,72 @@
# DESIGNED FOR BUILDING ON AMD64 ONLY
#####################################
# Requires binfm_misc registration
# https://github.com/multiarch/qemu-user-static#binfmt_misc-register
ARG DOTNET_VERSION=3.0
ARG DOTNET_VERSION=3.1
FROM multiarch/qemu-user-static:x86_64-arm as qemu
FROM alpine as qemu_extract
COPY --from=qemu /usr/bin qemu-arm-static.tar.gz
RUN tar -xzvf qemu-arm-static.tar.gz
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=master
RUN apk add curl git \
&& curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& cd jellyfin-web-* \
&& yarn install \
&& yarn build \
&& mv dist /dist
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
# TODO Remove or update the sed line when we update dotnet version.
RUN find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \;
# Discard objs - may cause failures if exists
RUN find . -type d -name obj | xargs -r rm -r
# Build
RUN bash -c "source deployment/common.build.sh && \
build_jellyfin Jellyfin.Server Release linux-arm /jellyfin"
RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-arm "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}-stretch-slim-arm32v7
COPY --from=qemu_extract qemu-arm-static /usr/bin
FROM multiarch/qemu-user-static:x86_64-arm as qemu
FROM arm32v7/debian:buster-slim
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
ARG DEBIAN_FRONTEND="noninteractive"
# http://stackoverflow.com/questions/48162574/ddg#49462622
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
COPY --from=qemu /usr/bin/qemu-arm-static /usr/bin
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y ffmpeg \
&& apt-get install --no-install-recommends --no-install-suggests -y ca-certificates gnupg curl && \
curl -s https://repo.jellyfin.org/debian/jellyfin_team.gpg.key | apt-key add - && \
curl -s https://keyserver.ubuntu.com/pks/lookup?op=get\&search=0x6587ffd6536b8826e88a62547876ae518cbcf2f2 | apt-key add - && \
echo 'deb [arch=armhf] https://repo.jellyfin.org/debian buster main' > /etc/apt/sources.list.d/jellyfin.list && \
echo "deb http://ppa.launchpad.net/ubuntu-raspi2/ppa/ubuntu bionic main">> /etc/apt/sources.list.d/raspbins.list && \
apt-get update && \
apt-get install --no-install-recommends --no-install-suggests -y \
jellyfin-ffmpeg \
libssl-dev \
libfontconfig1 \
libfreetype6 \
libomxil-bellagio0 \
libomxil-bellagio-bin \
libraspberrypi0 \
vainfo \
libva2 \
&& apt-get remove curl gnupg -y \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /cache /config /media \
&& chmod 777 /cache /config /media
COPY --from=builder /jellyfin /jellyfin
COPY --from=web-builder /dist /jellyfin/jellyfin-web
ARG JELLYFIN_WEB_VERSION=10.3.3
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& rm -rf /jellyfin/jellyfin-web \
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
EXPOSE 8096
VOLUME /cache /config /media
ENTRYPOINT dotnet /jellyfin/jellyfin.dll \
--datadir /config \
--cachedir /cache \
--ffmpeg /usr/bin/ffmpeg
ENTRYPOINT ["./jellyfin/jellyfin", \
"--datadir", "/config", \
"--cachedir", "/cache", \
"--ffmpeg", "/usr/lib/jellyfin-ffmpeg"]

View File

@@ -1,44 +1,61 @@
# DESIGNED FOR BUILDING ON AMD64 ONLY
#####################################
# Requires binfm_misc registration
# https://github.com/multiarch/qemu-user-static#binfmt_misc-register
ARG DOTNET_VERSION=3.0
ARG DOTNET_VERSION=3.1
FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu
FROM alpine as qemu_extract
COPY --from=qemu /usr/bin qemu-aarch64-static.tar.gz
RUN tar -xzvf qemu-aarch64-static.tar.gz
FROM node:alpine as web-builder
ARG JELLYFIN_WEB_VERSION=master
RUN apk add curl git \
&& curl -L https://github.com/jellyfin/jellyfin-web/archive/${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& cd jellyfin-web-* \
&& yarn install \
&& yarn build \
&& mv dist /dist
FROM mcr.microsoft.com/dotnet/core/sdk:${DOTNET_VERSION} as builder
WORKDIR /repo
COPY . .
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1
# TODO Remove or update the sed line when we update dotnet version.
RUN find . -type f -exec sed -i 's/netcoreapp2.1/netcoreapp3.0/g' {} \;
# Discard objs - may cause failures if exists
RUN find . -type d -name obj | xargs -r rm -r
# Build
RUN bash -c "source deployment/common.build.sh && \
build_jellyfin Jellyfin.Server Release linux-arm64 /jellyfin"
RUN dotnet publish Jellyfin.Server --configuration Release --output="/jellyfin" --self-contained --runtime linux-arm64 "-p:GenerateDocumentationFile=false;DebugSymbols=false;DebugType=none"
FROM multiarch/qemu-user-static:x86_64-aarch64 as qemu
FROM arm64v8/debian:buster-slim
FROM mcr.microsoft.com/dotnet/core/runtime:${DOTNET_VERSION}-stretch-slim-arm64v8
COPY --from=qemu_extract qemu-aarch64-static /usr/bin
RUN apt-get update \
&& apt-get install --no-install-recommends --no-install-suggests -y ffmpeg \
# https://askubuntu.com/questions/972516/debian-frontend-environment-variable
ARG DEBIAN_FRONTEND="noninteractive"
# http://stackoverflow.com/questions/48162574/ddg#49462622
ARG APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
# https://github.com/NVIDIA/nvidia-docker/wiki/Installation-(Native-GPU-Support)
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
COPY --from=qemu /usr/bin/qemu-aarch64-static /usr/bin
RUN apt-get update && apt-get install --no-install-recommends --no-install-suggests -y \
ffmpeg \
libssl-dev \
ca-certificates \
libfontconfig1 \
libfreetype6 \
libomxil-bellagio0 \
libomxil-bellagio-bin \
&& apt-get clean autoclean -y \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /cache /config /media \
&& chmod 777 /cache /config /media
COPY --from=builder /jellyfin /jellyfin
COPY --from=web-builder /dist /jellyfin/jellyfin-web
ARG JELLYFIN_WEB_VERSION=10.3.3
RUN curl -L https://github.com/jellyfin/jellyfin-web/archive/v${JELLYFIN_WEB_VERSION}.tar.gz | tar zxf - \
&& rm -rf /jellyfin/jellyfin-web \
&& mv jellyfin-web-${JELLYFIN_WEB_VERSION} /jellyfin/jellyfin-web
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
EXPOSE 8096
VOLUME /cache /config /media
ENTRYPOINT dotnet /jellyfin/jellyfin.dll \
--datadir /config \
--cachedir /cache \
--ffmpeg /usr/bin/ffmpeg
ENTRYPOINT ["./jellyfin/jellyfin", \
"--datadir", "/config", \
"--cachedir", "/cache", \
"--ffmpeg", "/usr/bin/ffmpeg"]

2565
Doxyfile

File diff suppressed because it is too large Load Diff

View File

@@ -9,8 +9,9 @@
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
</Project>

View File

@@ -42,7 +42,7 @@ namespace DvdLib.Ifo
}
else
{
using (var vmgFs = _fileSystem.GetFileStream(vmgPath.FullName, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read))
using (var vmgFs = new FileStream(vmgPath.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var vmgRead = new BigEndianBinaryReader(vmgFs))
{
@@ -95,7 +95,7 @@ namespace DvdLib.Ifo
{
VTSPaths[vtsNum] = vtsPath;
using (var vtsFs = _fileSystem.GetFileStream(vtsPath, FileOpenMode.Open, FileAccessMode.Read, FileShareMode.Read))
using (var vtsFs = new FileStream(vtsPath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var vtsRead = new BigEndianBinaryReader(vtsFs))
{

View File

@@ -1,11 +1,13 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Emby.Dlna.Main;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Services;
@@ -108,12 +110,13 @@ namespace Emby.Dlna.Api
public class DlnaServerService : IService, IRequiresRequest
{
private readonly IDlnaManager _dlnaManager;
private const string XMLContentType = "text/xml; charset=UTF-8";
private readonly IDlnaManager _dlnaManager;
private readonly IHttpResultFactory _resultFactory;
private readonly IServerConfigurationManager _configurationManager;
public IRequest Request { get; set; }
private IHttpResultFactory _resultFactory;
private IContentDirectory ContentDirectory => DlnaEntryPoint.Current.ContentDirectory;
@@ -121,10 +124,14 @@ namespace Emby.Dlna.Api
private IMediaReceiverRegistrar MediaReceiverRegistrar => DlnaEntryPoint.Current.MediaReceiverRegistrar;
public DlnaServerService(IDlnaManager dlnaManager, IHttpResultFactory httpResultFactory)
public DlnaServerService(
IDlnaManager dlnaManager,
IHttpResultFactory httpResultFactory,
IServerConfigurationManager configurationManager)
{
_dlnaManager = dlnaManager;
_resultFactory = httpResultFactory;
_configurationManager = configurationManager;
}
private string GetHeader(string name)
@@ -166,32 +173,32 @@ namespace Emby.Dlna.Api
return _resultFactory.GetResult(Request, xml, XMLContentType);
}
public object Post(ProcessMediaReceiverRegistrarControlRequest request)
public async Task<object> Post(ProcessMediaReceiverRegistrarControlRequest request)
{
var response = PostAsync(request.RequestStream, MediaReceiverRegistrar);
var response = await PostAsync(request.RequestStream, MediaReceiverRegistrar).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
public object Post(ProcessContentDirectoryControlRequest request)
public async Task<object> Post(ProcessContentDirectoryControlRequest request)
{
var response = PostAsync(request.RequestStream, ContentDirectory);
var response = await PostAsync(request.RequestStream, ContentDirectory).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
public object Post(ProcessConnectionManagerControlRequest request)
public async Task<object> Post(ProcessConnectionManagerControlRequest request)
{
var response = PostAsync(request.RequestStream, ConnectionManager);
var response = await PostAsync(request.RequestStream, ConnectionManager).ConfigureAwait(false);
return _resultFactory.GetResult(Request, response.Xml, XMLContentType);
}
private ControlResponse PostAsync(Stream requestStream, IUpnpService service)
private Task<ControlResponse> PostAsync(Stream requestStream, IUpnpService service)
{
var id = GetPathValue(2);
var id = GetPathValue(2).ToString();
return service.ProcessControlRequest(new ControlRequest
return service.ProcessControlRequestAsync(new ControlRequest
{
Headers = Request.Headers,
InputXml = requestStream,
@@ -200,38 +207,99 @@ namespace Emby.Dlna.Api
});
}
protected string GetPathValue(int index)
// Copied from MediaBrowser.Api/BaseApiService.cs
// TODO: Remove code duplication
/// <summary>
/// Gets the path segment at the specified index.
/// </summary>
/// <param name="index">The index of the path segment.</param>
/// <returns>The path segment at the specified index.</returns>
/// <exception cref="IndexOutOfRangeException" >Path doesn't contain enough segments.</exception>
/// <exception cref="InvalidDataException" >Path doesn't start with the base url.</exception>
protected internal ReadOnlySpan<char> GetPathValue(int index)
{
var pathInfo = Parse(Request.PathInfo);
var first = pathInfo[0];
static void ThrowIndexOutOfRangeException()
=> throw new IndexOutOfRangeException("Path doesn't contain enough segments.");
// backwards compatibility
// TODO: Work out what this is doing.
if (string.Equals(first, "mediabrowser", StringComparison.OrdinalIgnoreCase) ||
string.Equals(first, "emby", StringComparison.OrdinalIgnoreCase) ||
string.Equals(first, "jellyfin", StringComparison.OrdinalIgnoreCase))
static void ThrowInvalidDataException()
=> throw new InvalidDataException("Path doesn't start with the base url.");
ReadOnlySpan<char> path = Request.PathInfo;
// Remove the protocol part from the url
int pos = path.LastIndexOf("://");
if (pos != -1)
{
index++;
path = path.Slice(pos + 3);
}
return pathInfo[index];
}
private List<string> Parse(string pathUri)
{
var actionParts = pathUri.Split(new[] { "://" }, StringSplitOptions.None);
var pathInfo = actionParts[actionParts.Length - 1];
var optionsPos = pathInfo.LastIndexOf('?');
if (optionsPos != -1)
// Remove the query string
pos = path.LastIndexOf('?');
if (pos != -1)
{
pathInfo = pathInfo.Substring(0, optionsPos);
path = path.Slice(0, pos);
}
var args = pathInfo.Split('/');
// Remove the domain
pos = path.IndexOf('/');
if (pos != -1)
{
path = path.Slice(pos);
}
return args.Skip(1).ToList();
// Remove base url
string baseUrl = _configurationManager.Configuration.BaseUrl;
int baseUrlLen = baseUrl.Length;
if (baseUrlLen != 0)
{
if (path.StartsWith(baseUrl, StringComparison.OrdinalIgnoreCase))
{
path = path.Slice(baseUrlLen);
}
else
{
// The path doesn't start with the base url,
// how did we get here?
ThrowInvalidDataException();
}
}
// Remove leading /
path = path.Slice(1);
// Backwards compatibility
const string Emby = "emby/";
if (path.StartsWith(Emby, StringComparison.OrdinalIgnoreCase))
{
path = path.Slice(Emby.Length);
}
const string MediaBrowser = "mediabrowser/";
if (path.StartsWith(MediaBrowser, StringComparison.OrdinalIgnoreCase))
{
path = path.Slice(MediaBrowser.Length);
}
// Skip segments until we are at the right index
for (int i = 0; i < index; i++)
{
pos = path.IndexOf('/');
if (pos == -1)
{
ThrowIndexOutOfRangeException();
}
path = path.Slice(pos + 1);
}
// Remove the rest
pos = path.IndexOf('/');
if (pos != -1)
{
path = path.Slice(0, pos);
}
return path;
}
public object Get(GetIcon request)

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Linq;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Net;

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna.Common
{

View File

@@ -1,3 +1,7 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Globalization;
namespace Emby.Dlna.Common
{
@@ -13,9 +17,14 @@ namespace Emby.Dlna.Common
public string Depth { get; set; }
/// <inheritdoc />
public override string ToString()
{
return string.Format("{0}x{1}", Height, Width);
return string.Format(
CultureInfo.InvariantCulture,
"{0}x{1}",
Height,
Width);
}
}
}

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna.Common
{
@@ -13,9 +15,8 @@ namespace Emby.Dlna.Common
public string EventSubUrl { get; set; }
/// <inheritdoc />
public override string ToString()
{
return string.Format("{0}", ServiceId);
}
=> ServiceId;
}
}

View File

@@ -1,21 +1,25 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
namespace Emby.Dlna.Common
{
public class ServiceAction
{
public string Name { get; set; }
public List<Argument> ArgumentList { get; set; }
public override string ToString()
{
return Name;
}
public ServiceAction()
{
ArgumentList = new List<Argument>();
}
public string Name { get; set; }
public List<Argument> ArgumentList { get; set; }
/// <inheritdoc />
public override string ToString()
{
return Name;
}
}
}

View File

@@ -1,9 +1,17 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
namespace Emby.Dlna.Common
{
public class StateVariable
{
public StateVariable()
{
AllowedValues = Array.Empty<string>();
}
public string Name { get; set; }
public string DataType { get; set; }
@@ -12,14 +20,8 @@ namespace Emby.Dlna.Common
public string[] AllowedValues { get; set; }
/// <inheritdoc />
public override string ToString()
{
return Name;
}
public StateVariable()
{
AllowedValues = Array.Empty<string>();
}
=> Name;
}
}

View File

@@ -1,17 +1,10 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna.Configuration
{
public class DlnaOptions
{
public bool EnablePlayTo { get; set; }
public bool EnableServer { get; set; }
public bool EnableDebugLog { get; set; }
public bool BlastAliveMessages { get; set; }
public bool SendOnlyMatchedHost { get; set; }
public int ClientDiscoveryIntervalSeconds { get; set; }
public int BlastAliveMessageIntervalSeconds { get; set; }
public string DefaultUserId { get; set; }
public DlnaOptions()
{
EnablePlayTo = true;
@@ -21,5 +14,21 @@ namespace Emby.Dlna.Configuration
ClientDiscoveryIntervalSeconds = 60;
BlastAliveMessageIntervalSeconds = 1800;
}
public bool EnablePlayTo { get; set; }
public bool EnableServer { get; set; }
public bool EnableDebugLog { get; set; }
public bool BlastAliveMessages { get; set; }
public bool SendOnlyMatchedHost { get; set; }
public int ClientDiscoveryIntervalSeconds { get; set; }
public int BlastAliveMessageIntervalSeconds { get; set; }
public string DefaultUserId { get; set; }
}
}

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Configuration;
using MediaBrowser.Common.Configuration;

View File

@@ -1,3 +1,7 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
@@ -20,17 +24,19 @@ namespace Emby.Dlna.ConnectionManager
_logger = logger;
}
/// <inheritdoc />
public string GetServiceXml()
{
return new ConnectionManagerXmlBuilder().GetXml();
}
public ControlResponse ProcessControlRequest(ControlRequest request)
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
var profile = _dlna.GetProfile(request.Headers) ??
_dlna.GetDefaultProfile();
return new ControlHandler(_config, _logger, profile).ProcessControlRequest(request);
return new ControlHandler(_config, _logger, profile).ProcessControlRequestAsync(request);
}
}
}

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;
using Emby.Dlna.Service;

View File

@@ -1,5 +1,9 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.Xml;
using Emby.Dlna.Service;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
@@ -12,29 +16,28 @@ namespace Emby.Dlna.ConnectionManager
{
private readonly DeviceProfile _profile;
protected override IEnumerable<KeyValuePair<string, string>> GetResult(string methodName, IDictionary<string, string> methodParams)
{
if (string.Equals(methodName, "GetProtocolInfo", StringComparison.OrdinalIgnoreCase))
{
return HandleGetProtocolInfo();
}
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private IEnumerable<KeyValuePair<string, string>> HandleGetProtocolInfo()
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "Source", _profile.ProtocolInfo },
{ "Sink", "" }
};
}
public ControlHandler(IServerConfigurationManager config, ILogger logger, DeviceProfile profile)
: base(config, logger)
{
_profile = profile;
}
/// <inheritdoc />
protected override void WriteResult(string methodName, IDictionary<string, string> methodParams, XmlWriter xmlWriter)
{
if (string.Equals(methodName, "GetProtocolInfo", StringComparison.OrdinalIgnoreCase))
{
HandleGetProtocolInfo(xmlWriter);
return;
}
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private void HandleGetProtocolInfo(XmlWriter xmlWriter)
{
xmlWriter.WriteElementString("Source", _profile.ProtocolInfo);
xmlWriter.WriteElementString("Sink", string.Empty);
}
}
}

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,5 +1,8 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
@@ -67,12 +70,14 @@ namespace Emby.Dlna.ContentDirectory
}
}
/// <inheritdoc />
public string GetServiceXml()
{
return new ContentDirectoryXmlBuilder().GetXml();
}
public ControlResponse ProcessControlRequest(ControlRequest request)
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
var profile = _dlna.GetProfile(request.Headers) ??
_dlna.GetDefaultProfile();
@@ -97,14 +102,14 @@ namespace Emby.Dlna.ContentDirectory
_userViewManager,
_mediaEncoder,
_tvSeriesManager)
.ProcessControlRequest(request);
.ProcessControlRequestAsync(request);
}
private User GetUser(DeviceProfile profile)
{
if (!string.IsNullOrEmpty(profile.UserId))
{
var user = _userManager.GetUserById(profile.UserId);
var user = _userManager.GetUserById(Guid.Parse(profile.UserId));
if (user != null)
{
@@ -116,7 +121,7 @@ namespace Emby.Dlna.ContentDirectory
if (!string.IsNullOrEmpty(userId))
{
var user = _userManager.GetUserById(userId);
var user = _userManager.GetUserById(Guid.Parse(userId));
if (user != null)
{

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;
using Emby.Dlna.Service;

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -44,7 +47,6 @@ namespace Emby.Dlna.ContentDirectory
private const string NS_UPNP = "urn:schemas-upnp-org:metadata-1-0/upnp/";
private readonly int _systemUpdateId;
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
private readonly DidlBuilder _didlBuilder;
@@ -58,7 +60,8 @@ namespace Emby.Dlna.ContentDirectory
string accessToken,
IImageProcessor imageProcessor,
IUserDataManager userDataManager,
User user, int systemUpdateId,
User user,
int systemUpdateId,
IServerConfigurationManager config,
ILocalizationManager localization,
IMediaSourceManager mediaSourceManager,
@@ -76,117 +79,132 @@ namespace Emby.Dlna.ContentDirectory
_profile = profile;
_config = config;
_didlBuilder = new DidlBuilder(profile, user, imageProcessor, serverAddress, accessToken, userDataManager, localization, mediaSourceManager, _logger, mediaEncoder);
_didlBuilder = new DidlBuilder(profile, user, imageProcessor, serverAddress, accessToken, userDataManager, localization, mediaSourceManager, Logger, mediaEncoder);
}
protected override IEnumerable<KeyValuePair<string, string>> GetResult(string methodName, IDictionary<string, string> methodParams)
/// <inheritdoc />
protected override void WriteResult(string methodName, IDictionary<string, string> methodParams, XmlWriter xmlWriter)
{
var deviceId = "test";
var user = _user;
const string DeviceId = "test";
if (string.Equals(methodName, "GetSearchCapabilities", StringComparison.OrdinalIgnoreCase))
return HandleGetSearchCapabilities();
{
HandleGetSearchCapabilities(xmlWriter);
return;
}
if (string.Equals(methodName, "GetSortCapabilities", StringComparison.OrdinalIgnoreCase))
return HandleGetSortCapabilities();
{
HandleGetSortCapabilities(xmlWriter);
return;
}
if (string.Equals(methodName, "GetSortExtensionCapabilities", StringComparison.OrdinalIgnoreCase))
return HandleGetSortExtensionCapabilities();
{
HandleGetSortExtensionCapabilities(xmlWriter);
return;
}
if (string.Equals(methodName, "GetSystemUpdateID", StringComparison.OrdinalIgnoreCase))
return HandleGetSystemUpdateID();
{
HandleGetSystemUpdateID(xmlWriter);
return;
}
if (string.Equals(methodName, "Browse", StringComparison.OrdinalIgnoreCase))
return HandleBrowse(methodParams, user, deviceId);
{
HandleBrowse(xmlWriter, methodParams, DeviceId);
return;
}
if (string.Equals(methodName, "X_GetFeatureList", StringComparison.OrdinalIgnoreCase))
return HandleXGetFeatureList();
{
HandleXGetFeatureList(xmlWriter);
return;
}
if (string.Equals(methodName, "GetFeatureList", StringComparison.OrdinalIgnoreCase))
return HandleGetFeatureList();
{
HandleGetFeatureList(xmlWriter);
return;
}
if (string.Equals(methodName, "X_SetBookmark", StringComparison.OrdinalIgnoreCase))
return HandleXSetBookmark(methodParams, user);
{
HandleXSetBookmark(methodParams);
return;
}
if (string.Equals(methodName, "Search", StringComparison.OrdinalIgnoreCase))
return HandleSearch(methodParams, user, deviceId);
{
HandleSearch(xmlWriter, methodParams, DeviceId);
return;
}
if (string.Equals(methodName, "X_BrowseByLetter", StringComparison.OrdinalIgnoreCase))
return HandleX_BrowseByLetter(methodParams, user, deviceId);
{
HandleXBrowseByLetter(xmlWriter, methodParams, DeviceId);
return;
}
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private IEnumerable<KeyValuePair<string, string>> HandleXSetBookmark(IDictionary<string, string> sparams, User user)
private void HandleXSetBookmark(IDictionary<string, string> sparams)
{
var id = sparams["ObjectID"];
var serverItem = GetItemFromObjectId(id, user);
var serverItem = GetItemFromObjectId(id, _user);
var item = serverItem.Item;
var newbookmark = int.Parse(sparams["PosSecond"], _usCulture);
var newbookmark = int.Parse(sparams["PosSecond"], CultureInfo.InvariantCulture);
var userdata = _userDataManager.GetUserData(user, item);
var userdata = _userDataManager.GetUserData(_user, item);
userdata.PlaybackPositionTicks = TimeSpan.FromSeconds(newbookmark).Ticks;
_userDataManager.SaveUserData(user, item, userdata, UserDataSaveReason.TogglePlayed,
_userDataManager.SaveUserData(_user, item, userdata, UserDataSaveReason.TogglePlayed,
CancellationToken.None);
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
private IEnumerable<KeyValuePair<string, string>> HandleGetSearchCapabilities()
private void HandleGetSearchCapabilities(XmlWriter xmlWriter)
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "SearchCaps", "res@resolution,res@size,res@duration,dc:title,dc:creator,upnp:actor,upnp:artist,upnp:genre,upnp:album,dc:date,upnp:class,@id,@refID,@protocolInfo,upnp:author,dc:description,pv:avKeywords" }
};
xmlWriter.WriteElementString(
"SearchCaps",
"res@resolution,res@size,res@duration,dc:title,dc:creator,upnp:actor,upnp:artist,upnp:genre,upnp:album,dc:date,upnp:class,@id,@refID,@protocolInfo,upnp:author,dc:description,pv:avKeywords");
}
private IEnumerable<KeyValuePair<string, string>> HandleGetSortCapabilities()
private void HandleGetSortCapabilities(XmlWriter xmlWriter)
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "SortCaps", "res@duration,res@size,res@bitrate,dc:date,dc:title,dc:size,upnp:album,upnp:artist,upnp:albumArtist,upnp:episodeNumber,upnp:genre,upnp:originalTrackNumber,upnp:rating" }
};
xmlWriter.WriteElementString(
"SortCaps",
"res@duration,res@size,res@bitrate,dc:date,dc:title,dc:size,upnp:album,upnp:artist,upnp:albumArtist,upnp:episodeNumber,upnp:genre,upnp:originalTrackNumber,upnp:rating");
}
private IEnumerable<KeyValuePair<string, string>> HandleGetSortExtensionCapabilities()
private void HandleGetSortExtensionCapabilities(XmlWriter xmlWriter)
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "SortExtensionCaps", "res@duration,res@size,res@bitrate,dc:date,dc:title,dc:size,upnp:album,upnp:artist,upnp:albumArtist,upnp:episodeNumber,upnp:genre,upnp:originalTrackNumber,upnp:rating" }
};
xmlWriter.WriteElementString(
"SortExtensionCaps",
"res@duration,res@size,res@bitrate,dc:date,dc:title,dc:size,upnp:album,upnp:artist,upnp:albumArtist,upnp:episodeNumber,upnp:genre,upnp:originalTrackNumber,upnp:rating");
}
private IEnumerable<KeyValuePair<string, string>> HandleGetSystemUpdateID()
private void HandleGetSystemUpdateID(XmlWriter xmlWriter)
{
var headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
headers.Add("Id", _systemUpdateId.ToString(_usCulture));
return headers;
xmlWriter.WriteElementString("Id", _systemUpdateId.ToString(CultureInfo.InvariantCulture));
}
private IEnumerable<KeyValuePair<string, string>> HandleGetFeatureList()
private void HandleGetFeatureList(XmlWriter xmlWriter)
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "FeatureList", GetFeatureListXml() }
};
xmlWriter.WriteElementString("FeatureList", WriteFeatureListXml());
}
private IEnumerable<KeyValuePair<string, string>> HandleXGetFeatureList()
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "FeatureList", GetFeatureListXml() }
};
}
private void HandleXGetFeatureList(XmlWriter xmlWriter)
=> HandleGetFeatureList(xmlWriter);
private string GetFeatureListXml()
private string WriteFeatureListXml()
{
// TODO: clean this up
var builder = new StringBuilder();
builder.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
@@ -213,7 +231,7 @@ namespace Emby.Dlna.ContentDirectory
return defaultValue;
}
private IEnumerable<KeyValuePair<string, string>> HandleBrowse(IDictionary<string, string> sparams, User user, string deviceId)
private void HandleBrowse(XmlWriter xmlWriter, IDictionary<string, string> sparams, string deviceId)
{
var id = sparams["ObjectID"];
var flag = sparams["BrowseFlag"];
@@ -237,100 +255,95 @@ namespace Emby.Dlna.ContentDirectory
start = startVal;
}
var settings = new XmlWriterSettings
{
Encoding = Encoding.UTF8,
CloseOutput = false,
OmitXmlDeclaration = true,
ConformanceLevel = ConformanceLevel.Fragment
};
StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8);
int totalCount;
var dlnaOptions = _config.GetDlnaConfiguration();
using (var writer = XmlWriter.Create(builder, settings))
using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
{
//writer.WriteStartDocument();
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
//didl.SetAttribute("xmlns:sec", NS_SEC);
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(id, user);
var item = serverItem.Item;
if (string.Equals(flag, "BrowseMetadata"))
var settings = new XmlWriterSettings()
{
totalCount = 1;
Encoding = Encoding.UTF8,
CloseOutput = false,
OmitXmlDeclaration = true,
ConformanceLevel = ConformanceLevel.Fragment
};
if (item.IsDisplayedAsFolder || serverItem.StubType.HasValue)
{
var childrenResult = GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount);
_didlBuilder.WriteFolderElement(writer, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id);
}
else
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, item, user, null, null, deviceId, filter);
}
provided++;
}
else
using (var writer = XmlWriter.Create(builder, settings))
{
var childrenResult = GetUserItems(item, serverItem.StubType, user, sortCriteria, start, requestedCount);
totalCount = childrenResult.TotalRecordCount;
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
provided = childrenResult.Items.Length;
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
foreach (var i in childrenResult.Items)
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(id, _user);
var item = serverItem.Item;
if (string.Equals(flag, "BrowseMetadata", StringComparison.Ordinal))
{
var childItem = i.Item;
var displayStubType = i.StubType;
totalCount = 1;
if (childItem.IsDisplayedAsFolder || displayStubType.HasValue)
if (item.IsDisplayedAsFolder || serverItem.StubType.HasValue)
{
var childCount = (GetUserItems(childItem, displayStubType, user, sortCriteria, null, 0))
.TotalRecordCount;
var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
_didlBuilder.WriteFolderElement(writer, childItem, displayStubType, item, childCount, filter);
_didlBuilder.WriteFolderElement(writer, item, serverItem.StubType, null, childrenResult.TotalRecordCount, filter, id);
}
else
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, childItem, user, item, serverItem.StubType, deviceId, filter);
var dlnaOptions = _config.GetDlnaConfiguration();
_didlBuilder.WriteItemElement(dlnaOptions, writer, item, _user, null, null, deviceId, filter);
}
provided++;
}
else
{
var childrenResult = GetUserItems(item, serverItem.StubType, _user, sortCriteria, start, requestedCount);
totalCount = childrenResult.TotalRecordCount;
provided = childrenResult.Items.Count;
var dlnaOptions = _config.GetDlnaConfiguration();
foreach (var i in childrenResult.Items)
{
var childItem = i.Item;
var displayStubType = i.StubType;
if (childItem.IsDisplayedAsFolder || displayStubType.HasValue)
{
var childCount = GetUserItems(childItem, displayStubType, _user, sortCriteria, null, 0)
.TotalRecordCount;
_didlBuilder.WriteFolderElement(writer, childItem, displayStubType, item, childCount, filter);
}
else
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, childItem, _user, item, serverItem.StubType, deviceId, filter);
}
}
}
writer.WriteFullEndElement();
}
writer.WriteFullEndElement();
//writer.WriteEndDocument();
xmlWriter.WriteElementString("Result", builder.ToString());
}
var resXML = builder.ToString();
return new[]
{
new KeyValuePair<string,string>("Result", resXML),
new KeyValuePair<string,string>("NumberReturned", provided.ToString(_usCulture)),
new KeyValuePair<string,string>("TotalMatches", totalCount.ToString(_usCulture)),
new KeyValuePair<string,string>("UpdateID", _systemUpdateId.ToString(_usCulture))
};
xmlWriter.WriteElementString("NumberReturned", provided.ToString(CultureInfo.InvariantCulture));
xmlWriter.WriteElementString("TotalMatches", totalCount.ToString(CultureInfo.InvariantCulture));
xmlWriter.WriteElementString("UpdateID", _systemUpdateId.ToString(CultureInfo.InvariantCulture));
}
private IEnumerable<KeyValuePair<string, string>> HandleX_BrowseByLetter(IDictionary<string, string> sparams, User user, string deviceId)
private void HandleXBrowseByLetter(XmlWriter xmlWriter, IDictionary<string, string> sparams, string deviceId)
{
// TODO: Implement this method
return HandleSearch(sparams, user, deviceId);
HandleSearch(xmlWriter, sparams, deviceId);
}
private IEnumerable<KeyValuePair<string, string>> HandleSearch(IDictionary<string, string> sparams, User user, string deviceId)
private void HandleSearch(XmlWriter xmlWriter, IDictionary<string, string> sparams, string deviceId)
{
var searchCriteria = new SearchCriteria(GetValueOrDefault(sparams, "SearchCriteria", ""));
var sortCriteria = new SortCriteria(GetValueOrDefault(sparams, "SortCriteria", ""));
@@ -353,99 +366,86 @@ namespace Emby.Dlna.ContentDirectory
start = startVal;
}
var settings = new XmlWriterSettings
QueryResult<BaseItem> childrenResult;
using (StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8))
{
Encoding = Encoding.UTF8,
CloseOutput = false,
OmitXmlDeclaration = true,
ConformanceLevel = ConformanceLevel.Fragment
};
StringWriter builder = new StringWriterWithEncoding(Encoding.UTF8);
int totalCount = 0;
int provided = 0;
using (var writer = XmlWriter.Create(builder, settings))
{
//writer.WriteStartDocument();
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
//didl.SetAttribute("xmlns:sec", NS_SEC);
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(sparams["ContainerID"], user);
var item = serverItem.Item;
var childrenResult = (GetChildrenSorted(item, user, searchCriteria, sortCriteria, start, requestedCount));
totalCount = childrenResult.TotalRecordCount;
provided = childrenResult.Items.Length;
var dlnaOptions = _config.GetDlnaConfiguration();
foreach (var i in childrenResult.Items)
var settings = new XmlWriterSettings()
{
if (i.IsDisplayedAsFolder)
{
var childCount = (GetChildrenSorted(i, user, searchCriteria, sortCriteria, null, 0))
.TotalRecordCount;
Encoding = Encoding.UTF8,
CloseOutput = false,
OmitXmlDeclaration = true,
ConformanceLevel = ConformanceLevel.Fragment
};
_didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
}
else
using (var writer = XmlWriter.Create(builder, settings))
{
writer.WriteStartElement(string.Empty, "DIDL-Lite", NS_DIDL);
writer.WriteAttributeString("xmlns", "dc", null, NS_DC);
writer.WriteAttributeString("xmlns", "dlna", null, NS_DLNA);
writer.WriteAttributeString("xmlns", "upnp", null, NS_UPNP);
DidlBuilder.WriteXmlRootAttributes(_profile, writer);
var serverItem = GetItemFromObjectId(sparams["ContainerID"], _user);
var item = serverItem.Item;
childrenResult = GetChildrenSorted(item, _user, searchCriteria, sortCriteria, start, requestedCount);
var dlnaOptions = _config.GetDlnaConfiguration();
foreach (var i in childrenResult.Items)
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, i, user, item, serverItem.StubType, deviceId, filter);
if (i.IsDisplayedAsFolder)
{
var childCount = GetChildrenSorted(i, _user, searchCriteria, sortCriteria, null, 0)
.TotalRecordCount;
_didlBuilder.WriteFolderElement(writer, i, null, item, childCount, filter);
}
else
{
_didlBuilder.WriteItemElement(dlnaOptions, writer, i, _user, item, serverItem.StubType, deviceId, filter);
}
}
writer.WriteFullEndElement();
}
writer.WriteFullEndElement();
//writer.WriteEndDocument();
xmlWriter.WriteElementString("Result", builder.ToString());
}
var resXML = builder.ToString();
return new List<KeyValuePair<string, string>>
{
new KeyValuePair<string,string>("Result", resXML),
new KeyValuePair<string,string>("NumberReturned", provided.ToString(_usCulture)),
new KeyValuePair<string,string>("TotalMatches", totalCount.ToString(_usCulture)),
new KeyValuePair<string,string>("UpdateID", _systemUpdateId.ToString(_usCulture))
};
xmlWriter.WriteElementString("NumberReturned", childrenResult.Items.Count.ToString(CultureInfo.InvariantCulture));
xmlWriter.WriteElementString("TotalMatches", childrenResult.TotalRecordCount.ToString(CultureInfo.InvariantCulture));
xmlWriter.WriteElementString("UpdateID", _systemUpdateId.ToString(CultureInfo.InvariantCulture));
}
private QueryResult<BaseItem> GetChildrenSorted(BaseItem item, User user, SearchCriteria search, SortCriteria sort, int? startIndex, int? limit)
{
var folder = (Folder)item;
var sortOrders = new List<string>();
if (!folder.IsPreSorted)
{
sortOrders.Add(ItemSortBy.SortName);
}
var sortOrders = folder.IsPreSorted
? Array.Empty<(string, SortOrder)>()
: new[] { (ItemSortBy.SortName, sort.SortOrder) };
var mediaTypes = new List<string>();
string[] mediaTypes = Array.Empty<string>();
bool? isFolder = null;
if (search.SearchType == SearchType.Audio)
{
mediaTypes.Add(MediaType.Audio);
mediaTypes = new[] { MediaType.Audio };
isFolder = false;
}
else if (search.SearchType == SearchType.Video)
{
mediaTypes.Add(MediaType.Video);
mediaTypes = new[] { MediaType.Video };
isFolder = false;
}
else if (search.SearchType == SearchType.Image)
{
mediaTypes.Add(MediaType.Photo);
mediaTypes = new[] { MediaType.Photo };
isFolder = false;
}
else if (search.SearchType == SearchType.Playlist)
@@ -463,13 +463,13 @@ namespace Emby.Dlna.ContentDirectory
{
Limit = limit,
StartIndex = startIndex,
OrderBy = sortOrders.Select(i => new ValueTuple<string, SortOrder>(i, sort.SortOrder)).ToArray(),
OrderBy = sortOrders,
User = user,
Recursive = true,
IsMissing = false,
ExcludeItemTypes = new[] { typeof(Book).Name },
IsFolder = isFolder,
MediaTypes = mediaTypes.ToArray(),
MediaTypes = mediaTypes,
DtoOptions = GetDtoOptions()
});
}
@@ -677,7 +677,7 @@ namespace Emby.Dlna.ContentDirectory
return new QueryResult<ServerItem>
{
Items = list.ToArray(),
Items = list,
TotalRecordCount = list.Count
};
}
@@ -755,7 +755,7 @@ namespace Emby.Dlna.ContentDirectory
return new QueryResult<ServerItem>
{
Items = list.ToArray(),
Items = list,
TotalRecordCount = list.Count
};
}
@@ -770,11 +770,11 @@ namespace Emby.Dlna.ContentDirectory
})
.ToArray();
return new QueryResult<ServerItem>
return ApplyPaging(new QueryResult<ServerItem>
{
Items = folders,
TotalRecordCount = folders.Length
};
}, startIndex, limit);
}
private QueryResult<ServerItem> GetTvFolders(BaseItem item, User user, StubType? stubType, SortCriteria sort, int? startIndex, int? limit)
@@ -860,7 +860,7 @@ namespace Emby.Dlna.ContentDirectory
return new QueryResult<ServerItem>
{
Items = list.ToArray(),
Items = list,
TotalRecordCount = list.Count
};
}
@@ -871,10 +871,10 @@ namespace Emby.Dlna.ContentDirectory
query.Parent = parent;
query.SetUser(user);
query.OrderBy = new ValueTuple<string, SortOrder>[]
query.OrderBy = new[]
{
new ValueTuple<string, SortOrder> (ItemSortBy.DatePlayed, SortOrder.Descending),
new ValueTuple<string, SortOrder> (ItemSortBy.SortName, SortOrder.Ascending)
(ItemSortBy.DatePlayed, SortOrder.Descending),
(ItemSortBy.SortName, SortOrder.Ascending)
};
query.IsResumable = true;
@@ -1120,7 +1120,7 @@ namespace Emby.Dlna.ContentDirectory
private QueryResult<ServerItem> GetMusicLatest(BaseItem parent, User user, InternalItemsQuery query)
{
query.OrderBy = new ValueTuple<string, SortOrder>[] { };
query.OrderBy = Array.Empty<(string, SortOrder)>();
var items = _userViewManager.GetLatestItems(new LatestItemsQuery
{
@@ -1137,7 +1137,7 @@ namespace Emby.Dlna.ContentDirectory
private QueryResult<ServerItem> GetNextUp(BaseItem parent, User user, InternalItemsQuery query)
{
query.OrderBy = new ValueTuple<string, SortOrder>[] { };
query.OrderBy = Array.Empty<(string, SortOrder)>();
var result = _tvSeriesManager.GetNextUp(new NextUpQuery
{
@@ -1152,7 +1152,7 @@ namespace Emby.Dlna.ContentDirectory
private QueryResult<ServerItem> GetTvLatest(BaseItem parent, User user, InternalItemsQuery query)
{
query.OrderBy = new ValueTuple<string, SortOrder>[] { };
query.OrderBy = Array.Empty<(string, SortOrder)>();
var items = _userViewManager.GetLatestItems(new LatestItemsQuery
{
@@ -1169,7 +1169,7 @@ namespace Emby.Dlna.ContentDirectory
private QueryResult<ServerItem> GetMovieLatest(BaseItem parent, User user, InternalItemsQuery query)
{
query.OrderBy = new ValueTuple<string, SortOrder>[] { };
query.OrderBy = Array.Empty<(string, SortOrder)>();
var items = _userViewManager.GetLatestItems(new LatestItemsQuery
{
@@ -1273,13 +1273,14 @@ namespace Emby.Dlna.ContentDirectory
private void SetSorting(InternalItemsQuery query, SortCriteria sort, bool isPreSorted)
{
var sortOrders = new List<string>();
if (!isPreSorted)
if (isPreSorted)
{
sortOrders.Add(ItemSortBy.SortName);
query.OrderBy = Array.Empty<(string, SortOrder)>();
}
else
{
query.OrderBy = new[] { (ItemSortBy.SortName, sort.SortOrder) };
}
query.OrderBy = sortOrders.Select(i => new ValueTuple<string, SortOrder>(i, sort.SortOrder)).ToArray();
}
private QueryResult<ServerItem> ApplyPaging(QueryResult<ServerItem> result, int? startIndex, int? limit)
@@ -1302,11 +1303,11 @@ namespace Emby.Dlna.ContentDirectory
StubType? stubType = null;
// After using PlayTo, MediaMonkey sends a request to the server trying to get item info
const string paramsSrch = "Params=";
var paramsIndex = id.IndexOf(paramsSrch, StringComparison.OrdinalIgnoreCase);
const string ParamsSrch = "Params=";
var paramsIndex = id.IndexOf(ParamsSrch, StringComparison.OrdinalIgnoreCase);
if (paramsIndex != -1)
{
id = id.Substring(paramsIndex + paramsSrch.Length);
id = id.Substring(paramsIndex + ParamsSrch.Length);
var parts = id.Split(';');
id = parts[23];
@@ -1334,7 +1335,7 @@ namespace Emby.Dlna.ContentDirectory
};
}
_logger.LogError("Error parsing item Id: {id}. Returning user root folder.", id);
Logger.LogError("Error parsing item Id: {id}. Returning user root folder.", id);
return new ServerItem(_libraryManager.GetUserRootFolder());
}

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.IO;
using Microsoft.AspNetCore.Http;

View File

@@ -1,18 +1,21 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
namespace Emby.Dlna
{
public class ControlResponse
{
public ControlResponse()
{
Headers = new Dictionary<string, string>();
}
public IDictionary<string, string> Headers { get; set; }
public string Xml { get; set; }
public bool IsSuccessful { get; set; }
public ControlResponse()
{
Headers = new Dictionary<string, string>();
}
}
}

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Globalization;
using System.IO;
@@ -18,7 +21,6 @@ using MediaBrowser.Controller.Playlists;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Net;
using Microsoft.Extensions.Logging;
@@ -158,7 +160,7 @@ namespace Emby.Dlna.Didl
AddGeneralProperties(item, null, context, writer, filter);
AddSamsungBookmarkInfo(item, user, writer);
AddSamsungBookmarkInfo(item, user, writer, streamInfo);
// refID?
// storeAttribute(itemNode, object, ClassProperties.REF_ID, false);
@@ -181,19 +183,6 @@ namespace Emby.Dlna.Didl
writer.WriteFullEndElement();
}
private string GetMimeType(string input)
{
var mime = MimeTypes.GetMimeType(input);
// TODO: Instead of being hard-coded here, this should probably be moved into all of the existing profiles
if (string.Equals(mime, "video/mp2t", StringComparison.OrdinalIgnoreCase))
{
mime = "video/mpeg";
}
return mime;
}
private void AddVideoResource(DlnaOptions options, XmlWriter writer, BaseItem video, string deviceId, Filter filter, StreamInfo streamInfo = null)
{
if (streamInfo == null)
@@ -384,7 +373,7 @@ namespace Emby.Dlna.Didl
var filename = url.Substring(0, url.IndexOf('?'));
var mimeType = mediaProfile == null || string.IsNullOrEmpty(mediaProfile.MimeType)
? GetMimeType(filename)
? MimeTypes.GetMimeType(filename)
: mediaProfile.MimeType;
writer.WriteAttributeString("protocolInfo", string.Format(
@@ -520,7 +509,7 @@ namespace Emby.Dlna.Didl
var filename = url.Substring(0, url.IndexOf('?'));
var mimeType = mediaProfile == null || string.IsNullOrEmpty(mediaProfile.MimeType)
? GetMimeType(filename)
? MimeTypes.GetMimeType(filename)
: mediaProfile.MimeType;
var contentFeatures = new ContentFeatureBuilder(_profile).BuildAudioHeader(streamInfo.Container,
@@ -545,17 +534,10 @@ namespace Emby.Dlna.Didl
}
public static bool IsIdRoot(string id)
{
if (string.IsNullOrWhiteSpace(id)
=> string.IsNullOrWhiteSpace(id)
|| string.Equals(id, "0", StringComparison.OrdinalIgnoreCase)
// Samsung sometimes uses 1 as root
|| string.Equals(id, "1", StringComparison.OrdinalIgnoreCase))
{
return true;
}
return false;
}
|| string.Equals(id, "1", StringComparison.OrdinalIgnoreCase);
public void WriteFolderElement(XmlWriter writer, BaseItem folder, StubType? stubType, BaseItem context, int childCount, Filter filter, string requestedId = null)
{
@@ -601,7 +583,7 @@ namespace Emby.Dlna.Didl
writer.WriteFullEndElement();
}
private void AddSamsungBookmarkInfo(BaseItem item, User user, XmlWriter writer)
private void AddSamsungBookmarkInfo(BaseItem item, User user, XmlWriter writer, StreamInfo streamInfo)
{
if (!item.SupportsPositionTicksResume || item is Folder)
{
@@ -625,10 +607,11 @@ namespace Emby.Dlna.Didl
}
var userdata = _userDataManager.GetUserData(user, item);
var playbackPositionTicks = (streamInfo != null && streamInfo.StartPositionTicks > 0) ? streamInfo.StartPositionTicks : userdata.PlaybackPositionTicks;
if (userdata.PlaybackPositionTicks > 0)
if (playbackPositionTicks > 0)
{
var elementValue = string.Format("BM={0}", Convert.ToInt32(TimeSpan.FromTicks(userdata.PlaybackPositionTicks).TotalSeconds).ToString(_usCulture));
var elementValue = string.Format("BM={0}", Convert.ToInt32(TimeSpan.FromTicks(playbackPositionTicks).TotalSeconds).ToString(_usCulture));
AddValue(writer, "sec", "dcmInfo", elementValue, secAttribute.Value);
}
}
@@ -651,7 +634,7 @@ namespace Emby.Dlna.Didl
{
if (item.PremiereDate.HasValue)
{
AddValue(writer, "dc", "date", item.PremiereDate.Value.ToString("o"), NS_DC);
AddValue(writer, "dc", "date", item.PremiereDate.Value.ToString("o", CultureInfo.InvariantCulture), NS_DC);
}
}
@@ -971,7 +954,7 @@ namespace Emby.Dlna.Didl
writer.WriteAttributeString("protocolInfo", string.Format(
"http-get:*:{0}:{1}",
GetMimeType("file." + format),
MimeTypes.GetMimeType("file." + format),
contentFeatures
));
@@ -1102,7 +1085,7 @@ namespace Emby.Dlna.Didl
public static string GetClientId(Guid idValue, StubType? stubType)
{
var id = idValue.ToString("N");
var id = idValue.ToString("N", CultureInfo.InvariantCulture);
if (stubType.HasValue)
{
@@ -1116,7 +1099,7 @@ namespace Emby.Dlna.Didl
{
var url = string.Format("{0}/Items/{1}/Images/{2}/0/{3}/{4}/{5}/{6}/0/0",
_serverAddress,
info.ItemId.ToString("N"),
info.ItemId.ToString("N", CultureInfo.InvariantCulture),
info.Type,
info.ImageTag,
format,

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using MediaBrowser.Model.Extensions;
@@ -16,7 +19,7 @@ namespace Emby.Dlna.Didl
public Filter(string filter)
{
_all = StringHelper.EqualsIgnoreCase(filter, "*");
_all = string.Equals(filter, "*", StringComparison.OrdinalIgnoreCase);
_fields = (filter ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
}

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.IO;
using System.Text;

View File

@@ -1,5 +1,9 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
@@ -300,7 +304,7 @@ namespace Emby.Dlna
profile = ReserializeProfile(tempProfile);
profile.Id = path.ToLowerInvariant().GetMD5().ToString("N");
profile.Id = path.ToLowerInvariant().GetMD5().ToString("N", CultureInfo.InvariantCulture);
_profiles[path] = new Tuple<InternalProfileInfo, DeviceProfile>(GetInternalProfileInfo(_fileSystem.GetFileInfo(path), type), profile);
@@ -352,7 +356,7 @@ namespace Emby.Dlna
Info = new DeviceProfileInfo
{
Id = file.FullName.ToLowerInvariant().GetMD5().ToString("N"),
Id = file.FullName.ToLowerInvariant().GetMD5().ToString("N", CultureInfo.InvariantCulture),
Name = _fileSystem.GetFileNameWithoutExtension(file),
Type = type
}
@@ -384,7 +388,7 @@ namespace Emby.Dlna
{
Directory.CreateDirectory(systemProfilesPath);
using (var fileStream = _fileSystem.GetFileStream(path, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read))
using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))
{
await stream.CopyToAsync(fileStream);
}

View File

@@ -12,8 +12,22 @@
</ItemGroup>
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFramework>netstandard2.1</TargetFramework>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<TreatWarningsAsErrors Condition=" '$(Configuration)' == 'Release'" >true</TreatWarningsAsErrors>
</PropertyGroup>
<!-- Code Analyzers-->
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.9.8" PrivateAssets="All" />
<PackageReference Include="SerilogAnalyzer" Version="0.15.0" PrivateAssets="All" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
<PackageReference Include="SmartAnalyzers.MultithreadingAnalyzer" Version="1.1.31" PrivateAssets="All" />
</ItemGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<CodeAnalysisRuleSet>../jellyfin.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>

View File

@@ -1,17 +1,21 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
namespace Emby.Dlna
{
public class EventSubscriptionResponse
{
public string Content { get; set; }
public string ContentType { get; set; }
public Dictionary<string, string> Headers { get; set; }
public EventSubscriptionResponse()
{
Headers = new Dictionary<string, string>();
}
public string Content { get; set; }
public string ContentType { get; set; }
public Dictionary<string, string> Headers { get; set; }
}
}

View File

@@ -1,8 +1,12 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using MediaBrowser.Common.Extensions;
@@ -29,25 +33,15 @@ namespace Emby.Dlna.Eventing
{
var subscription = GetSubscription(subscriptionId, false);
int timeoutSeconds;
subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300;
int timeoutSeconds = subscription.TimeoutSeconds;
subscription.SubscriptionTime = DateTime.UtcNow;
// Remove logging for now because some devices are sending this very frequently
// TODO re-enable with dlna debug logging setting
//_logger.LogDebug("Renewing event subscription for {0} with timeout of {1} to {2}",
// subscription.NotificationType,
// timeout,
// subscription.CallbackUrl);
if (subscription != null)
{
subscription.TimeoutSeconds = ParseTimeout(requestedTimeoutString) ?? 300;
timeoutSeconds = subscription.TimeoutSeconds;
subscription.SubscriptionTime = DateTime.UtcNow;
}
else
{
timeoutSeconds = 300;
}
_logger.LogDebug(
"Renewing event subscription for {0} with timeout of {1} to {2}",
subscription.NotificationType,
timeoutSeconds,
subscription.CallbackUrl);
return GetEventSubscriptionResponse(subscriptionId, requestedTimeoutString, timeoutSeconds);
}
@@ -55,14 +49,12 @@ namespace Emby.Dlna.Eventing
public EventSubscriptionResponse CreateEventSubscription(string notificationType, string requestedTimeoutString, string callbackUrl)
{
var timeout = ParseTimeout(requestedTimeoutString) ?? 300;
var id = "uuid:" + Guid.NewGuid().ToString("N");
var id = "uuid:" + Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
// Remove logging for now because some devices are sending this very frequently
// TODO re-enable with dlna debug logging setting
//_logger.LogDebug("Creating event subscription for {0} with timeout of {1} to {2}",
// notificationType,
// timeout,
// callbackUrl);
_logger.LogDebug("Creating event subscription for {0} with timeout of {1} to {2}",
notificationType,
timeout,
callbackUrl);
_subscriptions.TryAdd(id, new EventSubscription
{
@@ -176,7 +168,7 @@ namespace Emby.Dlna.Eventing
try
{
using (await _httpClient.SendAsync(options, "NOTIFY").ConfigureAwait(false))
using (await _httpClient.SendAsync(options, new HttpMethod("NOTIFY")).ConfigureAwait(false))
{
}

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
namespace Emby.Dlna.Eventing
@@ -13,6 +16,8 @@ namespace Emby.Dlna.Eventing
public long TriggerCount { get; set; }
public bool IsExpired => SubscriptionTime.AddSeconds(TimeoutSeconds) >= DateTime.UtcNow;
public void IncrementTriggerCount()
{
if (TriggerCount == long.MaxValue)
@@ -22,7 +27,5 @@ namespace Emby.Dlna.Eventing
TriggerCount++;
}
public bool IsExpired => SubscriptionTime.AddSeconds(TimeoutSeconds) >= DateTime.UtcNow;
}
}

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna
{

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna
{

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna
{

View File

@@ -1,3 +1,5 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna
{

View File

@@ -1,3 +1,8 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Threading.Tasks;
namespace Emby.Dlna
{
public interface IUpnpService
@@ -13,6 +18,6 @@ namespace Emby.Dlna
/// </summary>
/// <param name="request">The request.</param>
/// <returns>ControlResponse.</returns>
ControlResponse ProcessControlRequest(ControlRequest request);
Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request);
}
}

View File

@@ -1,4 +1,9 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Net.Sockets;
using System.Globalization;
using System.Threading;
using System.Threading.Tasks;
using Emby.Dlna.PlayTo;
@@ -247,7 +252,7 @@ namespace Emby.Dlna.Main
foreach (var address in addresses)
{
if (address.AddressFamily == IpAddressFamily.InterNetworkV6)
if (address.AddressFamily == AddressFamily.InterNetworkV6)
{
// Not support IPv6 right now
continue;
@@ -306,7 +311,7 @@ namespace Emby.Dlna.Main
{
guid = text.GetMD5();
}
return guid.ToString("N");
return guid.ToString("N", CultureInfo.InvariantCulture);
}
private void SetProperies(SsdpDevice device, string fullDeviceType)

View File

@@ -1,5 +1,9 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.Xml;
using Emby.Dlna.Service;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
@@ -9,35 +13,33 @@ namespace Emby.Dlna.MediaReceiverRegistrar
{
public class ControlHandler : BaseControlHandler
{
protected override IEnumerable<KeyValuePair<string, string>> GetResult(string methodName, IDictionary<string, string> methodParams)
{
if (string.Equals(methodName, "IsAuthorized", StringComparison.OrdinalIgnoreCase))
return HandleIsAuthorized();
if (string.Equals(methodName, "IsValidated", StringComparison.OrdinalIgnoreCase))
return HandleIsValidated();
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private static IEnumerable<KeyValuePair<string, string>> HandleIsAuthorized()
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "Result", "1" }
};
}
private static IEnumerable<KeyValuePair<string, string>> HandleIsValidated()
{
return new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
{ "Result", "1" }
};
}
public ControlHandler(IServerConfigurationManager config, ILogger logger)
: base(config, logger)
{
}
/// <inheritdoc />
protected override void WriteResult(string methodName, IDictionary<string, string> methodParams, XmlWriter xmlWriter)
{
if (string.Equals(methodName, "IsAuthorized", StringComparison.OrdinalIgnoreCase))
{
HandleIsAuthorized(xmlWriter);
return;
}
if (string.Equals(methodName, "IsValidated", StringComparison.OrdinalIgnoreCase))
{
HandleIsValidated(xmlWriter);
return;
}
throw new ResourceNotFoundException("Unexpected control request name: " + methodName);
}
private static void HandleIsAuthorized(XmlWriter xmlWriter)
=> xmlWriter.WriteElementString("Result", "1");
private static void HandleIsValidated(XmlWriter xmlWriter)
=> xmlWriter.WriteElementString("Result", "1");
}
}

View File

@@ -1,3 +1,7 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Threading.Tasks;
using Emby.Dlna.Service;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
@@ -15,17 +19,19 @@ namespace Emby.Dlna.MediaReceiverRegistrar
_config = config;
}
/// <inheritdoc />
public string GetServiceXml()
{
return new MediaReceiverRegistrarXmlBuilder().GetXml();
}
public ControlResponse ProcessControlRequest(ControlRequest request)
/// <inheritdoc />
public Task<ControlResponse> ProcessControlRequestAsync(ControlRequest request)
{
return new ControlHandler(
_config,
Logger)
.ProcessControlRequest(request);
.ProcessControlRequestAsync(request);
}
}
}

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;
using Emby.Dlna.Service;

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -221,7 +224,7 @@ namespace Emby.Dlna.PlayTo
_logger.LogDebug("Setting mute");
var value = mute ? 1 : 0;
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
.ConfigureAwait(false);
IsMuted = mute;
@@ -251,7 +254,7 @@ namespace Emby.Dlna.PlayTo
// Remote control will perform better
Volume = value;
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType, value))
.ConfigureAwait(false);
}
@@ -270,7 +273,7 @@ namespace Emby.Dlna.PlayTo
throw new InvalidOperationException("Unable to find service");
}
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, string.Format("{0:hh}:{0:mm}:{0:ss}", value), "REL_TIME"))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, string.Format("{0:hh}:{0:mm}:{0:ss}", value), "REL_TIME"))
.ConfigureAwait(false);
RestartTimer(true);
@@ -302,7 +305,7 @@ namespace Emby.Dlna.PlayTo
}
var post = avCommands.BuildPost(command, service.ServiceType, url, dictionary);
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, post, header: header)
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, post, header: header)
.ConfigureAwait(false);
await Task.Delay(50).ConfigureAwait(false);
@@ -344,7 +347,7 @@ namespace Emby.Dlna.PlayTo
throw new InvalidOperationException("Unable to find service");
}
return new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1));
return new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1));
}
public async Task SetPlay(CancellationToken cancellationToken)
@@ -368,7 +371,7 @@ namespace Emby.Dlna.PlayTo
var service = GetAvTransportService();
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
.ConfigureAwait(false);
RestartTimer(true);
@@ -386,7 +389,7 @@ namespace Emby.Dlna.PlayTo
var service = GetAvTransportService();
await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType, 1))
.ConfigureAwait(false);
TransportState = TRANSPORTSTATE.PAUSED;
@@ -513,7 +516,7 @@ namespace Emby.Dlna.PlayTo
return;
}
var result = await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), true)
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), true)
.ConfigureAwait(false);
if (result == null || result.Document == null)
@@ -559,7 +562,7 @@ namespace Emby.Dlna.PlayTo
return;
}
var result = await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), true)
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), true)
.ConfigureAwait(false);
if (result == null || result.Document == null)
@@ -586,7 +589,7 @@ namespace Emby.Dlna.PlayTo
return null;
}
var result = await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType), false)
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, avCommands.BuildPost(command, service.ServiceType), false)
.ConfigureAwait(false);
if (result == null || result.Document == null)
@@ -624,7 +627,7 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), false)
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), false)
.ConfigureAwait(false);
if (result == null || result.Document == null)
@@ -687,7 +690,7 @@ namespace Emby.Dlna.PlayTo
var rendererCommands = await GetRenderingProtocolAsync(cancellationToken).ConfigureAwait(false);
var result = await new SsdpHttpClient(_httpClient, _config).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), false)
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, rendererCommands.BuildPost(command, service.ServiceType), false)
.ConfigureAwait(false);
if (result == null || result.Document == null)
@@ -868,7 +871,7 @@ namespace Emby.Dlna.PlayTo
string url = NormalizeUrl(Properties.BaseUrl, avService.ScpdUrl);
var httpClient = new SsdpHttpClient(_httpClient, _config);
var httpClient = new SsdpHttpClient(_httpClient);
var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false);
@@ -896,7 +899,7 @@ namespace Emby.Dlna.PlayTo
string url = NormalizeUrl(Properties.BaseUrl, avService.ScpdUrl);
var httpClient = new SsdpHttpClient(_httpClient, _config);
var httpClient = new SsdpHttpClient(_httpClient);
_logger.LogDebug("Dlna Device.GetRenderingProtocolAsync");
var document = await httpClient.GetDataAsync(url, cancellationToken).ConfigureAwait(false);
@@ -931,7 +934,7 @@ namespace Emby.Dlna.PlayTo
public static async Task<Device> CreateuPnpDeviceAsync(Uri url, IHttpClient httpClient, IServerConfigurationManager config, ILogger logger, CancellationToken cancellationToken)
{
var ssdpHttpClient = new SsdpHttpClient(httpClient, config);
var ssdpHttpClient = new SsdpHttpClient(httpClient);
var document = await ssdpHttpClient.GetDataAsync(url.ToString(), cancellationToken).ConfigureAwait(false);

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Collections.Generic;
using Emby.Dlna.Common;
using MediaBrowser.Model.Dlna;

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -6,7 +9,6 @@ using System.Threading;
using System.Threading.Tasks;
using Emby.Dlna.Didl;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;

View File

@@ -1,5 +1,10 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Common.Extensions;
@@ -14,13 +19,12 @@ using MediaBrowser.Controller.Session;
using MediaBrowser.Model.Dlna;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Globalization;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Session;
using Microsoft.Extensions.Logging;
namespace Emby.Dlna.PlayTo
{
class PlayToManager : IDisposable
public class PlayToManager : IDisposable
{
private readonly ILogger _logger;
private readonly ISessionManager _sessionManager;
@@ -63,10 +67,10 @@ namespace Emby.Dlna.PlayTo
public void Start()
{
_deviceDiscovery.DeviceDiscovered += _deviceDiscovery_DeviceDiscovered;
_deviceDiscovery.DeviceDiscovered += OnDeviceDiscoveryDeviceDiscovered;
}
async void _deviceDiscovery_DeviceDiscovered(object sender, GenericEventArgs<UpnpDeviceInfo> e)
private async void OnDeviceDiscoveryDeviceDiscovered(object sender, GenericEventArgs<UpnpDeviceInfo> e)
{
if (_disposed)
{
@@ -141,7 +145,7 @@ namespace Emby.Dlna.PlayTo
return usn;
}
return usn.GetMD5().ToString("N");
return usn.GetMD5().ToString("N", CultureInfo.InvariantCulture);
}
private async Task AddDevice(UpnpDeviceInfo info, string location, CancellationToken cancellationToken)
@@ -156,10 +160,10 @@ namespace Emby.Dlna.PlayTo
}
else
{
uuid = location.GetMD5().ToString("N");
uuid = location.GetMD5().ToString("N", CultureInfo.InvariantCulture);
}
var sessionInfo = _sessionManager.LogSessionActivity("DLNA", _appHost.ApplicationVersion, uuid, null, uri.OriginalString, null);
var sessionInfo = _sessionManager.LogSessionActivity("DLNA", _appHost.ApplicationVersionString, uuid, null, uri.OriginalString, null);
var controller = sessionInfo.SessionControllers.OfType<PlayToController>().FirstOrDefault();
@@ -172,7 +176,7 @@ namespace Emby.Dlna.PlayTo
_sessionManager.UpdateDeviceName(sessionInfo.Id, deviceName);
string serverAddress;
if (info.LocalIpAddress == null || info.LocalIpAddress.Equals(IpAddressInfo.Any) || info.LocalIpAddress.Equals(IpAddressInfo.IPv6Any))
if (info.LocalIpAddress == null || info.LocalIpAddress.Equals(IPAddress.Any) || info.LocalIpAddress.Equals(IPAddress.IPv6Any))
{
serverAddress = await _appHost.GetLocalApiUrl(cancellationToken).ConfigureAwait(false);
}
@@ -230,7 +234,7 @@ namespace Emby.Dlna.PlayTo
public void Dispose()
{
_deviceDiscovery.DeviceDiscovered -= _deviceDiscovery_DeviceDiscovered;
_deviceDiscovery.DeviceDiscovered -= OnDeviceDiscoveryDeviceDiscovered;
try
{

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
namespace Emby.Dlna.PlayTo

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
namespace Emby.Dlna.PlayTo

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
namespace Emby.Dlna.PlayTo

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;
namespace Emby.Dlna.PlayTo

View File

@@ -1,4 +1,6 @@
using System.Globalization;
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.IO;
using System.Linq;
using MediaBrowser.Controller.Entities;

View File

@@ -1,13 +1,16 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Globalization;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;
using Emby.Dlna.Common;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
namespace Emby.Dlna.PlayTo
{
@@ -16,16 +19,17 @@ namespace Emby.Dlna.PlayTo
private const string USERAGENT = "Microsoft-Windows/6.2 UPnP/1.0 Microsoft-DLNA DLNADOC/1.50";
private const string FriendlyName = "Jellyfin";
private readonly IHttpClient _httpClient;
private readonly IServerConfigurationManager _config;
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
public SsdpHttpClient(IHttpClient httpClient, IServerConfigurationManager config)
private readonly IHttpClient _httpClient;
public SsdpHttpClient(IHttpClient httpClient)
{
_httpClient = httpClient;
_config = config;
}
public async Task<XDocument> SendCommandAsync(string baseUrl,
public async Task<XDocument> SendCommandAsync(
string baseUrl,
DeviceService service,
string command,
string postData,
@@ -34,16 +38,21 @@ namespace Emby.Dlna.PlayTo
{
var cancellationToken = CancellationToken.None;
using (var response = await PostSoapDataAsync(NormalizeServiceUrl(baseUrl, service.ControlUrl), "\"" + service.ServiceType + "#" + command + "\"", postData, header, logRequest, cancellationToken)
var url = NormalizeServiceUrl(baseUrl, service.ControlUrl);
using (var response = await PostSoapDataAsync(
url,
$"\"{service.ServiceType}#{command}\"",
postData,
header,
logRequest,
cancellationToken)
.ConfigureAwait(false))
using (var stream = response.Content)
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
using (var stream = response.Content)
{
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
return XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace);
}
}
return XDocument.Parse(
await reader.ReadToEndAsync().ConfigureAwait(false),
LoadOptions.PreserveWhitespace);
}
}
@@ -56,14 +65,15 @@ namespace Emby.Dlna.PlayTo
}
if (!serviceUrl.StartsWith("/"))
{
serviceUrl = "/" + serviceUrl;
}
return baseUrl + serviceUrl;
}
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
public async Task SubscribeAsync(string url,
public async Task SubscribeAsync(
string url,
string ip,
int port,
string localIp,
@@ -76,9 +86,6 @@ namespace Emby.Dlna.PlayTo
UserAgent = USERAGENT,
LogErrorResponseBody = true,
BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true
};
options.RequestHeaders["HOST"] = ip + ":" + port.ToString(_usCulture);
@@ -86,7 +93,7 @@ namespace Emby.Dlna.PlayTo
options.RequestHeaders["NT"] = "upnp:event";
options.RequestHeaders["TIMEOUT"] = "Second-" + timeOut.ToString(_usCulture);
using (await _httpClient.SendAsync(options, "SUBSCRIBE").ConfigureAwait(false))
using (await _httpClient.SendAsync(options, new HttpMethod("SUBSCRIBE")).ConfigureAwait(false))
{
}
@@ -101,47 +108,41 @@ namespace Emby.Dlna.PlayTo
LogErrorResponseBody = true,
BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true,
CancellationToken = cancellationToken
};
options.RequestHeaders["FriendlyName.DLNA.ORG"] = FriendlyName;
using (var response = await _httpClient.SendAsync(options, "GET").ConfigureAwait(false))
using (var response = await _httpClient.SendAsync(options, HttpMethod.Get).ConfigureAwait(false))
using (var stream = response.Content)
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
using (var stream = response.Content)
{
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
return XDocument.Parse(reader.ReadToEnd(), LoadOptions.PreserveWhitespace);
}
}
return XDocument.Parse(
await reader.ReadToEndAsync().ConfigureAwait(false),
LoadOptions.PreserveWhitespace);
}
}
private Task<HttpResponseInfo> PostSoapDataAsync(string url,
private Task<HttpResponseInfo> PostSoapDataAsync(
string url,
string soapAction,
string postData,
string header,
bool logRequest,
CancellationToken cancellationToken)
{
if (!soapAction.StartsWith("\""))
soapAction = "\"" + soapAction + "\"";
if (soapAction[0] != '\"')
{
soapAction = $"\"{soapAction}\"";
}
var options = new HttpRequestOptions
{
Url = url,
UserAgent = USERAGENT,
LogRequest = logRequest || _config.GetDlnaConfiguration().EnableDebugLog,
LogErrorResponseBody = true,
BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true,
CancellationToken = cancellationToken
};
@@ -155,7 +156,6 @@ namespace Emby.Dlna.PlayTo
}
options.RequestContentType = "text/xml";
options.AppendCharsetToMimeType = true;
options.RequestContent = postData;
return _httpClient.Post(options);

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
namespace Emby.Dlna.PlayTo
{
public enum TRANSPORTSTATE

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Collections.Generic;
using System.Linq;

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
using System.Xml.Linq;
using Emby.Dlna.Ssdp;

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System;
namespace Emby.Dlna.PlayTo

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Xml.Linq;
namespace Emby.Dlna.PlayTo

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using System.Linq;
using MediaBrowser.Model.Dlna;

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;
namespace Emby.Dlna.Profiles

View File

@@ -1,3 +1,6 @@
#pragma warning disable CS1591
#pragma warning disable SA1600
using MediaBrowser.Model.Dlna;
namespace Emby.Dlna.Profiles

Some files were not shown because too many files have changed in this diff Show More