スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 揚げ足を取る? | トップページ | 最初の山は越えた »

判った様な判らん様な

今は、Mirror-DTCの次バージョンを開発中なのだが、AGM-DCT+相当のエンコーダー実装に苦戦している。で、正しく実装できていない原因については、何となく判った感じなのだが、まだ、完全に理解できていない感じなので、ちゃんと動きだすのは明日になりそうだ。

AGM-DCT+の開発者は作者だし、Mirror-DTCの開発者も作者になるのだが、だとすると、どうしてAGM-DCT+をMirror-DTCに実装するのに、ここまで苦労するのかは、作者的にも不思議ではある。

しかしまあ、AGM-DCT+と一言で言っても、実際には、RGBtoYV12変換だとか、DCT変換だとか、差分DCT変換だとか、符号化だとか、逆符号化だとかIDCT変換だとか差分IDCT変換だとか、YV12toRGB変換だとかがある訳だ。

更に細かく書くと、DCT変換だとかIDCT変換では、変換用の係数を使うし、量子化用のパラメータもある。

更に、RGBtoYV12変換なんかでは、色データを8Bitに収める為に、値にオフセットを付けたり外したりしている。

で、上記のパラメータの組み合わせが一つでも間違っていると、正しくエンコード/デコード出来なくなる訳だ。

そして、AGM-DCT+はAmuseGraphics系用に処理コードを記述してあったのだが、処理性能を向上させる為に、例えば、本来なら、RGBtoYV12変換内で行うべきオフセットの調整をDCT変換処理ルーチン内で行ったりしている。

更に、AmuseGraphics系のエンコーダーとMirror-DTC系のエンコーダーは似て非なるモノになる訳なので、パラメータ値の調整云々に関しても、AmuseGraphics系のソレをそのまま持ってくると可笑しくなる訳だ。

と、いう事で、作者的にも、予想だにしなかったくらい苦戦している訳なのだが、適当にパラメータを弄っていても埒が明かないため、既に、多くの処理ルーチンを単純化した別モノに置き換えている。

例えば、符号化については、圧縮コードにしてしまうとデバッグし辛いので、圧縮せずに渡す様にしているし、RGBtoYV12/YV12toRGB変換が影響しないように、YUVデータは内部的に固定値を入力したりしている。

にも関わらず、今日の時点でも、AGM-DCT+によるエンコード結果は正しくデコードできていないのだが、このAGM-DCT+というのも、既に、より単純化してある。

なので、問題は、差分DCT変換とIDCT変換でのデータの扱い方の違い、という所までははっきりしていて、その違いについても、YUV値につけるオフセットに対する認識が両者で異なっている、という所まで判っている。

そこまで判っているのなら、それらを合わせれば良いだけでしょ? と、言われそうではあるのだが、問題は、そういう所には無い訳だ。

それでは、何処にあるのか、というと、それ以前の処理の流れになる訳だ。

何故なら、Mirror-DTCでは、従来エンコーダーとAGM-DCT+エンコーダーの双方を使える様にしようとしている訳なので、AGM-DCT+で問題なければそれで良し、とはならないからだ。

つまり、現時点で、問題がある事は判っているのだが、その問題を何処で修正するのかについては、まだ、良くわかっていない状況になる。

まあ、コードを見ていない人にしてみれば、何の事やら? と、いう感じかもしれないのだが、最終的にAGM-DCT+エンコーダーをMirror-DTCに溶け込ませる為には、色々と鑑みる必要がある訳だ。

ちなみに、AGM-DTC+の実装には手間取っているのだが、そのお蔭で、Mirror-DTCのエンコード部については、色々と真面目に見る格好になったので、その後の展開は速いかもしれない。

いずれにしても、今週末には、AGM-DCT+を使ったデータ転送も、普通にできていないと言う事は無い筈だ。

= この記事に関連する公開中ソフト =

Mirror-DTC

Mirror-DTC

(2016/05/04追記)

« 揚げ足を取る? | トップページ | 最初の山は越えた »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/63046362

この記事へのトラックバック一覧です: 判った様な判らん様な:

« 揚げ足を取る? | トップページ | 最初の山は越えた »

2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google