HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0717
しまくろねこHSP3Dishでのmmloadについて(読み込めるリソース数について)5解決


しまくろねこ

リンク

2017/7/17(Mon) 22:01:32|NO.80646

今現在作成中のものがプログラム起動時に、必要な分のwavファイルをmmloadで読み込んでいるのですが、assetsフォルダ内に格納されているwavファイルをmmloadで読み込む個数がある一定以上を超えるとAndroid実機で「問題が発生したため○○を終了します」と強制的に落ちてしまいます。(Windows側は正常に動作しています)

そこで何個以上mmloadでwavファイルを読み込むとAndroid実機で落ちるか検証してみましたが、どうやら30を超えたところで落ちるようです。
下記はテストとして1つの「test.wav」という5KBのファイルをバッファ番号0から順に読み込ませるだけのソースです。
私のAndroid実機では30個までが限界でした。

#include "hsp3dish.as" redraw 0 color 0, 0, 0 : boxf repeat 30 mmload "test.wav", cnt, 0 mmvol cnt, 0 loop color 255, 255, 255 mes "OK" redraw 1 await 16 stop
長々と書いてしまいましたが、もし制限があるとしたらプログラムを実行しているAndroid実機側のメモリ等に左右されるのでしょうか?


環境
HSP:3.5b5(b5aは新規プロジェクトのビルドが通らなかったので一つ前のb5を使用)
JDK:1.8
SDK:25.2.5
NDK:r12b
ANT:1.10.1
Android実機:Nexus7(2012)4.4.4



この記事に返信する


リンク

2017/7/18(Tue) 20:56:27|NO.80653

HSP:3.5b5b
JDK:1.8.0
SDK:25.2.5
NDK:r12b
ANT:1.9.6
Android実機:Nexus7(2013)4.4.2
で、30個は通って31個にすると「問題が発生したため終了しました」でした



しまくろねこ

リンク

2017/7/18(Tue) 21:31:08|NO.80655

こんにちは。

>撃さん
テストありがとうございます。
31個目でエラー。同じですね。
assetsフォルダにwavファイルを沢山入れてもmmloadで読まなければ大丈夫なのに、mmloadで読み込むと31個目で「問題が発生したため」で落ちてしまうんですよね。
効果音に色々なものを使いたかったので困りました。
とりあえずおにたまさんに連絡したいと思います。



おにたま(管理人)

リンク

2017/7/19(Wed) 21:24:52|NO.80665

ご報告ありがとうございます。
こちらでも確認して、不具合であれば今後修正していきたいと思います。



おにたま(管理人)

リンク

2017/7/21(Fri) 21:11:39|NO.80683

不自由をお掛けしてすみません。
少し調べてみたのですが、android上のOpenSL/ES上の制約があって同時にスレッドが作成できないようです。
mmloadで音声を読み込んだ段階で、すぐに再生可能な状態にしているのですが、HSP3Dishのシステム側で、同時に発音する時だけにするような仕組みを入れないと大量の効果音を保持するのが難しいかもしれません。
今後、この問題は修正していきますが、構造の変更が必要になるため、すぐに対応が難しいかと思います。
とり急ぎは、mmloadで使用するバッファの数を必要に応じて切り替えるなどして30以下に抑えるようお願い致します。
(特に音楽の再生などは、同時に行なう必要がないので1つのバッファIDを共有するようにした方がいいです)
これは、android上だけの制限なので、WindowsやiOS上では問題ありません。



しまくろねこ

リンク

2017/7/22(Sat) 10:21:13|NO.80687

>おにたま(管理人)さん

色々無理言って申し訳ありません。
なるほどです了解いたしました。



ONION software Copyright 1997-2023(c) All rights reserved.