Codebase list kodi-inputstream-adaptive / 9c8d254
New upstream release. Debian Janitor 2 years ago
119 changed file(s) with 9380 addition(s) and 596 deletion(s). Raw diff Collapse all Expand all
0 name: Build and run tests
1 on: [push, pull_request]
2 env:
3 app_id: inputstream.adaptive
4
5 jobs:
6 build:
7 runs-on: ${{ matrix.os }}
8 strategy:
9 fail-fast: false
10 matrix:
11 include:
12 - os: ubuntu-18.04
13 CC: gcc
14 CXX: g++
15 - os: ubuntu-18.04
16 CC: clang
17 CXX: clang++
18 - os: macos-10.15
19 steps:
20 - name: Checkout Kodi repo
21 uses: actions/checkout@v2
22 with:
23 repository: xbmc/xbmc
24 ref: Matrix
25 path: xbmc
26 - name: Checkout inputstream.adaptive repo
27 uses: actions/checkout@v2
28 with:
29 path: ${{ env.app_id }}
30 - name: Configure
31 env:
32 CC: ${{ matrix.CC }}
33 CXX: ${{ matrix.CXX }}
34 run: |
35 cd ${app_id} && mkdir -p build && cd build
36 cmake -DADDONS_TO_BUILD=${app_id} -DADDON_SRC_PREFIX=${{ github.workspace }} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/xbmc/addons -DPACKAGE_ZIP=1 ${{ github.workspace }}/xbmc/cmake/addons
37 - name: Build
38 env:
39 CC: ${{ matrix.CC }}
40 CXX: ${{ matrix.CXX }}
41 run: |
42 cd ${app_id}/build
43 make
44 - name: Run tests
45 run: |
46 cd ${app_id}/build/${app_id}-prefix/src/${app_id}-build
47 make CTEST_OUTPUT_ON_FAILURE=1 GTEST_COLOR=1 test
0 name: Changelog and Release
1 # Update the changelog and news(optionally), bump the version, and create a release
2 #
3 # The release is created on the given branch, release and tag name format will be <version>-<branch> and
4 # the body of the release will be created from the changelog.txt or news element in the addon.xml.in
5 #
6 # options:
7 # - version_type: 'minor' / 'micro' # whether to do a minor or micro version bump
8 # - changelog_text: string to add to the changelog and news
9 # - update_news: 'true' / 'false' # whether to update the news in the addon.xml.in
10 # - add_date: 'true' / 'false' # Add date to version number in changelog and news. ie. v1.0.1 (2021-7-17)
11
12 on:
13 workflow_dispatch:
14 inputs:
15 version_type:
16 description: 'Create a ''minor'' or ''micro'' release?'
17 required: true
18 default: 'minor'
19 changelog_text:
20 description: 'Input the changes you''d like to add to the changelogs. Your text should be encapsulated in "''s with line feeds represented by literal \n''s. ie. "This is the first change\nThis is the second change"'
21 required: true
22 default: ''
23 update_news:
24 description: 'Update news in addon.xml.in? [true|false]'
25 required: true
26 default: 'true'
27 add_date:
28 description: 'Add date to version number in changelog and news. ie. "v1.0.1 (2021-7-17)" [true|false]'
29 required: true
30 default: 'true'
31
32 jobs:
33 default:
34 runs-on: ubuntu-latest
35 name: Changelog and Release
36
37 steps:
38
39 # Checkout the current repository into a directory (repositories name)
40 - name: Checkout Repository
41 uses: actions/checkout@v2
42 with:
43 fetch-depth: 0
44 path: ${{ github.event.repository.name }}
45
46 # Checkout the required scripts from kodi-pvr/pvr-scripts into the 'scripts' directory
47 - name: Checkout Scripts
48 uses: actions/checkout@v2
49 with:
50 fetch-depth: 0
51 repository: kodi-pvr/pvr-scripts
52 path: scripts
53
54 # Install all dependencies required by the following steps
55 # - libxml2-utils, xmlstarlet: reading news and version from addon.xml.in
56 - name: Install dependencies
57 run: |
58 sudo apt-get install libxml2-utils xmlstarlet
59
60 # Setup python version 3.9
61 - name: Set up Python
62 uses: actions/setup-python@v2
63 with:
64 python-version: '3.9'
65
66 # Run the python script to increment the version, changelog and news
67 - name: Increment version and update changelogs
68 run: |
69 arguments=
70 if [[ ${{ github.event.inputs.update_news }} == true ]] ;
71 then
72 arguments=$(echo $arguments && echo --update-news)
73 fi
74 if [[ ${{ github.event.inputs.add_date }} == true ]] ;
75 then
76 arguments=$(echo $arguments && echo --add-date)
77 fi
78 python3 ../scripts/changelog_and_release.py ${{ github.event.inputs.version_type }} ${{ github.event.inputs.changelog_text }} $arguments
79 working-directory: ${{ github.event.repository.name }}
80
81 # Create the variables required by the following steps
82 # - steps.required-variables.outputs.changes: latest entry in the changelog.txt (if exists), or addon.xml.in news element
83 # - steps.required-variables.outputs.version: version element from addon.xml.in
84 # - steps.required-variables.outputs.branch: branch of the triggering ref
85 # - steps.required-variables.outputs.today: today's date in format '%Y-%m-%d'
86 - name: Get required variables
87 id: required-variables
88 run: |
89 changes=$(cat "$(find . -name changelog.txt)" | awk -v RS= 'NR==1')
90 if [ -z "$changes" ] ;
91 then
92 changes=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/extension/news)' | awk -v RS= 'NR==1')
93 fi
94 changes="${changes//'%'/'%25'}"
95 changes="${changes//$'\n'/'%0A'}"
96 changes="${changes//$'\r'/'%0D'}"
97 changes="${changes//$'\\n'/'%0A'}"
98 changes="${changes//$'\\r'/'%0D'}"
99 echo ::set-output name=changes::$changes
100 version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)')
101 echo ::set-output name=version::$version
102 branch=$(echo ${GITHUB_REF#refs/heads/})
103 echo ::set-output name=branch::$branch
104 echo ::set-output name=today::$(date +'%Y-%m-%d')
105 working-directory: ${{ github.event.repository.name }}
106
107 # Create a commit of the incremented version and changelog, news changes
108 # Commit message (add_date=false): changelog and version v{steps.required-variables.outputs.version}
109 # Commit message (add_date=true): changelog and version v{steps.required-variables.outputs.version} ({steps.required-variables.outputs.today})
110 - name: Commit changes
111 run: |
112 git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
113 git config --local user.name "github-actions[bot]"
114 commit_message="changelog and version v${{ steps.required-variables.outputs.version }}"
115 if [[ ${{ github.event.inputs.add_date }} == true ]] ;
116 then
117 commit_message="$commit_message (${{ steps.required-variables.outputs.today }})"
118 fi
119 git commit -m "$commit_message" -a
120 working-directory: ${{ github.event.repository.name }}
121
122 # Push the commit(s) created above to the triggering branch
123 - name: Push changes
124 uses: ad-m/github-push-action@master
125 with:
126 branch: ${{ github.ref }}
127 directory: ${{ github.event.repository.name }}
128
129 # Sleep for 60 seconds to allow for any delays in the push
130 - name: Sleep for 60 seconds
131 run: sleep 60s
132 shell: bash
133
134 # Create a release at {steps.required-variables.outputs.branch}
135 # - tag and release name format: {steps.required-variables.outputs.version}-{steps.required-variables.outputs.branch} ie. 1.0.0-Matrix
136 # - release body: {steps.required-variables.outputs.changes}
137 - name: Create Release
138 id: create-release
139 uses: actions/create-release@v1
140 env:
141 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
142 with:
143 tag_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }}
144 release_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }}
145 body: ${{ steps.required-variables.outputs.changes }}
146 draft: false
147 prerelease: false
148 commitish: ${{ steps.required-variables.outputs.branch }}
0 name: Increment version when languages are updated
1
2 on:
3 push:
4 branches: [ Matrix, Nexus ]
5 paths:
6 - '**resource.language.**strings.po'
7
8 jobs:
9 default:
10 if: github.repository == 'xbmc/inputstream.adaptive'
11 runs-on: ubuntu-latest
12 name: Increment add-on version when languages are updated
13
14 steps:
15
16 - name: Checkout Repository
17 uses: actions/checkout@v2
18 with:
19 fetch-depth: 0
20 path: ${{ github.event.repository.name }}
21
22 - name: Checkout Scripts
23 uses: actions/checkout@v2
24 with:
25 fetch-depth: 0
26 repository: xbmc/weblate-supplementary-scripts
27 path: scripts
28
29 - name: Set up Python
30 uses: actions/setup-python@v2
31 with:
32 python-version: '3.9'
33
34 - name: Get changed files
35 uses: trilom/file-changes-action@v1.2.4
36
37 - name: Increment add-on version
38 run: |
39 python3 ../scripts/binary/increment_version.py $HOME/files.json -c -n -d
40 working-directory: ${{ github.event.repository.name }}
41
42 - name: Install dependencies
43 run: |
44 sudo apt-get install libxml2-utils xmlstarlet
45
46 - name: Get required variables
47 id: required-variables
48 run: |
49 version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)')
50 echo ::set-output name=version::$version
51 working-directory: ${{ github.event.repository.name }}
52
53 - name: Create PR for incrementing add-on versions
54 uses: peter-evans/create-pull-request@v3.10.0
55 with:
56 commit-message: Add-on version incremented to ${{ steps.required-variables.outputs.version }} from Weblate
57 title: Add-on version incremented to ${{ steps.required-variables.outputs.version }} from Weblate
58 body: Add-on version incremented triggered by ${{ github.sha }}
59 branch: inc-ver
60 delete-branch: true
61 path: ./${{ github.event.repository.name }}
0 name: Make Release
1 # Create a release on the given branch
2 # Release and tag name format will be <version>-<branch>
3 # The body of the release will be created from the changelog.txt or news element in the addon.xml.in
4
5 on: workflow_dispatch
6
7 jobs:
8 default:
9 runs-on: ubuntu-latest
10 name: Make Release
11
12 steps:
13
14 # Checkout the current repository into a directory (repositories name)
15 - name: Checkout Repository
16 uses: actions/checkout@v2
17 with:
18 fetch-depth: 0
19 path: ${{ github.event.repository.name }}
20
21 # Install all dependencies required by the following steps
22 # - libxml2-utils, xmlstarlet: reading news and version from addon.xml.in
23 - name: Install dependencies
24 run: |
25 sudo apt-get install libxml2-utils xmlstarlet
26
27 # Create the variables required by the following steps
28 # - steps.required-variables.outputs.changes: latest entry in the changelog.txt (if exists), or addon.xml.in news element
29 # - steps.required-variables.outputs.version: version element from addon.xml.in
30 # - steps.required-variables.outputs.branch: branch of the triggering ref
31 - name: Get required variables
32 id: required-variables
33 run: |
34 changes=$(cat "$(find . -name changelog.txt)" | awk -v RS= 'NR==1')
35 if [ -z "$changes" ] ;
36 then
37 changes=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/extension/news)' | awk -v RS= 'NR==1')
38 fi
39 changes="${changes//'%'/'%25'}"
40 changes="${changes//$'\n'/'%0A'}"
41 changes="${changes//$'\r'/'%0D'}"
42 changes="${changes//$'\\n'/'%0A'}"
43 changes="${changes//$'\\r'/'%0D'}"
44 echo ::set-output name=changes::$changes
45 version=$(xmlstarlet fo -R "$(find . -name addon.xml.in)" | xmlstarlet sel -t -v 'string(/addon/@version)')
46 echo ::set-output name=version::$version
47 branch=$(echo ${GITHUB_REF#refs/heads/})
48 echo ::set-output name=branch::$branch
49 working-directory: ${{ github.event.repository.name }}
50
51 # Create a release at {steps.required-variables.outputs.branch}
52 # - tag and release name format: {steps.required-variables.outputs.version}-{steps.required-variables.outputs.branch} ie. 1.0.0-Matrix
53 # - release body: {steps.required-variables.outputs.changes}
54 - name: Create Release
55 id: create-release
56 uses: actions/create-release@v1
57 env:
58 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59 with:
60 tag_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }}
61 release_name: ${{ steps.required-variables.outputs.version }}-${{ steps.required-variables.outputs.branch }}
62 body: ${{ steps.required-variables.outputs.changes }}
63 draft: false
64 prerelease: false
65 commitish: ${{ steps.required-variables.outputs.branch }}
0 name: Sync addon metadata translations
1
2 on:
3 push:
4 branches: [ Matrix, Nexus ]
5 paths:
6 - '**addon.xml.in'
7 - '**resource.language.**strings.po'
8
9 jobs:
10 default:
11 if: github.repository == 'xbmc/inputstream.adaptive'
12 runs-on: ubuntu-latest
13
14 strategy:
15
16 fail-fast: false
17 matrix:
18 python-version: [ 3.9 ]
19
20 steps:
21
22 - name: Checkout repository
23 uses: actions/checkout@v2
24 with:
25 path: project
26
27 - name: Checkout sync_addon_metadata_translations repository
28 uses: actions/checkout@v2
29 with:
30 repository: xbmc/sync_addon_metadata_translations
31 path: sync_addon_metadata_translations
32
33 - name: Set up Python ${{ matrix.python-version }}
34 uses: actions/setup-python@v2
35 with:
36 python-version: ${{ matrix.python-version }}
37
38 - name: Install dependencies
39 run: |
40 python -m pip install --upgrade pip
41 python -m pip install sync_addon_metadata_translations/
42
43 - name: Run sync-addon-metadata-translations
44 run: |
45 sync-addon-metadata-translations
46 working-directory: ./project
47
48 - name: Create PR for sync-addon-metadata-translations changes
49 uses: peter-evans/create-pull-request@v3.10.0
50 with:
51 commit-message: Sync of addon metadata translations
52 title: Sync of addon metadata translations
53 body: Sync of addon metadata translations triggered by ${{ github.sha }}
54 branch: amt-sync
55 delete-branch: true
56 path: ./project
57 reviewers: gade01
0 # build artifacts
1 build/
2 inputstream.*/addon.xml
3
4 # Debian build files
5 debian/changelog
6 debian/files
7 debian/*.log
8 debian/*.substvars
9 debian/.debhelper/
10 debian/tmp/
11 debian/kodi-pvr-*/
12 obj-x86_64-linux-gnu/
13
14 # commonly used editors
15 # vim
16 *.swp
17
18 # Eclipse
19 *.project
20 *.cproject
21 .classpath
22 *.sublime-*
23 .settings/
24
25 # KDevelop 4
26 *.kdev4
27
28 # gedit
29 *~
30
31 # CLion
32 /.idea
33
34 # clion
35 .idea/
36
37 # to prevent add after a "git format-patch VALUE" and "git add ." call
38 /*.patch
39
40 # Visual Studio Code
41 .vscode
42
43 # to prevent add if project code opened by Visual Studio over CMake file
44 .vs/
45
46 #testfiles
47 *.mpd_current
0 # inputstream.adaptive (2.6.14)
0 # inputstream.adaptive
11
22 This is an adaptive file addon for kodi's new InputStream Interface.
33
1818 - URL to paste into strm file: http://rdmedia.bbc.co.uk/dash/ondemand/testcard/1/client_manifest-events-multilang.mpd
1919
2020 ##### Decrypting:
21 Decrypting is not implemented. But it is prepared!
22 Decrypting takes place in separate decrypter shared libraries, wich are identified by the inputstream.mpd.licensetype listitem property.
23 Only one shared decrypter library can be active during playing decrypted media. Building decrypter libraries do not require kodi sources.
21 Decrypting is not implemented. But it is prepared!
22 Decrypting takes place in separate decrypter shared libraries, wich are identified by the inputstream.mpd.licensetype listitem property.
23 Only one shared decrypter library can be active during playing decrypted media. Building decrypter libraries do not require kodi sources.
2424 Simply check out the sources of this addon and you are able to build decrypters including full access to existing decrypters implemented in bento4.
2525
2626 ##### Bandwidth and resolution:
27 When using inputstream.adaptive the first time, the selection of stream quality / stream resolution is done with a guess of 4MBit/s. This default value will be updated at the time you watch your first movie by measuring the download speed of the media streams.
28 Always you start a new video, the average bandwidth of the previous media watched will be taken to calculate the initial stream representation from the set of existing qualities.
29 If this leads to problems in your environment, you can override / adjust this value using Min. bandwidth in the inputstream.adaptive settings dialog. Setting Min. bandwidth e.g. to 10.000.000, the media selection will never be done with a bandwidth value below
30 this value.
31 Currently the complete media is played with the selection from this initial step, adaptive stream changes during a running video is still under development.
27 When using inputstream.adaptive the first time, the selection of stream quality / stream resolution is done with a guess of 4MBit/s. This default value will be updated at the time you watch your first movie by measuring the download speed of the media streams.
28 Always you start a new video, the average bandwidth of the previous media watched will be taken to calculate the initial stream representation from the set of existing qualities.
29 If this leads to problems in your environment, you can override / adjust this value using Min. bandwidth in the inputstream.adaptive settings dialog. Setting Min. bandwidth e.g. to 10.000.000, the media selection will never be done with a bandwidth value below
30 this value.
31 Currently the complete media is played with the selection from this initial step, adaptive stream changes during a running video is still under development.
3232 There is a new Max. resolution select field in the inputstream.adaptive settings dialog.
3333 Auto will select the best resolution matching to your videoplayer display rect without any limits.
34 If your display resolution is 720p, you will not be able to watch 1080p videos if there are video representations available closer to 720p.
34 If your display resolution is 720p, you will not be able to watch 1080p videos if there are video representations available closer to 720p.
3535
3636
3737 ##### TODO's:
38 - Adaptive bitrate switching is prepared but currently not yet activated
38 - Adaptive bitrate switching is prepared but currently not yet activated
3939 - Automatic / fixed video stream selection depending on max. visible display rect (some work has to be done at the inputstream interface).
40 - There will be many dash mpd, smoothstream or hls manifest types currently not supported - must be extended.
40 - There will be many dash mpd, smoothstream or hls manifest types currently not supported - must be extended.
4141
4242 ##### Notes:
4343 - This addon uses threads to download segments. The memory consumption is the sum of single segment from each stream currently playing. Refering to known streams it is < 10MB for 720p videos.
4444
4545 ##### Credits:
46 [@fernetmenta](github.com/fernetmenta) Best support I ever got regarding streams / codecs and kodi internals.
47 [@notspiff](https://github.com/notspiff) Thanks for your ideas / tipps regarding kodi file system
48 [bento4 library](https://www.bento4.com/) For me the best library choice for mp4 streams. Well written and extensible!
49
50 ##### Continuous integration:
51 [Travis CI build state:](https://travis-ci.org/peak3d) ![alt tag](https://travis-ci.org/peak3d/inputstream.adaptive.svg?branch=master)
52 [Appveyor:](https://ci.appveyor.com/project/peak3d) ![alt tag](https://ci.appveyor.com/api/projects/status/ah9s8usgxhangq7o?svg=true)
46 [@peak3d](https://github.com/peak3d) Original author / creator. Superstar!
47 [@fernetmenta](https://github.com/fernetmenta) Best support regarding streams / codecs and kodi internals.
48 [@notspiff](https://github.com/notspiff) Ideas / tips regarding kodi file system.
49 [bento4 library](https://www.bento4.com/) Great library for mp4 streams. Well written and extensible!
0 kodi-inputstream-adaptive (2.6.23-1) UNRELEASED; urgency=low
1
2 * New upstream release.
3
4 -- Debian Janitor <janitor@jelmer.uk> Wed, 11 Aug 2021 13:41:47 -0000
5
06 kodi-inputstream-adaptive (2.6.14+ds1-1) unstable; urgency=medium
17
28 * New upstream version 2.6.14+ds1 (Closes: #988862)
00 <?xml version="1.0" encoding="UTF-8"?>
11 <addon
22 id="inputstream.adaptive"
3 version="2.6.14"
3 version="2.6.23"
44 name="InputStream Adaptive"
55 provider-name="peak3d">
66 <requires>@ADDON_DEPENDS@</requires>
99 name="adaptive"
1010 extension=""
1111 tags="true"
12 listitemprops="license_type|license_key|license_data|license_flags|manifest_type|server_certificate|stream_headers|manifest_update_parameter|original_audio_language|media_renewal_url|media_renewal_time|max_bandwidth|play_timeshift_buffer"
12 listitemprops="license_type|license_key|license_data|license_flags|manifest_type|server_certificate|stream_headers|manifest_update_parameter|original_audio_language|max_bandwidth|play_timeshift_buffer|pre_init_data"
1313 library_@PLATFORM@="@LIBRARY_FILENAME@"/>
1414 <extension point="xbmc.addon.metadata">
15 <summary lang="en_GB">InputStream client for adaptive streams</summary>
16 <summary lang="es_ES">Cliente InputStream para flujo de datos adaptativos</summary>
17 <description lang="en_GB">InputStream client for adaptive streams</description>
18 <description lang="es_ES">Cliente InputStream para flujo de datos adaptativos</description>
1915 <platform>@PLATFORM@</platform>
2016 <news>
17 v2.6.23 (2021-08-06)
18 - Translations from weblate - de_de, ja_jp, ko_kr
19 - [Android] use multiple drm sessions (solves stuttering)
20 - [DASH] allow for misaligned segs in SegmentTimeline
21
22 v2.6.22 (2021-07-18)
23 - Automation test release
24
25 v2.6.21 (2021-07-18)
26 - Automation test release
27
28 v2.6.20 (2021-07-17)
29 Translations updates from Weblate
30 - de_de, el_gr, es_es, fr_fr, he_il, hi_in, hr_hr, hu_hu, it_it, ja_jp, ko_kr, nl_nl, pl_pl, ro_ro, ru_ru, sk_sk, sv_se
31
32 v2.6.19 (2021-07-17)
33 - Translations updates from Weblate
34 - af_za, am_et, ar_sa, ast_es, az_az, be_by, bg_bg, bs_ba, ca_es, cs_cz, cy_gb, da_dk, de_de, el_gr, en_au, en_gb, en_nz, en_us, eo, es_ar, es_es, es_mx, et_ee, eu_es, fa_af, fa_ir, fi_fi, fo_fo, fr_ca, fr_fr, gl_es, he_il, hi_in, hr_hr, hu_hu, hy_am, id_id, is_is, it_it, ja_jp, kn_in, ko_kr, lt_lt, lv_lv, ml_in, mn_mn, mt_mt, my_mm, nb_no, nl_nl, os_os, pl_pl, pt_br, pt_pt, ro_md, ro_ro, ru_ru, scn, si_lk, sk_sk, sq_al, sr_rs, sr_rs@latin, sv_se, szl, ta_in, tg_tj, th_th, tr_tr, uk_ua, uz_uz, vi_vn, zh_cn, zh_tw
35
36 v2.6.18 (2021-07-13)
37 - Add support to pre-initialise DRM
38 - Fix intermittent crash when stopping Widevine videos
39
40 v2.6.17 (2021-06-20)
41 - Fix decrypt errors on non-Android platforms
42 - [DASH] fix representation base urls
43 - Don't use filecache for subtitle downloads
44
45 v2.6.16 (2021-05-21)
46 - Allow download retries for VOD
47 - [DASH] fix for minimumUpdatePeriod=0
48 - [DASH] remove media_renewal_url and media_renewal_time
49 - License renewal for widevine
50 - [HLS] Fix SSD being deleted with multiple encrypted streams
51 - Overhaul manifest redirect logic
52 - fix seeking into separate chapters/resume time
53 - fix HEVC extra data crash
54 - improve settings
55
56 v2.6.15 (2021-05-18)
57 - [HLS] support webvtt subtitle extensions
58 - [DASH] fix segmentTemplate calculation
59 - [HEVC] use constant frame rate if average is 0
60 - [HLS] don't reset pts on new periods
61 - Don't remove secure decoder cap if not requested in manifest_type
62 - [Android] fallback to widevine L3 if L1 provisioning fails
63
2164 v2.6.14 (2021-04-22)
2265 - Don't overwrite manifest headers with stream headers
2366 - Stream headers default to manifest headers
162205 v2.3.14 (2019-02-10)
163206 - Add WebM container parser
164207 </news>
208 <summary lang="de_DE">InputStream-Client für adaptive Streams</summary>
209 <summary lang="en_GB">InputStream client for adaptive streams</summary>
210 <summary lang="es_ES">Cliente InputStream para flujo de datos adaptativos</summary>
211 <summary lang="ko_KR">가변 스트림을 위한 InputStream 클라이언트</summary>
212 <summary lang="pl_PL">Klient InputStream dla strumieni adaptacyjnych</summary>
213 <description lang="de_DE">InputStream-Client für adaptive Streams</description>
214 <description lang="en_GB">InputStream client for adaptive streams</description>
215 <description lang="es_ES">Cliente InputStream para flujo de datos adaptativos</description>
216 <description lang="ko_KR">가변 스트림을 위한 InputStream 클라이언트</description>
217 <description lang="pl_PL">Klient InputStream dla strumieni adaptacyjnych</description>
165218 </extension>
166219 </addon>
+0
-18
inputstream.adaptive/changelog.txt less more
0 1.0.8
1 - Fix missing brackets when calculating livestream - start
2 1.0.7
3 - ServerCertificate / SSD version bump -> 6
4 1.0.6
5 - allow some frames to fail decrypting
6 1.0.5
7 - normalize livestream's timestamp values
8 1.0.4
9 - Parse BaseUrl from top mpd level
10 1.0.3
11 - Start livestreams 12 secs before "now"
12 1.0.2
13 - Fix live-streams by using 64-bit for frame-duration transformation
14 1.0.1
15 - bumb to force update
16 1.0.0
17 - initial release
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: af_za\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: am_et\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: ar_sa\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: ast_es\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: az_az\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: be_by\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: bg_bg\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: bs_ba\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: ca_es\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: cs_cz\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: cy_gb\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=6; plural=(n==0) ? 0 : (n==1) ? 1 : (n==2) ? 2 : (n==3) ? 3 :(n==6) ? 4 : 5;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: da_dk\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Report-Msgid-Bugs-To: translations@kodi.tv\n"
7 "PO-Revision-Date: 2021-07-18 08:48+0000\n"
8 "Last-Translator: Kai Sommerfeld <kai.sommerfeld@gmx.com>\n"
9 "Language-Team: German <https://kodi.weblate.cloud/projects/kodi-add-ons-videoplayer-inputstream/inputstream-adaptive/de_de/>\n"
10 "Language: de_de\n"
711 "MIME-Version: 1.0\n"
812 "Content-Type: text/plain; charset=UTF-8\n"
913 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: German\n"
11 "Language: de\n"
12 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
14 "Plural-Forms: nplurals=2; plural=n != 1;\n"
15 "X-Generator: Weblate 4.7.1\n"
16
17 msgctxt "Addon Summary"
18 msgid "InputStream client for adaptive streams"
19 msgstr "InputStream-Client für adaptive Streams"
20
21 msgctxt "Addon Description"
22 msgid "InputStream client for adaptive streams"
23 msgstr "InputStream-Client für adaptive Streams"
1324
1425 msgctxt "#30100"
1526 msgid "General"
2839 # Absolute path to the folder containing the decrypters
2940 msgctxt "#30103"
3041 msgid "Decrypter path"
31 msgstr "Decrypter Pfad"
42 msgstr "Decrypter-Pfad"
3243
3344 # Maximum Resolution
3445 msgctxt "#30110"
3546 msgid "Max. Resolution general decoder"
36 msgstr "Max. Auflösung allgemeiner Dekoder"
47 msgstr "Max. Auflösung allgemeiner Decoder"
3748
3849 msgctxt "#30111"
3950 msgid "Stream Selection"
40 msgstr "Streamauswahl"
51 msgstr "Stream-Auswahl"
4152
4253 msgctxt "#30112"
4354 msgid "Media"
4657 # Maximum allowed resolution if decoded through secure path
4758 msgctxt "#30113"
4859 msgid "Max. Resolution secure decoder"
49 msgstr "Max. Auflösung sicherer Dekoder"
60 msgstr "Max. Auflösung sicherer Decoder"
5061
5162 # Select streams without respecting HDCP status
5263 msgctxt "#30114"
5364 msgid "Override HDCP status"
54 msgstr "Überschreibe HDCP Status"
65 msgstr "HDCP-Status überschreiben"
5566
5667 # Do not respect display resolution when selecting streams
5768 msgctxt "#30115"
5869 msgid "Ignore Display Resolution"
59 msgstr "Ignoriere Bildschirmauflösung"
70 msgstr "Bildschirmauflösung ignorieren"
6071
6172 msgctxt "#30120"
6273 msgid "Expert"
6475
6576 msgctxt "#30121"
6677 msgid "Enable Pre-Release Features"
67 msgstr "Pre-Release Features aktivieren"
78 msgstr "Experimentelle Features aktivieren"
79
80 msgctxt "#30122"
81 msgid "Don't use secure decoder if possible"
82 msgstr "Wenn möglich, sicheren Decoder nicht verwenden"
6883
6984 msgctxt "#30150"
7085 msgid "Max"
96111
97112 msgctxt "#30157"
98113 msgid "All"
99 msgstr "Alles"
114 msgstr "Alle"
100115
101116 msgctxt "#30158"
102117 msgid "Audio"
113128
114129 msgctxt "#30161"
115130 msgid "Video + Subtitles"
116 msgstr "Video + Untertitel"
131 msgstr "Video und Untertitel"
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Greek (Greece)\n"
7 "Language: en\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Greek (Greece)\n"
11 "Language: en\n"
1211 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "Ενεργοποίηση χαρακτηριστικών προ-εκδόσεων"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "Μέγιστο"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: en_au\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
1010 "Language-Team: English\n"
1111 "Language: en\n"
1212 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
14 msgctxt "Addon Summary"
15 msgid "InputStream client for adaptive streams"
16 msgstr ""
17
18 msgctxt "Addon Description"
19 msgid "InputStream client for adaptive streams"
20 msgstr ""
1321
1422 msgctxt "#30100"
1523 msgid "General"
6674 msgid "Enable Pre-Release Features"
6775 msgstr ""
6876
77 msgctxt "#30122"
78 msgid "Don't use secure decoder if possible"
79 msgstr ""
80
6981 msgctxt "#30150"
7082 msgid "Max"
7183 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: en_nz\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: en_us\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: eo\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: es_ar\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
76 "Last-Translator: roliverosc\n"
7 "Language-Team: Spanish\n"
8 "Language: es\n"
89 "MIME-Version: 1.0\n"
910 "Content-Type: text/plain; charset=UTF-8\n"
1011 "Content-Transfer-Encoding: 8bit\n"
11 "Language-Team: Spanish\n"
12 "Language: es\n"
1312 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
14 msgctxt "Addon Summary"
15 msgid "InputStream client for adaptive streams"
16 msgstr "Cliente InputStream para flujo de datos adaptativos"
17
18 msgctxt "Addon Description"
19 msgid "InputStream client for adaptive streams"
20 msgstr "Cliente InputStream para flujo de datos adaptativos"
1421
1522 msgctxt "#30100"
1623 msgid "General"
6774 msgid "Enable Pre-Release Features"
6875 msgstr "Habilitar funciones Pre-releases"
6976
77 msgctxt "#30122"
78 msgid "Don't use secure decoder if possible"
79 msgstr ""
80
7081 msgctxt "#30150"
7182 msgid "Max"
7283 msgstr "Máximo"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: es_mx\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: et_ee\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: eu_es\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: fa_af\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: fa_ir\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: fi_fi\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: fo_fo\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: fr_ca\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Français\n"
7 "Language: fr\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Français\n"
11 "Language: fr\n"
1211 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "Activer les fonctions exprérimentales"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "Maximum"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: gl_es\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Hebrew\n"
7 "Language: he_IL\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Hebrew\n"
11 "Language: he_IL\n"
1211 "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? 2 : 3);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "הפעלת תכונות שטרם שוחררו"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "מקסימום"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Report-Msgid-Bugs-To: translations@kodi.tv\n"
7 "PO-Revision-Date: 2021-07-17 10:36+0000\n"
8 "Last-Translator: Christian Gade <gade@kodi.tv>\n"
9 "Language-Team: Hindi (India) <https://kodi.weblate.cloud/projects/kodi-add-ons-videoplayer-inputstream/inputstream-adaptive/hi_in/>\n"
10 "Language: hi_in\n"
11 "MIME-Version: 1.0\n"
12 "Content-Type: text/plain; charset=UTF-8\n"
13 "Content-Transfer-Encoding: 8bit\n"
14 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15 "X-Generator: Weblate 4.7.1\n"
16
17 msgctxt "Addon Summary"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "Addon Description"
22 msgid "InputStream client for adaptive streams"
23 msgstr ""
24
25 msgctxt "#30100"
26 msgid "General"
27 msgstr "सामान्य"
28
29 # The minimum bandwidth which should not be deceeded.
30 msgctxt "#30101"
31 msgid "Min. Bandwidth (Bit/s)"
32 msgstr "न्यूनतम बैंडविड्थ (बिट/सेकंड)"
33
34 # The maximum bandwidth which should not be exceeded. 0=unlimited
35 msgctxt "#30102"
36 msgid "Max. Bandwidth (Bit/s)"
37 msgstr "अधिकतम बैंडविड्थ (बिट/सेकंड)"
38
39 # Absolute path to the folder containing the decrypters
40 msgctxt "#30103"
41 msgid "Decrypter path"
42 msgstr "डिक्रिप्ट पथ"
43
44 # Maximum Resolution
45 msgctxt "#30110"
46 msgid "Max. Resolution general decoder"
47 msgstr "अधिकतम उत्तमता सामान्य विकोडक"
48
49 msgctxt "#30111"
50 msgid "Stream Selection"
51 msgstr "वीडियो उत्तमता चयन"
52
53 msgctxt "#30112"
54 msgid "Media"
55 msgstr "संचार माध्यम"
56
57 # Maximum allowed resolution if decoded through secure path
58 msgctxt "#30113"
59 msgid "Max. Resolution secure decoder"
60 msgstr "अधिकतम उत्तमता सुरक्षित विकोडक"
61
62 # Select streams without respecting HDCP status
63 msgctxt "#30114"
64 msgid "Override HDCP status"
65 msgstr "रद्द/बदले HDCP स्थिति"
66
67 # Do not respect display resolution when selecting streams
68 msgctxt "#30115"
69 msgid "Ignore Display Resolution"
70 msgstr "नज़रअंदाज़ करे प्रदर्शित रेसोलुशन"
71
72 msgctxt "#30120"
73 msgid "Expert"
74 msgstr "विशेषज्ञ"
75
76 msgctxt "#30121"
77 msgid "Enable Pre-Release Features"
78 msgstr "पूर्व-रिलीज़ सुविधाएँ सक्षम करें"
79
80 msgctxt "#30122"
81 msgid "Don't use secure decoder if possible"
82 msgstr ""
83
84 msgctxt "#30150"
85 msgid "Max"
86 msgstr "ज़्यादा से ज़्यादा"
87
88 msgctxt "#30151"
89 msgid "480p"
90 msgstr "480p"
91
92 msgctxt "#30152"
93 msgid "640p"
94 msgstr "640p"
95
96 msgctxt "#30153"
97 msgid "720p"
98 msgstr "720p"
99
100 msgctxt "#30154"
101 msgid "1080p"
102 msgstr "1080p"
103
104 msgctxt "#30155"
105 msgid "Automatically select streams"
106 msgstr ""
107
108 msgctxt "#30156"
109 msgid "Manually select all streams"
110 msgstr ""
111
112 msgctxt "#30157"
113 msgid "All"
114 msgstr "सब"
115
116 msgctxt "#30158"
117 msgid "Audio"
118 msgstr "ऑडियो"
119
120 msgctxt "#30159"
121 msgid "Video"
122 msgstr "वीडियो"
123
124 # Show all video streams
125 msgctxt "#30160"
126 msgid "Manually select video stream"
127 msgstr ""
128
129 msgctxt "#30161"
130 msgid "Video + Subtitles"
131 msgstr ""
1212 "MIME-Version: 1.0\n"
1313 "Content-Type: text/plain; charset=UTF-8\n"
1414 "Content-Transfer-Encoding: 8bit\n"
15 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
16 "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
15 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
1716 "X-Generator: Poedit 2.3\n"
17
18 msgctxt "Addon Summary"
19 msgid "InputStream client for adaptive streams"
20 msgstr ""
21
22 msgctxt "Addon Description"
23 msgid "InputStream client for adaptive streams"
24 msgstr ""
1825
1926 msgctxt "#30100"
2027 msgid "General"
7178 msgid "Enable Pre-Release Features"
7279 msgstr "Omogući eksperimentalne značajke"
7380
81 msgctxt "#30122"
82 msgid "Don't use secure decoder if possible"
83 msgstr ""
84
7485 msgctxt "#30150"
7586 msgid "Max"
7687 msgstr "Maks"
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Hungarian\n"
7 "Language: hu\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Hungarian\n"
11 "Language: hu\n"
1211 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "Kiadás előtti funkciók engedélyezése"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "Max"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: hy_am\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: id_id\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=1; plural=0;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
+0
-117
inputstream.adaptive/resources/language/resource.language.in_hi/strings.po less more
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6
7 "MIME-Version: 1.0\n"
8 "Content-Type: text/plain; charset=UTF-8\n"
9 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Hindi\n"
11 "Language: hi\n"
12 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
14 msgctxt "#30100"
15 msgid "General"
16 msgstr "सामान्य"
17
18 # The minimum bandwidth which should not be deceeded.
19 msgctxt "#30101"
20 msgid "Min. Bandwidth (Bit/s)"
21 msgstr "न्यूनतम बैंडविड्थ (बिट/सेकंड)"
22
23 # The maximum bandwidth which should not be exceeded. 0=unlimited
24 msgctxt "#30102"
25 msgid "Max. Bandwidth (Bit/s)"
26 msgstr "अधिकतम बैंडविड्थ (बिट/सेकंड)"
27
28 # Absolute path to the folder containing the decrypters
29 msgctxt "#30103"
30 msgid "Decrypter path"
31 msgstr "डिक्रिप्ट पथ"
32
33 # Maximum Resolution
34 msgctxt "#30110"
35 msgid "Max. Resolution general decoder"
36 msgstr "अधिकतम उत्तमता सामान्य विकोडक"
37
38 msgctxt "#30111"
39 msgid "Stream Selection"
40 msgstr "वीडियो उत्तमता चयन"
41
42 msgctxt "#30112"
43 msgid "Media"
44 msgstr "संचार माध्यम"
45
46 # Maximum allowed resolution if decoded through secure path
47 msgctxt "#30113"
48 msgid "Max. Resolution secure decoder"
49 msgstr "अधिकतम उत्तमता सुरक्षित विकोडक"
50
51 # Select streams without respecting HDCP status
52 msgctxt "#30114"
53 msgid "Override HDCP status"
54 msgstr "रद्द/बदले HDCP स्थिति "
55
56 # Do not respect display resolution when selecting streams
57 msgctxt "#30115"
58 msgid "Ignore Display Resolution"
59 msgstr "नज़रअंदाज़ करे प्रदर्शित रेसोलुशन"
60
61 msgctxt "#30120"
62 msgid "Expert"
63 msgstr "विशेषज्ञ"
64
65 msgctxt "#30121"
66 msgid "Enable Pre-Release Features"
67 msgstr "पूर्व-रिलीज़ सुविधाएँ सक्षम करें"
68
69 msgctxt "#30150"
70 msgid "Max"
71 msgstr "ज़्यादा से ज़्यादा"
72
73 msgctxt "#30151"
74 msgid "480p"
75 msgstr "480p"
76
77 msgctxt "#30152"
78 msgid "640p"
79 msgstr "640p"
80
81 msgctxt "#30153"
82 msgid "720p"
83 msgstr "720p"
84
85 msgctxt "#30154"
86 msgid "1080p"
87 msgstr "1080p"
88
89 msgctxt "#30155"
90 msgid "Automatically select streams"
91 msgstr ""
92
93 msgctxt "#30156"
94 msgid "Manually select all streams"
95 msgstr ""
96
97 msgctxt "#30157"
98 msgid "All"
99 msgstr "सब"
100
101 msgctxt "#30158"
102 msgid "Audio"
103 msgstr "ऑडियो"
104
105 msgctxt "#30159"
106 msgid "Video"
107 msgstr "वीडियो"
108
109 # Show all video streams
110 msgctxt "#30160"
111 msgid "Manually select video stream"
112 msgstr ""
113
114 msgctxt "#30161"
115 msgid "Video + Subtitles"
116 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: is_is\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n % 10 != 1 || n % 100 == 11;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Italian\n"
7 "Language: it\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Italian\n"
11 "Language: it\n"
1211 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "Abilita le funzionalità Pre-Release"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "Massima"
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Japanese\n"
7 "Language: ja\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Japanese\n"
11 "Language: ja\n"
1211 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "プレリリース機能を使う。"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr "可能な限りセキュアデコーダを使わない"
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "最大"
8899
89100 msgctxt "#30155"
90101 msgid "Automatically select streams"
91 msgstr ""
102 msgstr "自動選択"
92103
93104 msgctxt "#30156"
94105 msgid "Manually select all streams"
95 msgstr ""
106 msgstr "手動選択"
96107
97108 msgctxt "#30157"
98109 msgid "All"
109120 # Show all video streams
110121 msgctxt "#30160"
111122 msgid "Manually select video stream"
112 msgstr ""
123 msgstr "ビデオストリーム手動選択"
113124
114125 msgctxt "#30161"
115126 msgid "Video + Subtitles"
116 msgstr ""
127 msgstr "ビデオと字幕"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: kn_in\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Report-Msgid-Bugs-To: translations@kodi.tv\n"
7 "PO-Revision-Date: 2021-08-01 09:42+0000\n"
8 "Last-Translator: Joe Baek <aalive1@gmail.com>\n"
9 "Language-Team: Korean <https://kodi.weblate.cloud/projects/kodi-add-ons-videoplayer-inputstream/inputstream-adaptive/ko_kr/>\n"
10 "Language: ko_kr\n"
711 "MIME-Version: 1.0\n"
812 "Content-Type: text/plain; charset=UTF-8\n"
913 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Korean\n"
11 "Language: ko\n"
1214 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15 "X-Generator: Weblate 4.7.2\n"
16
17 msgctxt "Addon Summary"
18 msgid "InputStream client for adaptive streams"
19 msgstr "가변 스트림을 위한 InputStream 클라이언트"
20
21 msgctxt "Addon Description"
22 msgid "InputStream client for adaptive streams"
23 msgstr "가변 스트림을 위한 InputStream 클라이언트"
1324
1425 msgctxt "#30100"
1526 msgid "General"
6475
6576 msgctxt "#30121"
6677 msgid "Enable Pre-Release Features"
67 msgstr ""
78 msgstr "공개 전 기능 활성화"
79
80 msgctxt "#30122"
81 msgid "Don't use secure decoder if possible"
82 msgstr "가능하면 보안 복호화기 사용 않음"
6883
6984 msgctxt "#30150"
7085 msgid "Max"
88103
89104 msgctxt "#30155"
90105 msgid "Automatically select streams"
91 msgstr ""
106 msgstr "자동으로 스트림 선택"
92107
93108 msgctxt "#30156"
94109 msgid "Manually select all streams"
95 msgstr ""
110 msgstr "수동으로 모든 스트림 선택"
96111
97112 msgctxt "#30157"
98113 msgid "All"
109124 # Show all video streams
110125 msgctxt "#30160"
111126 msgid "Manually select video stream"
112 msgstr ""
127 msgstr "수동으로 비디오 스트림 선택"
113128
114129 msgctxt "#30161"
115130 msgid "Video + Subtitles"
116 msgstr ""
131 msgstr "비디오 + 자막"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: lt_lt\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? 1 : 2);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: lv_lv\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=(n % 10 == 0 || n % 100 >= 11 && n % 100 <= 19) ? 0 : ((n % 10 == 1 && n % 100 != 11) ? 1 : 2);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: ml_in\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: mn_mn\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: mt_mt\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=4; plural=n==1 ? 0 : n==0 || ( n%100>1 && n%100<11) ? 1 : (n%100>10 && n%100<20 ) ? 2 : 3;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: my_mm\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=1; plural=0;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: nb_no\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Dutch\n"
7 "Language: nl\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Dutch\n"
11 "Language: nl\n"
1211 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "Pre-release features inschakelen"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "Max"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: os_os\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Report-Msgid-Bugs-To: translations@kodi.tv\n"
7 "PO-Revision-Date: 2021-07-17 20:22+0000\n"
8 "Last-Translator: Christian Gade <gade@kodi.tv>\n"
9 "Language-Team: Polish <https://kodi.weblate.cloud/projects/kodi-add-ons-videoplayer-inputstream/inputstream-adaptive/pl_pl/>\n"
10 "Language: pl_pl\n"
711 "MIME-Version: 1.0\n"
812 "Content-Type: text/plain; charset=UTF-8\n"
913 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Polish\n"
11 "Language: pl\n"
1214 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
15 "X-Generator: Weblate 4.7.1\n"
16
17 msgctxt "Addon Summary"
18 msgid "InputStream client for adaptive streams"
19 msgstr "Klient InputStream dla strumieni adaptacyjnych"
20
21 msgctxt "Addon Description"
22 msgid "InputStream client for adaptive streams"
23 msgstr "Klient InputStream dla strumieni adaptacyjnych"
1324
1425 msgctxt "#30100"
1526 msgid "General"
6677 msgid "Enable Pre-Release Features"
6778 msgstr "Włącz funkcje wydań niestabilnych"
6879
80 msgctxt "#30122"
81 msgid "Don't use secure decoder if possible"
82 msgstr "Nie używaj bezpiecznego dekodera, jeśli to możliwe"
83
6984 msgctxt "#30150"
7085 msgid "Max"
7186 msgstr "Maks"
88103
89104 msgctxt "#30155"
90105 msgid "Automatically select streams"
91 msgstr ""
106 msgstr "Automatycznie wybieraj strumienie"
92107
93108 msgctxt "#30156"
94109 msgid "Manually select all streams"
95 msgstr ""
110 msgstr "Ręcznie wybieraj wszystkie strumienie"
96111
97112 msgctxt "#30157"
98113 msgid "All"
109124 # Show all video streams
110125 msgctxt "#30160"
111126 msgid "Manually select video stream"
112 msgstr ""
127 msgstr "Ręcznie wybieraj strumień wideo"
113128
114129 msgctxt "#30161"
115130 msgid "Video + Subtitles"
116 msgstr ""
131 msgstr "Wideo + napisy"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: pt_br\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: pt_pt\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: ro_md\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n == 0 || n % 100 >= 2 && n % 100 <= 19) ? 1 : 2);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Last-Translator: tmihai20\n"
7 "Language-Team: Romanian (Romania)\n"
8 "Language: ro\n"
79 "MIME-Version: 1.0\n"
810 "Content-Type: text/plain; charset=UTF-8\n"
911 "Content-Transfer-Encoding: 8bit\n"
10 "Last-Translator: tmihai20\n"
11 "Language-Team: Romanian (Romania)\n"
12 "Language: ro\n"
1312 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
13
14 msgctxt "Addon Summary"
15 msgid "InputStream client for adaptive streams"
16 msgstr ""
17
18 msgctxt "Addon Description"
19 msgid "InputStream client for adaptive streams"
20 msgstr ""
1421
1522 msgctxt "#30100"
1623 msgid "General"
6774 msgid "Enable Pre-Release Features"
6875 msgstr "Activează caracteristici experimentale"
6976
77 msgctxt "#30122"
78 msgid "Don't use secure decoder if possible"
79 msgstr ""
80
7081 msgctxt "#30150"
7182 msgid "Max"
7283 msgstr "Maxim"
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Russian\n"
7 "Language: ru\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Russian\n"
11 "Language: ru\n"
1211 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "Включить предрелизные возможности"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "Макс"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: scn\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: si_lk\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n > 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Last-Translator: Matej Moško <kamosko@panakrala.sk>\n"
7 "Language-Team: Slovak\n"
8 "Language: sk_SK\n"
79 "MIME-Version: 1.0\n"
810 "Content-Type: text/plain; charset=UTF-8\n"
911 "Content-Transfer-Encoding: 8bit\n"
10 "Last-Translator: Matej Moško <kamosko@panakrala.sk>\n"
11 "Language-Team: Slovak\n"
12 "Language: sk_SK\n"
1312 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 ? 1 : 2);\n"
13
14 msgctxt "Addon Summary"
15 msgid "InputStream client for adaptive streams"
16 msgstr ""
17
18 msgctxt "Addon Description"
19 msgid "InputStream client for adaptive streams"
20 msgstr ""
1421
1522 msgctxt "#30100"
1623 msgid "General"
6774 msgid "Enable Pre-Release Features"
6875 msgstr "Povoliť Experimentálne Funkcie"
6976
77 msgctxt "#30122"
78 msgid "Don't use secure decoder if possible"
79 msgstr ""
80
7081 msgctxt "#30150"
7182 msgid "Max"
7283 msgstr "Maximum"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: sq_al\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: sr_rs\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: sr_Latn\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
33 # Addon Provider: peak3d
44 msgid ""
55 msgstr ""
6
6 "Language-Team: Swedish (Sweden)\n"
7 "Language: sv_SE\n"
78 "MIME-Version: 1.0\n"
89 "Content-Type: text/plain; charset=UTF-8\n"
910 "Content-Transfer-Encoding: 8bit\n"
10 "Language-Team: Swedish (Sweden)\n"
11 "Language: sv_SE\n"
1211 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
1320
1421 msgctxt "#30100"
1522 msgid "General"
6673 msgid "Enable Pre-Release Features"
6774 msgstr "Aktivera förhandsutgivningsfunktioner"
6875
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
6980 msgctxt "#30150"
7081 msgid "Max"
7182 msgstr "Högsta"
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: szl\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: ta_in\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: tg_tj\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=1; plural=0;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: th_th\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=1; plural=0;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: tr_tr\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: uk_ua\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: uz_uz\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: vi_vn\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=1; plural=0;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: zh_cn\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
0 # Kodi Media Center language file
1 # Addon Name: Inputstream.adaptive
2 # Addon id: inputstream.adaptive
3 # Addon Provider: peak3d
4 msgid ""
5 msgstr ""
6 "Language-Team: none\n"
7 "Language: zh_tw\n"
8 "MIME-Version: 1.0\n"
9 "Content-Type: text/plain; charset=UTF-8\n"
10 "Content-Transfer-Encoding: 8bit\n"
11 "Plural-Forms: nplurals=2; plural=n != 1;\n"
12
13 msgctxt "Addon Summary"
14 msgid "InputStream client for adaptive streams"
15 msgstr ""
16
17 msgctxt "Addon Description"
18 msgid "InputStream client for adaptive streams"
19 msgstr ""
20
21 msgctxt "#30100"
22 msgid "General"
23 msgstr ""
24
25 # The minimum bandwidth which should not be deceeded.
26 msgctxt "#30101"
27 msgid "Min. Bandwidth (Bit/s)"
28 msgstr ""
29
30 # The maximum bandwidth which should not be exceeded. 0=unlimited
31 msgctxt "#30102"
32 msgid "Max. Bandwidth (Bit/s)"
33 msgstr ""
34
35 # Absolute path to the folder containing the decrypters
36 msgctxt "#30103"
37 msgid "Decrypter path"
38 msgstr ""
39
40 # Maximum Resolution
41 msgctxt "#30110"
42 msgid "Max. Resolution general decoder"
43 msgstr ""
44
45 msgctxt "#30111"
46 msgid "Stream Selection"
47 msgstr ""
48
49 msgctxt "#30112"
50 msgid "Media"
51 msgstr ""
52
53 # Maximum allowed resolution if decoded through secure path
54 msgctxt "#30113"
55 msgid "Max. Resolution secure decoder"
56 msgstr ""
57
58 # Select streams without respecting HDCP status
59 msgctxt "#30114"
60 msgid "Override HDCP status"
61 msgstr ""
62
63 # Do not respect display resolution when selecting streams
64 msgctxt "#30115"
65 msgid "Ignore Display Resolution"
66 msgstr ""
67
68 msgctxt "#30120"
69 msgid "Expert"
70 msgstr ""
71
72 msgctxt "#30121"
73 msgid "Enable Pre-Release Features"
74 msgstr ""
75
76 msgctxt "#30122"
77 msgid "Don't use secure decoder if possible"
78 msgstr ""
79
80 msgctxt "#30150"
81 msgid "Max"
82 msgstr ""
83
84 msgctxt "#30151"
85 msgid "480p"
86 msgstr ""
87
88 msgctxt "#30152"
89 msgid "640p"
90 msgstr ""
91
92 msgctxt "#30153"
93 msgid "720p"
94 msgstr ""
95
96 msgctxt "#30154"
97 msgid "1080p"
98 msgstr ""
99
100 msgctxt "#30155"
101 msgid "Automatically select streams"
102 msgstr ""
103
104 msgctxt "#30156"
105 msgid "Manually select all streams"
106 msgstr ""
107
108 msgctxt "#30157"
109 msgid "All"
110 msgstr ""
111
112 msgctxt "#30158"
113 msgid "Audio"
114 msgstr ""
115
116 msgctxt "#30159"
117 msgid "Video"
118 msgstr ""
119
120 # Show all video streams
121 msgctxt "#30160"
122 msgid "Manually select video stream"
123 msgstr ""
124
125 msgctxt "#30161"
126 msgid "Video + Subtitles"
127 msgstr ""
9090 </category>
9191 <category id="expert" label="30120">
9292 <group id="0">
93 <setting id="PRERELEASEFEATURES" type="boolean" label="30121">
93 <setting id="NOSECUREDECODER" type="boolean" label="30122">
9494 <level>0</level>
9595 <default>false</default>
9696 <control type="toggle" />
97 <dependencies>
98 <dependency type="visible">
99 <condition on="property" name="InfoBool">system.platform.android</condition>
100 </dependency>
101 </dependencies>
97102 </setting>
98103 </group>
99104 </category>
182182 case NAL_VPS_NUT:
183183 if (m_NeedVPS)
184184 {
185 memcpy(stream_info.extra_data + stream_info.extra_data_size, es_buf + (buf_ptr - 4), NumBytesInNalUnit);
186 stream_info.extra_data_size += NumBytesInNalUnit;
187 m_NeedVPS = false;
185 if (stream_info.extra_data_size + NumBytesInNalUnit <= sizeof(stream_info.extra_data))
186 {
187 memcpy(stream_info.extra_data + stream_info.extra_data_size, es_buf + (buf_ptr - 4), NumBytesInNalUnit);
188 stream_info.extra_data_size += NumBytesInNalUnit;
189 m_NeedVPS = false;
190 }
191 else
192 {
193 DBG(DEMUX_DBG_INFO, "HEVC fixme: stream_info.extra_data too small! %i\n", stream_info.extra_data_size + NumBytesInNalUnit);
194 }
188195 }
189196 break;
190197
199206 Parse_SPS(buf, NumBytesInNalUnit, hdr);
200207 if (m_NeedSPS)
201208 {
202 memcpy(stream_info.extra_data + stream_info.extra_data_size, es_buf + (buf_ptr - 4), NumBytesInNalUnit);
203 stream_info.extra_data_size += NumBytesInNalUnit;
204 m_NeedSPS = false;
209 if (stream_info.extra_data_size + NumBytesInNalUnit <= sizeof(stream_info.extra_data))
210 {
211 memcpy(stream_info.extra_data + stream_info.extra_data_size, es_buf + (buf_ptr - 4), NumBytesInNalUnit);
212 stream_info.extra_data_size += NumBytesInNalUnit;
213 m_NeedSPS = false;
214 }
215 else
216 {
217 DBG(DEMUX_DBG_INFO, "HEVC fixme: stream_info.extra_data too small! %i\n", stream_info.extra_data_size + NumBytesInNalUnit);
218 }
205219 }
206220 break;
207221 }
217231 Parse_PPS(buf, NumBytesInNalUnit);
218232 if (m_NeedPPS)
219233 {
220 memcpy(stream_info.extra_data + stream_info.extra_data_size, es_buf + (buf_ptr - 4), NumBytesInNalUnit);
221 stream_info.extra_data_size += NumBytesInNalUnit;
222 m_NeedPPS = false;
234 if (stream_info.extra_data_size + NumBytesInNalUnit <= sizeof(stream_info.extra_data))
235 {
236 memcpy(stream_info.extra_data + stream_info.extra_data_size, es_buf + (buf_ptr - 4), NumBytesInNalUnit);
237 stream_info.extra_data_size += NumBytesInNalUnit;
238 m_NeedPPS = false;
239 }
240 else
241 {
242 DBG(DEMUX_DBG_INFO, "HEVC fixme: stream_info.extra_data too small! %i\n", stream_info.extra_data_size + NumBytesInNalUnit);
243 }
223244 }
224245 break;
225246 }
7272 int bit_rate;
7373 int bits_per_sample;
7474 bool interlaced;
75 uint8_t extra_data[256];
75 uint8_t extra_data[512];
7676 int extra_data_size;
7777 };
7878
2020 {
2121 PROPERTY_HEADER
2222 };
23 static const uint32_t version = 11;
23 static const uint32_t version = 13;
2424 #if defined(ANDROID)
2525 virtual void* GetJNIEnv() = 0;
2626 virtual int GetSDKVersion() = 0;
181181 // Return supported URN if type matches to capabilities, otherwise null
182182 virtual const char *SelectKeySytem(const char* keySystem) = 0;
183183 virtual bool OpenDRMSystem(const char *licenseURL, const AP4_DataBuffer &serverCertificate, const uint8_t config) = 0;
184 virtual AP4_CencSingleSampleDecrypter *CreateSingleSampleDecrypter(AP4_DataBuffer &pssh, const char *optionalKeyParameter, const uint8_t *defaultkeyid) = 0;
184 virtual AP4_CencSingleSampleDecrypter *CreateSingleSampleDecrypter(AP4_DataBuffer &pssh, const char *optionalKeyParameter, const uint8_t *defaultkeyid, bool skipSessionMessage) = 0;
185185 virtual void DestroySingleSampleDecrypter(AP4_CencSingleSampleDecrypter* decrypter) = 0;
186186
187187 virtual void GetCapabilities(AP4_CencSingleSampleDecrypter* decrypter, const uint8_t *keyid, uint32_t media, SSD_DECRYPTER::SSD_CAPS &caps) = 0;
188188 virtual bool HasLicenseKey(AP4_CencSingleSampleDecrypter* decrypter, const uint8_t *keyid) = 0;
189 virtual bool HasCdmSession() = 0;
190 virtual std::string GetChallengeB64Data(AP4_CencSingleSampleDecrypter* decrypter) = 0;
189191
190192 virtual bool OpenVideoDecoder(AP4_CencSingleSampleDecrypter* decrypter, const SSD_VIDEOINITDATA *initData) = 0;
191193 virtual SSD_DECODE_RETVAL DecodeVideo(void* instance, SSD_SAMPLE *sample, SSD_PICTURE *picture) = 0;
3838 currentPTSOffset_(0),
3939 absolutePTSOffset_(0),
4040 lastUpdated_(std::chrono::system_clock::now()),
41 lastMediaRenewal_(std::chrono::system_clock::now()),
4241 m_fixateInitialization(false),
4342 m_segmentFileOffset(0),
4443 play_timeshift_buffer_(false)
8887 if (type_ == AdaptiveTree::SUBTITLE)
8988 retryCount = 1;
9089
91 while (!ret && !stopped_ && retryCount-- && tree_.has_timeshift_buffer_)
90 while (!ret && !stopped_ && retryCount--)
9291 {
9392 std::this_thread::sleep_for(std::chrono::seconds(1));
9493 Log(LOGLEVEL_DEBUG, "AdaptiveStream: trying to reload segment ...");
114113 return static_cast<int>(
115114 std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now() - tPoint)
116115 .count());
117 }
118
119 uint32_t AdaptiveStream::SecondsSinceMediaRenewal() const
120 {
121 const std::chrono::time_point<std::chrono::system_clock>& tPoint(
122 lastMediaRenewal_ > tree_.GetLastMediaRenewal() ? lastMediaRenewal_
123 : tree_.GetLastMediaRenewal());
124 return static_cast<int>(
125 std::chrono::duration_cast<std::chrono::seconds>(std::chrono::system_clock::now() - tPoint)
126 .count());
127 }
128
129 void AdaptiveStream::UpdateSecondsSinceMediaRenewal()
130 {
131 lastMediaRenewal_ = std::chrono::system_clock::now();
132116 }
133117
134118 bool AdaptiveStream::write_data(const void* buffer, size_t buffer_size)
309293 if (current_rep_->flags_ & AdaptiveTree::Representation::URLSEGMENTS)
310294 {
311295 download_url_ = seg->url;
312 if (download_url_.find("://", 0) == std::string::npos)
296 if (download_url_.find("://") == std::string::npos)
313297 download_url_ = current_rep_->url_ + download_url_;
314298 }
315299 else
8888 virtual bool parseIndexRange() { return false; };
8989 bool write_data(const void *buffer, size_t buffer_size);
9090 bool prepareDownload(const AdaptiveTree::Segment *seg);
91 const std::string& getMediaRenewalUrl() const { return tree_.media_renewal_url_; };
92 const uint32_t& getMediaRenewalTime() const { return tree_.media_renewal_time_; };
93 uint32_t SecondsSinceMediaRenewal() const;
94 void UpdateSecondsSinceMediaRenewal();
9591 adaptive::AdaptiveTree& GetTree() { return tree_; };
92 virtual void SetLastUpdated(std::chrono::system_clock::time_point tm) {};
93 std::chrono::time_point<std::chrono::system_clock> lastUpdated_;
9694
9795 private:
9896 // Segment download section
142140 std::size_t segment_read_pos_;
143141 uint64_t absolute_position_;
144142 uint64_t currentPTSOffset_, absolutePTSOffset_;
145 std::chrono::time_point<std::chrono::system_clock> lastUpdated_;
146 std::chrono::time_point<std::chrono::system_clock> lastMediaRenewal_;
147143
148144 uint16_t width_, height_;
149145 uint32_t bandwidth_;
3939 AdaptiveTree::AdaptiveTree()
4040 : current_period_(nullptr)
4141 , next_period_(nullptr)
42 , update_parameter_pos_(std::string::npos)
4342 , parser_(0)
4443 , currentNode_(0)
4544 , segcount_(0)
5554 , updateInterval_(~0)
5655 , updateThread_(nullptr)
5756 , lastUpdated_(std::chrono::system_clock::now())
58 , lastMediaRenewal_(std::chrono::system_clock::now())
5957 {
6058 }
6159
170168 }
171169
172170 void AdaptiveTree::OnDataArrived(unsigned int segNum, uint16_t psshSet, uint8_t iv[16], const uint8_t *src, uint8_t *dst, size_t dstOffset, size_t dataSize)
173 {
171 {
174172 memcpy(dst + dstOffset, src, dataSize);
175173 }
176174
314312 ++br;
315313 }
316314
317 bool AdaptiveTree::PreparePaths(const std::string &url, const std::string &manifestUpdateParam)
318 {
315 bool AdaptiveTree::PreparePaths(const std::string &url)
316 {
317 manifest_url_ = url;
318
319319 size_t paramPos = url.find('?');
320320 base_url_ = (paramPos == std::string::npos) ? url : url.substr(0, paramPos);
321 if (paramPos != std::string::npos)
322 manifest_parameter_= url.substr(paramPos);
323321
324322 paramPos = base_url_.find_last_of('/', base_url_.length());
325323 if (paramPos == std::string::npos)
326324 {
327 Log(LOGLEVEL_ERROR, "Invalid mpdURL: / expected (%s)", manifest_url_.c_str());
325 Log(LOGLEVEL_ERROR, "Invalid url: / expected (%s)", url.c_str());
328326 return false;
329327 }
330328 base_url_.resize(paramPos + 1);
340338 else
341339 base_domain_.clear();
342340
341 return true;
342 }
343
344 void AdaptiveTree::PrepareManifestUrl(const std::string &url, const std::string &manifestUpdateParam)
345 {
343346 manifest_url_ = url;
344347
345348 if (manifestUpdateParam.empty())
361364 }
362365 else
363366 update_parameter_ = manifestUpdateParam;
364
365 if (!update_parameter_.empty())
366 {
367 if (update_parameter_ != "full")
368 {
369 if ((update_parameter_pos_ = update_parameter_.find("$START_NUMBER$")) != std::string::npos)
370 {
371 if (update_parameter_[0] == '&' && manifest_url_.find("?") == std::string::npos)
372 update_parameter_[0] = '?';
373 }
374 else
375 update_parameter_.clear();
376 }
377 }
378 return true;
379 }
380
381 void AdaptiveTree::SetEffectiveURL(const std::string& url)
382 {
383 effective_url_ = url;
384 effective_domain_.clear();
385 std::string::size_type paramPos = effective_url_.find_first_of('?');
386 if (paramPos != std::string::npos)
387 effective_url_.resize(paramPos);
388
389 paramPos = effective_url_.find_last_of('/');
390 if (paramPos != std::string::npos)
391 effective_url_.resize(paramPos + 1);
392 else
393 effective_url_.clear();
394
395 if (effective_url_ == base_url_)
396 effective_url_.clear();
397
398 if (!effective_url_.empty())
399 {
400 paramPos = effective_url_.find_first_of('/', 8);
401 effective_domain_ = effective_url_.substr(0, paramPos);
402 }
403367 }
404368
405369 std::string AdaptiveTree::BuildDownloadUrl(const std::string& url) const
406370 {
407371 if (!url.empty())
408372 {
409 if (url.front() == '/')
410 return effective_domain_.empty() ? base_domain_ + url : effective_domain_ + url;
411 else if (!effective_url_.empty() && url.compare(0, base_url_.size(), base_url_) == 0)
412 {
413 std::string newUrl(url);
414 newUrl.replace(0, base_url_.size(), effective_url_);
415 return newUrl;
416 }
373 if (url.front() != '/' && url.find("://") == std::string::npos)
374 return base_url_ + url;
375 else if (url.front() == '/')
376 return base_domain_ + url;
417377 }
418378 return url;
419379 }
420
421380
422381 void AdaptiveTree::SortTree()
423382 {
127127 PREPARE_RESULT_FAILURE,
128128 PREPARE_RESULT_OK,
129129 PREPARE_RESULT_DRMCHANGED,
130 PREPARE_RESULT_DRMUNCHANGED,
130131 };
131132
132133 // Node definition
172173 std::string codecs_;
173174 std::string codec_private_data_;
174175 std::string source_url_;
176 std::string base_url_;
175177 uint32_t bandwidth_;
176178 uint32_t samplingRate_;
177179 uint16_t width_, height_;
411413 }*current_period_, *next_period_;
412414
413415 std::vector<Period*> periods_;
414 std::string manifest_url_, base_url_, effective_url_, base_domain_, effective_domain_,
415 update_parameter_;
416 std::string::size_type update_parameter_pos_;
417 std::string etag_, last_modified_;
418 std::string media_renewal_url_;
419 uint32_t media_renewal_time_;
420 std::string manifest_parameter_;
416 std::string manifest_url_;
417 std::string base_url_;
418 std::string effective_url_;
419 std::string base_domain_;
420 std::string update_parameter_;
421 std::string etag_;
422 std::string last_modified_;
421423
422424 /* XML Parsing*/
423425 XML_Parser parser_;
451453 AdaptiveTree();
452454 virtual ~AdaptiveTree();
453455
454 virtual bool open(const std::string &url, const std::string &manifestUpdateParam) = 0;
456 virtual bool open(const std::string& url, const std::string& manifestUpdateParam) = 0;
457 virtual bool open(const std::string& url, const std::string& manifestUpdateParam, std::map<std::string, std::string> additionalHeaders) = 0;
455458 virtual PREPARE_RESULT prepareRepresentation(Period* period,
456459 AdaptationSet* adp,
457460 Representation* rep,
482485 : 0;
483486 };
484487
485 void SetEffectiveURL(const std::string& url);
486488 std::string BuildDownloadUrl(const std::string& url) const;
487489
488490 std::mutex &GetTreeMutex() { return treeMutex_; };
489491 bool HasUpdateThread() const { return updateThread_ != 0 && has_timeshift_buffer_ && updateInterval_ && !update_parameter_.empty(); };
490492 void RefreshUpdateThread();
491493 const std::chrono::time_point<std::chrono::system_clock> GetLastUpdated() const { return lastUpdated_; };
492 const std::chrono::time_point<std::chrono::system_clock> GetLastMediaRenewal() const { return lastMediaRenewal_; };
493494
494495 protected:
495 virtual bool download(const char* url, const std::map<std::string, std::string> &manifestHeaders, void *opaque = nullptr, bool scanEffectiveURL = true);
496 virtual bool download(const char* url,
497 const std::map<std::string, std::string>& manifestHeaders,
498 void* opaque = nullptr,
499 bool isManifest = true);
496500 virtual bool write_data(void *buffer, size_t buffer_size, void *opaque) = 0;
497 bool PreparePaths(const std::string &url, const std::string &manifestUpdateParam);
501 bool PreparePaths(const std::string &url);
502 void PrepareManifestUrl(const std::string &url, const std::string &manifestUpdateParam);
498503 void SortTree();
499504
500505 // Live segment update section
506511 std::condition_variable updateVar_;
507512 std::thread *updateThread_;
508513 std::chrono::time_point<std::chrono::system_clock> lastUpdated_;
509 std::chrono::time_point<std::chrono::system_clock> lastMediaRenewal_;
510514
511515 private:
512516 void SegmentUpdateWorker();
4848 void parseheader(std::map<std::string, std::string>& headerMap, const std::string& headerString);
4949 int endswith(const char* in, const char* suffix);
5050
51 extern bool preReleaseFeatures;
52
5351 #define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
5959 (p) = NULL; \
6060 } while (0)
6161
62 //extern definition in helpers.h
63 bool preReleaseFeatures = false;
64
6562 void Log(const LogLevel loglevel, const char* format, ...)
6663 {
6764 char buffer[16384];
263260 bool adaptive::AdaptiveTree::download(const char* url,
264261 const std::map<std::string, std::string>& manifestHeaders,
265262 void* opaque,
266 bool scanEffectiveURL)
263 bool isManifest)
267264 {
268265 // open the file
269266 kodi::vfs::CFile file;
280277
281278 if (!file.CURLOpen(ADDON_READ_CHUNKED | ADDON_READ_NO_CACHE))
282279 {
283 kodi::Log(ADDON_LOG_ERROR, "Cannot download %s", url);
280 kodi::Log(ADDON_LOG_ERROR, "Download failed: %s", url);
284281 return false;
285282 }
286283
287 if (scanEffectiveURL)
288 {
289 std::string effective_url = file.GetPropertyValue(ADDON_FILE_PROPERTY_EFFECTIVE_URL, "");
290 kodi::Log(ADDON_LOG_DEBUG, "Effective URL %s", effective_url.c_str());
291 SetEffectiveURL(effective_url);
284 effective_url_ = file.GetPropertyValue(ADDON_FILE_PROPERTY_EFFECTIVE_URL, "");
285
286 if (isManifest && !PreparePaths(effective_url_))
287 {
288 file.Close();
289 return false;
292290 }
293291
294292 // read the file
306304
307305 file.Close();
308306
309 kodi::Log(ADDON_LOG_DEBUG, "Download %s finished", url);
307 kodi::Log(ADDON_LOG_DEBUG, "Download finished: %s", effective_url_.c_str());
310308
311309 return nbRead == 0;
312310 }
314312 bool KodiAdaptiveStream::download(const char* url,
315313 const std::map<std::string, std::string>& mediaHeaders)
316314 {
317 bool retry_403 = true;
318 bool retry_MRT = true;
319315 kodi::vfs::CFile file;
320 std::string newUrl;
321
322 RETRY:
316
323317 // open the file
324318 if (!file.CURLCreate(url))
325319 return false;
345339
346340 size_t nbRead = ~0UL;
347341
348 if (((returnCode == 403 && retry_403) ||
349 (getMediaRenewalTime() > 0 && SecondsSinceMediaRenewal() >= getMediaRenewalTime() &&
350 retry_MRT)) &&
351 !getMediaRenewalUrl().empty())
352 {
353 UpdateSecondsSinceMediaRenewal();
354
355 if (returnCode == 403)
356 retry_403 = false;
357 else
358 retry_MRT = false;
359
360 std::vector<kodi::vfs::CDirEntry> items;
361 if (kodi::vfs::GetDirectory(getMediaRenewalUrl(), "", items) && items.size() == 1)
362 {
363 std::string effective_url = items[0].Path();
364 if (effective_url.back() != '/')
365 effective_url += '/';
366 kodi::Log(ADDON_LOG_DEBUG, "Renewed URL: %s", effective_url.c_str());
367 GetTree().SetEffectiveURL(effective_url);
368 newUrl = GetTree().BuildDownloadUrl(url);
369 url = newUrl.c_str();
370 goto RETRY;
371 }
372 else
373 kodi::Log(ADDON_LOG_ERROR, "Retrieving renewal URL failed (%s)",
374 getMediaRenewalUrl().c_str());
375 }
376 else if (returnCode >= 400)
377 {
378 kodi::Log(ADDON_LOG_ERROR, "Download %s failed with error: %d", url, returnCode);
342 if (returnCode >= 400)
343 {
344 kodi::Log(ADDON_LOG_ERROR, "Download failed with error %d: %s", returnCode, url);
379345 }
380346 else
381347 {
388354
389355 if (!nbReadOverall)
390356 {
391 kodi::Log(ADDON_LOG_ERROR, "Download %s doesn't provide any data: invalid", url);
357 kodi::Log(ADDON_LOG_ERROR, "Download doesn't provide any data: %s", url);
392358 return false;
393359 }
394360
404370 current_download_speed_ * ratio);
405371 }
406372 kodi::Log(ADDON_LOG_DEBUG,
407 "Download %s finished, avg speed: %0.2lfbyte/s, current speed: %0.2lfbyte/s", url,
373 "Download finished: %s , avg speed: %0.2lfbyte/s, current speed: %0.2lfbyte/s", url,
408374 get_download_speed(), current_download_speed_);
409375 }
410376 file.Close();
889855 AP4_DYNAMIC_CAST(AP4_HevcSampleDescription, sample_description))
890856 {
891857 bool ret = false;
892 if (hevc->GetConstantFrameRate() && hevc->GetAverageFrameRate())
858 if (hevc->GetAverageFrameRate())
893859 {
894860 info.SetFpsRate(hevc->GetAverageFrameRate());
861 info.SetFpsScale(256);
862 ret = true;
863 }
864 else if (hevc->GetConstantFrameRate())
865 {
866 info.SetFpsRate(hevc->GetConstantFrameRate());
895867 info.SetFpsScale(256);
896868 ret = true;
897869 }
10501022 virtual void AddStreamType(INPUTSTREAM_TYPE type, uint32_t sid){};
10511023 virtual void SetStreamType(INPUTSTREAM_TYPE type, uint32_t sid){};
10521024 virtual bool RemoveStreamType(INPUTSTREAM_TYPE type) { return true; };
1025 virtual bool IsStarted() const = 0;
10531026 };
10541027
10551028 /*******************************************************
10801053 void AddStreamType(INPUTSTREAM_TYPE type, uint32_t sid) override{};
10811054 void SetStreamType(INPUTSTREAM_TYPE type, uint32_t sid) override{};
10821055 bool RemoveStreamType(INPUTSTREAM_TYPE type) override { return true; };
1056 bool IsStarted() const override { return true; }
10831057 } DummyReader;
10841058
10851059 /*******************************************************
12581232 }
12591233
12601234 bool EOS() const override { return m_eos; };
1235 bool IsStarted() const override { return m_started; };
12611236 uint64_t DTS() const override { return m_dts; };
12621237 uint64_t PTS() const override { return m_pts; };
12631238 AP4_UI32 GetStreamId() const override { return m_streamId; };
15541529
15551530 file.CURLAddOption(ADDON_CURL_OPTION_PROTOCOL, "seekable", "0");
15561531 file.CURLAddOption(ADDON_CURL_OPTION_PROTOCOL, "acceptencoding", "gzip");
1557 file.CURLOpen(0);
1532 file.CURLOpen(ADDON_READ_CHUNKED | ADDON_READ_NO_CACHE);
15581533
15591534 AP4_DataBuffer result;
15601535
15841559 m_codecHandler = new TTMLCodecHandler(nullptr);
15851560 }
15861561
1562 bool IsStarted() const override { return true; };
15871563 bool EOS() const override { return m_eos; };
15881564 uint64_t DTS() const override { return m_pts; };
15891565 uint64_t PTS() const override { return m_pts; };
17011677 return m_typeMask == 0;
17021678 };
17031679
1680 bool IsStarted() const override { return m_started; }
17041681 bool EOS() const override { return m_eos; }
17051682 uint64_t DTS() const override { return m_dts; }
17061683 uint64_t PTS() const override { return m_pts; }
17981775 ADTSSampleReader(AP4_ByteStream* input, AP4_UI32 streamId)
17991776 : ADTSReader(input), m_streamId(streamId), m_stream(dynamic_cast<AP4_DASHStream*>(input)){};
18001777
1778 bool IsStarted() const override { return m_started; }
18011779 bool EOS() const override { return m_eos; }
18021780 uint64_t DTS() const override { return m_pts; }
18031781 uint64_t PTS() const override { return m_pts; }
18831861 WebmSampleReader(AP4_ByteStream* input, AP4_UI32 streamId)
18841862 : WebmReader(input), m_streamId(streamId), m_stream(dynamic_cast<AP4_DASHStream*>(input)){};
18851863
1864 bool IsStarted() const override { return m_started; }
18861865 bool EOS() const override { return m_eos; }
18871866 uint64_t DTS() const override { return m_dts; }
18881867 uint64_t PTS() const override { return m_pts; }
19951974 const std::string& strLicKey,
19961975 const std::string& strLicData,
19971976 const std::string& strCert,
1998 const std::string& strMediaRenewalUrl,
1999 const uint32_t intMediaRenewalTime,
20001977 const std::map<std::string, std::string>& manifestHeaders,
20011978 const std::map<std::string, std::string>& mediaHeaders,
20021979 const std::string& profile_path,
20041981 uint16_t display_height,
20051982 const std::string& ov_audio,
20061983 bool play_timeshift_buffer,
2007 bool force_secure_decoder)
1984 bool force_secure_decoder,
1985 const std::string& drmPreInitData)
20081986 : manifest_type_(manifestType),
2009 mpdFileURL_(strURL),
2010 mpdUpdateParam_(strUpdateParam),
1987 manifestURL_(strURL),
1988 manifestUpdateParam_(strUpdateParam),
20111989 license_key_(strLicKey),
20121990 license_type_(strLicType),
20131991 license_data_(strLicData),
20272005 chapter_start_time_(0),
20282006 chapter_seek_time_(0.0),
20292007 play_timeshift_buffer_(play_timeshift_buffer),
2030 force_secure_decoder_(force_secure_decoder)
2008 force_secure_decoder_(force_secure_decoder),
2009 drmPreInitData_(drmPreInitData)
20312010 {
20322011 switch (manifest_type_)
20332012 {
20692048 manual_streams_ = kodi::GetSettingInt("STREAMSELECTION");
20702049 kodi::Log(ADDON_LOG_DEBUG, "STREAMSELECTION selected: %d ", manual_streams_);
20712050
2072 preReleaseFeatures = kodi::GetSettingBoolean("PRERELEASEFEATURES");
2073 if (preReleaseFeatures)
2074 kodi::Log(ADDON_LOG_INFO, "PRERELEASEFEATURES enabled!");
2051 allow_no_secure_decoder_ = kodi::GetSettingBoolean("NOSECUREDECODER");
2052 kodi::Log(ADDON_LOG_DEBUG, "FORCENONSECUREDECODER selected: %d ", allow_no_secure_decoder_);
20752053
20762054 int buf = kodi::GetSettingInt("MEDIATYPE");
20772055 switch (buf)
21002078 server_certificate_.SetDataSize(dstsz);
21012079 }
21022080 adaptiveTree_->manifest_headers_ = manifestHeaders;
2103 adaptiveTree_->media_renewal_url_ = strMediaRenewalUrl;
2104 adaptiveTree_->media_renewal_time_ = intMediaRenewalTime;
21052081 }
21062082
21072083 Session::~Session()
21952171 void Session::DisposeSampleDecrypter()
21962172 {
21972173 if (decrypter_)
2174 {
21982175 for (std::vector<CDMSESSION>::iterator b(cdm_sessions_.begin()), e(cdm_sessions_.end()); b != e;
21992176 ++b)
2177 {
2178 b->cdm_session_str_ = nullptr;
22002179 if (!b->shared_single_sample_decryptor_)
2180 {
22012181 decrypter_->DestroySingleSampleDecrypter(b->single_sample_decryptor_);
2182 b->single_sample_decryptor_ = nullptr;
2183 }
2184 else
2185 {
2186 b->single_sample_decryptor_ = nullptr;
2187 b->shared_single_sample_decryptor_ = false;
2188 }
2189 }
2190 }
22022191 }
22032192
22042193 void Session::DisposeDecrypter()
22342223 kodi::Log(ADDON_LOG_DEBUG, "Supported URN: %s", adaptiveTree_->supportedKeySystem_.c_str());
22352224 }
22362225
2237 // Open mpd file with mpd location redirect support bool mpdSuccess;
2238 std::string mpdUrl =
2239 adaptiveTree_->location_.empty() ? mpdFileURL_.c_str() : adaptiveTree_->location_;
2240 if (!adaptiveTree_->open(mpdUrl.c_str(), mpdUpdateParam_.c_str()) || adaptiveTree_->empty())
2241 {
2242 kodi::Log(ADDON_LOG_ERROR, "Could not open / parse mpdURL (%s)", mpdFileURL_.c_str());
2226 // Preinitialize the DRM, if pre-initialisation data are provided
2227 std::map<std::string, std::string> additionalHeaders = std::map<std::string, std::string>();
2228
2229 if (!drmPreInitData_.empty())
2230 {
2231 std::string challengeB64;
2232 std::string sessionId;
2233 // Pre-initialize the DRM allow to generate the challenge and session ID data
2234 // used to make licensed manifest requests (via proxy callback)
2235 if (PreInitializeDRM(challengeB64, sessionId))
2236 {
2237 additionalHeaders["challengeB64"] = challengeB64;
2238 additionalHeaders["sessionId"] = sessionId;
2239 }
2240 else
2241 {
2242 kodi::Log(ADDON_LOG_ERROR, "%s - DRM pre-initialization failed", __FUNCTION__);
2243 return false;
2244 }
2245 }
2246
2247 // Open manifest file with location redirect support bool mpdSuccess;
2248 std::string manifestUrl =
2249 adaptiveTree_->location_.empty() ? manifestURL_.c_str() : adaptiveTree_->location_;
2250 if (!adaptiveTree_->open(manifestUrl.c_str(), manifestUpdateParam_.c_str(), additionalHeaders) || adaptiveTree_->empty())
2251 {
2252 kodi::Log(ADDON_LOG_ERROR, "Could not open / parse manifest (%s)", manifestUrl.c_str());
22432253 return false;
22442254 }
22452255 kodi::Log(ADDON_LOG_INFO,
2246 "Successfully parsed .mpd file. #Periods: %ld, #Streams in first period: %ld, Type: "
2256 "Successfully parsed manifest file. #Periods: %ld, #Streams in first period: %ld, Type: "
22472257 "%s, Download speed: %0.4f Bytes/s",
22482258 adaptiveTree_->periods_.size(), adaptiveTree_->current_period_->adaptationSets_.size(),
22492259 adaptiveTree_->has_timeshift_buffer_ ? "live" : "VOD", adaptiveTree_->download_speed_);
22542264 return InitializePeriod();
22552265 }
22562266
2267 bool Session::PreInitializeDRM(std::string& challengeB64, std::string& sessionId)
2268 {
2269 std::string psshData;
2270 std::string kidData;
2271 // Parse the PSSH/KID data
2272 std::string::size_type posSplitter(drmPreInitData_.find("|"));
2273 if (posSplitter != std::string::npos)
2274 {
2275 psshData = drmPreInitData_.substr(0, posSplitter);
2276 kidData = drmPreInitData_.substr(posSplitter + 1);
2277 }
2278
2279 if (psshData.empty() || kidData.empty())
2280 {
2281 kodi::Log(ADDON_LOG_ERROR, "%s - Invalid DRM pre-init data, must be as: {PSSH as base64}|{KID as base64}", __FUNCTION__);
2282 return false;
2283 }
2284
2285 cdm_sessions_.resize(2);
2286 memset(&cdm_sessions_.front(), 0, sizeof(CDMSESSION));
2287 // Try to initialize an SingleSampleDecryptor
2288 kodi::Log(ADDON_LOG_DEBUG, "%s - Entering encryption section", __FUNCTION__);
2289
2290 if (license_key_.empty())
2291 {
2292 kodi::Log(ADDON_LOG_ERROR, "%s - Invalid license_key", __FUNCTION__);
2293 return false;
2294 }
2295
2296 if (!decrypter_)
2297 {
2298 kodi::Log(ADDON_LOG_ERROR, "%s - No decrypter found for encrypted stream", __FUNCTION__);
2299 return false;
2300 }
2301
2302 if (!decrypter_->HasCdmSession())
2303 {
2304 if (!decrypter_->OpenDRMSystem(license_key_.c_str(), server_certificate_, drmConfig_))
2305 {
2306 kodi::Log(ADDON_LOG_ERROR, "%s - OpenDRMSystem failed", __FUNCTION__);
2307 return false;
2308 }
2309 }
2310
2311 AP4_DataBuffer init_data;
2312 const char* optionalKeyParameter(nullptr);
2313
2314 // Set the provided PSSH
2315 init_data.SetBufferSize(1024);
2316 unsigned int init_data_size(1024);
2317
2318 b64_decode(psshData.c_str(), psshData.size(), init_data.UseData(), init_data_size);
2319 init_data.SetDataSize(init_data_size);
2320
2321 // Decode the provided KID
2322 uint8_t buffer[32];
2323 unsigned int buffer_size(32);
2324 b64_decode(kidData.c_str(), kidData.size(), buffer, buffer_size);
2325 const char* decodedKid = reinterpret_cast<const char*>(buffer);
2326
2327 CDMSESSION& session(cdm_sessions_[1]);
2328
2329 char hexkid[36];
2330 AP4_FormatHex(reinterpret_cast<const AP4_UI08*>(decodedKid), 16, hexkid), hexkid[32] = 0;
2331 kodi::Log(ADDON_LOG_DEBUG, "%s - Initializing session with KID: %s", __FUNCTION__, hexkid);
2332
2333 if (decrypter_ && init_data.GetDataSize() >= 4 &&
2334 (session.single_sample_decryptor_ = decrypter_->CreateSingleSampleDecrypter(
2335 init_data, optionalKeyParameter, (const uint8_t*)decodedKid, true)) != 0)
2336 {
2337 session.cdm_session_str_ = session.single_sample_decryptor_->GetSessionId();
2338 sessionId = session.cdm_session_str_;
2339 challengeB64 = decrypter_->GetChallengeB64Data(session.single_sample_decryptor_);
2340 }
2341 else
2342 {
2343 kodi::Log(ADDON_LOG_ERROR, "%s - Initialize failed (SingleSampleDecrypter)", __FUNCTION__);
2344 cdm_sessions_[1].single_sample_decryptor_ = nullptr;
2345 return false;
2346 }
2347
2348 DisposeSampleDecrypter();
2349 return true;
2350 }
2351
22572352 bool Session::InitializeDRM()
22582353 {
2259 DisposeSampleDecrypter();
2260
22612354 cdm_sessions_.resize(adaptiveTree_->current_period_->psshSets_.size());
22622355 memset(&cdm_sessions_.front(), 0, sizeof(CDMSESSION));
22632356 // Try to initialize an SingleSampleDecryptor
22802373 return false;
22812374 }
22822375
2283 if (!decrypter_->OpenDRMSystem(license_key_.c_str(), server_certificate_, drmConfig_))
2284 {
2285 kodi::Log(ADDON_LOG_ERROR, "OpenDRMSystem failed");
2286 return false;
2287 }
2288
2376 if (!decrypter_->HasCdmSession())
2377 {
2378 if (!decrypter_->OpenDRMSystem(license_key_.c_str(), server_certificate_, drmConfig_))
2379 {
2380 kodi::Log(ADDON_LOG_ERROR, "OpenDRMSystem failed");
2381 return false;
2382 }
2383 }
22892384 std::string strkey(adaptiveTree_->supportedKeySystem_.substr(9));
22902385 size_t pos;
22912386 while ((pos = strkey.find('-')) != std::string::npos)
24382533 const char* defkid = adaptiveTree_->current_period_->psshSets_[ses].defaultKID_.empty()
24392534 ? nullptr
24402535 : adaptiveTree_->current_period_->psshSets_[ses].defaultKID_.data();
2441 session.single_sample_decryptor_ = nullptr;
2442 session.shared_single_sample_decryptor_ = false;
24432536
24442537 if (decrypter_ && defkid)
24452538 {
24732566 if (decrypter_ && init_data.GetDataSize() >= 4 &&
24742567 (session.single_sample_decryptor_ ||
24752568 (session.single_sample_decryptor_ = decrypter_->CreateSingleSampleDecrypter(
2476 init_data, optionalKeyParameter, (const uint8_t*)defkid)) != 0))
2569 init_data, optionalKeyParameter, (const uint8_t*)defkid, false)) != 0))
24772570 {
24782571
24792572 decrypter_->GetCapabilities(session.single_sample_decryptor_, (const uint8_t*)defkid,
24862579 {
24872580 session.cdm_session_str_ = session.single_sample_decryptor_->GetSessionId();
24882581 secure_video_session_ = true;
2489 // Override this setting by information passed in manifest
2490 if (!force_secure_decoder_ && !adaptiveTree_->current_period_->need_secure_decoder_)
2582
2583 if (allow_no_secure_decoder_
2584 && !force_secure_decoder_ && !adaptiveTree_->current_period_->need_secure_decoder_)
24912585 session.decrypter_caps_.flags &= ~SSD::SSD_DECRYPTER::SSD_CAPS::SSD_SECURE_DECODER;
24922586 }
24932587 }
25432637 SAFE_DELETE(*b);
25442638 streams_.clear();
25452639
2546 if (psshChanged && !InitializeDRM())
2547 return false;
2548 else if (adaptiveTree_->current_period_->encryptionState_)
2640 if (!psshChanged)
25492641 kodi::Log(ADDON_LOG_DEBUG, "Reusing DRM psshSets for new period!");
2642 else
2643 {
2644 kodi::Log(ADDON_LOG_DEBUG, "New period, dispose sample decrypter and reinitialize");
2645 DisposeSampleDecrypter();
2646 if (!InitializeDRM())
2647 return false;
2648 }
25502649
25512650 bool hdcpOverride = kodi::GetSettingBoolean("HDCPOVERRIDE");
25522651
27462845 case adaptive::AdaptiveTree::PREPARE_RESULT_DRMCHANGED:
27472846 if (!InitializeDRM())
27482847 return nullptr;
2848 case adaptive::AdaptiveTree::PREPARE_RESULT_DRMUNCHANGED:
27492849 stream->encrypted = stream->stream_.getRepresentation()->pssh_set_ > 0;
27502850 needRefetch = true;
27512851 break;
28512951 return 0ULL;
28522952 }
28532953
2954 void Session::StartReader(
2955 STREAM* stream, uint64_t seekTimeCorrected, int64_t ptsDiff, bool preceeding, bool timing)
2956 {
2957 bool bReset = true;
2958 if (timing)
2959 seekTimeCorrected += stream->stream_.GetAbsolutePTSOffset();
2960 else
2961 seekTimeCorrected -= ptsDiff;
2962 stream->stream_.seek_time(
2963 static_cast<double>(seekTimeCorrected / STREAM_TIME_BASE),
2964 preceeding, bReset);
2965 if (bReset)
2966 stream->reader_->Reset(false);
2967 bool bStarted = false;
2968 stream->reader_->Start(bStarted);
2969 if (bStarted && (stream->reader_->GetInformation(stream->info_)))
2970 changed_ = true;
2971 }
2972
28542973 SampleReader* Session::GetNextSample()
28552974 {
28562975 STREAM *res(0), *waiting(0);
29163035
29173036 seekTime -= chapterTime;
29183037
3038 // don't try to seek past the end of the stream, leave a sensible amount so we can buffer properly
29193039 if (adaptiveTree_->has_timeshift_buffer_)
29203040 {
29213041 uint64_t curTime, maxTime(0);
29293049 }
29303050 }
29313051
3052 // correct for starting segment pts value of chapter and chapter offset within program
29323053 uint64_t seekTimeCorrected = static_cast<uint64_t>(seekTime * STREAM_TIME_BASE);
3054 int64_t ptsDiff = 0;
29333055 if (timing_stream_)
29343056 {
3057 // after seeking across chapters with fmp4 streams the reader will not have started
3058 // so we start here to ensure that we have the required information to correctly
3059 // seek with proper stream alignment
3060 if (!timing_stream_->reader_->IsStarted())
3061 StartReader(timing_stream_, seekTimeCorrected, ptsDiff, preceeding, true);
3062
29353063 seekTimeCorrected += timing_stream_->stream_.GetAbsolutePTSOffset();
2936 int64_t ptsDiff = timing_stream_->reader_->GetPTSDiff();
3064 ptsDiff = timing_stream_->reader_->GetPTSDiff();
29373065 if (ptsDiff < 0 && seekTimeCorrected + ptsDiff > seekTimeCorrected)
29383066 seekTimeCorrected = 0;
29393067 else
29443072 if ((*b)->enabled && (*b)->reader_ &&
29453073 (streamId == 0 || (*b)->info_.GetPhysicalIndex() == streamId))
29463074 {
2947 bool bReset;
3075 bool bReset = true;
3076 // all streams must be started before seeking to ensure cross chapter seeks
3077 // will seek to the correct location/segment
3078 if (!(*b)->reader_->IsStarted())
3079 StartReader((*b), seekTimeCorrected, ptsDiff, preceeding, false);
3080 // advance adaptiveStream to the correct segment (triggers segment download)
29483081 if ((*b)->stream_.seek_time(
29493082 static_cast<double>(seekTimeCorrected - (*b)->reader_->GetPTSDiff()) /
29503083 STREAM_TIME_BASE,
29523085 {
29533086 if (bReset)
29543087 (*b)->reader_->Reset(false);
3088 // advance reader to requested time
29553089 if (!(*b)->reader_->TimeSeek(seekTimeCorrected, preceeding))
29563090 (*b)->reader_->Reset(true);
29573091 else
29623096 "seekTime(%0.1lf) for Stream:%d continues at %0.1lf (PTS: %llu)", seekTime,
29633097 (*b)->info_.GetPhysicalIndex(), destTime, (*b)->reader_->PTS());
29643098 if ((*b)->info_.GetStreamType() == INPUTSTREAM_TYPE_VIDEO)
2965 seekTime = destTime, seekTimeCorrected = (*b)->reader_->PTS(), preceeding = false;
3099 {
3100 seekTime = destTime;
3101 seekTimeCorrected = (*b)->reader_->PTS();
3102 preceeding = false;
3103 }
29663104 ret = true;
29673105 }
29683106 }
32943432 {
32953433 kodi::Log(ADDON_LOG_DEBUG, "Open()");
32963434
3297 std::string lt, lk, ld, lsc, mfup, ov_audio, mru;
3298 uint32_t mrt = 0;
3435 std::string lt, lk, ld, lsc, mfup, ov_audio, drmPreInitData;
32993436 std::map<std::string, std::string> manh, medh;
3300 std::string mpd_url = props.GetURL();
3437 std::string url = props.GetURL();
33013438 MANIFEST_TYPE manifest(MANIFEST_TYPE_UNKNOWN);
33023439 std::uint8_t config(0);
33033440 uint32_t max_user_bandwidth = 0;
33643501 kodi::Log(ADDON_LOG_DEBUG, "found inputstream.adaptive.original_audio_language: %s",
33653502 ov_audio.c_str());
33663503 }
3367 else if (prop.first == "inputstream.adaptive.media_renewal_url")
3368 {
3369 mru = prop.second;
3370 kodi::Log(ADDON_LOG_DEBUG, "found inputstream.adaptive.media_renewal_url: %s", mru.c_str());
3371 }
3372 else if (prop.first == "inputstream.adaptive.media_renewal_time")
3373 {
3374 mrt = std::stoi(prop.second);
3375 kodi::Log(ADDON_LOG_DEBUG, "found inputstream.adaptive.media_renewal_time: %d", mrt);
3376 }
33773504 else if (prop.first == "inputstream.adaptive.max_bandwidth")
33783505 {
33793506 max_user_bandwidth = std::stoi(prop.second);
33813508 max_user_bandwidth);
33823509 }
33833510 else if (prop.first == "inputstream.adaptive.play_timeshift_buffer")
3511 {
33843512 m_playTimeshiftBuffer = stricmp(prop.second.c_str(), "true") == 0;
3513 }
3514 else if (prop.first == "inputstream.adaptive.pre_init_data")
3515 {
3516 // This property allow to "pre-initialize" the DRM with a PSSH/KID,
3517 // the property value must be as "{PSSH as base64}|{KID as base64}".
3518 // The challenge/session ID data generated by the initialisation of the DRM
3519 // will be attached to the manifest request callback
3520 // as HTTP headers with the names of "challengeB64" and "sessionId".
3521 kodi::Log(ADDON_LOG_DEBUG, "found inputstream.adaptive.pre_init_data: [not shown]");
3522 drmPreInitData = prop.second;
3523 }
33853524 }
33863525
33873526 if (manifest == MANIFEST_TYPE_UNKNOWN)
33903529 return false;
33913530 }
33923531
3393 std::string::size_type posHeader(mpd_url.find("|"));
3532 std::string::size_type posHeader(url.find("|"));
33943533 if (posHeader != std::string::npos)
33953534 {
33963535 manh.clear();
3397 parseheader(manh, mpd_url.substr(posHeader + 1));
3398 mpd_url = mpd_url.substr(0, posHeader);
3536 parseheader(manh, url.substr(posHeader + 1));
3537 url = url.substr(0, posHeader);
33993538 }
34003539
34013540 if (medh.empty())
34033542
34043543 kodihost->SetProfilePath(props.GetProfileFolder());
34053544
3406 m_session = std::shared_ptr<Session>(new Session(manifest, mpd_url.c_str(), mfup, lt, lk, ld, lsc,
3407 mru, mrt, manh, medh, props.GetProfileFolder(),
3408 m_width, m_height, ov_audio,
3409 m_playTimeshiftBuffer, force_secure_decoder));
3545 m_session = std::shared_ptr<Session>(new Session(
3546 manifest, url.c_str(), mfup, lt, lk, ld, lsc, manh, medh, props.GetProfileFolder(), m_width,
3547 m_height, ov_audio, m_playTimeshiftBuffer, force_secure_decoder, drmPreInitData));
34103548 m_session->SetVideoResolution(m_width, m_height);
34113549
34123550 if (!m_session->Initialize(config, max_user_bandwidth))
8686 const std::string& strLicKey,
8787 const std::string& strLicData,
8888 const std::string& strCert,
89 const std::string& strMediaRenewalUrl,
90 const uint32_t intMediaRenewalTime,
9189 const std::map<std::string, std::string>& manifestHeaders,
9290 const std::map<std::string, std::string>& mediaHeaders,
9391 const std::string& profile_path,
9593 uint16_t display_height,
9694 const std::string& ov_audio,
9795 bool play_timeshift_buffer,
98 bool force_secure_decoder);
96 bool force_secure_decoder,
97 const std::string& drm_preinit_data);
9998 virtual ~Session();
10099 bool Initialize(const std::uint8_t config, uint32_t max_user_bandwidth);
100 bool PreInitializeDRM(std::string& challengeB64, std::string& sessionId);
101101 bool InitializeDRM();
102102 bool InitializePeriod();
103103 SampleReader *GetNextSample();
143143 uint64_t GetElapsedTimeMs()const { return elapsed_time_ / 1000; };
144144 uint64_t PTSToElapsed(uint64_t pts);
145145 uint64_t GetTimeshiftBufferStart();
146 void StartReader(
147 STREAM* stream, uint64_t seekTimeCorrected, int64_t ptsDiff, bool preceeding, bool timing);
146148 bool CheckChange(bool bSet = false){ bool ret = changed_; changed_ = bSet; return ret; };
147149 void SetVideoResolution(unsigned int w, unsigned int h) { width_ = w; height_ = h;};
148150 bool SeekTime(double seekTime, unsigned int streamId = 0, bool preceeding=true);
174176
175177 private:
176178 MANIFEST_TYPE manifest_type_;
177 std::string mpdFileURL_, mpdUpdateParam_;
179 std::string manifestURL_, manifestUpdateParam_;
178180 std::string license_key_, license_type_, license_data_;
181 std::string drmPreInitData_;
179182 std::map<std::string, std::string> media_headers_;
180183 AP4_DataBuffer server_certificate_;
181184 std::string profile_path_;
187190 {
188191 SSD::SSD_DECRYPTER::SSD_CAPS decrypter_caps_;
189192 AP4_CencSingleSampleDecrypter *single_sample_decryptor_;
190 const char *cdm_session_str_;
191 bool shared_single_sample_decryptor_;
193 const char* cdm_session_str_ = nullptr;
194 bool shared_single_sample_decryptor_ = false;
192195 };
193196 std::vector<CDMSESSION> cdm_sessions_;
194197 bool secure_video_session_;
211214 bool ignore_display_;
212215 bool play_timeshift_buffer_;
213216 bool force_secure_decoder_;
214 };
217 bool allow_no_secure_decoder_;
218 };
8989 static unsigned int ParseSegmentTemplate(const char** attr,
9090 std::string baseURL,
9191 std::string baseDomain,
92 DASHTree::SegmentTemplate& tpl)
92 DASHTree::SegmentTemplate& tpl,
93 unsigned int startNumber)
9394 {
94 unsigned int startNumber(1);
9595 for (; *attr;)
9696 {
9797 if (strcmp((const char*)*attr, "timescale") == 0)
481481 {
482482 dash->current_representation_->segtpl_ = dash->current_adaptationset_->segtpl_;
483483
484 dash->current_representation_->startNumber_ =
485 ParseSegmentTemplate(attr, dash->current_representation_->url_, dash->base_domain_,
486 dash->current_representation_->segtpl_);
484 dash->current_representation_->startNumber_ = ParseSegmentTemplate(
485 attr, dash->current_representation_->base_url_, dash->base_domain_,
486 dash->current_representation_->segtpl_, dash->current_adaptationset_->startNumber_);
487487 ReplacePlaceHolders(dash->current_representation_->segtpl_.media,
488488 dash->current_representation_->id,
489489 dash->current_representation_->bandwidth_);
603603 }
604604 else if (strcmp(el, "SegmentTemplate") == 0)
605605 {
606 dash->current_adaptationset_->startNumber_ =
607 ParseSegmentTemplate(attr, dash->current_adaptationset_->base_url_,
608 dash->base_domain_, dash->current_adaptationset_->segtpl_);
606 dash->current_adaptationset_->startNumber_ = ParseSegmentTemplate(
607 attr, dash->current_adaptationset_->base_url_, dash->base_domain_,
608 dash->current_adaptationset_->segtpl_, dash->current_adaptationset_->startNumber_);
609609 dash->current_adaptationset_->timescale_ =
610610 dash->current_adaptationset_->segtpl_.timescale;
611611 dash->currentNode_ |= MPDNODE_SEGMENTTEMPLATE;
657657 dash->current_representation_->timescale_ = dash->current_adaptationset_->timescale_;
658658 dash->current_representation_->duration_ = dash->current_adaptationset_->duration_;
659659 dash->current_representation_->startNumber_ = dash->current_adaptationset_->startNumber_;
660 dash->current_adaptationset_->representations_.push_back(dash->current_representation_);
661660 dash->current_representation_->width_ = dash->adpwidth_;
662661 dash->current_representation_->height_ = dash->adpheight_;
663662 dash->current_representation_->fpsRate_ = dash->adpfpsRate_;
664663 dash->current_representation_->fpsScale_ = dash->adpfpsScale_;
665664 dash->current_representation_->aspect_ = dash->adpaspect_;
666665 dash->current_representation_->containerType_ = dash->adpContainerType_;
666 dash->current_representation_->base_url_ = dash->current_adaptationset_->base_url_;
667 dash->current_adaptationset_->representations_.push_back(dash->current_representation_);
667668
668669 dash->current_pssh_.clear();
669670 dash->current_hasRepURN_ = false;
956957 }
957958 else if (strcmp(el, "SegmentTemplate") == 0)
958959 {
959 dash->current_period_->startNumber_ =
960 ParseSegmentTemplate(attr, dash->current_period_->base_url_, dash->base_domain_,
961 dash->current_period_->segtpl_);
960 dash->current_period_->startNumber_ = ParseSegmentTemplate(
961 attr, dash->current_period_->base_url_, dash->base_domain_,
962 dash->current_period_->segtpl_, dash->current_period_->startNumber_);
962963 dash->current_period_->timescale_ = dash->current_period_->segtpl_.timescale;
963964 dash->currentNode_ |= MPDNODE_SEGMENTTEMPLATE;
964965 }
10511052 {
10521053 uint64_t dur(0);
10531054 AddDuration((const char*)*(attr + 1), dur, 1500);
1055 // 0S minimumUpdatePeriod = refresh after every segment
1056 // We already do that so lets set our minimum updateInterval to 30s
1057 if (dur == 0)
1058 dur = 30000;
10541059 dash->SetUpdateInterval(static_cast<uint32_t>(dur));
10551060 }
10561061 attr += 2;
11111116 url = dash->strXMLText_;
11121117 else
11131118 url = dash->current_adaptationset_->base_url_ + dash->strXMLText_;
1119
1120 dash->current_representation_->base_url_ = url;
11141121
11151122 if (dash->current_representation_->flags_ & AdaptiveTree::Representation::TEMPLATE)
11161123 {
15501557 +---------------------------------------------------------------------*/
15511558 bool DASHTree::open(const std::string& url, const std::string& manifestUpdateParam)
15521559 {
1553 PreparePaths(url, manifestUpdateParam);
1560 return open(url, manifestUpdateParam, std::map<std::string, std::string>());
1561 }
1562
1563 bool DASHTree::open(const std::string& url, const std::string& manifestUpdateParam, std::map<std::string, std::string> additionalHeaders)
1564 {
15541565 parser_ = XML_ParserCreate(NULL);
15551566 if (!parser_)
15561567 return false;
15611572 currentNode_ = 0;
15621573 strXMLText_.clear();
15631574
1564 std::string download_url = BuildDownloadUrl(manifest_url_);
1565 bool ret = download(download_url.c_str(), manifest_headers_) && !periods_.empty();
1575 PrepareManifestUrl(url, manifestUpdateParam);
1576 additionalHeaders.insert(manifest_headers_.begin(), manifest_headers_.end());
1577 bool ret = download(manifest_url_.c_str(), additionalHeaders) && !periods_.empty();
15661578
15671579 XML_ParserFree(parser_);
15681580 parser_ = 0;
15971609 {
15981610 if ((type == VIDEO || type == AUDIO))
15991611 {
1600 lastUpdated_ = std::chrono::system_clock::now();
1612 lastUpdated_ = GetTimePointNowTime();
16011613 RefreshUpdateThread();
16021614 RefreshLiveSegments();
16031615 }
16111623 std::string replaced;
16121624 uint32_t numReplace = ~0U;
16131625 unsigned int nextStartNumber(~0);
1614
1615 if (~update_parameter_pos_)
1626 std::string::size_type update_parameter_pos = update_parameter_.find("$START_NUMBER$");
1627
1628 if (~update_parameter_pos)
16161629 {
16171630 for (std::vector<Period*>::const_iterator bp(periods_.begin()), ep(periods_.end()); bp != ep;
16181631 ++bp)
16331646 }
16341647 Log(LOGLEVEL_DEBUG, "DASH Update: numReplace: %u, nextStartNumber: %u", numReplace,
16351648 nextStartNumber);
1649
1650 if (update_parameter_[0] == '&' && manifest_url_.find("?") == std::string::npos)
1651 update_parameter_[0] = '?';
1652
16361653 replaced = update_parameter_;
16371654 char buf[32];
16381655 sprintf(buf, "%u", nextStartNumber);
1639 replaced.replace(update_parameter_pos_, 14, buf);
1656 replaced.replace(update_parameter_pos, 14, buf);
16401657 }
16411658
16421659 DASHTree updateTree;
16451662 updateTree.supportedKeySystem_ = supportedKeySystem_;
16461663 //Location element should be used on updates
16471664 updateTree.location_ = location_;
1648 updateTree.effective_url_ = effective_url_;
1649 updateTree.effective_domain_ = effective_domain_;
1650
1651 if (!~update_parameter_pos_)
1665
1666 if (!~update_parameter_pos)
16521667 {
16531668 if (!etag_.empty())
16541669 updateTree.manifest_headers_["If-None-Match"] = "\"" + etag_ + "\"";
16631678 location_ = updateTree.location_;
16641679
16651680 //Youtube returns last smallest number in case the requested data is not available
1666 if (~update_parameter_pos_ && updateTree.firstStartNumber_ < nextStartNumber)
1681 if (~update_parameter_pos && updateTree.firstStartNumber_ < nextStartNumber)
16671682 return;
16681683
16691684 std::vector<Period*>::const_iterator bpd(periods_.begin()), epd(periods_.end());
16971712 ;
16981713 if (brd != erd && !(*br)->segments_.empty())
16991714 {
1700 if (~update_parameter_pos_) // partitial update
1715 if (~update_parameter_pos) // partitial update
17011716 {
17021717 //Here we go -> Insert new segments
17031718 uint64_t ptsOffset = (*brd)->nextPts_ - (*br)->segments_[0]->startPTS_;
17411756 if ((*br)->flags_ & DASHTree::Representation::TIMELINE)
17421757 {
17431758 uint64_t search_pts = (*br)->segments_[0]->range_begin_;
1759 uint64_t misaligned = 0;
17441760 for (const auto& s : (*brd)->segments_.data)
17451761 {
1746 if (s.range_begin_ >= search_pts)
1762 if (misaligned)
1763 {
1764 uint64_t ptsDiff = s.range_begin_ - (&s - 1)->range_begin_;
1765 // our misalignment is small ( < 2%), let's decrement the start number
1766 if (misaligned < (ptsDiff * 2 / 100))
1767 --(*brd)->startNumber_;
17471768 break;
1748 ++(*brd)->startNumber_;
1769 }
1770 if (s.range_begin_ == search_pts)
1771 break;
1772 else if (s.range_begin_ > search_pts)
1773 misaligned = search_pts - (&s - 1)->range_begin_;
1774 else
1775 ++(*brd)->startNumber_;
17491776 }
17501777 }
17511778 else if ((*br)->segments_[0]->startPTS_ == (*brd)->segments_[0]->startPTS_)
2929 public:
3030 DASHTree();
3131 virtual bool open(const std::string& url, const std::string& manifestUpdateParam) override;
32 virtual bool open(const std::string& url, const std::string& manifestUpdateParam, std::map<std::string, std::string> additionalHeaders) override;
3233 virtual bool write_data(void* buffer, size_t buffer_size, void* opaque) override;
3334 virtual void RefreshSegments(Period* period,
3435 AdaptationSet* adp,
3637 StreamType type) override;
3738
3839 virtual uint64_t GetNowTime() { return time(0); };
40 virtual std::chrono::system_clock::time_point GetTimePointNowTime()
41 {
42 return std::chrono::system_clock::now();
43 };
44 virtual void SetLastUpdated(std::chrono::system_clock::time_point tm){};
3945 void SetUpdateInterval(uint32_t interval) { updateInterval_ = interval; };
4046 uint64_t pts_helper_, timeline_time_;
4147 uint32_t firstStartNumber_;
106106 if (map["METHOD"] == "AES-128" && !map["URI"].empty())
107107 {
108108 current_pssh_ = map["URI"];
109 if (current_pssh_[0] != '/' && current_pssh_.find("://", 0) == std::string::npos)
109 if (current_pssh_[0] != '/' && current_pssh_.find("://") == std::string::npos)
110110 current_pssh_ = baseUrl + current_pssh_;
111111
112112 current_iv_ = m_decrypter->convertIV(map["IV"]);
157157
158158 bool HLSTree::open(const std::string& url, const std::string& manifestUpdateParam)
159159 {
160 PreparePaths(url, manifestUpdateParam);
161 if (download(manifest_url_.c_str(), manifest_headers_, &manifest_stream))
162 return processManifest(manifest_stream, url);
160 return open(url, manifestUpdateParam, std::map<std::string, std::string>());
161 }
162
163 bool HLSTree::open(const std::string& url, const std::string& manifestUpdateParam, std::map<std::string, std::string> additionalHeaders)
164 {
165 PrepareManifestUrl(url, manifestUpdateParam);
166 additionalHeaders.insert(manifest_headers_.begin(), manifest_headers_.end());
167 if (download(manifest_url_.c_str(), additionalHeaders, &manifest_stream))
168 return processManifest(manifest_stream);
163169 return false;
164170 }
165171
166 bool HLSTree::processManifest(std::stringstream& stream, const std::string& url)
172 bool HLSTree::processManifest(std::stringstream& stream)
167173 {
168174 #if FILEDEBUG
169175 FILE* f = fopen("inputstream_adaptive_master.m3u8", "w");
231237 std::map<std::string, std::string>::iterator res;
232238 if ((res = map.find("URI")) != map.end())
233239 {
234 if (res->second[0] != '/' && res->second.find("://", 0) == std::string::npos)
235 rep->source_url_ = base_url_ + res->second;
236 else
237 rep->source_url_ = res->second;
240 rep->source_url_ = BuildDownloadUrl(res->second);
238241
239242 // default to WebVTT
240243 if (type == SUBTITLE)
305308 current_representation_->bandwidth_ = 0;
306309 current_representation_->codecs_ = getVideoCodec("");
307310 current_representation_->containerType_ = CONTAINERTYPE_NOTYPE;
308 current_representation_->source_url_ = url;
311 current_representation_->source_url_ = manifest_url_;
309312 current_adaptationset_->representations_.push_back(current_representation_);
310313
311314 // We assume audio is included
315318 }
316319 else if (!line.empty() && line.compare(0, 1, "#") != 0 && current_representation_)
317320 {
318 if (line[0] != '/' && line.find("://", 0) == std::string::npos)
319 current_representation_->source_url_ = base_url_ + line;
320 else
321 current_representation_->source_url_ = line;
321 current_representation_->source_url_ = BuildDownloadUrl(line);
322322
323323 //Ignore duplicate reps
324324 for (auto const* rep : current_adaptationset_->representations_)
393393 Segment newInitialization;
394394 uint32_t segmentId(rep->getCurrentSegmentNumber());
395395 std::stringstream stream;
396 std::string download_url = BuildDownloadUrl(rep->source_url_);
397396 uint32_t adp_pos =
398397 std::find(period->adaptationSets_.begin(), period->adaptationSets_.end(), adp) -
399398 period->adaptationSets_.begin();
406405
407406 if (rep->flags_ & Representation::DOWNLOADED)
408407 ;
409 else if (download(download_url.c_str(), manifest_headers_, &stream, false))
408 else if (download(rep->source_url_.c_str(), manifest_headers_, &stream, false))
410409 {
411410 #if FILEDEBUG
412411 FILE* f = fopen("inputstream_adaptive_sub.m3u8", "w");
433432 segment.startPTS_ = ~0ULL;
434433 segment.pssh_set_ = 0;
435434
436 std::string::size_type paramPos = rep->source_url_.find('?');
435 std::string::size_type paramPos = effective_url_.find('?');
437436 base_url =
438 (paramPos == std::string::npos) ? rep->source_url_ : rep->source_url_.substr(0, paramPos);
437 (paramPos == std::string::npos) ? effective_url_ : effective_url_.substr(0, paramPos);
439438
440439 paramPos = base_url.rfind('/');
441440 if (paramPos != std::string::npos)
484483 rep->containerType_ = CONTAINERTYPE_ADTS;
485484 else if (strncmp(line.c_str() + ext, ".mp4", 4) == 0)
486485 rep->containerType_ = CONTAINERTYPE_MP4;
487 else if (strncmp(line.c_str() + ext, ".vtt", 4) == 0)
486 else if (strncmp(line.c_str() + ext, ".vtt", 4) == 0 ||
487 strncmp(line.c_str() + ext, ".webvtt", 7) == 0)
488488 rep->containerType_ = CONTAINERTYPE_TEXT;
489489 else
490490 {
502502 if (!byteRange || rep->url_.empty())
503503 {
504504 std::string url;
505 if (line[0] != '/' && line.find("://", 0) == std::string::npos)
505 if (line[0] != '/' && line.find("://") == std::string::npos)
506506 url = base_url + line;
507507 else
508508 url = line;
617617 segment.range_end_ = 0;
618618 segment.startPTS_ = ~0ULL;
619619 segment.pssh_set_ = 0;
620 pts = 0;
621620
622621 if (currentEncryptionType == ENCRYPTIONTYPE_WIDEVINE)
623622 {
624 rep->pssh_set_ = insert_psshset(NOTYPE, period, adp);
623 rep->pssh_set_ = insert_psshset(adp->type_, period, adp);
625624 period->encryptionState_ |= ENCRYTIONSTATE_SUPPORTED;
626625 }
627626
645644 case ENCRYPTIONTYPE_WIDEVINE:
646645 currentEncryptionType = ENCRYPTIONTYPE_WIDEVINE;
647646 period->encryptionState_ |= ENCRYTIONSTATE_SUPPORTED;
648 rep->pssh_set_ = insert_psshset(NOTYPE, period, adp);
649 if (period->psshSets_[rep->pssh_set_].use_count_ == 1)
650 retVal = PREPARE_RESULT_DRMCHANGED;
647 rep->pssh_set_ = insert_psshset(adp->type_, period, adp);
648 retVal = period->psshSets_[rep->pssh_set_].use_count_ == 1 ||
649 retVal == PREPARE_RESULT_DRMCHANGED
650 ? PREPARE_RESULT_DRMCHANGED
651 : PREPARE_RESULT_DRMUNCHANGED;
651652 break;
652653 default:
653654 break;
670671 delete[] newInitialization.url;
671672 segmentInitialization = true;
672673 std::string uri = map["URI"];
673 if (uri[0] != '/' && uri.find("://", 0) == std::string::npos)
674 if (uri[0] != '/' && uri.find("://") == std::string::npos)
674675 map_url = base_url + uri;
675676 else
676677 map_url = uri;
4444 virtual ~HLSTree();
4545
4646 virtual bool open(const std::string& url, const std::string& manifestUpdateParam) override;
47 virtual bool open(const std::string& url, const std::string& manifestUpdateParam, std::map<std::string, std::string> additionalHeaders) override;
4748 virtual PREPARE_RESULT prepareRepresentation(Period* period,
4849 AdaptationSet* adp,
4950 Representation* rep,
6061 AdaptationSet* adp,
6162 Representation* rep,
6263 StreamType type) override;
63 virtual bool processManifest(std::stringstream& stream, const std::string& url);
64 virtual bool processManifest(std::stringstream& stream);
6465
6566 protected:
6667 virtual void RefreshLiveSegments() override;
348348
349349 bool SmoothTree::open(const std::string& url, const std::string& manifestUpdateParam)
350350 {
351 PreparePaths(url, manifestUpdateParam);
352
351 return open(url, manifestUpdateParam, std::map<std::string, std::string>());
352 }
353
354 bool SmoothTree::open(const std::string& url, const std::string& manifestUpdateParam, std::map<std::string, std::string> additionalHeaders)
355 {
353356 parser_ = XML_ParserCreate(NULL);
354357 if (!parser_)
355358 return false;
359362 currentNode_ = 0;
360363 strXMLText_.clear();
361364
362 bool ret = download(manifest_url_.c_str(), manifest_headers_);
365 PrepareManifestUrl(url, manifestUpdateParam);
366 additionalHeaders.insert(manifest_headers_.begin(), manifest_headers_.end());
367 bool ret = download(manifest_url_.c_str(), additionalHeaders);
363368
364369 XML_ParserFree(parser_);
365370 parser_ = 0;
2929 public:
3030 SmoothTree();
3131 virtual bool open(const std::string& url, const std::string& manifestUpdateParam) override;
32 virtual bool open(const std::string& url, const std::string& manifestUpdateParam, std::map<std::string, std::string> additionalHeaders) override;
3233 virtual bool write_data(void* buffer, size_t buffer_size, void* opaque) override;
3334
3435 enum
2020
2121 void OpenTestFile(std::string testfilename, std::string url, std::string manifestHeaders)
2222 {
23 if (url.empty())
24 url = "http://foo.bar/" + testfilename;
25
2326 SetFileName(testHelper::testFile, testfilename);
2427 if (!tree->open(url, manifestHeaders))
2528 {
3942 testHelper::lastDownloadUrl.clear();
4043 DASHTreeTest::SetUp();
4144 videoStream = new TestAdaptiveStream(*tree, adaptive::AdaptiveTree::StreamType::VIDEO);
45 audioStream = new TestAdaptiveStream(*tree, adaptive::AdaptiveTree::StreamType::AUDIO);
4246 }
4347
4448 void TearDown() override
4549 {
4650 delete videoStream;
51 delete audioStream;
4752 videoStream = nullptr;
53 audioStream = nullptr;
4854 DASHTreeTest::TearDown();
4955 }
5056
6773 downloadedUrls.push_back(testHelper::lastDownloadUrl);
6874 else
6975 break;
76 // Decrement last updated time so live manifest will always refresh on each segment
77 // in order to test manifest update changes
78 tree->SetLastUpdated(std::chrono::system_clock::now() - std::chrono::seconds(2));
79 stream->SetLastUpdated(std::chrono::system_clock::now() - std::chrono::seconds(2));
7080 }
7181
7282 TestAdaptiveStream* videoStream;
83 TestAdaptiveStream* audioStream;
7384 std::vector<std::string> downloadedUrls;
7485 std::map<std::string, std::string> mediaHeaders;
7586 unsigned char buf[16];
90101 EXPECT_EQ(tree->base_domain_, "https://foo.bar");
91102 }
92103
93 TEST_F(DASHTreeTest, CalculateEffectiveUrlFromRedirect)
94 {
95 // like base_url_, effective_url_ should be path, not including filename
104 TEST_F(DASHTreeTest, CalculateBaseUrlFromRedirect)
105 {
96106 testHelper::effectiveUrl = "https://foo.bar/mpd/stream.mpd";
97 OpenTestFile("mpd/segtpl.mpd", "https://bit.ly/abcd", "");
98
99 EXPECT_EQ(tree->effective_url_, "https://foo.bar/mpd/");
107 OpenTestFile("mpd/segtpl.mpd", "https://bit.ly/abcd.mpd", "");
108 EXPECT_EQ(tree->base_url_, "https://foo.bar/mpd/");
109 EXPECT_EQ(tree->manifest_url_, "https://foo.bar/mpd/stream.mpd");
100110 }
101111
102112 TEST_F(DASHTreeTest, CalculateBaseURLFromBaseURLTag)
105115 EXPECT_EQ(tree->current_period_->base_url_, "https://foo.bar/mpd/");
106116 }
107117
108 TEST_F(DASHTreeTest, CalculateSegTplWithNoSlashs)
118 TEST_F(DASHTreeTest, CalculateSegTplWithNoSlashes)
109119 {
110120 // BaseURL inside period with no trailing slash, uses segtpl, media/init doesn't start with slash
111121 OpenTestFile("mpd/segtpl_baseurl_noslashs.mpd", "https://foo.bar/initialpath/test.mpd", "");
300310 EXPECT_EQ(tree->update_parameter_, "full");
301311 }
302312
303 TEST_F(DASHTreeTest, updateParameterProvidedLiveSegmentTimeline)
304 {
305 tree->update_parameter_ = "ABC";
306 OpenTestFile("mpd/segtimeline_live_pd.mpd", "", "");
307 EXPECT_EQ(tree->update_parameter_, "ABC");
313 TEST_F(DASHTreeTest, updateParameterVODSegmentStartNumber)
314 {
315 OpenTestFile("mpd/segtimeline_vod.mpd", "https://foo.bar/dash.mpd?foo=bar&baz=qux&start_seq=$START_NUMBER$", "");
316 EXPECT_EQ(tree->update_parameter_, "&start_seq=$START_NUMBER$");
317 EXPECT_EQ(tree->manifest_url_, "https://foo.bar/dash.mpd?foo=bar&baz=qux");
318 }
319
320 TEST_F(DASHTreeTest, updateParameterVODSegmentStartNumberRedirect)
321 {
322 testHelper::effectiveUrl = "https://foo.bar/mpd/stream.mpd?foo=bar&baz=qux&test=123";
323 OpenTestFile("mpd/segtimeline_vod.mpd", "https://foo.bar/dash.mpd?start_seq=$START_NUMBER$", "");
324 EXPECT_EQ(tree->update_parameter_, "?start_seq=$START_NUMBER$");
325 EXPECT_EQ(tree->manifest_url_, "https://foo.bar/mpd/stream.mpd?foo=bar&baz=qux&test=123");
308326 }
309327
310328 TEST_F(DASHTreeTest, updateParameterVODSegmentTimeline)
403421 EXPECT_EQ(downloadedUrls[0], "https://foo.bar/tears-of-steel-multiple-subtitles-12-0.dash");
404422 EXPECT_EQ(downloadedUrls.back(), "https://foo.bar/tears-of-steel-multiple-subtitles-12-16000.dash");
405423 }
424
425 TEST_F(DASHTreeTest, CalculateMultipleSegTpl)
426 {
427 OpenTestFile("mpd/segtpl_multiple.mpd", "https://foo.bar/dash/multiple.mpd", "");
428
429 EXPECT_EQ(tree->base_url_, "https://foo.bar/dash/");
430
431 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[0]->segtpl_.initialization, "https://foo.bar/dash/3c1055cb-a842-4449-b393-7f31693b4a8f_1_448x252init.mp4");
432 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[0]->segtpl_.media, "https://foo.bar/dash/3c1055cb-a842-4449-b393-7f31693b4a8f_1_448x252_$Number%09d$.mp4");
433 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[0]->segtpl_.timescale, 120000);
434 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[0]->segments_[0]->range_end_, 3);
435
436 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[1]->segtpl_.initialization, "https://foo.bar/dash/3c1055cb-a842-4449-b393-7f31693b4a8f_2_1920x1080init.mp4");
437 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[1]->segtpl_.media, "https://foo.bar/dash/3c1055cb-a842-4449-b393-7f31693b4a8f_2_1920x1080_$Number%09d$.mp4");
438 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[1]->segtpl_.timescale, 90000);
439 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[1]->segments_[0]->range_end_, 5);
440
441 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[0]->segtpl_.initialization, "https://foo.bar/dash/3c1055cb-a842-4449-b393-7f31693b4a8f_aac1init.mp4");
442 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[0]->segtpl_.media, "https://foo.bar/dash/3c1055cb-a842-4449-b393-7f31693b4a8f_aac1_$Number%09d$.mp4");
443 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[0]->segtpl_.timescale, 48000);
444 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[0]->segments_[0]->range_end_, 1);
445
446 EXPECT_EQ(tree->periods_[0]->adaptationSets_[2]->representations_[0]->segtpl_.initialization, "https://foo.bar/dash/abc_aac1init.mp4");
447 EXPECT_EQ(tree->periods_[0]->adaptationSets_[2]->representations_[0]->segtpl_.media, "https://foo.bar/dash/abc2_$Number%09d$.mp4");
448 EXPECT_EQ(tree->periods_[0]->adaptationSets_[2]->representations_[0]->segtpl_.timescale, 68000);
449 EXPECT_EQ(tree->periods_[0]->adaptationSets_[2]->representations_[0]->segments_[0]->range_end_, 5);
450 }
451
452 TEST_F(DASHTreeTest, CalculateRedirectSegTpl)
453 {
454 testHelper::effectiveUrl = "https://foo.bar/mpd/stream.mpd";
455 OpenTestFile("mpd/segtpl.mpd", "https://bit.ly/abcd.mpd", "");
456
457 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[0]->segtpl_.initialization, "https://foo.bar/mpd/V300/init.mp4");
458 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[0]->segtpl_.media, "https://foo.bar/mpd/V300/$Number$.m4s");
459
460 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[0]->segtpl_.initialization, "https://foo.bar/A48/init.mp4");
461 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[0]->segtpl_.media, "https://foo.bar/A48/$Number$.m4s");
462 }
463
464 TEST_F(DASHTreeTest, CalculateReprensentationBaseURL)
465 {
466 OpenTestFile("mpd/rep_base_url.mpd", "https://bit.ly/mpd/abcd.mpd", "");
467
468 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[0]->segtpl_.initialization, "https://foo.bar/mpd/slices/A_init.mp4");
469 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[0]->segtpl_.media, "https://foo.bar/mpd/slices/A$Number%08d$.m4f");
470 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[1]->segtpl_.initialization, "https://bit.ly/mpd/B_init.mp4");
471 EXPECT_EQ(tree->periods_[0]->adaptationSets_[0]->representations_[1]->segtpl_.media, "https://bit.ly/mpd/B$Number%08d$.m4f");
472
473 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[0]->segtpl_.initialization, "https://foo.bar/mpd/slices/A_init.mp4");
474 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[0]->segtpl_.media, "https://foo.bar/mpd/slices/A$Number%08d$.m4f");
475 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[1]->segtpl_.initialization, "https://foo.bar/mpd/slices2/B_init.mp4");
476 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[1]->segtpl_.media, "https://foo.bar/mpd/slices2/B$Number%08d$.m4f");
477 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[2]->segtpl_.initialization, "https://foo.bar/mpd/slices2/C_init.mp4");
478 EXPECT_EQ(tree->periods_[0]->adaptationSets_[1]->representations_[2]->segtpl_.media, "https://foo.bar/mpd/slices2/C$Number%08d$.m4f");
479 }
480
481 TEST_F(DASHTreeAdaptiveStreamTest, MisalignedSegmentTimeline)
482 {
483 OpenTestFile("mpd/bad_segtimeline_1.mpd", "https://foo.bar/placeholders.mpd", "");
484 audioStream->prepare_stream(tree->current_period_->adaptationSets_[1], 0, 0, 0, 0, 0, 0, 0,
485 mediaHeaders);
486 audioStream->start_stream(~0, 0, 0, false);
487
488 ReadSegments(audioStream, 16, 1);
489
490 SetFileName(testHelper::testFile, "mpd/bad_segtimeline_2.mpd");
491 ReadSegments(audioStream, 16, 1);
492 EXPECT_EQ(tree->current_period_->adaptationSets_[1]->representations_[0]->startNumber_, 3);
493
494 SetFileName(testHelper::testFile, "mpd/bad_segtimeline_3.mpd");
495 ReadSegments(audioStream, 16, 1);
496 EXPECT_EQ(tree->current_period_->adaptationSets_[1]->representations_[0]->startNumber_, 4);
497
498 SetFileName(testHelper::testFile, "mpd/bad_segtimeline_4.mpd");
499 ReadSegments(audioStream, 16, 1);
500 EXPECT_EQ(tree->current_period_->adaptationSets_[1]->representations_[0]->startNumber_, 5);
501 }
1919
2020 void OpenTestFileMaster(std::string testfilename, std::string url, std::string manifestHeaders)
2121 {
22 if (url.empty())
23 url = "http://foo.bar/" + testfilename;
24
2225 SetFileName(testHelper::testFile, testfilename);
2326 if (!tree->open(url, manifestHeaders))
2427 {
4245 };
4346
4447
45
4648 TEST_F(HLSTreeTest, CalculateSourceUrl)
4749 {
4850 OpenTestFileMaster("hls/1a2v_master.m3u8", "https://foo.bar/master.m3u8?param=foo", "");
5254
5355 std::string rep_url = tree->BuildDownloadUrl(
5456 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
55 EXPECT_EQ(tree->base_url_, "https://foo.bar/");
5657 EXPECT_EQ(rep_url, "https://foo.bar/stream_2/out.m3u8");
5758 }
5859
59
6060 TEST_F(HLSTreeTest, CalculateSourceUrlFromRedirectedMasterRelativeUri)
6161 {
6262 testHelper::effectiveUrl = "https://foo.bar/master.m3u8";
6363
6464 OpenTestFileMaster("hls/1a2v_master.m3u8", "https://baz.qux/master.m3u8", "");
65
65
6666 std::string rep_url = tree->BuildDownloadUrl(
6767 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
6868
6969 EXPECT_EQ(rep_url, "https://foo.bar/stream_2/out.m3u8");
70
70
7171 adaptive::HLSTree::PREPARE_RESULT res = OpenTestFileVariant(
7272 "hls/fmp4_noenc_v_stream_2.m3u8", "https://foo.bar/stream_2/out.m3u8", tree->current_period_,
7373 tree->current_adaptationset_, tree->current_representation_);
74
75 rep_url = tree->BuildDownloadUrl(
76 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
77 // base_url_ should never change after opening stream regardless of redirects
78 EXPECT_EQ(tree->base_url_, "https://baz.qux/");
74
75 rep_url = tree->BuildDownloadUrl(
76 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
7977 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
8078 EXPECT_EQ(rep_url, "https://foo.bar/stream_2/out.m3u8");
8179 }
8280
83
8481 TEST_F(HLSTreeTest, CalculateSourceUrlFromRedirectedVariantAbsoluteUri)
8582 {
8683 OpenTestFileMaster("hls/redirect_absolute_1v_master.m3u8", "https://baz.qux/master.m3u8", "");
8784
8885 std::string rep_url = tree->BuildDownloadUrl(
8986 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
90
87
9188 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
9289
9390 testHelper::effectiveUrl = "https://foo.bar/stream_2/out.m3u8";
94
91
9592 adaptive::HLSTree::PREPARE_RESULT res = OpenTestFileVariant(
9693 "hls/fmp4_noenc_v_stream_2.m3u8", "https://bit.ly/abcd",
9794 tree->current_period_, tree->current_adaptationset_, tree->current_representation_);
9895
9996 rep_url = tree->BuildDownloadUrl(
10097 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
101 EXPECT_EQ(tree->base_url_, "https://baz.qux/");
102 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
103 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
104 }
105
98
99 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
100 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
101 }
106102
107103 TEST_F(HLSTreeTest, CalculateSourceUrlFromRedirectedMasterAndRedirectedVariantAbsoluteUri)
108104 {
112108
113109 std::string rep_url = tree->BuildDownloadUrl(
114110 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
115
111
116112 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
117113
118114 testHelper::effectiveUrl = "https://foo.bar/stream_2/out.m3u8";
123119
124120 rep_url = tree->BuildDownloadUrl(
125121 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
126 EXPECT_EQ(tree->base_url_, "https://link.to/");
127 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
128 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
129 }
130
122 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
123 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
124 }
131125
132126 TEST_F(HLSTreeTest,
133127 CalculateSourceUrlFromRedirectedMasterAndRedirectedVariantAbsoluteUriSameDomains)
134128 {
135 GTEST_SKIP();
136129 testHelper::effectiveUrl = "https://baz.qux/master.m3u8";
137130
138131 OpenTestFileMaster("hls/redirect_absolute_1v_master.m3u8", "https://bit.ly/1234", "");
139132
140133 std::string rep_url = tree->BuildDownloadUrl(
141134 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
142
135
143136 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
144137
145138 testHelper::effectiveUrl = "https://foo.bar/stream_2/out.m3u8";
150143
151144 rep_url = tree->BuildDownloadUrl(
152145 tree->current_period_->adaptationSets_[0]->representations_[0]->source_url_);
153 EXPECT_EQ(tree->base_url_, "https://bit.ly/");
154 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
155 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
156 }
157
158
146 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
147 EXPECT_EQ(rep_url, "https://bit.ly/abcd");
148 }
159149
160150 TEST_F(HLSTreeTest, OpenVariant)
161151 {
168158 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
169159 EXPECT_EQ(tree->base_url_, "https://foo.bar/");
170160 }
171
172161
173162 TEST_F(HLSTreeTest, ParseKeyUriStartingWithSlash)
174163 {
175164 OpenTestFileMaster("hls/1v_master.m3u8",
176165 "https://foo.bar/hls/video/stream_name/master.m3u8", "");
177
166
178167 adaptive::HLSTree::PREPARE_RESULT res = OpenTestFileVariant(
179168 "hls/ts_aes_keyuriwithslash_stream_0.m3u8",
180169 "https://foo.bar/hls/video/stream_name/chunklist.m3u8", tree->current_period_,
182171
183172 std::string pssh_url = tree->BuildDownloadUrl(tree->current_period_->psshSets_[1].pssh_);
184173 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
185 EXPECT_EQ(tree->base_url_, "https://foo.bar/hls/video/stream_name/");
186174 EXPECT_EQ(pssh_url,
187175 "https://foo.bar/hls/key/key.php?stream=stream_name");
188176 }
201189
202190 std::string pssh_url = tree->BuildDownloadUrl(tree->current_period_->psshSets_[1].pssh_);
203191 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
204 EXPECT_EQ(tree->base_url_, "https://baz.qux/hls/video/stream_name/");
205192 EXPECT_EQ(pssh_url,
206193 "https://foo.bar/hls/key/key.php?stream=stream_name");
207194 }
208
209195
210196 TEST_F(HLSTreeTest, ParseKeyUriAbsolute)
211197 {
212198 OpenTestFileMaster("hls/1v_master.m3u8",
213199 "https://foo.bar/hls/video/stream_name/master.m3u8", "");
214
200
215201 adaptive::HLSTree::PREPARE_RESULT res = OpenTestFileVariant(
216202 "hls/ts_aes_keyuriabsolute_stream_0.m3u8",
217203 "https://foo.bar/hls/video/stream_name/chunklist.m3u8", tree->current_period_,
218204 tree->current_adaptationset_, tree->current_representation_);
219205
220206 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
221 EXPECT_EQ(tree->base_url_, "https://foo.bar/hls/video/stream_name/");
222207 EXPECT_EQ(tree->current_period_->psshSets_[1].pssh_,
223208 "https://foo.bar/hls/key/key.php?stream=stream_name");
224209 }
225210
226
227211 TEST_F(HLSTreeTest, ParseKeyUriRelative)
228212 {
229213 OpenTestFileMaster("hls/1v_master.m3u8", "https://foo.bar/hls/video/stream_name/master.m3u8",
230214 "");
231
215
232216 adaptive::HLSTree::PREPARE_RESULT res = OpenTestFileVariant(
233217 "hls/ts_aes_keyurirelative_stream_0.m3u8",
234218 "https://foo.bar/hls/video/stream_name/chunklist.m3u8", tree->current_period_,
236220
237221 std::string pssh_url = tree->BuildDownloadUrl(tree->current_period_->psshSets_[1].pssh_);
238222 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
239 EXPECT_EQ(tree->base_url_, "https://foo.bar/hls/video/stream_name/");
240223 EXPECT_EQ(pssh_url,
241224 "https://foo.bar/hls/video/stream_name/../../key/key.php?stream=stream_name");
242225 }
243
244226
245227 TEST_F(HLSTreeTest, ParseKeyUriRelativeFromRedirect)
246228 {
254236 ->source_url_); // https://baz.qux/hls/video/stream_name/ts_aes_uriwithslash_chunklist.m3u8
255237 adaptive::HLSTree::PREPARE_RESULT res = OpenTestFileVariant(
256238 "hls/ts_aes_keyurirelative_stream_0.m3u8",
257 var_download_url,
239 var_download_url,
258240 tree->current_period_,
259241 tree->current_adaptationset_,
260242 tree->current_representation_);
261243
262244 std::string pssh_url = tree->BuildDownloadUrl(tree->current_period_->psshSets_[1].pssh_);
263245 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
264 EXPECT_EQ(tree->base_url_, "https://baz.qux/hls/video/stream_name/");
265246 EXPECT_EQ(pssh_url,
266247 "https://foo.bar/hls/video/stream_name/../../key/key.php?stream=stream_name");
267248 }
249
250 TEST_F(HLSTreeTest, PtsSetInMultiPeriod)
251 {
252 OpenTestFileMaster("hls/1a2v_master.m3u8", "https://foo.bar/master.m3u8", "");
253 std::string var_download_url = tree->BuildDownloadUrl(
254 tree->current_period_->adaptationSets_[0]->representations_[1]->source_url_);
255
256 adaptive::HLSTree::PREPARE_RESULT res =
257 OpenTestFileVariant("hls/disco_fmp4_noenc_v_stream_1.m3u8", var_download_url,
258 tree->periods_[0], tree->periods_[0]->adaptationSets_[0],
259 tree->periods_[0]->adaptationSets_[0]->representations_[1]);
260
261 uint64_t pts =
262 tree->periods_[1]->adaptationSets_[0]->representations_[1]->segments_.data[0].startPTS_;
263 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
264 EXPECT_EQ(pts, 21000000);
265
266 var_download_url = tree->BuildDownloadUrl(
267 tree->current_period_->adaptationSets_[1]->representations_[0]->source_url_);
268
269 res = OpenTestFileVariant("hls/disco_fmp4_noenc_a_stream_0.m3u8", var_download_url,
270 tree->periods_[1], tree->periods_[1]->adaptationSets_[1],
271 tree->periods_[1]->adaptationSets_[1]->representations_[0]);
272
273 pts = tree->periods_[1]->adaptationSets_[1]->representations_[0]->segments_.data[0].startPTS_;
274 EXPECT_EQ(res, adaptive::HLSTree::PREPARE_RESULT_OK);
275 EXPECT_EQ(pts, 20993000);
276 }
2222 bool adaptive::AdaptiveTree::download(const char* url,
2323 const std::map<std::string, std::string>& manifestHeaders,
2424 void* opaque,
25 bool scanEffectiveURL)
25 bool isManifest)
2626 {
2727 FILE* f = fopen(testHelper::testFile.c_str(), "rb");
2828 if (!f)
2929 return false;
3030
31 if (scanEffectiveURL && !testHelper::effectiveUrl.empty())
32 SetEffectiveURL(testHelper::effectiveUrl);
31 if (!testHelper::effectiveUrl.empty())
32 effective_url_ = testHelper::effectiveUrl;
33 else
34 effective_url_ = url;
35
36 if (isManifest && !PreparePaths(effective_url_))
37 {
38 fclose(f);
39 return false;
40 }
3341
3442 // read the file
3543 static const unsigned int CHUNKSIZE = 16384;
2020 public:
2121 TestAdaptiveStream(adaptive::AdaptiveTree& tree, adaptive::AdaptiveTree::StreamType type)
2222 : adaptive::AdaptiveStream(tree, type){};
23 std::chrono::system_clock::time_point mock_time_stream = std::chrono::system_clock::now();
24 void SetLastUpdated(std::chrono::system_clock::time_point tm) override { lastUpdated_ = tm; };
2325
2426 protected:
2527 virtual bool download(const char* url,
5052 {
5153 public:
5254 uint64_t mock_time = 10000000L;
55 std::chrono::system_clock::time_point mock_time_chrono = std::chrono::system_clock::now();
5356 DASHTestTree();
5457 uint64_t GetNowTime() override { return mock_time; }
58 std::chrono::system_clock::time_point GetNowTimeChrono() { return mock_time_chrono; };
59 void SetLastUpdated(std::chrono::system_clock::time_point tm) override { lastUpdated_ = tm; };
5560 };
0 #EXTM3U
1 #EXT-X-VERSION:6
2 ## Generated with https://github.com/google/shaka-packager version v2.4.3-dd9870075f-release
3 #EXT-X-TARGETDURATION:7
4 #EXT-X-PLAYLIST-TYPE:VOD
5 #EXT-X-MAP:URI="init.mp4"
6 #EXTINF:6.016,
7 1.m4s
8 #EXTINF:5.995,
9 2.m4s
10 #EXTINF:5.995,
11 3.m4s
12 #EXTINF:2.987,
13 4.m4s
14 #EXT-X-DISCONTINUITY
15 #EXTINF:6.016,
16 5.m4s
17 #EXTINF:5.995,
18 6.m4s
19 #EXTINF:6.016,
20 7.m4s
21 #EXTINF:5.995,
22 8.m4s
23 #EXTINF:5.995,
24 9.m4s
25 #EXTINF:5.995,
26 10.m4s
27 #EXTINF:6.016,
28 11.m4s
29 #EXTINF:5.995,
30 12.m4s
31 #EXTINF:5.995,
32 13.m4s
33 #EXTINF:5.995,
34 14.m4s
35 #EXTINF:6.016,
36 15.m4s
37 #EXTINF:5.995,
38 16.m4s
39 #EXTINF:5.995,
40 17.m4s
41 #EXTINF:5.995,
42 18.m4s
43 #EXTINF:6.016,
44 19.m4s
45 #EXTINF:5.995,
46 20.m4s
47 #EXTINF:5.995,
48 21.m4s
49 #EXTINF:5.995,
50 22.m4s
51 #EXTINF:6.016,
52 23.m4s
53 #EXTINF:5.995,
54 24.m4s
55 #EXTINF:5.995,
56 25.m4s
57 #EXTINF:5.995,
58 26.m4s
59 #EXTINF:6.016,
60 27.m4s
61 #EXTINF:5.995,
62 28.m4s
63 #EXTINF:5.845,
64 29.m4s
0 #EXTM3U
1 #EXT-X-VERSION:6
2 ## Generated with https://github.com/google/shaka-packager version v2.4.3-dd9870075f-release
3 #EXT-X-TARGETDURATION:7
4 #EXT-X-PLAYLIST-TYPE:VOD
5 #EXT-X-MAP:URI="init.mp4"
6 #EXTINF:6.000,
7 1.m4s
8 #EXTINF:6.000,
9 2.m4s
10 #EXTINF:6.000,
11 3.m4s
12 #EXTINF:3.000,
13 4.m4s
14 #EXT-X-DISCONTINUITY
15 #EXTINF:6.000,
16 5.m4s
17 #EXTINF:6.000,
18 6.m4s
19 #EXTINF:6.000,
20 7.m4s
21 #EXTINF:6.000,
22 8.m4s
23 #EXTINF:6.000,
24 9.m4s
25 #EXTINF:6.000,
26 10.m4s
27 #EXTINF:6.000,
28 11.m4s
29 #EXTINF:6.000,
30 12.m4s
31 #EXTINF:6.000,
32 13.m4s
33 #EXTINF:6.000,
34 14.m4s
35 #EXTINF:6.000,
36 15.m4s
37 #EXTINF:6.000,
38 16.m4s
39 #EXTINF:6.000,
40 17.m4s
41 #EXTINF:6.000,
42 18.m4s
43 #EXTINF:6.000,
44 19.m4s
45 #EXTINF:6.000,
46 20.m4s
47 #EXTINF:6.000,
48 21.m4s
49 #EXTINF:6.000,
50 22.m4s
51 #EXTINF:6.000,
52 23.m4s
53 #EXTINF:6.000,
54 24.m4s
55 #EXTINF:6.000,
56 25.m4s
57 #EXTINF:6.000,
58 26.m4s
59 #EXTINF:6.000,
60 27.m4s
61 #EXTINF:6.000,
62 28.m4s
63 #EXTINF:5.840,
64 29.m4s
0 #EXTM3U
1 #EXT-X-VERSION:6
2 ## Generated with https://github.com/google/shaka-packager version v2.4.3-dd9870075f-release
3 #EXT-X-TARGETDURATION:7
4 #EXT-X-PLAYLIST-TYPE:VOD
5 #EXT-X-MAP:URI="init.mp4"
6 #EXTINF:6.000,
7 1.m4s
8 #EXTINF:6.000,
9 2.m4s
10 #EXTINF:6.000,
11 3.m4s
12 #EXTINF:3.000,
13 4.m4s
14 #EXT-X-DISCONTINUITY
15 #EXTINF:6.000,
16 5.m4s
17 #EXTINF:6.000,
18 6.m4s
19 #EXTINF:6.000,
20 7.m4s
21 #EXTINF:6.000,
22 8.m4s
23 #EXTINF:6.000,
24 9.m4s
25 #EXTINF:6.000,
26 10.m4s
27 #EXTINF:6.000,
28 11.m4s
29 #EXTINF:6.000,
30 12.m4s
31 #EXTINF:6.000,
32 13.m4s
33 #EXTINF:6.000,
34 14.m4s
35 #EXTINF:6.000,
36 15.m4s
37 #EXTINF:6.000,
38 16.m4s
39 #EXTINF:6.000,
40 17.m4s
41 #EXTINF:6.000,
42 18.m4s
43 #EXTINF:6.000,
44 19.m4s
45 #EXTINF:6.000,
46 20.m4s
47 #EXTINF:6.000,
48 21.m4s
49 #EXTINF:6.000,
50 22.m4s
51 #EXTINF:6.000,
52 23.m4s
53 #EXTINF:6.000,
54 24.m4s
55 #EXTINF:6.000,
56 25.m4s
57 #EXTINF:6.000,
58 26.m4s
59 #EXTINF:6.000,
60 27.m4s
61 #EXTINF:6.000,
62 28.m4s
63 #EXTINF:5.840,
64 29.m4s
0 <?xml version="1.0" encoding="UTF-8"?>
1 <MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xmlns="urn:mpeg:dash:schema:mpd:2011"
3 xmlns:xlink="http://www.w3.org/1999/xlink"
4 xmlns:cenc="urn:mpeg:cenc:2013"
5 xmlns:mspr="urn:microsoft:playready"
6 xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
7 profiles="urn:mpeg:dash:profile:isoff-live:2011"
8 type="dynamic"
9 minimumUpdatePeriod="PT1.18S"
10 publishTime="2021-05-30T11:17:43.035Z"
11 availabilityStartTime="2021-05-07T09:32:36.454Z"
12 timeShiftBufferDepth="PT40.0S"
13 suggestedPresentationDelay="PT16.0S"
14 minBufferTime="PT6.0S">
15 <ProgramInformation>
16 <Title>TVE-026.smil</Title>
17 </ProgramInformation>
18 <Period id="0" start="PT0.0S">
19 <AdaptationSet id="0" group="1" mimeType="video/mp4" maxWidth="854" maxHeight="480" par="16:9" frameRate="17" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
20 <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="956E27CF-5993-49AF-BA30-62154A85FA02"/>
21 <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" value="Widevine">
22 <cenc:pssh>AAAARnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACYIARIQlW4nz1mTSa+6MGIVSoX6AhoAIgdUVkVfMDI2KgVTRF9IRA==</cenc:pssh>
23 </ContentProtection>
24 <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="Microsoft PlayReady">
25 <cenc:pssh>AAADCHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAujoAgAAAQABAN4CPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB6AHkAZAB1AGwAWgBOAFoAcgAwAG0ANgBNAEcASQBWAFMAbwBYADYAQQBnAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBwAHIAZAByAG0ALQBwAHIAbwBkAC4AbQBpAG4AZABpAGcAbwAuAGgAdQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBWAGwAUgA3AEkAZABzAEkASgBFAHUAUgBkADAANgBMAGEAcQBzADIAagB3AD0APQA8AC8ARABTAF8ASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBoAHcAUgBwADYAbwBqAG8AYwBGAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
26 <mspr:pro>6AIAAAEAAQDeAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AegB5AGQAdQBsAFoATgBaAHIAMABtADYATQBHAEkAVgBTAG8AWAA2AEEAZwA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcAByAGQAcgBtAC0AcAByAG8AZAAuAG0AaQBuAGQAaQBnAG8ALgBoAHUALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4AVgBsAFIANwBJAGQAcwBJAEoARQB1AFIAZAAwADYATABhAHEAcwAyAGoAdwA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AaAB3AFIAcAA2AG8AagBvAGMARgBRAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</mspr:pro>
27 </ContentProtection>
28 <SegmentTemplate timescale="90000" media="segment_uhzbbkq1n_ctvideo_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_uhzbbkq1n_ctvideo_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
29 <SegmentTimeline>
30 <S t="179411188410" d="720000"/>
31 <S d="720000"/>
32 <S d="720000"/>
33 <S d="720000"/>
34 <S d="720000"/>
35 </SegmentTimeline>
36 </SegmentTemplate>
37 <Representation id="p0va0br1500000" codecs="avc1.4d401e" width="854" height="480" sar="1:1" bandwidth="1500000" />
38 <Representation id="p0va0br700000" codecs="avc1.4d4015" width="576" height="324" sar="1:1" bandwidth="700000" />
39 </AdaptationSet>
40 <AdaptationSet id="1" group="2" mimeType="audio/mp4" lang="hun" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
41 <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
42 <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="956E27CF-5993-49AF-BA30-62154A85FA02"/>
43 <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" value="Widevine">
44 <cenc:pssh>AAAARnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACYIARIQlW4nz1mTSa+6MGIVSoX6AhoAIgdUVkVfMDI2KgVTRF9IRA==</cenc:pssh>
45 </ContentProtection>
46 <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="Microsoft PlayReady">
47 <cenc:pssh>AAADCHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAujoAgAAAQABAN4CPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB6AHkAZAB1AGwAWgBOAFoAcgAwAG0ANgBNAEcASQBWAFMAbwBYADYAQQBnAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBwAHIAZAByAG0ALQBwAHIAbwBkAC4AbQBpAG4AZABpAGcAbwAuAGgAdQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBWAGwAUgA3AEkAZABzAEkASgBFAHUAUgBkADAANgBMAGEAcQBzADIAagB3AD0APQA8AC8ARABTAF8ASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBoAHcAUgBwADYAbwBqAG8AYwBGAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
48 <mspr:pro>6AIAAAEAAQDeAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AegB5AGQAdQBsAFoATgBaAHIAMABtADYATQBHAEkAVgBTAG8AWAA2AEEAZwA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcAByAGQAcgBtAC0AcAByAG8AZAAuAG0AaQBuAGQAaQBnAG8ALgBoAHUALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4AVgBsAFIANwBJAGQAcwBJAEoARQB1AFIAZAAwADYATABhAHEAcwAyAGoAdwA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AaAB3AFIAcAA2AG8AagBvAGMARgBRAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</mspr:pro>
49 </ContentProtection>
50 <SegmentTemplate timescale="48000" media="segment_uhzbbkq1n_ctaudio_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_uhzbbkq1n_ctaudio_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
51 <SegmentTimeline>
52 <S t="95685861696" d="380928"/>
53 <S d="372768"/>
54 <S d="381936"/>
55 <S d="381936"/>
56 <S d="392208"/>
57 </SegmentTimeline>
58 </SegmentTemplate>
59 <Representation id="p0aa0br128000" codecs="mp4a.40.2" audioSamplingRate="48000" bandwidth="128000">
60 </Representation>
61 </AdaptationSet>
62 </Period>
63 <UTCTiming schemeIdUri="urn:mpeg:dash:utc:direct:2014" value="2021-05-30T11:17:43.035Z"/>
64 </MPD>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xmlns="urn:mpeg:dash:schema:mpd:2011"
3 xmlns:xlink="http://www.w3.org/1999/xlink"
4 xmlns:cenc="urn:mpeg:cenc:2013"
5 xmlns:mspr="urn:microsoft:playready"
6 xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
7 profiles="urn:mpeg:dash:profile:isoff-live:2011"
8 type="dynamic"
9 minimumUpdatePeriod="PT7.942S"
10 publishTime="2021-05-30T11:17:52.230Z"
11 availabilityStartTime="2021-05-07T09:32:36.454Z"
12 timeShiftBufferDepth="PT40.0S"
13 suggestedPresentationDelay="PT16.0S"
14 minBufferTime="PT6.0S">
15 <ProgramInformation>
16 <Title>TVE-026.smil</Title>
17 </ProgramInformation>
18 <Period id="0" start="PT0.0S">
19 <AdaptationSet id="0" group="1" mimeType="video/mp4" maxWidth="854" maxHeight="480" par="16:9" frameRate="17" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
20 <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="956E27CF-5993-49AF-BA30-62154A85FA02"/>
21 <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" value="Widevine">
22 <cenc:pssh>AAAARnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACYIARIQlW4nz1mTSa+6MGIVSoX6AhoAIgdUVkVfMDI2KgVTRF9IRA==</cenc:pssh>
23 </ContentProtection>
24 <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="Microsoft PlayReady">
25 <cenc:pssh>AAADCHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAujoAgAAAQABAN4CPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB6AHkAZAB1AGwAWgBOAFoAcgAwAG0ANgBNAEcASQBWAFMAbwBYADYAQQBnAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBwAHIAZAByAG0ALQBwAHIAbwBkAC4AbQBpAG4AZABpAGcAbwAuAGgAdQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBWAGwAUgA3AEkAZABzAEkASgBFAHUAUgBkADAANgBMAGEAcQBzADIAagB3AD0APQA8AC8ARABTAF8ASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBoAHcAUgBwADYAbwBqAG8AYwBGAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
26 <mspr:pro>6AIAAAEAAQDeAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AegB5AGQAdQBsAFoATgBaAHIAMABtADYATQBHAEkAVgBTAG8AWAA2AEEAZwA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcAByAGQAcgBtAC0AcAByAG8AZAAuAG0AaQBuAGQAaQBnAG8ALgBoAHUALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4AVgBsAFIANwBJAGQAcwBJAEoARQB1AFIAZAAwADYATABhAHEAcwAyAGoAdwA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AaAB3AFIAcAA2AG8AagBvAGMARgBRAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</mspr:pro>
27 </ContentProtection>
28 <SegmentTemplate timescale="90000" media="segment_uhzbbkq1n_ctvideo_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_uhzbbkq1n_ctvideo_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
29 <SegmentTimeline>
30 <S t="179412628410" d="720000"/>
31 <S d="720000"/>
32 <S d="720000"/>
33 <S d="720000"/>
34 <S d="720000"/>
35 </SegmentTimeline>
36 </SegmentTemplate>
37 <Representation id="p0va0br1500000" codecs="avc1.4d401e" width="854" height="480" sar="1:1" bandwidth="1500000" />
38 <Representation id="p0va0br700000" codecs="avc1.4d4015" width="576" height="324" sar="1:1" bandwidth="700000" />
39 </AdaptationSet>
40 <AdaptationSet id="1" group="2" mimeType="audio/mp4" lang="hun" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
41 <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
42 <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="956E27CF-5993-49AF-BA30-62154A85FA02"/>
43 <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" value="Widevine">
44 <cenc:pssh>AAAARnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACYIARIQlW4nz1mTSa+6MGIVSoX6AhoAIgdUVkVfMDI2KgVTRF9IRA==</cenc:pssh>
45 </ContentProtection>
46 <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="Microsoft PlayReady">
47 <cenc:pssh>AAADCHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAujoAgAAAQABAN4CPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB6AHkAZAB1AGwAWgBOAFoAcgAwAG0ANgBNAEcASQBWAFMAbwBYADYAQQBnAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBwAHIAZAByAG0ALQBwAHIAbwBkAC4AbQBpAG4AZABpAGcAbwAuAGgAdQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBWAGwAUgA3AEkAZABzAEkASgBFAHUAUgBkADAANgBMAGEAcQBzADIAagB3AD0APQA8AC8ARABTAF8ASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBoAHcAUgBwADYAbwBqAG8AYwBGAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
48 <mspr:pro>6AIAAAEAAQDeAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AegB5AGQAdQBsAFoATgBaAHIAMABtADYATQBHAEkAVgBTAG8AWAA2AEEAZwA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcAByAGQAcgBtAC0AcAByAG8AZAAuAG0AaQBuAGQAaQBnAG8ALgBoAHUALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4AVgBsAFIANwBJAGQAcwBJAEoARQB1AFIAZAAwADYATABhAHEAcwAyAGoAdwA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AaAB3AFIAcAA2AG8AagBvAGMARgBRAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</mspr:pro>
49 </ContentProtection>
50 <SegmentTemplate timescale="48000" media="segment_uhzbbkq1n_ctaudio_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_uhzbbkq1n_ctaudio_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
51 <SegmentTimeline>
52 <S t="95686617408" d="381936"/>
53 <S d="381936"/>
54 <S d="392208"/>
55 <S d="381984"/>
56 <S d="381936"/>
57 </SegmentTimeline>
58 </SegmentTemplate>
59 <Representation id="p0aa0br128000" codecs="mp4a.40.2" audioSamplingRate="48000" bandwidth="128000">
60 </Representation>
61 </AdaptationSet>
62 </Period>
63 <UTCTiming schemeIdUri="urn:mpeg:dash:utc:direct:2014" value="2021-05-30T11:17:52.230Z"/>
64 </MPD>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xmlns="urn:mpeg:dash:schema:mpd:2011"
3 xmlns:xlink="http://www.w3.org/1999/xlink"
4 xmlns:cenc="urn:mpeg:cenc:2013"
5 xmlns:mspr="urn:microsoft:playready"
6 xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
7 profiles="urn:mpeg:dash:profile:isoff-live:2011"
8 type="dynamic"
9 minimumUpdatePeriod="PT6.751S"
10 publishTime="2021-05-30T11:18:01.421Z"
11 availabilityStartTime="2021-05-07T09:32:36.454Z"
12 timeShiftBufferDepth="PT40.0S"
13 suggestedPresentationDelay="PT16.0S"
14 minBufferTime="PT6.0S">
15 <ProgramInformation>
16 <Title>TVE-026.smil</Title>
17 </ProgramInformation>
18 <Period id="0" start="PT0.0S">
19 <AdaptationSet id="0" group="1" mimeType="video/mp4" maxWidth="854" maxHeight="480" par="16:9" frameRate="17" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
20 <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="956E27CF-5993-49AF-BA30-62154A85FA02"/>
21 <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" value="Widevine">
22 <cenc:pssh>AAAARnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACYIARIQlW4nz1mTSa+6MGIVSoX6AhoAIgdUVkVfMDI2KgVTRF9IRA==</cenc:pssh>
23 </ContentProtection>
24 <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="Microsoft PlayReady">
25 <cenc:pssh>AAADCHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAujoAgAAAQABAN4CPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB6AHkAZAB1AGwAWgBOAFoAcgAwAG0ANgBNAEcASQBWAFMAbwBYADYAQQBnAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBwAHIAZAByAG0ALQBwAHIAbwBkAC4AbQBpAG4AZABpAGcAbwAuAGgAdQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBWAGwAUgA3AEkAZABzAEkASgBFAHUAUgBkADAANgBMAGEAcQBzADIAagB3AD0APQA8AC8ARABTAF8ASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBoAHcAUgBwADYAbwBqAG8AYwBGAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
26 <mspr:pro>6AIAAAEAAQDeAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AegB5AGQAdQBsAFoATgBaAHIAMABtADYATQBHAEkAVgBTAG8AWAA2AEEAZwA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcAByAGQAcgBtAC0AcAByAG8AZAAuAG0AaQBuAGQAaQBnAG8ALgBoAHUALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4AVgBsAFIANwBJAGQAcwBJAEoARQB1AFIAZAAwADYATABhAHEAcwAyAGoAdwA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AaAB3AFIAcAA2AG8AagBvAGMARgBRAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</mspr:pro>
27 </ContentProtection>
28 <SegmentTemplate timescale="90000" media="segment_uhzbbkq1n_ctvideo_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_uhzbbkq1n_ctvideo_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
29 <SegmentTimeline>
30 <S t="179413348410" d="720000"/>
31 <S d="720000"/>
32 <S d="720000"/>
33 <S d="720000"/>
34 <S d="720000"/>
35 </SegmentTimeline>
36 </SegmentTemplate>
37 <Representation id="p0va0br1500000" codecs="avc1.4d401e" width="854" height="480" sar="1:1" bandwidth="1500000" />
38 <Representation id="p0va0br700000" codecs="avc1.4d4015" width="576" height="324" sar="1:1" bandwidth="700000" />
39 </AdaptationSet>
40 <AdaptationSet id="1" group="2" mimeType="audio/mp4" lang="hun" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
41 <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
42 <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="956E27CF-5993-49AF-BA30-62154A85FA02"/>
43 <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" value="Widevine">
44 <cenc:pssh>AAAARnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACYIARIQlW4nz1mTSa+6MGIVSoX6AhoAIgdUVkVfMDI2KgVTRF9IRA==</cenc:pssh>
45 </ContentProtection>
46 <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="Microsoft PlayReady">
47 <cenc:pssh>AAADCHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAujoAgAAAQABAN4CPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB6AHkAZAB1AGwAWgBOAFoAcgAwAG0ANgBNAEcASQBWAFMAbwBYADYAQQBnAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBwAHIAZAByAG0ALQBwAHIAbwBkAC4AbQBpAG4AZABpAGcAbwAuAGgAdQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBWAGwAUgA3AEkAZABzAEkASgBFAHUAUgBkADAANgBMAGEAcQBzADIAagB3AD0APQA8AC8ARABTAF8ASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBoAHcAUgBwADYAbwBqAG8AYwBGAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
48 <mspr:pro>6AIAAAEAAQDeAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AegB5AGQAdQBsAFoATgBaAHIAMABtADYATQBHAEkAVgBTAG8AWAA2AEEAZwA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcAByAGQAcgBtAC0AcAByAG8AZAAuAG0AaQBuAGQAaQBnAG8ALgBoAHUALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4AVgBsAFIANwBJAGQAcwBJAEoARQB1AFIAZAAwADYATABhAHEAcwAyAGoAdwA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AaAB3AFIAcAA2AG8AagBvAGMARgBRAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</mspr:pro>
49 </ContentProtection>
50 <SegmentTemplate timescale="48000" media="segment_uhzbbkq1n_ctaudio_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_uhzbbkq1n_ctaudio_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
51 <SegmentTimeline>
52 <S t="95687000400" d="381936"/>
53 <S d="392208"/>
54 <S d="381984"/>
55 <S d="381936"/>
56 <S d="381936"/>
57 </SegmentTimeline>
58 </SegmentTemplate>
59 <Representation id="p0aa0br128000" codecs="mp4a.40.2" audioSamplingRate="48000" bandwidth="128000">
60 </Representation>
61 </AdaptationSet>
62 </Period>
63 <UTCTiming schemeIdUri="urn:mpeg:dash:utc:direct:2014" value="2021-05-30T11:18:01.421Z"/>
64 </MPD>
0 <?xml version="1.0" encoding="UTF-8"?>
1 <MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xmlns="urn:mpeg:dash:schema:mpd:2011"
3 xmlns:xlink="http://www.w3.org/1999/xlink"
4 xmlns:cenc="urn:mpeg:cenc:2013"
5 xmlns:mspr="urn:microsoft:playready"
6 xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
7 profiles="urn:mpeg:dash:profile:isoff-live:2011"
8 type="dynamic"
9 minimumUpdatePeriod="PT6.751S"
10 publishTime="2021-05-30T11:18:01.421Z"
11 availabilityStartTime="2021-05-07T09:32:36.454Z"
12 timeShiftBufferDepth="PT40.0S"
13 suggestedPresentationDelay="PT16.0S"
14 minBufferTime="PT6.0S">
15 <ProgramInformation>
16 <Title>TVE-026.smil</Title>
17 </ProgramInformation>
18 <Period id="0" start="PT0.0S">
19 <AdaptationSet id="0" group="1" mimeType="video/mp4" maxWidth="854" maxHeight="480" par="16:9" frameRate="17" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
20 <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="956E27CF-5993-49AF-BA30-62154A85FA02"/>
21 <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" value="Widevine">
22 <cenc:pssh>AAAARnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACYIARIQlW4nz1mTSa+6MGIVSoX6AhoAIgdUVkVfMDI2KgVTRF9IRA==</cenc:pssh>
23 </ContentProtection>
24 <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="Microsoft PlayReady">
25 <cenc:pssh>AAADCHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAujoAgAAAQABAN4CPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB6AHkAZAB1AGwAWgBOAFoAcgAwAG0ANgBNAEcASQBWAFMAbwBYADYAQQBnAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBwAHIAZAByAG0ALQBwAHIAbwBkAC4AbQBpAG4AZABpAGcAbwAuAGgAdQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBWAGwAUgA3AEkAZABzAEkASgBFAHUAUgBkADAANgBMAGEAcQBzADIAagB3AD0APQA8AC8ARABTAF8ASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBoAHcAUgBwADYAbwBqAG8AYwBGAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
26 <mspr:pro>6AIAAAEAAQDeAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AegB5AGQAdQBsAFoATgBaAHIAMABtADYATQBHAEkAVgBTAG8AWAA2AEEAZwA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcAByAGQAcgBtAC0AcAByAG8AZAAuAG0AaQBuAGQAaQBnAG8ALgBoAHUALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4AVgBsAFIANwBJAGQAcwBJAEoARQB1AFIAZAAwADYATABhAHEAcwAyAGoAdwA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AaAB3AFIAcAA2AG8AagBvAGMARgBRAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</mspr:pro>
27 </ContentProtection>
28 <SegmentTemplate timescale="90000" media="segment_uhzbbkq1n_ctvideo_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_uhzbbkq1n_ctvideo_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
29 <SegmentTimeline>
30 <S t="179413348410" d="720000"/>
31 <S d="720000"/>
32 <S d="720000"/>
33 <S d="720000"/>
34 <S d="720000"/>
35 </SegmentTimeline>
36 </SegmentTemplate>
37 <Representation id="p0va0br1500000" codecs="avc1.4d401e" width="854" height="480" sar="1:1" bandwidth="1500000" />
38 <Representation id="p0va0br700000" codecs="avc1.4d4015" width="576" height="324" sar="1:1" bandwidth="700000" />
39 </AdaptationSet>
40 <AdaptationSet id="1" group="2" mimeType="audio/mp4" lang="hun" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
41 <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
42 <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="956E27CF-5993-49AF-BA30-62154A85FA02"/>
43 <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" value="Widevine">
44 <cenc:pssh>AAAARnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAACYIARIQlW4nz1mTSa+6MGIVSoX6AhoAIgdUVkVfMDI2KgVTRF9IRA==</cenc:pssh>
45 </ContentProtection>
46 <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value="Microsoft PlayReady">
47 <cenc:pssh>AAADCHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAujoAgAAAQABAN4CPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB6AHkAZAB1AGwAWgBOAFoAcgAwAG0ANgBNAEcASQBWAFMAbwBYADYAQQBnAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBwAHIAZAByAG0ALQBwAHIAbwBkAC4AbQBpAG4AZABpAGcAbwAuAGgAdQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBWAGwAUgA3AEkAZABzAEkASgBFAHUAUgBkADAANgBMAGEAcQBzADIAagB3AD0APQA8AC8ARABTAF8ASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBoAHcAUgBwADYAbwBqAG8AYwBGAFEAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
48 <mspr:pro>6AIAAAEAAQDeAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AegB5AGQAdQBsAFoATgBaAHIAMABtADYATQBHAEkAVgBTAG8AWAA2AEEAZwA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcAByAGQAcgBtAC0AcAByAG8AZAAuAG0AaQBuAGQAaQBnAG8ALgBoAHUALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4AVgBsAFIANwBJAGQAcwBJAEoARQB1AFIAZAAwADYATABhAHEAcwAyAGoAdwA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AaAB3AFIAcAA2AG8AagBvAGMARgBRAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A</mspr:pro>
49 </ContentProtection>
50 <SegmentTemplate timescale="48000" media="segment_uhzbbkq1n_ctaudio_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="segment_uhzbbkq1n_ctaudio_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
51 <SegmentTimeline>
52 <S t="95687382337" d="392208"/>
53 <S d="381984"/>
54 <S d="381936"/>
55 <S d="381936"/>
56 <S d="381999"/>
57 </SegmentTimeline>
58 </SegmentTemplate>
59 <Representation id="p0aa0br128000" codecs="mp4a.40.2" audioSamplingRate="48000" bandwidth="128000">
60 </Representation>
61 </AdaptationSet>
62 </Period>
63 <UTCTiming schemeIdUri="urn:mpeg:dash:utc:direct:2014" value="2021-05-30T11:18:01.421Z"/>
64 </MPD>
0 <?xml version="1.0"?>
1 <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" availabilityStartTime="2021-06-06T18:49:02Z" maxSegmentDuration="PT4.096S" minBufferTime="PT4.096S" minimumUpdatePeriod="PT8.000S" profiles="urn:mpeg:dash:profile:isoff-live:2011" publishTime="2021-06-06T19:38:20Z" suggestedPresentationDelay="PT12.288S" timeShiftBufferDepth="PT180.000S" type="dynamic">
2 <Period id="2924.544000" start="PT2924.544000S">
3 <AssetIdentifier schemeIdUri="urn:org:dashif:asset-id:2013" value="51aaf401283c45de9aa6d7369c0910d7"/>
4 <AdaptationSet contentType="video" id="1" maxFrameRate="30" maxHeight="504" maxWidth="896" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1">
5 <SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="2"/>
6 <InbandEventStream schemeIdUri="com.uplynk.asset.metadata"/>
7 <Representation bandwidth="41431" codecs="avc1.42000b" frameRate="22" height="54" id="A" scanType="progressive" width="96">
8 <BaseURL>https://foo.bar/mpd/slices/</BaseURL>
9 <SegmentTemplate initialization="$RepresentationID$_init.mp4" media="$RepresentationID$$Number%08d$.m4f" presentationTimeOffset="263208960" startNumber="714" timescale="90000">
10 <SegmentTimeline>
11 <S d="368640" r="7" t="263208960"/>
12 </SegmentTimeline>
13 </SegmentTemplate>
14 </Representation>
15 <Representation bandwidth="41431" codecs="avc1.42000b" frameRate="22" height="54" id="B" scanType="progressive" width="96">
16 <SegmentTemplate initialization="$RepresentationID$_init.mp4" media="$RepresentationID$$Number%08d$.m4f" presentationTimeOffset="263208960" startNumber="714" timescale="90000">
17 <SegmentTimeline>
18 <S d="368640" r="7" t="263208960"/>
19 </SegmentTimeline>
20 </SegmentTemplate>
21 </Representation>
22 </AdaptationSet>
23 <AdaptationSet contentType="video" id="2" maxFrameRate="30" maxHeight="504" maxWidth="896" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1">
24 <BaseURL>https://foo.bar/mpd/slices2/</BaseURL>
25 <SupplementalProperty schemeIdUri="urn:mpeg:dash:adaptation-set-switching:2016" value="2"/>
26 <InbandEventStream schemeIdUri="com.uplynk.asset.metadata"/>
27 <Representation bandwidth="41431" codecs="avc1.42000b" frameRate="22" height="54" id="A" scanType="progressive" width="96">
28 <BaseURL>https://foo.bar/mpd/slices/</BaseURL>
29 <SegmentTemplate initialization="$RepresentationID$_init.mp4" media="$RepresentationID$$Number%08d$.m4f" presentationTimeOffset="263208960" startNumber="714" timescale="90000">
30 <SegmentTimeline>
31 <S d="368640" r="7" t="263208960"/>
32 </SegmentTimeline>
33 </SegmentTemplate>
34 </Representation>
35 <Representation bandwidth="41431" codecs="avc1.42000b" frameRate="22" height="54" id="B" scanType="progressive" width="96">
36 <SegmentTemplate initialization="$RepresentationID$_init.mp4" media="$RepresentationID$$Number%08d$.m4f" presentationTimeOffset="263208960" startNumber="714" timescale="90000">
37 <SegmentTimeline>
38 <S d="368640" r="7" t="263208960"/>
39 </SegmentTimeline>
40 </SegmentTemplate>
41 </Representation>
42 <Representation bandwidth="41431" codecs="avc1.42000b" frameRate="22" height="54" id="C" scanType="progressive" width="96">
43 <SegmentTemplate initialization="$RepresentationID$_init.mp4" media="$RepresentationID$$Number%08d$.m4f" presentationTimeOffset="263208960" startNumber="714" timescale="90000">
44 <SegmentTimeline>
45 <S d="368640" r="7" t="263208960"/>
46 </SegmentTimeline>
47 </SegmentTemplate>
48 </Representation>
49 </AdaptationSet>
50 </Period>
51 <UTCTiming schemeIdUri="urn:mpeg:dash:utc:http-iso:2014" value="https://content-aeui1.uplynk.com/misc/utcservertime"/>
52 </MPD>
00 <?xml version="1.0" encoding="utf-8"?>
11 <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" availabilityStartTime="1970-01-01T00:00:00Z" maxSegmentDuration="PT2S" minBufferTime="PT2S" minimumUpdatePeriod="P100Y" profiles="urn:mpeg:dash:profile:isoff-live:2011,http://dashif.org/guidelines/dash-if-simple" publishTime="2020-06-08T18:54:24Z" timeShiftBufferDepth="PT5M" type="dynamic" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd">
22 <Period id="p0" start="PT0S">
3 <AdaptationSet contentType="audio" lang="en" mimeType="audio/mp4" segmentAlignment="true" startWithSAP="1">
4 <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main" />
5 <SegmentTemplate duration="2" initialization="$RepresentationID$/init.mp4" media="$RepresentationID$/$Number$.m4s" startNumber="0" />
6 <Representation audioSamplingRate="48000" bandwidth="48000" codecs="mp4a.40.2" id="A48">
7 <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
8 </Representation>
9 </AdaptationSet>
103 <AdaptationSet contentType="video" maxFrameRate="60/2" maxHeight="360" maxWidth="640" mimeType="video/mp4" minHeight="360" minWidth="640" par="16:9" segmentAlignment="true" startWithSAP="1">
114 <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main" />
125 <SegmentTemplate duration="2" initialization="$RepresentationID$/init.mp4" media="$RepresentationID$/$Number$.m4s" startNumber="0" />
136 <Representation bandwidth="300000" codecs="avc1.64001e" frameRate="60/2" height="360" id="V300" sar="1:1" width="640" />
147 </AdaptationSet>
8 <AdaptationSet contentType="audio" lang="en" mimeType="audio/mp4" segmentAlignment="true" startWithSAP="1">
9 <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main" />
10 <SegmentTemplate duration="2" initialization="/$RepresentationID$/init.mp4" media="/$RepresentationID$/$Number$.m4s" startNumber="0" />
11 <Representation audioSamplingRate="48000" bandwidth="48000" codecs="mp4a.40.2" id="A48">
12 <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
13 </Representation>
14 </AdaptationSet>
1515 </Period>
1616 </MPD>
0 <?xml version="1.0" encoding="utf-8"?>
1 <MPD mediaPresentationDuration="PT1M38.624S" minBufferTime="PT4S" profiles="urn:mpeg:dash:profile:isoff-main:2011" type="static" xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:cenc="urn:mpeg:cenc:2013" xmlns:mspr="urn:microsoft:playready" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd">
2 <Period duration="PT1M38.624S" id="1" start="PT0S">
3 <AdaptationSet bitstreamSwitching="false" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1" xmlns:cenc="urn:mpeg:cenc:2013">
4 <SegmentTemplate startNumber="5" timescale="120000"/>
5 <Representation bandwidth="600000" codecs="avc1.4d4015" frameRate="30000/1001" height="252" id="1" width="448">
6 <SegmentTemplate initialization="3c1055cb-a842-4449-b393-7f31693b4a8f_1_448x252init.mp4" media="3c1055cb-a842-4449-b393-7f31693b4a8f_1_448x252_$Number%09d$.mp4" startNumber="3">
7 <SegmentTimeline>
8 <S d="360360" r="23" t="0"/>
9 <S d="225225" t="8648640"/>
10 </SegmentTimeline>
11 </SegmentTemplate>
12 </Representation>
13 <Representation bandwidth="7000000" codecs="avc1.64002a" frameRate="60000/1001" height="1080" id="2" width="1920">
14 <SegmentTemplate initialization="3c1055cb-a842-4449-b393-7f31693b4a8f_2_1920x1080init.mp4" media="3c1055cb-a842-4449-b393-7f31693b4a8f_2_1920x1080_$Number%09d$.mp4" timescale="90000">
15 <SegmentTimeline>
16 <S d="480480" r="23" t="0"/>
17 <S d="298298" t="11531520"/>
18 </SegmentTimeline>
19 </SegmentTemplate>
20 </Representation>
21 </AdaptationSet>
22 <AdaptationSet lang="eng" mimeType="audio/mp4" segmentAlignment="0" xmlns:cenc="urn:mpeg:cenc:2013">
23 <SegmentTemplate initialization="abc_aac1init.mp4" media="abc2_$Number%09d$.mp4" timescale="48000"/>
24 <Label>AAC1</Label>
25 <Representation audioSamplingRate="48000" bandwidth="96000" codecs="mp4a.40.2" id="3">
26 <SegmentTemplate initialization="3c1055cb-a842-4449-b393-7f31693b4a8f_aac1init.mp4" media="3c1055cb-a842-4449-b393-7f31693b4a8f_aac1_$Number%09d$.mp4">
27 <SegmentTimeline>
28 <S d="194560" t="0"/>
29 </SegmentTimeline>
30 </SegmentTemplate>
31 </Representation>
32 </AdaptationSet>
33 <AdaptationSet lang="fr" mimeType="audio/mp4" segmentAlignment="0" xmlns:cenc="urn:mpeg:cenc:2013">
34 <SegmentTemplate initialization="abc_aac1init.mp4" media="abc2_$Number%09d$.mp4" timescale="48000"/>
35 <Label>AAC1</Label>
36 <Representation audioSamplingRate="48000" bandwidth="96000" codecs="mp4a.40.2" id="4">
37 <SegmentTemplate startNumber="5" timescale="68000">
38 <SegmentTimeline>
39 <S d="194560" t="0"/>
40 </SegmentTimeline>
41 </SegmentTemplate>
42 </Representation>
43 </AdaptationSet>
44 </Period>
45 </MPD>
6262
6363 } // namespace
6464
65 std::atomic<bool> exit_thread_flag;
66 std::atomic<bool> timer_thread_running;
67
6568 void timerfunc(std::shared_ptr<CdmAdapter> adp, uint64_t delay, void* context)
6669 {
67 std::this_thread::sleep_for(std::chrono::milliseconds(delay));
68 adp->TimerExpired(context);
70 timer_thread_running = true;
71 uint64_t waited = 0;
72 while (!exit_thread_flag && delay > waited)
73 {
74 std::this_thread::sleep_for(std::chrono::milliseconds(100));
75 waited += 100;
76 }
77 if (!exit_thread_flag)
78 {
79 adp->TimerExpired(context);
80 }
81 timer_thread_running = false;
6982 }
7083
7184 cdm::AudioDecoderConfig_1 ToAudioDecoderConfig_1(
120133 , cdm_config_(cdm_config)
121134 , active_buffer_(0)
122135 , cdm9_(0), cdm10_(0), cdm11_(0)
136 , session_active_(false)
123137 {
124138 //DCHECK(!key_system_.empty());
125139 Initialize();
127141
128142 CdmAdapter::~CdmAdapter()
129143 {
144 exit_thread_flag = true;
145 while (timer_thread_running)
146 {
147 std::this_thread::sleep_for(std::chrono::milliseconds(100));
148 }
130149 if (cdm9_)
131150 cdm9_->Destroy(), cdm9_ = nullptr;
132151 else if (cdm10_)
143162
144163 void CdmAdapter::Initialize()
145164 {
165 exit_thread_flag = false;
166 timer_thread_running = false;
146167 if (cdm9_ || cdm10_ || cdm11_)
147168 {
148169 if (cdm9_)
159180 library_ = base::LoadNativeLibrary(cdm_path_, &error);
160181
161182 if (!library_)
183 {
184 std::string log_error = "CDM LoadNativeLibrary error: " + error.ToString();
185 client_->CDMLog(log_error.c_str());
162186 return;
187 }
163188
164189 init_cdm_func = reinterpret_cast<InitializeCdmModuleFunc>(base::GetFunctionPointerFromNativeLibrary(library_, MAKE_STRING(INITIALIZE_CDM_MODULE)));
165190 deinit_cdm_func = reinterpret_cast<DeinitializeCdmModuleFunc>(base::GetFunctionPointerFromNativeLibrary(library_, "DeinitializeCdmModule"));
302327 response, response_size);
303328 }
304329
330 void CdmAdapter::SetSessionActive(bool isActive)
331 {
332 session_active_ = isActive;
333 }
334
335 bool CdmAdapter::IsSessionActive()
336 {
337 return session_active_;
338 }
339
305340 void CdmAdapter::CloseSession(uint32_t promise_id,
306341 const char* session_id,
307342 uint32_t session_id_size)
308343 {
344 session_active_ = false;
345 exit_thread_flag = true;
346 while (timer_thread_running)
347 {
348 std::this_thread::sleep_for(std::chrono::milliseconds(100));
349 }
309350 if (cdm9_)
310351 cdm9_->CloseSession(promise_id, session_id, session_id_size);
311352 else if (cdm10_)
474515
475516 void CdmAdapter::SetTimer(int64_t delay_ms, void* context)
476517 {
477 //LICENSERENEWAL std::thread(timerfunc, shared_from_this(), delay_ms, context).detach();
518 //LICENSERENEWAL
519 if (session_active_)
520 {
521 exit_thread_flag = false;
522 std::thread(timerfunc, shared_from_this(), delay_ms, context).detach();
523 }
478524 }
479525
480526 cdm::Time CdmAdapter::GetCurrentWallTime()
55 #include <inttypes.h>
66 #include <memory>
77 #include <mutex>
8 #include <atomic>
89
910 #include "../../base/native_library.h"
1011 #include "../../base/compiler_specific.h"
99100 const uint8_t* response,
100101 uint32_t response_size);
101102
103 void SetSessionActive(bool isActive);
104
105 bool IsSessionActive();
106
102107 void CloseSession(uint32_t promise_id,
103108 const char* session_id,
104109 uint32_t session_id_size);
237242 cdm::ContentDecryptionModule_10 *cdm10_;
238243 cdm::ContentDecryptionModule_11 *cdm11_;
239244
245 std::atomic<bool> session_active_;
246
240247 DISALLOW_COPY_AND_ASSIGN(CdmAdapter);
241248 };
242249
168168 {
169169 public:
170170 // methods
171 WV_CencSingleSampleDecrypter(WV_DRM &drm, AP4_DataBuffer &pssh, const uint8_t *defaultKeyId);
171 WV_CencSingleSampleDecrypter(WV_DRM &drm, AP4_DataBuffer &pssh, const uint8_t *defaultKeyId, bool skipSessionMessage);
172172 virtual ~WV_CencSingleSampleDecrypter();
173173
174174 void GetCapabilities(const uint8_t* key, uint32_t media, SSD_DECRYPTER::SSD_CAPS &caps);
175175 virtual const char *GetSessionId() override;
176 void SetSessionActive();
177 void CloseSessionId();
178 AP4_DataBuffer GetChallengeData();
179
176180 void SetSession(const char* session, uint32_t session_size, const uint8_t *data, size_t data_size)
177181 {
178182 std::lock_guard<std::mutex> lock(renewal_lock_);
179183
180184 session_ = std::string(session, session_size);
181185 challenge_.SetData(data, data_size);
186 Log(SSD_HOST::LL_DEBUG, "%s: opened session with Id: %s", __func__, session_.c_str());
182187 }
183188
184189 void AddSessionKey(const uint8_t *data, size_t data_size, uint32_t status);
387392 return;
388393
389394 if (msg == CDMADPMSG::kSessionMessage)
395 {
390396 (*b)->SetSession(session, session_size, data, data_size);
397 (*b)->SetSessionActive();
398 }
391399 else if (msg == CDMADPMSG::kSessionKeysChange)
392400 (*b)->AddSessionKey(data, data_size, status);
393401 };
396404 | WV_CencSingleSampleDecrypter::WV_CencSingleSampleDecrypter
397405 +---------------------------------------------------------------------*/
398406
399 WV_CencSingleSampleDecrypter::WV_CencSingleSampleDecrypter(WV_DRM &drm, AP4_DataBuffer &pssh, const uint8_t *defaultKeyId)
407 WV_CencSingleSampleDecrypter::WV_CencSingleSampleDecrypter(WV_DRM &drm, AP4_DataBuffer &pssh, const uint8_t *defaultKeyId, bool skipSessionMessage)
400408 : AP4_CencSingleSampleDecrypter(0)
401409 , drm_(drm)
402410 , pssh_(pssh)
462470 reinterpret_cast<const uint8_t *>(pssh_.GetData()), pssh_.GetDataSize());
463471
464472 int retrycount=0;
465 while (session_.empty() && ++retrycount < 100)
473 while (!drm.GetCdmAdapter()->IsSessionActive() && ++retrycount < 100)
466474 std::this_thread::sleep_for(std::chrono::milliseconds(10));
467475
468476 if (session_.empty())
471479 return;
472480 }
473481
482 if (skipSessionMessage)
483 return;
484
474485 while (challenge_.GetDataSize() > 0 && SendSessionMessage());
475486
476487 if (keys_.empty())
477488 {
478489 Log(SSD_HOST::LL_ERROR, "License update not successful (no keys)");
479 drm_.GetCdmAdapter()->CloseSession(++promise_id_, session_.data(), session_.size());
480 session_.clear();
490 CloseSessionId();
481491 return;
482492 }
483493 Log(SSD_HOST::LL_DEBUG, "License update successful");
485495
486496 WV_CencSingleSampleDecrypter::~WV_CencSingleSampleDecrypter()
487497 {
488 if (!session_.empty())
489 drm_.GetCdmAdapter()->CloseSession(++promise_id_, session_.data(), session_.size());
490498 drm_.removessd(this);
491499 free(subsample_buffer_decrypt_);
492500 free(subsample_buffer_video_);
570578 const char *WV_CencSingleSampleDecrypter::GetSessionId()
571579 {
572580 return session_.empty()? nullptr : session_.c_str();
581 }
582
583 void WV_CencSingleSampleDecrypter::SetSessionActive()
584 {
585 drm_.GetCdmAdapter()->SetSessionActive(true);
586 }
587
588 void WV_CencSingleSampleDecrypter::CloseSessionId()
589 {
590 if (!session_.empty())
591 {
592 Log(SSD_HOST::LL_DEBUG, "%s: close session with Id: %s", __func__, session_.c_str());
593 drm_.GetCdmAdapter()->CloseSession(++promise_id_, session_.data(), session_.size());
594 session_.clear();
595
596 Log(SSD_HOST::LL_DEBUG, "%s: session closed", __func__);
597 }
598 }
599
600 AP4_DataBuffer WV_CencSingleSampleDecrypter::GetChallengeData()
601 {
602 return challenge_;
573603 }
574604
575605 void WV_CencSingleSampleDecrypter::CheckLicenseRenewal()
773803
774804 if (!resLimit.empty())
775805 {
776 std::string::size_type posMax = resLimit.find("max=", 0);
806 std::string::size_type posMax = resLimit.find("max=");
777807 if (posMax != std::string::npos)
778808 resolution_limit_ = atoi(resLimit.data() + (posMax + 4));
779809 }
11401170
11411171 bool useSingleDecrypt(false);
11421172
1143 if ((fragInfo.decrypter_flags_ & SSD_DECRYPTER::SSD_CAPS::SSD_SINGLE_DECRYPT) != 0 && subsample_count > 1)
1173 // CDM should get 1 block of encrypted data per sample, encrypted data
1174 // from all subsamples should be formed into a contiguous block.
1175 // Even if there is only 1 subsample, we should remove cleartext data
1176 // from it before passing to CDM.
1177 if ((fragInfo.decrypter_flags_ & SSD_DECRYPTER::SSD_CAPS::SSD_SINGLE_DECRYPT) != 0)
11441178 {
11451179 decrypt_in_.Reserve(data_in.GetDataSize());
11461180 decrypt_in_.SetDataSize(0);
11991233 CdmDecryptedBlock cdm_out;
12001234 cdm_out.SetDecryptedBuffer(&buf);
12011235
1202 //LICENSERENEWAL: CheckLicenseRenewal();
1236 //LICENSERENEWAL:
1237 CheckLicenseRenewal();
12031238 cdm::Status ret = drm_.GetCdmAdapter()->Decrypt(cdm_in, &cdm_out);
12041239
12051240 if (ret == cdm::Status::kSuccess && useSingleDecrypt)
12951330 drained_ = false;
12961331
12971332 //DecryptAndDecode calls Alloc wich cals kodi VideoCodec. Set instance handle.
1298 //LICENSERENEWAL: CheckLicenseRenewal();
1333 //LICENSERENEWAL:
1334 CheckLicenseRenewal();
12991335 media::CdmVideoFrame frame;
13001336 cdm::Status ret = drm_.DecryptAndDecodeFrame(hostInstance, cdm_in, &frame);
13011337
13971433 return cdmsession_->GetCdmAdapter() != nullptr;
13981434 }
13991435
1400 virtual AP4_CencSingleSampleDecrypter *CreateSingleSampleDecrypter(AP4_DataBuffer &pssh, const char *optionalKeyParameter, const uint8_t *defaultkeyid) override
1401 {
1402 WV_CencSingleSampleDecrypter *decrypter = new WV_CencSingleSampleDecrypter(*cdmsession_, pssh, defaultkeyid);
1436 virtual AP4_CencSingleSampleDecrypter *CreateSingleSampleDecrypter(AP4_DataBuffer &pssh, const char *optionalKeyParameter, const uint8_t *defaultkeyid, bool skipSessionMessage) override
1437 {
1438 WV_CencSingleSampleDecrypter *decrypter = new WV_CencSingleSampleDecrypter(*cdmsession_, pssh, defaultkeyid, skipSessionMessage);
14031439 if (!decrypter->GetSessionId())
14041440 {
14051441 delete decrypter;
14111447 virtual void DestroySingleSampleDecrypter(AP4_CencSingleSampleDecrypter* decrypter) override
14121448 {
14131449 if (decrypter)
1450 {
1451 // close session before dispose
1452 static_cast<WV_CencSingleSampleDecrypter*>(decrypter)->CloseSessionId();
14141453 delete static_cast<WV_CencSingleSampleDecrypter*>(decrypter);
1454 }
14151455 }
14161456
14171457 virtual void GetCapabilities(AP4_CencSingleSampleDecrypter* decrypter, const uint8_t *keyid, uint32_t media, SSD_DECRYPTER::SSD_CAPS &caps) override
14301470 if (decrypter)
14311471 return static_cast<WV_CencSingleSampleDecrypter*>(decrypter)->HasKeyId(keyid);
14321472 return false;
1473 }
1474
1475 virtual bool HasCdmSession()
1476 {
1477 return cdmsession_ != nullptr;
1478 }
1479
1480 virtual std::string GetChallengeB64Data(AP4_CencSingleSampleDecrypter* decrypter) override
1481 {
1482 if (!decrypter)
1483 return nullptr;
1484
1485 AP4_DataBuffer challengeData = static_cast<WV_CencSingleSampleDecrypter*>(decrypter)->GetChallengeData();
1486 // Keep b64_encode urlEncode enabled otherwise the data will not be sent correctly in the HTTP header
1487 return b64_encode(challengeData.GetData(), challengeData.GetDataSize(), true);
14331488 }
14341489
14351490 virtual bool OpenVideoDecoder(AP4_CencSingleSampleDecrypter* decrypter, const SSD_VIDEOINITDATA *initData) override