エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.104【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1545944692/
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2019/04/25(木) 06:54:38.08ID:6xUIrXDu
256249
2019/09/09(月) 13:17:02.59ID:4LFzbPos もう少し詳しく書くと、とあるプラグインを作りたくて、それ用のプロジェクトファイルのジェネレーターとVisual studio 2019 を使っています。
そのジェネレーターを通してwavファイルをバイナリデータ化しているのですが、wavファイルのサイズが一定以上になると「error C1060 ヒープの領域を使い果たしました」っていうエラーが出てビルドが通らない状態です。
10MBぐらいのwavファイルだと普通に通って、18MBぐらいになるとエラーが出ます。
そのジェネレーターを通してwavファイルをバイナリデータ化しているのですが、wavファイルのサイズが一定以上になると「error C1060 ヒープの領域を使い果たしました」っていうエラーが出てビルドが通らない状態です。
10MBぐらいのwavファイルだと普通に通って、18MBぐらいになるとエラーが出ます。
257デフォルトの名無しさん
2019/09/09(月) 13:19:41.05ID:By40c52C ソース貼れ
258デフォルトの名無しさん
2019/09/09(月) 13:27:07.20ID:8EKyQA8Q 企業秘密な秘伝のタレかもしれません
259デフォルトの名無しさん
2019/09/09(月) 13:27:52.11ID:FLVXg6p/ タレこめ
260デフォルトの名無しさん
2019/09/09(月) 14:06:32.05ID:QoBVzNSJ プラグイン本体にバイナリデータ埋めまず、エンドユーザーにはプラグインと音声ファイルを配布
音声ファイルのパスだけうまく帳尻あわせてファイル開いて、メモリ確保して、ファイル読んで、etc
って設計するかな
音声ファイルのパスだけうまく帳尻あわせてファイル開いて、メモリ確保して、ファイル読んで、etc
って設計するかな
261デフォルトの名無しさん
2019/09/09(月) 15:35:47.49ID:4OXc+RTk >>256
そのジェネレータとやらがエラー吐いたという話ならスレ違いだろう。
そのジェネレータとやらがエラー吐いたという話ならスレ違いだろう。
262デフォルトの名無しさん
2019/09/09(月) 16:07:02.52ID:aCapJVZa >>256
その秘伝のジェネレーターとやらがどんなコード吐いてるのか見当もつかないがとりあえず
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1060?view=vs-2019
の対策を片っ端からやればいいんじゃね?
その秘伝のジェネレーターとやらがどんなコード吐いてるのか見当もつかないがとりあえず
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-1/fatal-error-c1060?view=vs-2019
の対策を片っ端からやればいいんじゃね?
263デフォルトの名無しさん
2019/09/12(木) 12:49:41.16ID:J5GPib5U スレチのような気もするんですが,ここが一番適切な回答がありそうなんで,質問させて下さい.
iPadでc++のコード(複数のファイルでつくられている)を読みたいんですが便利なビューワーありますか?
関数名やクラス名クリックしたら定義してるところまでジャンプしてくれるようなやつを探してます.
emacsで言うetagsみたいな機能のことです.
iPadでc++のコード(複数のファイルでつくられている)を読みたいんですが便利なビューワーありますか?
関数名やクラス名クリックしたら定義してるところまでジャンプしてくれるようなやつを探してます.
emacsで言うetagsみたいな機能のことです.
264デフォルトの名無しさん
2019/09/12(木) 13:17:15.41ID:FruSebPm 「ipad emacs」 でぐぐったら iPad用の emacs そのものがあるようだけど
265263
2019/09/12(木) 13:56:43.03ID:Ng4JTS7f >>264
後出しですいません.キーボードは使わないのでemacsはないです.あと,iPadのemacsはけっこうがっかりだった記憶が….
タッチでジャンプできると嬉しいのですが….
便利そうなエディタは何個かあるみたいなんですが,ジャンプ機能がないんですよね.
後出しですいません.キーボードは使わないのでemacsはないです.あと,iPadのemacsはけっこうがっかりだった記憶が….
タッチでジャンプできると嬉しいのですが….
便利そうなエディタは何個かあるみたいなんですが,ジャンプ機能がないんですよね.
266225
2019/09/17(火) 22:40:09.17ID:iQJ8U52u267デフォルトの名無しさん
2019/09/17(火) 22:42:37.60ID:cgXPZZnO MZうyちゃーーーん♪こんなとこにいたのかw
268蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 22:52:04.49ID:vrvr50SL >>266
ポリモーフィズムがうまくできていればAnimalのポインタの配列にDogやCatのポインタを突っ込めるはず。
ポリモーフィズムがうまくできていればAnimalのポインタの配列にDogやCatのポインタを突っ込めるはず。
269デフォルトの名無しさん
2019/09/17(火) 22:54:48.57ID:cgXPZZnO >>268
んでサウンドは使えるようになったか?w
んでサウンドは使えるようになったか?w
270デフォルトの名無しさん
2019/09/17(火) 23:00:14.32ID:iQJ8U52u271蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:04:06.26ID:vrvr50SL Animal *array[10] = {NULL};
array[0] = new Cat(2, 3);
array[0]->walk();
delete array[0];
array[0] = new Cat(2, 3);
array[0]->walk();
delete array[0];
272デフォルトの名無しさん
2019/09/17(火) 23:08:52.42ID:4Zel//hf >>270
一旦オブジェクト指向のことは忘れてポインタを先にしっかり学んできた方が近道かもよ。ここで小さなサンプル教えてもらって真似しても近い将来嵌まって行き詰まりそう。
オブジェクト指向の勉強が目的なら他の言語で始めた方が余計なところで躓かないと思う。
一旦オブジェクト指向のことは忘れてポインタを先にしっかり学んできた方が近道かもよ。ここで小さなサンプル教えてもらって真似しても近い将来嵌まって行き詰まりそう。
オブジェクト指向の勉強が目的なら他の言語で始めた方が余計なところで躓かないと思う。
273デフォルトの名無しさん
2019/09/17(火) 23:08:55.80ID:cgXPZZnO DIM MZUY(0)
274デフォルトの名無しさん
2019/09/17(火) 23:10:14.52ID:cgXPZZnO >>272
MZうyちゃーーーん♪はBASICで充分w
MZうyちゃーーーん♪はBASICで充分w
275デフォルトの名無しさん
2019/09/17(火) 23:12:50.50ID:iQJ8U52u DogやCatのインスタンスも複数あって、
Dog だけでループとかCatだけでループとかしたいんです。
animalだけでループするなら書いていただいたので良さそうなんですが。
Dog だけでループとかCatだけでループとかしたいんです。
animalだけでループするなら書いていただいたので良さそうなんですが。
277デフォルトの名無しさん
2019/09/17(火) 23:18:18.48ID:f5N3Fp86 目標の設定と要件定義が先だってよ(ゲラゲラ
278デフォルトの名無しさん
2019/09/17(火) 23:19:18.73ID:Ps8IF7R/ DogやCatに自身のタイプを返す機能をつけるか、typeidを使ってループをフィルタすればいい
279蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:20:21.52ID:vrvr50SL dynamic_castでダウンキャスト失敗すればNULLが買える。一個800円。
280デフォルトの名無しさん
2019/09/17(火) 23:20:27.62ID:f5N3Fp86 それで完成品は100年後か?
281デフォルトの名無しさん
2019/09/17(火) 23:20:52.26ID:iQJ8U52u 初心者スレだし、解答欲しいです。
282デフォルトの名無しさん
2019/09/17(火) 23:21:58.70ID:f5N3Fp86 バカのうんちくは回しコピペと同じw
283デフォルトの名無しさん
2019/09/17(火) 23:22:25.46ID:iQJ8U52u284デフォルトの名無しさん
2019/09/17(火) 23:23:03.14ID:Ps8IF7R/ for(auto a : animals){
if(typeid(a) == typeid(Dog*){
}
}
if(typeid(a) == typeid(Dog*){
}
}
285デフォルトの名無しさん
2019/09/17(火) 23:23:37.07ID:f5N3Fp86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
286蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:24:00.17ID:vrvr50SL dynamic_cast<Cat>(array[0]) == NULLだったらarray[0]はネコではない
287デフォルトの名無しさん
2019/09/17(火) 23:24:31.61ID:f5N3Fp86 || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
||. =ねらー三原則= ||
|| 1.助けない ||
|| 2.教えない 。 ∧_∧ いいですね。
|| 3.関わらない\ (゚Д゚,,)
||________⊂⊂ |
∧ ∧ ∧ ∧ ∧ ∧ | ̄ ̄ ̄ ̄|
( ∧ ∧ ( ∧ ∧ ( ∧ ∧ | |
〜(_( ∧ ∧ __( ∧ ∧__( ∧ ∧ ̄ ̄ ̄
〜(_( ∧ ∧_( ∧ ∧_( ∧ ∧ は〜い、先生。
〜(_( ,,)〜(_( ,,)〜(_( ,,)
〜(___ノ 〜(___ノ 〜(___ノ
||. =ねらー三原則= ||
|| 1.助けない ||
|| 2.教えない 。 ∧_∧ いいですね。
|| 3.関わらない\ (゚Д゚,,)
||________⊂⊂ |
∧ ∧ ∧ ∧ ∧ ∧ | ̄ ̄ ̄ ̄|
( ∧ ∧ ( ∧ ∧ ( ∧ ∧ | |
〜(_( ∧ ∧ __( ∧ ∧__( ∧ ∧ ̄ ̄ ̄
〜(_( ∧ ∧_( ∧ ∧_( ∧ ∧ は〜い、先生。
〜(_( ,,)〜(_( ,,)〜(_( ,,)
〜(___ノ 〜(___ノ 〜(___ノ
288蟻人間 ◆T6xkBnTXz7B0
2019/09/17(火) 23:24:40.10ID:vrvr50SL dynamic_cast<Cat*>(array[0]) == NULLだったらarray[0]はネコではない
289デフォルトの名無しさん
2019/09/17(火) 23:27:47.60ID:iQJ8U52u290デフォルトの名無しさん
2019/09/17(火) 23:41:03.11ID:4Zel//hf >>289
それなら条件に該当するエントリのポインタを抜き出した配列を作ってループすればいいんじゃないか?
ループ内の処理が並列化する価値があるくらいコストかかるなら、ポインタを抽出してコピーするコストは無視できるかと思われる。
それなら条件に該当するエントリのポインタを抜き出した配列を作ってループすればいいんじゃないか?
ループ内の処理が並列化する価値があるくらいコストかかるなら、ポインタを抽出してコピーするコストは無視できるかと思われる。
291デフォルトの名無しさん
2019/09/18(水) 00:08:00.90ID:yNiXaOMn292デフォルトの名無しさん
2019/09/18(水) 12:06:57.92ID:L8SHYgAR >>266
C#スレでマルチしてないかお前
C#スレでマルチしてないかお前
293デフォルトの名無しさん
2019/09/18(水) 20:26:23.65ID:yNiXaOMn >>292
してないやでー
してないやでー
294デフォルトの名無しさん
2019/09/22(日) 11:43:54.30ID:LQCFANDg > Animal *array[10] = {NULL};
20年以上前に配列要素を一つ以上書かないといけない処理系があったな
タイムスリップでもしてきたか
20年以上前に配列要素を一つ以上書かないといけない処理系があったな
タイムスリップでもしてきたか
295デフォルトの名無しさん
2019/09/22(日) 11:53:00.80ID:y42gsAly Animal *array[10] = {p0, p1, p2};
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
296デフォルトの名無しさん
2019/09/22(日) 16:44:01.11ID:dRs63Jnx >>295
引数の無いコンストラクター呼ばれる
引数の無いコンストラクター呼ばれる
297デフォルトの名無しさん
2019/09/22(日) 16:45:05.27ID:zrmuC8G0 char *array[10] = {p0, p1, p2};
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
だとすると
array[0] 〜 array[2] は p0〜p2 になるが
array[3] 以降は全部 NULL で FA?
298デフォルトの名無しさん
2019/09/22(日) 17:27:15.07ID:kTa1SMwh >>296
ポインタだぞ?
ポインタだぞ?
299デフォルトの名無しさん
2019/09/22(日) 18:52:04.08ID:9/tlWbjv >>294
Cだと今でもダメだから、それ見たんじゃないの?
Cだと今でもダメだから、それ見たんじゃないの?
300デフォルトの名無しさん
2019/09/22(日) 19:39:28.11ID:KmeF3kAh >>298
ポンタってローソンのカード?
ポンタってローソンのカード?
301デフォルトの名無しさん
2019/10/01(火) 17:46:09.39ID:yQHk6Pyq Windows の普通のソフトのインストーラは Program Files 以下に適当なフォルダを作ってそこにファイルをまとめて入れるけど、
コマンドラインアプリの場合ってどうしてる?
GUI アプリと同じようにフォルダに突っ込んで環境変数 PATH を設定するってのが標準的なやり方だと思うけど、
そういうのが増えてくると PATH が長大になって嫌な感じなので、なんかうまい方法ってないもんかな?
C/C++ とは直接の関係がなくてスマソ。 どのスレがベストかわからんかったもんで。
コマンドラインアプリの場合ってどうしてる?
GUI アプリと同じようにフォルダに突っ込んで環境変数 PATH を設定するってのが標準的なやり方だと思うけど、
そういうのが増えてくると PATH が長大になって嫌な感じなので、なんかうまい方法ってないもんかな?
C/C++ とは直接の関係がなくてスマソ。 どのスレがベストかわからんかったもんで。
302デフォルトの名無しさん
2019/10/01(火) 19:01:46.51ID:HsilaFth 環境変数なんて入れずに叩くときにフルパス入れりゃいいだけでは?
303デフォルトの名無しさん
2019/10/01(火) 19:48:41.05ID:yQHk6Pyq >>302
フルパスを前提にすると連携しづらい場合が出てくるんよ。
「このバッチファイルを実行するにはこのソフトとこのソフトを入れてね!」
みたいなことをやろうとすると、想定してたのと違うフォルダにインストールしてるだけで破綻してしまう。
32bit のアプリケーションって 32bit 版の Windows だと Program Files に入るけど
64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?
それだけでも違ってしまうけど
システムドライブとは違うドライブにアプリケーションをインストールしたりする運用をやってる人は意外にいるので、
インストール先を選択させずに固定するってのも縛りが強いかなぁと思うし。
どこにインストールしてでも同じように使えるようにするには PATH くらいしか選択肢がなくなる。
でも嫌。 っていう話。
フルパスを前提にすると連携しづらい場合が出てくるんよ。
「このバッチファイルを実行するにはこのソフトとこのソフトを入れてね!」
みたいなことをやろうとすると、想定してたのと違うフォルダにインストールしてるだけで破綻してしまう。
32bit のアプリケーションって 32bit 版の Windows だと Program Files に入るけど
64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?
それだけでも違ってしまうけど
システムドライブとは違うドライブにアプリケーションをインストールしたりする運用をやってる人は意外にいるので、
インストール先を選択させずに固定するってのも縛りが強いかなぁと思うし。
どこにインストールしてでも同じように使えるようにするには PATH くらいしか選択肢がなくなる。
でも嫌。 っていう話。
304デフォルトの名無しさん
2019/10/01(火) 20:00:47.20ID:gawiB1ps 20年以上前からある問題だな
Windowsではその辺は未だにグダグダだと認識している
Windowsではその辺は未だにグダグダだと認識している
305デフォルトの名無しさん
2019/10/01(火) 22:13:00.30ID:sghBprd5 >>303
設定でその外部アプリへのパス指定できるようにすれば?
インストール先固定、環境変数追加、レジストリ追加よりユーザーに指定させるほうが個人的には好き
というかこの三種のような方法をとるアプリはそもそもインストールを躊躇する
設定でその外部アプリへのパス指定できるようにすれば?
インストール先固定、環境変数追加、レジストリ追加よりユーザーに指定させるほうが個人的には好き
というかこの三種のような方法をとるアプリはそもそもインストールを躊躇する
306デフォルトの名無しさん
2019/10/01(火) 23:27:11.07ID:D6lr/hhZ コマンドラインアプリでコンソールから起動 バッチファイルから呼び出し etc
実行ファイルの検索順位に依存しまくるからにゃぁ
実行ファイルの検索順位に依存しまくるからにゃぁ
307デフォルトの名無しさん
2019/10/01(火) 23:54:08.52ID:yQHk6Pyq app paths をコマンドラインでも適用してくれよって思ってる。
309デフォルトの名無しさん
2019/10/02(水) 12:49:56.03ID:55+aQRnY > 32bit のアプリケーションって 32bit 版の Windows だと Program Files に入るけど
> 64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?
> それだけでも違ってしまうけど
違わない
32bitアプリケーションからは
Program Filesしか見えない
実際はProgram Files (x86)をアクセスしてる訳だが
そんなことは32bitアプリケーション側は知らなくて良いし知らない方が良い
> 64bit 版の Windows だと Program Files (x86) 入るようにするのが基本的な作法じゃん?
> それだけでも違ってしまうけど
違わない
32bitアプリケーションからは
Program Filesしか見えない
実際はProgram Files (x86)をアクセスしてる訳だが
そんなことは32bitアプリケーション側は知らなくて良いし知らない方が良い
310デフォルトの名無しさん
2019/10/16(水) 18:22:59.77ID:imXCztCz class A{
public:
B b
}
class B{
…
}
の時、Aのコンストラクタなどで b = new B; とすると、
このbはAのクラス内で使えますが、Aのデストラクタが走る時に、
bも一緒に消えるのでしょうか。
それとも別途に delete b が必要なのでしょうか。
public:
B b
}
class B{
…
}
の時、Aのコンストラクタなどで b = new B; とすると、
このbはAのクラス内で使えますが、Aのデストラクタが走る時に、
bも一緒に消えるのでしょうか。
それとも別途に delete b が必要なのでしょうか。
311デフォルトの名無しさん
2019/10/16(水) 18:24:40.90ID:uv22jov9 Aのデストラクタにdelete bを書く
312デフォルトの名無しさん
2019/10/16(水) 18:27:03.37ID:imXCztCz 一緒に消えないのですか。どうもありがとうございました。
313はちみつ餃子 ◆8X2XSCHEME
2019/10/16(水) 18:36:34.82ID:d1R3XcHH >>310-312
A のコンストラクタ内で例外が送出されると delete b が実行されない可能性があるのでなるべくならスマートポインタを使うのが望ましいし楽。
A のコンストラクタ内で例外が送出されると delete b が実行されない可能性があるのでなるべくならスマートポインタを使うのが望ましいし楽。
314デフォルトの名無しさん
2019/10/16(水) 18:43:49.83ID:6mvmnwRf B b; と定義したなら、b = new B;が不要で、Aのデストラクタ実行時にbも一緒に消える。
B* b; と定義したなら >>311 だが、わざわざポインタで定義するのは
コピーコンストラクタ等々自前で定義しなきゃならんのでお勧めしない。
スマポならAのデストラクタ実行時にbも一緒に消えるけど、
shared_ptrはコピー時に共有されてしまうし、unique_ptrはコピーできなくなる。
B* b; と定義したなら >>311 だが、わざわざポインタで定義するのは
コピーコンストラクタ等々自前で定義しなきゃならんのでお勧めしない。
スマポならAのデストラクタ実行時にbも一緒に消えるけど、
shared_ptrはコピー時に共有されてしまうし、unique_ptrはコピーできなくなる。
315310
2019/10/16(水) 18:53:13.17ID:imXCztCz なるほど。B* bで書いたつもりが間違ってました。
しかしA内でbを使い回すなら、B b の方が良さそうですね。
どうもありがとうございました。
しかしA内でbを使い回すなら、B b の方が良さそうですね。
どうもありがとうございました。
316蟻人間 ◆T6xkBnTXz7B0
2019/10/22(火) 20:10:13.74ID:+0Lq2R8m C++相談室 part145
https://mevius.5ch.net/test/read.cgi/tech/1568362404/
から移住しました。
YappyCamという録画ソフトを作っています。
https://github.com/katahiromz/YappyCam
よろしくお願いします。
https://mevius.5ch.net/test/read.cgi/tech/1568362404/
から移住しました。
YappyCamという録画ソフトを作っています。
https://github.com/katahiromz/YappyCam
よろしくお願いします。
317デフォルトの名無しさん
2019/10/23(水) 00:02:04.30ID:FSIo0WLO 多分スレチな話題だけど
高速化目的で固定小数点数クラス作って満足してた所に、コンパイラの設定で浮動小数点モデルをfastにしたら何倍も速度差つけられたんだが
どういう原理でそうなるのかわからない 調べても中々資料出てこないし
誰か教えて下しい
高速化目的で固定小数点数クラス作って満足してた所に、コンパイラの設定で浮動小数点モデルをfastにしたら何倍も速度差つけられたんだが
どういう原理でそうなるのかわからない 調べても中々資料出てこないし
誰か教えて下しい
318はちみつ餃子 ◆8X2XSCHEME
2019/10/23(水) 01:44:13.82ID:GER+FSVM >>317
現代では浮動小数点はハードウェア (CPU) のサポートがあるので丸め方の一貫性とか捨ててめいっぱいに CPU の機能を利用したら速いよ。
現代では浮動小数点はハードウェア (CPU) のサポートがあるので丸め方の一貫性とか捨ててめいっぱいに CPU の機能を利用したら速いよ。
319蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 02:19:12.55ID:DFr4VJRt 昔、インテルの一部のCPUにfloating pointの処理に不具合があって、それで高い精度が求められるプログラムでは、ソフトで対応できるようなコンパイラが作られたらしい(要出展?)。
320蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 02:24:10.56ID:DFr4VJRt321デフォルトの名無しさん
2019/10/23(水) 07:13:23.64ID:chxy1JWV ARMのEABIとは逆方向の流れだな
322デフォルトの名無しさん
2019/10/23(水) 09:00:32.48ID:FSIo0WLO >>318-320
thx!
thx!
323蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 12:36:36.18ID:bxABcYeD 記憶媒体の性能を計測してみた。
https://github.com/katahiromz/YappyCam/blob/master/tests/diskrate/diskrate.cpp
SSDでデータを取得。
https://twitter.com/katahiromz/status/1186558848393285633
HDDでデータ取得。
https://twitter.com/katahiromz/status/1186848186737905664
https://twitter.com/5chan_nel (5ch newer account)
https://github.com/katahiromz/YappyCam/blob/master/tests/diskrate/diskrate.cpp
SSDでデータを取得。
https://twitter.com/katahiromz/status/1186558848393285633
HDDでデータ取得。
https://twitter.com/katahiromz/status/1186848186737905664
https://twitter.com/5chan_nel (5ch newer account)
324蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:01:09.43ID:bxABcYeD SSDは早い。400MB/sec近い。
HDDは遅い。100MB/secくらい。
音声に加えて画像も出力することを考慮すると、音声出力の実際の性能は50MB/sec以下だろう。
音声を最高の品質にすると、10msecごとに音声データがおよそ3900バイトあるようだ。1秒では390000バイト、390KB/secになる。余裕のよっちゃんだ。
HDDは遅い。100MB/secくらい。
音声に加えて画像も出力することを考慮すると、音声出力の実際の性能は50MB/sec以下だろう。
音声を最高の品質にすると、10msecごとに音声データがおよそ3900バイトあるようだ。1秒では390000バイト、390KB/secになる。余裕のよっちゃんだ。
325蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:08:27.27ID:DFr4VJRt 記憶媒体やOSはときどきフリーズすることがある。0.5秒フリーズしても耐えられるようにするには、390KB*0.5==195KB。
少なくともこれだけのバッファが必要になる。余裕を持って事前にリングバッファ400KBを用意することにする。
少なくともこれだけのバッファが必要になる。余裕を持って事前にリングバッファ400KBを用意することにする。
326蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:12:48.38ID:DFr4VJRt 一度にファイルに書き込むデータは100KBにする。このデータ量は小さすぎても性能が下がるし、大きすぎると流れが止まってしまう。
327蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:25:45.62ID:bxABcYeD アプリ起動時に音声消費スレッドを起動する。イベントハンドルで音声データが車で待つ。イベントが来たら、音声データを少しずつファイルに吐き出して、消費する。全部消費したら再びイベントを待つ。これの繰り返し。
328蟻人間 ◆T6xkBnTXz7B0
2019/10/23(水) 13:37:23.16ID:bxABcYeD (間違いがあったら指摘してね、よろぴく)
329デフォルトの名無しさん
2019/10/23(水) 14:54:53.56ID:JzA6/vMp 引っ越したんなら質問も引っ越せよ
330デフォルトの名無しさん
2019/10/23(水) 15:27:52.17ID:dG0kuu8/ >>328
ここはお前のメモ帳ではなく掲示板だ
ここはお前のメモ帳ではなく掲示板だ
331蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 20:49:36.30ID:hL+vNXS/ 長く録画してると、画像と音声のタイミングがずれる。
WM_TIMERのせいか?
WM_TIMERのせいか?
332蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 21:21:54.34ID:ZzyW2UAB WM_TIMERの精度が低いから音ずれが起きている。
QPCと別スレッドで書き直し。
QPCと別スレッドで書き直し。
333蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 22:15:20.99ID:hL+vNXS/ std::chrono使ってみるか。
334デフォルトの名無しさん
2019/10/24(木) 22:48:01.86ID:se7EzpzH 何のタイミングを作ろうとしてる?
リアルタイムに録画したデータをストレージに保存するんだよね?
リアルタイムに録画したデータをストレージに保存するんだよね?
335蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 23:08:40.74ID:ZzyW2UAB スクリーンショットを定期的に撮るタイミングだよ。
336蟻人間 ◆T6xkBnTXz7B0
2019/10/24(木) 23:14:06.35ID:ZzyW2UAB どうもタイミングの累積誤差があって、ゲームのWinDepthで試すと動画では音が遅れるみたいなんだ。
337デフォルトの名無しさん
2019/10/24(木) 23:17:05.32ID:se7EzpzH 録画した後、それを再生するとずれていくといこと?
それとも狙った時間でスクショをキャプチャできないという意味?
それとも狙った時間でスクショをキャプチャできないという意味?
338デフォルトの名無しさん
2019/10/25(金) 09:14:50.02ID:cKRHja93 >>336
WindowsMediaPlayer起動しながらやってみたらどうなる?
WindowsMediaPlayer起動しながらやってみたらどうなる?
339蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 13:15:44.76ID:OgTxIR48 Visual Studio 2017だと音ズレはなくなった。
MSYS2のデバッグバージョンでは少しずつ音がずれる。
WinDepth のSTAGE 2にいくと0.5秒ほどずれる。
MSYS2のデバッグバージョンでは少しずつ音がずれる。
WinDepth のSTAGE 2にいくと0.5秒ほどずれる。
340蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 13:28:08.21ID:OgTxIR48 MSYS2のリリースバージョンでも音ズレなくなった。
ありがとうございます。
https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L75
これがPictureConsumerThreadProc (映像消費スレッド)。
https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L158
これがPictureProducerThreadProc (映像生成スレッド)。
次はパフォーマンスを出来る限り高めないといけない。
ありがとうございます。
https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L75
これがPictureConsumerThreadProc (映像消費スレッド)。
https://github.com/katahiromz/YappyCam/blob/master/YappyCam.cpp#L158
これがPictureProducerThreadProc (映像生成スレッド)。
次はパフォーマンスを出来る限り高めないといけない。
341蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 14:06:51.29ID:OgTxIR48 CreateThreadはCRTと一緒に使っちゃいけないらしいから、_beginthreadexで書き直しだ。
342蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 16:19:18.72ID:OgTxIR48 https://twitter.com/katahiromz/status/1187629168042708992
画面切り替え(フルスクリーンゲーム)のときにSegmentation faultが発生する。。。
まずいぞまずいぞ。。。
https://twitter.com/5chan_nel (5ch newer account)
画面切り替え(フルスクリーンゲーム)のときにSegmentation faultが発生する。。。
まずいぞまずいぞ。。。
https://twitter.com/5chan_nel (5ch newer account)
343蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 16:30:53.82ID:OgTxIR48 https://twitter.com/katahiromz/status/1187632297601716225
これ見て原因わかりますか?
https://twitter.com/5chan_nel (5ch newer account)
これ見て原因わかりますか?
https://twitter.com/5chan_nel (5ch newer account)
344蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 17:01:41.65ID:OgTxIR48 PT_SCREENCAPにBITMAPチェックを入れたら直った。
画面にごみが残るのはどうにかならないかなあ?
画面にごみが残るのはどうにかならないかなあ?
345蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 18:50:20.70ID:VkouAEbH フレーム落ちはしてないから、性能の問題ではない。たぶんフレームと音声のタイミングの違いだろう。音声の方が長い場合は音声を削ることも検討する。
346デフォルトの名無しさん
2019/10/25(金) 18:53:10.78ID:cKRHja93 >>338はどうなんよ?
347蟻人間 ◆T6xkBnTXz7B0
2019/10/25(金) 19:06:40.11ID:OgTxIR48348デフォルトの名無しさん
2019/10/25(金) 19:36:22.67ID:q8W1xqeq あらかじめMediaPlayerを起動しておくと
あら不思議なぜか動作が軽い
っていうのは昔から有名な検証方法の一つ
あら不思議なぜか動作が軽い
っていうのは昔から有名な検証方法の一つ
349デフォルトの名無しさん
2019/10/25(金) 20:00:49.22ID:VxINcxQ3 スレチのキチガイを飼い慣らすのは止めてください
350デフォルトの名無しさん
2019/10/25(金) 20:38:50.75ID:StYWqeWG どうせ過疎スレ
351デフォルトの名無しさん
2019/10/25(金) 22:23:03.54ID:MULKQLsl >>347
Windowsのタイマーはmsecのオーダーは出ない(Linuxもだ)
それしかビデオのタイミング作る手段がないならタイムスタンプ管理すべきだ
またPCではそもそもハードウェア的にビデオとオーディオは同期してる保証がない
その前提を踏まえてつくる必要がある
オーディオもビデオもキャプチャしたタイミングでタイムスタンプを取得して同様にファイルに保存する
再生するときにそのタイムスタンプを比較してビデオが±0.5フレームずれてきたら
フレームをスキップかリピートして調整する
オーディオを基準に考えるのがポイントだ
最後にWindows10では画面録画は標準機能だ
Windowsのタイマーはmsecのオーダーは出ない(Linuxもだ)
それしかビデオのタイミング作る手段がないならタイムスタンプ管理すべきだ
またPCではそもそもハードウェア的にビデオとオーディオは同期してる保証がない
その前提を踏まえてつくる必要がある
オーディオもビデオもキャプチャしたタイミングでタイムスタンプを取得して同様にファイルに保存する
再生するときにそのタイムスタンプを比較してビデオが±0.5フレームずれてきたら
フレームをスキップかリピートして調整する
オーディオを基準に考えるのがポイントだ
最後にWindows10では画面録画は標準機能だ
352デフォルトの名無しさん
2019/10/25(金) 22:35:35.48ID:cKRHja93 >>347
とりあえずやってみたらいいのに
とりあえずやってみたらいいのに
354デフォルトの名無しさん
2019/10/25(金) 22:56:14.57ID:APY4ctz9 timeBeginPeriod使えで済む話だろう
355蟻人間 ◆T6xkBnTXz7B0
2019/10/26(土) 11:07:21.59ID:Q5f3+aYX■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 ★5 [蚤の市★]
- 【実況】博衣こよりのえちえちチーズケーキを仕込み(雑談あり)🧪
- 【速報】1ポンド210円で日英GDP逆転(残り1.5円)...世界6位の経済規模に転落 [237216734]
- 【超速報】統一教会、陳謝 [519511584]
- 高市政権「かけてもつながらない。機能していない」防衛当局間のホットライン機能せず [834922174]
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑★2 [931948549]
