Skip to content

Commit 3ffa8ef

Browse files
authoredNov 6, 2021
Merge pull request #54 from AlwinEsch/Nexus-change
audiodecoder API Version 4.0.0 update
2 parents 66cfd30 + 34c4c78 commit 3ffa8ef

File tree

11 files changed

+225
-55
lines changed

11 files changed

+225
-55
lines changed
 

‎.github/workflows/build.yml

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Build and run tests
2+
on: [push, pull_request]
3+
env:
4+
app_id: audiodecoder.2sf
5+
6+
jobs:
7+
build:
8+
runs-on: ${{ matrix.os }}
9+
strategy:
10+
fail-fast: false
11+
matrix:
12+
include:
13+
- name: "Debian package test"
14+
os: ubuntu-18.04
15+
CC: gcc
16+
CXX: g++
17+
DEBIAN_BUILD: true
18+
#- os: ubuntu-18.04
19+
#CC: gcc
20+
#CXX: g++
21+
#- os: ubuntu-18.04
22+
#CC: clang
23+
#CXX: clang++
24+
#- os: macos-10.15
25+
steps:
26+
- name: Install needed ubuntu depends
27+
env:
28+
DEBIAN_BUILD: ${{ matrix.DEBIAN_BUILD }}
29+
run: |
30+
if [[ $DEBIAN_BUILD == true ]]; then sudo add-apt-repository -y ppa:team-xbmc/xbmc-nightly; fi
31+
if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get update; fi
32+
if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get install fakeroot; fi
33+
- name: Checkout Kodi repo
34+
uses: actions/checkout@v2
35+
with:
36+
repository: xbmc/xbmc
37+
ref: master
38+
path: xbmc
39+
- name: Checkout audiodecoder.asap repo
40+
uses: actions/checkout@v2
41+
with:
42+
path: ${{ env.app_id }}
43+
- name: Configure
44+
env:
45+
CC: ${{ matrix.CC }}
46+
CXX: ${{ matrix.CXX }}
47+
DEBIAN_BUILD: ${{ matrix.DEBIAN_BUILD }}
48+
run: |
49+
if [[ $DEBIAN_BUILD != true ]]; then cd ${app_id} && mkdir -p build && cd build; fi
50+
if [[ $DEBIAN_BUILD != true ]]; then 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; fi
51+
if [[ $DEBIAN_BUILD == true ]]; then wget https://raw.githubusercontent.com/xbmc/xbmc/master/xbmc/addons/kodi-dev-kit/tools/debian-addon-package-test.sh && chmod +x ./debian-addon-package-test.sh; fi
52+
if [[ $DEBIAN_BUILD == true ]]; then sudo apt-get build-dep ${{ github.workspace }}/${app_id}; fi
53+
- name: Build
54+
env:
55+
CC: ${{ matrix.CC }}
56+
CXX: ${{ matrix.CXX }}
57+
DEBIAN_BUILD: ${{ matrix.DEBIAN_BUILD }}
58+
run: |
59+
if [[ $DEBIAN_BUILD != true ]]; then cd ${app_id}/build; fi
60+
if [[ $DEBIAN_BUILD != true ]]; then make; fi
61+
if [[ $DEBIAN_BUILD == true ]]; then ./debian-addon-package-test.sh ${{ github.workspace }}/${app_id}; fi

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
------------------
66

