ERI Developer's BBS
  新規投稿 ┃ ツリー表示 ┃ 一覧表示 ┃ トピック表示 ┃ 検索 ┃ 設定 ┃ ホーム  
5 / 9 ページ ←次へ | 前へ→

Re:あ…
 L.Entis  - 02/6/17(月) 12:09 -

引用なし
パスワード
   ▼L.Entisさん:
>あぅ。

うぐぅ

>>1."descript" レコードを探す
>>以下ちょっと手抜きコード。
>>struct { __int64 recid ; __int64 reclen ; } rechdr ;
>>SetFilePointer( hFile, 0x50, NULL, FILE_BEGIN ) ;
>>do
>>{
>>  ReadFile( hFile, &rechdr, sizeof(rechdr), &dwReadBytes, NULL ) ;
>>  if ( dwReadBytes < sizeof(rechdr) )
>>    return ; // エラー
>>while ( rechdr.recid != *((__int64*)"descript") ) ;
>>pszDesc = (char*) GlobalAlloc( GPTR, (DWORD) rechdr.reclen ) ;
>>ReadFile( hFile, pszDesc, (DWORD) rechdr.reclen, &amp;amp;dwReadBytes, NULL ) ;
>
>次のレコードへ移行するときのシークが抜けてますね。(^^;)
>あと、補足としましては、0x40 からヘッダレコードのトータルサイズを取得してそれを超えないようにするチェックを入れると完璧です。

UNICODE のチェックもしないとまずいですね。
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)@fw.zeroeks.co.jp>

MMX,SSE,SSE2すげー
 KAZ  - 02/6/17(月) 11:59 -

引用なし
パスワード
   頻度表更新のためにMMXに単純に置き換えても15秒の処理が12秒にスピードアップしました。
自分なりに慎重に最適化した結果10秒になりました。
まだアセンブラよくわからず、とりあえず動くだけのとこも多いです。
INC [EAX]はバイト単位でインクリメントしてしまいます。
MOV EBX,[EAX]
INC EBX
MOV [EAX],EBX
としないと32ビット単位でインクリメントしてくれないとか…

SSEは3Dなどでの実数演算。
SSE2はMMX,SSE2のパワーアップ版と聞いていますが詳細はまだ知りません。
でも整数演算がMMXの2倍の量で出来るらしいので調べてみます。
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@U105104.ppp.dion.ne.jp>

あ…
 L.Entis  - 02/6/16(日) 22:19 -

引用なし
パスワード
   あぅ。

>1."descript" レコードを探す
>以下ちょっと手抜きコード。
>struct { __int64 recid ; __int64 reclen ; } rechdr ;
>SetFilePointer( hFile, 0x50, NULL, FILE_BEGIN ) ;
>do
>{
>  ReadFile( hFile, &amp;rechdr, sizeof(rechdr), &amp;dwReadBytes, NULL ) ;
>  if ( dwReadBytes < sizeof(rechdr) )
>    return ; // エラー
>while ( rechdr.recid != *((__int64*)"descript") ) ;
>pszDesc = (char*) GlobalAlloc( GPTR, (DWORD) rechdr.reclen ) ;
>ReadFile( hFile, pszDesc, (DWORD) rechdr.reclen, &amp;dwReadBytes, NULL ) ;

次のレコードへ移行するときのシークが抜けてますね。(^^;)
あと、補足としましては、0x40 からヘッダレコードのトータルサイズを取得してそれを超えないようにするチェックを入れると完璧です。
・ツリー全体表示
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa1-244.kcom.ne.jp>

Re:ERINA-Library 1.0D?
 L.Entis  - 02/6/16(日) 21:53 -

引用なし
パスワード
   ども〜、L.Entis です。

▼Kobarinさん:
>そういえば *.skr という形式もあったと思うのですが…。
>L.Entis さんが作ったんじゃありませんでしたっけ?
>何か勘違いしてるかな。(?_?)

いえいえ、SKR は私が策定した形式です。
出来が悪いのですでに忘れ去られておりますが…。
MIO も時間が出来次第、バージョンアップしたいところではありますが…。
・ツリー全体表示
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa1-244.kcom.ne.jp>

Re:ERINA-Library 1.0D?
 Kobarin  - 02/6/16(日) 1:44 -

引用なし
パスワード
   >これ、萌衣☆Player ですね。どうも、頭が半分死んでおります。

これってすごいですよね。デコーダを自作できるような人の多くは GUI は
苦手だったりすることが多いのですが、L.Entis さんは何でも出来ちゃう
んですね…。

>>とは別スレッドで先読みするような仕様になっているようですが、これを
>>抑制することは出来ないでしょうか?
>なるほど、検討しておきます。

よろしくお願いします。

>ERIFile::ETagInfo クラスと、ERIWriteFile::ETagInfo などで可能です。

ありゃ。それでしたか。(汗;
名前からして *.eri 専用かと思ってました。(^^;

>独立した実装となると少々面倒ではありますが、とりあえず次のような実装でタイトル取得が可能だと思います。
・・・
>とりあえず必要であれば、上を参考にして組んでもらえればと思います。

わざわざどうもありがとうございます。参考にさせて頂きます。

余裕があったら KbSTE(SuperTagEditor の改造版)でも MIO のタグ情報の
書き換えに対応しようと思います。


そういえば *.skr という形式もあったと思うのですが…。
L.Entis さんが作ったんじゃありませんでしたっけ?
何か勘違いしてるかな。(?_?)
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)@m115199.ap.plala.or.jp>

Re:ERINA-Library 1.0D?
 L.Entis  - 02/6/16(日) 1:15 -

引用なし
パスワード
   はじめまして、L.Entis です。

▼Kobarinさん:
>ところで、「新着情報」には ERINA-Library 1.0D リリースと書かれて
>いますが、「ダウンロード」ページでダウンロードできるライブラリは
>1.0A のようです。1.0D はどこにあるのでしょうか?

あぅ、すいません。
これ、萌衣☆Player ですね。どうも、頭が半分死んでおります。

>1つ要望があります。今の MIODynamicPlayer クラスは、EFileObject
>からのデータの読み込みを実際のデコードルーチン(GetWaveBufferFrom?)
>とは別スレッドで先読みするような仕様になっているようですが、これを
>抑制することは出来ないでしょうか?

なるほど、検討しておきます。
このような要望は他でも聞きましたので。

>それと、タイトル読み込みは出来ないのでしょうか?
>erinaf.doc にはタグ情報に関する記述がありますし、恵理ちゃん
>club の音楽室にあるサンプルにはタグ情報が埋め込まれているよ
>うなのですが、タグ情報を取得するための API を見つけることが
>出来ませんでした。

ERIFile::ETagInfo クラスと、ERIWriteFile::ETagInfo などで可能です。

>出来れば、ERINA-Library 専用のクラスを一切用いない、通常の
>Win32 API だけで取得できるような API を提供して頂けると助
>かるのですが…。インターフェース部分だけではなく、実装部分
>も含めて、です。

独立した実装となると少々面倒ではありますが、とりあえず次のような実装でタイトル取得が可能だと思います。

1."descript" レコードを探す
以下ちょっと手抜きコード。
struct { __int64 recid ; __int64 reclen ; } rechdr ;
SetFilePointer( hFile, 0x50, NULL, FILE_BEGIN ) ;
do
{
  ReadFile( hFile, &rechdr, sizeof(rechdr), &dwReadBytes, NULL ) ;
  if ( dwReadBytes < sizeof(rechdr) )
    return ; // エラー
while ( rechdr.recid != *((__int64*)"descript") ) ;
pszDesc = (char*) GlobalAlloc( GPTR, (DWORD) rechdr.reclen ) ;
ReadFile( hFile, pszDesc, (DWORD) rechdr.reclen, &dwReadBytes, NULL ) ;

2.タグ情報を解析
pszDesc を解析します。
ERIFile::ETagInfo クラスの CreateTagInfo 関数を書き換えれば比較的簡単ではないかと…。fileacc.cpp に入っています。

とりあえず必要であれば、上を参考にして組んでもらえればと思います。
・ツリー全体表示
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa2-66.kcom.ne.jp>

ERINA-Library 1.0D?
 Kobarin  - 02/6/15(土) 22:09 -

引用なし
パスワード
   はじめまして。Kobarin と申します。
拙作「KbMedia Player」にて、ERINA-Library を使用して、MIO 形式に
対応させて頂いています。どうもありがとうございます。

ところで、「新着情報」には ERINA-Library 1.0D リリースと書かれて
いますが、「ダウンロード」ページでダウンロードできるライブラリは
1.0A のようです。1.0D はどこにあるのでしょうか?


1つ要望があります。今の MIODynamicPlayer クラスは、EFileObject
からのデータの読み込みを実際のデコードルーチン(GetWaveBufferFrom?)
とは別スレッドで先読みするような仕様になっているようですが、これを
抑制することは出来ないでしょうか?

KbMedia Player 本体の方で先読み相当の処理をすでにやっているので、
出来ればプラグイン側では先読みさせたくありません。
今の仕様だと、プレイヤー側でデコードスレッドの優先順位を上げて
も、先読みスレッドの優先度が変わらないのではあまり効果がなくな
ってしまうように思えます。

かといって先読みスレッドの優先度をプラグイン側で変更できるよう
にすることも出来ません。これは KbMedia Player のプラグインの
仕様上、どうしようもありません。(汗;


それと、タイトル読み込みは出来ないのでしょうか?
erinaf.doc にはタグ情報に関する記述がありますし、恵理ちゃん
club の音楽室にあるサンプルにはタグ情報が埋め込まれているよ
うなのですが、タグ情報を取得するための API を見つけることが
出来ませんでした。

出来れば、ERINA-Library 専用のクラスを一切用いない、通常の
Win32 API だけで取得できるような API を提供して頂けると助
かるのですが…。インターフェース部分だけではなく、実装部分
も含めて、です。

要するに KbMedia Player 本体に MIO のタイトル取得ルーチンを
組み込みたいのです。
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461; .NET CLR 1.0.3705)@j191024.ap.plala.or.jp>

すごい。
 KAZ  - 02/6/14(金) 0:06 -

引用なし
パスワード
   長いですけど、分からんことないのでがんばります。
圧縮率は低いですが、とりあえず形にしないと。
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@U109169.ppp.dion.ne.jp>

Re:Winampプラグインの作り方
 L.Entis  - 02/6/13(木) 21:33 -

引用なし
パスワード
   ▼KAZさん:
>>MIO の WinAMP プラグインは、ダウンロードのページにある、プラグイン集に入ってはいますが。
>あ、それはすいませんでした。
>Winampのプラグインの作り方って公式サイトではないみたいですが、プラグイン

http://www.muratasystem.or.jp/~boita/

こことか良いと思いますよ。
・ツリー全体表示
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa2-200.kcom.ne.jp>

Winampプラグインの作り方
 KAZ  - 02/6/12(水) 0:50 -

引用なし
パスワード
   >MIO の WinAMP プラグインは、ダウンロードのページにある、プラグイン集に入ってはいますが。
あ、それはすいませんでした。
Winampのプラグインの作り方って公式サイトではないみたいですが、プラグインのソースって公開していただけないんでしょうか?Winampプラグインの作り方を知りたいのですけど…そういったインターフェース部分だけでもいいですので。だめでしょうか?
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@N060181.ppp.dion.ne.jp>

Re:MIOのサンプルについて
 L.Entis  - 02/6/11(火) 23:41 -

引用なし
パスワード
   ども〜〜〜、L.Entis です。

▼KAZさん:
>EntisさんはWinampとかメディアプレイヤーのプラグインには対応させないのでしょうか?

時間があればって感じでしょうか?
MIO の WinAMP プラグインは、ダウンロードのページにある、プラグイン集に入ってはいますが。
・ツリー全体表示
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa2-4.kcom.ne.jp>

MIOのサンプルについて
 KAZ  - 02/6/10(月) 14:21 -

引用なし
パスワード
   僕も自作する上で音の出し方など、とても参考になります。

EntisさんはWinampとかメディアプレイヤーのプラグインには対応させないのでしょうか?
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@U108128.ppp.dion.ne.jp>

ありました
 KAZ  - 02/6/10(月) 8:04 -

引用なし
パスワード
   >通常の86命令に関してはpdfファイルダウンロードしたのでいいのですが、MMX,SSE,SSE2などはないものでしょうか?
ダウンロードしたpdfに含まれていました。しかしとてもムズカシイかき方をしていて大変そうです。
符号化、復号化に応用できそうな応用できそうな機能があったら教えてくださいね。
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@U108128.ppp.dion.ne.jp>

MMX
 KAZ  - 02/6/10(月) 7:55 -

引用なし
パスワード
   32ビット出力。それは早そうですね。
算術符号でMMXを応用するにはどうすればよいのでしょうか?
そもそもMMXはおおざっぱな機能しかわからないものですから、具体的にどのような命令セットがあるか知りたいです。
通常の86命令に関してはpdfファイルダウンロードしたのでいいのですが、MMX,SSE,SSE2などはないものでしょうか?
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@U108128.ppp.dion.ne.jp>

Re:う〜〜〜〜ん2(笑)
 L.Entis  - 02/6/9(日) 22:56 -

引用なし
パスワード
   ▼KAZさん:
>もしかして32ビット変数でRangeCoderって8ビット単位で出力できますが、このとき精度は32-8で24ビット。
>これの出力を16ビットで行えば32-16で精度は16ビット。ってことですか?

いえ、演算制度が16ビットの算術符号と言う意味です。
出力(入力)は32ビット単位です。
・ツリー全体表示
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa2-250.kcom.ne.jp>

Re:う〜〜〜〜ん2(笑)
 KAZ  - 02/6/8(土) 20:40 -

引用なし
パスワード
   >演算制度の関係で高速化できるんですよ、16ビットだと。
>それに、MMX も使えますしね。
もしかして32ビット変数でRangeCoderって8ビット単位で出力できますが、このとき精度は32-8で24ビット。
これの出力を16ビットで行えば32-16で精度は16ビット。ってことですか?
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@R217040.ppp.dion.ne.jp>

Re:う〜〜〜〜ん2(笑)
 L.Entis  - 02/6/8(土) 15:27 -

引用なし
パスワード
   ▼KAZさん:
>>16ビットの算術符号であること(高速化のため)<かなり高速と思われます
>Pentium系は普通32ビット単位が効率的だと思うので32ビット算術符号とスピード変わらない気がしますが、自分では試してないですがどうでしょうか?

演算制度の関係で高速化できるんですよ、16ビットだと。
それに、MMX も使えますしね。
・ツリー全体表示
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa2-214.kcom.ne.jp>

Re:う〜〜〜〜ん2(笑)
 KAZ  - 02/6/8(土) 9:50 -

引用なし
パスワード
   >16ビットの算術符号であること(高速化のため)<かなり高速と思われます
Pentium系は普通32ビット単位が効率的だと思うので32ビット算術符号とスピード変わらない気がしますが、自分では試してないですがどうでしょうか?
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@R203198.ppp.dion.ne.jp>

Re:う〜〜〜〜ん2(笑)
 L.Entis  - 02/6/6(木) 23:49 -

引用なし
パスワード
   ▼KAZさん:
>「データ圧縮ハンドブック」は統計モデルのかなりのテクニックがかいてありますが、それらは全てやってもLZHに負けると?う〜む謎。

まあ、速度とかパフォーマンスにかなり重点を置いていますので(ある程度無視するんじゃなかったのか?)、最高のものとはいえないでしょう。
とりあえず、現時点でのスペックは、

16ビットの算術符号であること(高速化のため)<かなり高速と思われます
最大約3MBのワークを必要とする(大抵そんなには使わないけど)
圧縮率が、ERINA でつかっている1次ハフマンより1〜2割良い。

こんなところです。
もちろん、ERISA が最大のターゲットとしているデータだと LZH よりもだいぶ圧縮率はいいです。
ちなみに、まったくのエントロピー符号のみ(差分処理などを行わない)での比較をすると、ERISA と ERINA では以下のようなサイズの差があります。(性能評価のページにある画像です)

photo.bmp : 1407 KB
ERINA : 1143 KB
ERISA : 1047 KB

scape.bmp : 901 KB
ERINA : 619 KB
ERISA : 470 KB

eri.bmp : 698 KB
ERINA : 361 KB
ERISA : 257 KB

PPMの統計モデルのツリーの構成を、パターンデータに特化してあげれば、パターンデータでは圧縮率が上がるのですが、マルチメディア系のデータだと圧縮率が伸び悩むので、とりあえずこんなんでいこうかと…(汗)
・ツリー全体表示
<Mozilla/4.75 [ja] (Windows NT 5.0; U)@tokyo-fa1-226.kcom.ne.jp>

う〜〜〜〜ん2(笑)
 KAZ  - 02/6/6(木) 23:02 -

引用なし
パスワード
   「データ圧縮ハンドブック」は統計モデルのかなりのテクニックがかいてありますが、それらは全てやってもLZHに負けると?う〜む謎。

ずっとPCMを可逆圧縮考えてますが…Monkey's Audioクラスにはほど遠いです。
8ビット22.1Khz1チャネルのWAVEのサイズは5158KB
可逆mioで4699KB
Monkey's Audioで4321KB
自作1次PPMで4494KB(次数を増やすと圧縮率が低下する)
猿はすごいです!どんなアルゴリズムやら、公式サイトにいっても猿とのインターフェースのソースは公開しているものの圧縮部分のコードは公開していないです。
しかもエンコードが相当早い!PPM使っているとは思えないですね。単純なアルゴリズムなんだとは思いますが、公式サイトの解説みても一般的なことしか書いていないし…
・ツリー全体表示
<Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)@M067164.ppp.dion.ne.jp>

  新規投稿 ┃ ツリー表示 ┃ 一覧表示 ┃ トピック表示 ┃ 検索 ┃ 設定 ┃ ホーム  
5 / 9 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
7920 C-BOARD v3.02 is not Free?