77
[![License: GPL-2.0-or-later](https://img.shields.io/badge/License-GPL%20v2+-blue.svg)](LICENSE.md)
8+
[![Build and run tests](https://github.com/xbmc/audiodecoder.2sf/actions/workflows/build.yml/badge.svg?branch=Nexus)](https://github.com/xbmc/audiodecoder.2sf/actions/workflows/build.yml)
89
[![Build Status](https://dev.azure.com/teamkodi/binary-addons/_apis/build/status/xbmc.audiodecoder.2sf?branchName=Nexus)](https://dev.azure.com/teamkodi/binary-addons/_build/latest?definitionId=3&branchName=Nexus)
910
[![Build Status](https://jenkins.kodi.tv/view/Addons/job/xbmc/job/audiodecoder.2sf/job/Nexus/badge/icon)](https://jenkins.kodi.tv/blue/organizations/jenkins/xbmc%2Faudiodecoder.2sf/branches/)
1011
<!--- [![Build Status](https://ci.appveyor.com/api/projects/status/github/xbmc/audiodecoder.2sf?branch=Nexus&svg=true)](https://ci.appveyor.com/project/xbmc/audiodecoder-2sf?branch=Nexus) -->

‎audiodecoder.2sf/addon.xml.in

+21-3
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,48 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<addon
33
id="audiodecoder.2sf"
4-
version="20.0.1"
4+
version="20.1.0"
55
name="2SF Audio Decoder"
66
provider-name="spiff">
77
<requires>@ADDON_DEPENDS@</requires>
88
<extension
99
point="kodi.audiodecoder"
1010
name="2sf"
11-
extension=".2sf|.mini2sf"
1211
tags="true"
13-
library_@PLATFORM@="@LIBRARY_FILENAME@"/>
12+
library_@PLATFORM@="@LIBRARY_FILENAME@">
13+
<support>
14+
<extension name=".2sf">
15+
<description>30100</description>
16+
<icon>icon.png</icon>
17+
</extension>
18+
<extension name=".mini2sf">
19+
<description>30101</description>
20+
<icon>icon.png</icon>
21+
</extension>
22+
</support>
23+
</extension>
1424
<extension point="xbmc.addon.metadata">
1525
<platform>@PLATFORM@</platform>
1626
<license>GPL-2.0-or-later</license>
1727
<source>https://github.com/xbmc/audiodecoder.2sf</source>
1828
<assets>
1929
<icon>icon.png</icon>
2030
</assets>
31+
<summary lang="da_DK">Nintendo DS dekoder til lydfiler</summary>
2132
<summary lang="de_DE">Nintendo DS Audiodateidecoder</summary>
2233
<summary lang="en_GB">Nintendo DS audio file decoder</summary>
2334
<summary lang="fi_FI">Nintendo DS -äänitiedoston dekooderi</summary>
35+
<summary lang="ko_KR">닌텐도 DS 오디오 파일 디코더</summary>
36+
<summary lang="pt_PT">Decodificador dos ficheiros áudio no Nintendo DS</summary>
2437
<summary lang="ru_RU">Декодер аудиофайлов Nintendo DS</summary>
2538
<summary lang="vi_VN">Bộ giải mã tập tin âm thanh Nintendo DS</summary>
39+
<summary lang="zh_CN">任天堂 DS 音频文件解码器</summary>
40+
<description lang="da_DK">Understøttelse af spillydfiler, der bruges af nogle Nintendo DS-spil.[CR][CR]Dual Screen Sound Format er et lydformat baseret på PSF. Det gemmer lyd, der er rippet fra ROM'erne i Nintendo DS-spil. Musikinstruktioner gemmes .2sflib-filer, og musiknotationen gemmes i .mini2sf-filer.</description>
2641
<description lang="de_DE">Zur Unterstützung von Audiodateien, die von einigen Nintendo DS-Spielen verwendet werden.[CR][CR]Das Dual Screen Sound Format ist ein auf PSF basierendes Audioformat. Es speichert Audio, das aus den ROMs von Nintendo DS-Spielen gerippt wurde. Musikanweisungen werden in Dateien mit der Erweiterung .2sflib gespeichert, und die Musiknotation wird in Dateien mit der Erweiterung .mini2sf gespeichert.</description>
2742
<description lang="en_GB">To support game audio file used by some Nintendo DS games.[CR][CR]Dual Screen Sound Format is an audio format based on PSF. It stores audio ripped from the ROMs of Nintendo DS games. Music instructions are stored in files with a .2sflib extension and the music notation is stored in files with a .mini2sf extension.</description>
43+
<description lang="ko_KR">일부 Nintendo DS 게임에서 사용하는 게임 오디오 파일을 지원합니다.[CR][CR]듀얼 스크린 사운드 포맷은 PSF 기반의 오디오 포맷입니다. Nintendo DS 게임의 ROM에서 추출한 오디오를 저장합니다. 음악 설명은 .2sflib 확장자를 가진 파일에 저장되고 악보는 .mini2sf 확장자를 가진 파일에 저장됩니다.</description>
44+
<description lang="pt_PT">Para fornecer suporte aos ficheiros de áudio utilizados por alguns jogos de Nintendo DS.[CR][CR]Dual Screen Sound Format é um formato de áudio baseado em PSF, armazena áudio copiado dos ROMs de jogos Nintendo DS. As instruções musicais são armazenadas em ficheiros com uma extensão .2sflib e a notação musical é armazenada em ficheiros com uma extensão .mini2sf.</description>
2845
<description lang="ru_RU">Предназначен для поддержки звукового файла, используемого некоторыми играми Nintendo DS.[CR][CR]Dual Screen Sound Format - это аудиоформат, основанный на PSF. В нем хранятся аудиозаписи, извлеченные из ПЗУ игр Nintendo DS. Музыкальные инструкции хранятся в файлах с расширением .2sflib, а музыкальная запись - в файлах с расширением .mini2sf.</description>
46+
<description lang="zh_CN">支持某些任天堂 DS 游戏使用的游戏音频文件。[CR][CR]双屏声音格式是基于 PSF 的音频格式。它存储从任天堂 DS 游戏 ROM 中提取的音频。音乐指令存储在扩展名为.2sflib的文件中,音乐符号存储在扩展名为.mini2sf的文件中。</description>
2947
</extension>
3048
</addon>

‎audiodecoder.2sf/resources/language/resource.language.da_dk/strings.po

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,23 @@ msgstr ""
77
"Project-Id-Version: KODI Addons\n"
88
"Report-Msgid-Bugs-To: translations@kodi.tv\n"
99
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
10-
"PO-Revision-Date: 2021-07-29 19:23+0000\n"
10+
"PO-Revision-Date: 2021-10-21 12:30+0000\n"
1111
"Last-Translator: Christian Gade <gade@kodi.tv>\n"
1212
"Language-Team: Danish <https://kodi.weblate.cloud/projects/kodi-add-ons-audio-decodersencoders/audiodecoder-2sf/da_dk/>\n"
1313
"Language: da_dk\n"
1414
"MIME-Version: 1.0\n"
1515
"Content-Type: text/plain; charset=UTF-8\n"
1616
"Content-Transfer-Encoding: 8bit\n"
1717
"Plural-Forms: nplurals=2; plural=n != 1;\n"
18-
"X-Generator: Weblate 4.7.2\n"
18+
"X-Generator: Weblate 4.8\n"
1919

2020
msgctxt "Addon Summary"
2121
msgid "Nintendo DS audio file decoder"
22-
msgstr ""
22+
msgstr "Nintendo DS afkoder til lydfiler"
2323

2424
msgctxt "Addon Description"
2525
msgid "To support game audio file used by some Nintendo DS games.[CR][CR]Dual Screen Sound Format is an audio format based on PSF. It stores audio ripped from the ROMs of Nintendo DS games. Music instructions are stored in files with a .2sflib extension and the music notation is stored in files with a .mini2sf extension."
26-
msgstr ""
26+
msgstr "Understøttelse af spillydfiler, der bruges af nogle Nintendo DS-spil.[CR][CR]Dual Screen Sound Format er et lydformat baseret på PSF. Det gemmer lyd, der er rippet fra ROM'erne i Nintendo DS-spil. Musikinstruktioner gemmes .2sflib-filer, og musiknotationen gemmes i .mini2sf-filer."
2727

2828
# [Consistency] Make terms, settings names, brands and other minutiae, consistent throughout file.
2929
# [Capitalization] Avoid capitalizing every second word. See http://grammarist.com/capitalization/

‎audiodecoder.2sf/resources/language/resource.language.en_gb/strings.po

+24
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,27 @@ msgstr ""
123123
msgctxt "#30022"
124124
msgid "Ainc"
125125
msgstr ""
126+
127+
#. Boolean setting to allow scan of title number by file name (default is enabled)
128+
#: audiodecoder.2sf/resources/settings.xml
129+
msgctxt "#30023"
130+
msgid "Get track number from filename"
131+
msgstr ""
132+
133+
#. Help text about setting on id 30023
134+
#: audiodecoder.2sf/resources/settings.xml
135+
msgctxt "#30024"
136+
msgid "If activated, tries to read the used song track number from file names. Note: This cannot always be determined 100% correctly."
137+
msgstr ""
138+
139+
#. Supported file extension description about ".2sf"
140+
#: audiodecoder.2sf/addon.xml.in
141+
msgctxt "#30100"
142+
msgid "Game audio file used by some Nintendo DS games."
143+
msgstr ""
144+
145+
#. Supported file extension description about ".mini2sf"
146+
#: audiodecoder.2sf/addon.xml.in
147+
msgctxt "#30101"
148+
msgid "Nintendo DS Sound Information File - With their corresponding 2SFLIB file can be played."
149+
msgstr ""

‎audiodecoder.2sf/resources/language/resource.language.ko_kr/strings.po

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ msgstr ""
77
"Project-Id-Version: KODI Addons\n"
88
"Report-Msgid-Bugs-To: translations@kodi.tv\n"
99
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
10-
"PO-Revision-Date: 2021-08-24 13:29+0000\n"
10+
"PO-Revision-Date: 2021-09-06 13:29+0000\n"
1111
"Last-Translator: Minho Park <parkmino@gmail.com>\n"
1212
"Language-Team: Korean <https://kodi.weblate.cloud/projects/kodi-add-ons-audio-decodersencoders/audiodecoder-2sf/ko_kr/>\n"
1313
"Language: ko_kr\n"
@@ -19,11 +19,11 @@ msgstr ""
1919

2020
msgctxt "Addon Summary"
2121
msgid "Nintendo DS audio file decoder"
22-
msgstr ""
22+
msgstr "닌텐도 DS 오디오 파일 디코더"
2323

2424
msgctxt "Addon Description"
2525
msgid "To support game audio file used by some Nintendo DS games.[CR][CR]Dual Screen Sound Format is an audio format based on PSF. It stores audio ripped from the ROMs of Nintendo DS games. Music instructions are stored in files with a .2sflib extension and the music notation is stored in files with a .mini2sf extension."
26-
msgstr ""
26+
msgstr "일부 Nintendo DS 게임에서 사용하는 게임 오디오 파일을 지원합니다.[CR][CR]듀얼 스크린 사운드 포맷은 PSF 기반의 오디오 포맷입니다. Nintendo DS 게임의 ROM에서 추출한 오디오를 저장합니다. 음악 설명은 .2sflib 확장자를 가진 파일에 저장되고 악보는 .mini2sf 확장자를 가진 파일에 저장됩니다."
2727

2828
# [Consistency] Make terms, settings names, brands and other minutiae, consistent throughout file.
2929
# [Capitalization] Avoid capitalizing every second word. See http://grammarist.com/capitalization/

‎audiodecoder.2sf/resources/language/resource.language.pt_pt/strings.po

+8-7
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,25 @@
55
msgid ""
66
msgstr ""
77
"Project-Id-Version: KODI Addons\n"
8-
"Report-Msgid-Bugs-To: https://github.com/xbmc/audiodecoder.ssf/issues/\n"
8+
"Report-Msgid-Bugs-To: translations@kodi.tv\n"
99
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
10-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11-
"Last-Translator: Automatically generated\n"
12-
"Language-Team: none\n"
10+
"PO-Revision-Date: 2021-10-03 11:47+0000\n"
11+
"Last-Translator: Peter J. Mello <admin@petermello.net>\n"
12+
"Language-Team: Portuguese (Portugal) <https://kodi.weblate.cloud/projects/kodi-add-ons-audio-decodersencoders/audiodecoder-2sf/pt_pt/>\n"
1313
"Language: pt_pt\n"
1414
"MIME-Version: 1.0\n"
1515
"Content-Type: text/plain; charset=UTF-8\n"
1616
"Content-Transfer-Encoding: 8bit\n"
1717
"Plural-Forms: nplurals=2; plural=n > 1;\n"
18+
"X-Generator: Weblate 4.8\n"
1819

1920
msgctxt "Addon Summary"
2021
msgid "Nintendo DS audio file decoder"
21-
msgstr ""
22+
msgstr "Decodificador dos ficheiros áudio no Nintendo DS"
2223

2324
msgctxt "Addon Description"
2425
msgid "To support game audio file used by some Nintendo DS games.[CR][CR]Dual Screen Sound Format is an audio format based on PSF. It stores audio ripped from the ROMs of Nintendo DS games. Music instructions are stored in files with a .2sflib extension and the music notation is stored in files with a .mini2sf extension."
25-
msgstr ""
26+
msgstr "Para fornecer suporte aos ficheiros de áudio utilizados por alguns jogos de Nintendo DS.[CR][CR]Dual Screen Sound Format é um formato de áudio baseado em PSF, armazena áudio copiado dos ROMs de jogos Nintendo DS. As instruções musicais são armazenadas em ficheiros com uma extensão .2sflib e a notação musical é armazenada em ficheiros com uma extensão .mini2sf."
2627

2728
# [Consistency] Make terms, settings names, brands and other minutiae, consistent throughout file.
2829
# [Capitalization] Avoid capitalizing every second word. See http://grammarist.com/capitalization/
@@ -33,7 +34,7 @@ msgstr ""
3334
# For example, "Press \"OK\" for \"All seasons\"" instead of "Press OK for All seasons" after first word.
3435
msgctxt "#30000"
3536
msgid "Default length"
36-
msgstr ""
37+
msgstr "Duração padrão"
3738

3839
msgctxt "#30001"
3940
msgid "Used if specified file does not provide the length."

‎audiodecoder.2sf/resources/language/resource.language.zh_cn/strings.po

+30-29
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,25 @@
55
msgid ""
66
msgstr ""
77
"Project-Id-Version: KODI Addons\n"
8-
"Report-Msgid-Bugs-To: https://github.com/xbmc/audiodecoder.ssf/issues/\n"
8+
"Report-Msgid-Bugs-To: translations@kodi.tv\n"
99
"POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n"
10-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11-
"Last-Translator: Automatically generated\n"
12-
"Language-Team: none\n"
10+
"PO-Revision-Date: 2021-09-17 02:30+0000\n"
11+
"Last-Translator: taxigps <taxigps@sina.com>\n"
12+
"Language-Team: Chinese (China) <https://kodi.weblate.cloud/projects/kodi-add-ons-audio-decodersencoders/audiodecoder-2sf/zh_cn/>\n"
1313
"Language: zh_cn\n"
1414
"MIME-Version: 1.0\n"
1515
"Content-Type: text/plain; charset=UTF-8\n"
1616
"Content-Transfer-Encoding: 8bit\n"
1717
"Plural-Forms: nplurals=2; plural=n != 1;\n"
18+
"X-Generator: Weblate 4.8\n"
1819

1920
msgctxt "Addon Summary"
2021
msgid "Nintendo DS audio file decoder"
21-
msgstr ""
22+
msgstr "任天堂 DS 音频文件解码器"
2223

2324
msgctxt "Addon Description"
2425
msgid "To support game audio file used by some Nintendo DS games.[CR][CR]Dual Screen Sound Format is an audio format based on PSF. It stores audio ripped from the ROMs of Nintendo DS games. Music instructions are stored in files with a .2sflib extension and the music notation is stored in files with a .mini2sf extension."
25-
msgstr ""
26+
msgstr "支持某些任天堂 DS 游戏使用的游戏音频文件。[CR][CR]双屏声音格式是基于 PSF 的音频格式。它存储从任天堂 DS 游戏 ROM 中提取的音频。音乐指令存储在扩展名为.2sflib的文件中,音乐符号存储在扩展名为.mini2sf的文件中。"
2627

2728
# [Consistency] Make terms, settings names, brands and other minutiae, consistent throughout file.
2829
# [Capitalization] Avoid capitalizing every second word. See http://grammarist.com/capitalization/
@@ -33,92 +34,92 @@ msgstr ""
3334
# For example, "Press \"OK\" for \"All seasons\"" instead of "Press OK for All seasons" after first word.
3435
msgctxt "#30000"
3536
msgid "Default length"
36-
msgstr ""
37+
msgstr "默认长度"
3738

3839
msgctxt "#30001"
3940
msgid "Used if specified file does not provide the length."
40-
msgstr ""
41+
msgstr "用于未提供长度的特定文件。"
4142

4243
msgctxt "#30002"
4344
msgid "unused"
44-
msgstr ""
45+
msgstr "未使用"
4546

4647
msgctxt "#30003"
4748
msgid "{0:d} s"
48-
msgstr ""
49+
msgstr "{0:d} 秒"
4950

5051
msgctxt "#30004"
5152
msgid "Default fade out time"
52-
msgstr ""
53+
msgstr "默认淡出时间"
5354

5455
msgctxt "#30005"
5556
msgid "Used if specified file does not provide the length and fade."
56-
msgstr ""
57+
msgstr "用于未提供长度和淡出的特定文件。"
5758

5859
msgctxt "#30006"
5960
msgid "unused"
60-
msgstr ""
61+
msgstr "未使用"
6162

6263
msgctxt "#30007"
6364
msgid "{0:d} ms"
64-
msgstr ""
65+
msgstr "{0:d} 毫秒"
6566

6667
msgctxt "#30008"
6768
msgid "Suppress opening silence"
68-
msgstr ""
69+
msgstr "抑制起始静默"
6970

7071
msgctxt "#30009"
7172
msgid "Some files start with silent data, this prevents it and looks for the beginning."
72-
msgstr ""
73+
msgstr "有些文件以静默数据开头,这会阻止它并查找真实的起点。"
7374

7475
msgctxt "#30010"
7576
msgid "Suppress end silence"
76-
msgstr ""
77+
msgstr "抑制结尾静默"
7778

7879
msgctxt "#30011"
7980
msgid "Some files end with silent data, this prevents it and looks for the end."
80-
msgstr ""
81+
msgstr "有些文件以静默数据结尾,这会阻止它并查找真实的结尾。"
8182

8283
msgctxt "#30012"
8384
msgid "Second of silence to check"
84-
msgstr ""
85+
msgstr "静默秒检测"
8586

8687
msgctxt "#30013"
8788
msgid "How many silent seconds are allowed before playback is stopped."
88-
msgstr ""
89+
msgstr "播放停止前允许静默多少秒。"
8990

9091
msgctxt "#30014"
9192
msgid "{0:d} s"
92-
msgstr ""
93+
msgstr "{0:d} 秒"
9394

9495
msgctxt "#30015"
9596
msgid "Resampling mode"
96-
msgstr ""
97+
msgstr "重采样模式"
9798

9899
msgctxt "#30016"
99100
msgid "Used resampling quality about processing."
100-
msgstr ""
101+
msgstr "用于处理的重采样质量。"
101102

102103
msgctxt "#30017"
103104
msgid "Zero order hold"
104-
msgstr ""
105+
msgstr "零阶保持"
105106

106107
msgctxt "#30018"
107108
msgid "Blep synthesis"
108-
msgstr ""
109+
msgstr "Blep 合成"
109110

110111
msgctxt "#30019"
111112
msgid "Linear"
112-
msgstr ""
113+
msgstr "线性"
113114

114115
msgctxt "#30020"
115116
msgid "Blam synthesis"
116-
msgstr ""
117+
msgstr "Blam 合成"
117118

118119
msgctxt "#30021"
119120
msgid "Cubic"
120-
msgstr ""
121+
msgstr "三次"
121122

122123
msgctxt "#30022"
123124
msgid "Ainc"
124-
msgstr ""
125+
msgstr "智能降噪"

‎audiodecoder.2sf/resources/settings.xml

+4
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@
6565
</constraints>
6666
<control type="list" format="string" />
6767
</setting>
68+
<setting id="tracknumbersearch" type="boolean" label="30023" help="30024">
69+
<default>true</default>
70+
<control type="toggle" />
71+
</setting>
6872
</group>
6973
</category>
7074
</section>

‎src/2SFCodec.cpp

+66-7
Original file line numberDiff line numberDiff line change
@@ -547,15 +547,15 @@ void C2SFCodec::Shutdown()
547547
}
548548
}
549549

550-
int C2SFCodec::ReadPCM(uint8_t* buffer, int size, int& actualsize)
550+
int C2SFCodec::ReadPCM(uint8_t* buffer, size_t size, size_t& actualsize)
551551
{
552552
if (m_eof && !m_silenceTestBuffer.data_available())
553-
return 1;
553+
return AUDIODECODER_READ_ERROR;
554554

555555
if (m_noLoop && m_tagSongMs &&
556556
(m_posDelta + mul_div(m_dataWritten, 1000, m_cfgDefaultSampleRate)) >=
557557
m_tagSongMs + m_tagFadeMs)
558-
return -1;
558+
return AUDIODECODER_READ_EOF;
559559

560560
unsigned int written = 0;
561561

@@ -613,7 +613,7 @@ int C2SFCodec::ReadPCM(uint8_t* buffer, int size, int& actualsize)
613613
if (m_silenceTestBuffer.test_silence())
614614
{
615615
m_eof = true;
616-
return -1;
616+
return AUDIODECODER_READ_EOF;
617617
}
618618

619619
written = m_silenceTestBuffer.data_available() / 2;
@@ -673,14 +673,14 @@ int C2SFCodec::ReadPCM(uint8_t* buffer, int size, int& actualsize)
673673
if (!written)
674674
{
675675
m_eof = true;
676-
return -1;
676+
return AUDIODECODER_READ_EOF;
677677
}
678678

679679

680680
actualsize = written * 2 * sizeof(int16_t);
681681
memcpy(buffer, ptr, actualsize);
682682

683-
return 0;
683+
return AUDIODECODER_READ_SUCCESS;
684684
}
685685

686686
int64_t C2SFCodec::Seek(int64_t time)
@@ -742,6 +742,8 @@ bool C2SFCodec::ReadTag(const std::string& file, kodi::addon::AudioDecoderInfoTa
742742
return false;
743743
}
744744

745+
if (kodi::GetSettingBoolean("tracknumbersearch", true))
746+
tag.SetTrack(GetTrackNumber(file));
745747
tag.SetTitle(info_state.title);
746748
if (!info_state.artist.empty())
747749
tag.SetArtist(info_state.artist);
@@ -757,9 +759,66 @@ bool C2SFCodec::ReadTag(const std::string& file, kodi::addon::AudioDecoderInfoTa
757759
return true;
758760
}
759761

762+
int C2SFCodec::GetTrackNumber(const std::string& filename)
763+
{
764+
// Try to get track number from file name.
765+
//
766+
// On test files found following conditions:
767+
// - "01 Explore a New World.mini2sf" - With decimal number on begin
768+
// - "0000 ALERT_SEQ.mini2sf" - With hexadecimal on begin (always as 4 characters)
769+
// - "NTR-ANNJ-JPN-000b.mini2sf" - With hexadecimal on end (always as 4 characters)
770+
771+
bool hexDigit = true;
772+
std::string number;
773+
std::string name = kodi::vfs::GetFileName(filename);
774+
name = name.substr(0, name.rfind('.'));
775+
if (name.length() >= 4)
776+
{
777+
for (size_t i = 0; i < 4; ++i)
778+
{
779+
if (!kodi::tools::StringUtils::IsAsciiXDigit(name[i]))
780+
{
781+
hexDigit = false;
782+
break;
783+
}
784+
}
785+
if (hexDigit)
786+
{
787+
number = kodi::tools::StringUtils::Format("0x%c%c%c%c", name[0], name[1], name[2], name[3]);
788+
}
789+
else if (isdigit(name[0]))
790+
{
791+
return std::stoul(name, nullptr, 10);
792+
}
793+
else
794+
{
795+
hexDigit = true;
796+
size_t startPos = name.size()-4;
797+
for (size_t i = 0; i < 4; ++i)
798+
{
799+
if (!kodi::tools::StringUtils::IsAsciiXDigit(name[startPos+i]))
800+
{
801+
hexDigit = false;
802+
break;
803+
}
804+
}
805+
if (hexDigit)
806+
{
807+
number = kodi::tools::StringUtils::Format("0x%c%c%c%c", name[startPos+0], name[startPos+1], name[startPos+2], name[startPos+3]);
808+
}
809+
}
810+
}
811+
if (!number.empty())
812+
{
813+
return std::stoul(number, nullptr, 16)+1;
814+
}
815+
816+
return 0;
817+
}
818+
760819
//------------------------------------------------------------------------------
761820

762-
class ATTRIBUTE_HIDDEN CMyAddon : public kodi::addon::CAddonBase
821+
class ATTR_DLL_LOCAL CMyAddon : public kodi::addon::CAddonBase
763822
{
764823
public:
765824
CMyAddon() = default;

‎src/2SFCodec.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ struct TSFContext
6262
int tagFadeMs = 0;
6363
};
6464

65-
class ATTRIBUTE_HIDDEN C2SFCodec : public kodi::addon::CInstanceAudioDecoder
65+
class ATTR_DLL_LOCAL C2SFCodec : public kodi::addon::CInstanceAudioDecoder
6666
{
6767
public:
6868
C2SFCodec(KODI_HANDLE instance, const std::string& version);
@@ -78,13 +78,14 @@ class ATTRIBUTE_HIDDEN C2SFCodec : public kodi::addon::CInstanceAudioDecoder
7878
int& bitrate,
7979
AudioEngineDataFormat& format,
8080
std::vector<AudioEngineChannel>& channellist) override;
81-
int ReadPCM(uint8_t* buffer, int size, int& actualsize) override;
81+
int ReadPCM(uint8_t* buffer, size_t size, size_t& actualsize) override;
8282
int64_t Seek(int64_t time) override;
8383
bool ReadTag(const std::string& file, kodi::addon::AudioDecoderInfoTag& tag) override;
8484

8585
private:
8686
bool Load();
8787
void Shutdown();
88+
int GetTrackNumber(const std::string& filename);
8889

8990
inline uint64_t time_to_samples(double p_time, uint32_t p_sample_rate)
9091
{

0 commit comments

Comments
 (0)
Please sign in to comment.