全24件 (24件中 1-24件目)
1
http://yakki-.hp.infoseek.co.jp/tc/videoeasyinfo/vei070228a.lzh主な変更点は、MP3判定を厳しくした。(もしかすると、厳しくしすぎたかも)AVIのコーデック変換で、XviDでのBフレ(BVOP)判定がうまく処理されていなかったのを修正した。後、こまかな修正をしているはずで、すべてを覚えていません。真空の黒羽氏のBBSで、話題になっている音なしのMPEGの再生時間については、従来のGOP計算のみ対応というレベルです。その内、サンプルが揃えば、3段階体制にするつもりです。ハッシュ何とか、CRC32,MD5,SHA1のGUIへの実装が終わり、多分、何とか、使えるレベルには仕上がりました。これから、1ヶ月ほど、計算が本当に正しいのか検証するため、一般公開は、先になります。多分、公開するつもりです。さて、明日から3月、そろそろ、vei.dllのmatroskaへの対応に乗り出せると思います。22:24 追加GOPが壊れているサンプルが入手できたので、早速、Delphi,C版、それぞれを修正してみました。[118091main_other_loop_sm.mpeg]320x240 1:1 23.976fps 1158.00kbps 40960Byte(24000/1001)fps[MPEG1] 1,990,212Byte / 00:00:11.000 (11.00Sec)[mpeg2-es_noscr_brokengop.mpeg]720x480 4:3 29.97fps 9800.00kbps 229376Byte (30000/1001)fps[MPEG2] 9,816,143Byte / 00:00:08.013 (8.01Sec)video easy info mini 070128β / DLL 070224β[118091main_other_loop_sm.mpeg][26]320x240 1:1 1158kbps 23.976fps 40960Byte[MPEG1] 1,990,212Byte 0:00:11.000(11.000000sec)video easy info DLL 070228α----------[mpeg2-es_noscr_brokengop.mpeg][26]720x480 4:3 9800kbps 29.97fps 229376Byte[MPEG2] 9,816,143Byte 0:00:08.013(8.013178sec)video easy info DLL 070228α----------後日、真空のように、時間計算をどう処理したのか、Extra扱いで、コメントを入れる予定です。
2007年02月28日
コメント(0)
早いもので、明日で2月が終わるんですよね。vei.dllを進めたい気持ちと、ハッシュ計算ソフトを、もうちょっと実用的なレベルに持っていきたい気持ちと、色々あって、後、ちょっと、こういうブログのように公(おおやけ)向けには書けない計画とか、様々です。ということで、今日も、ちょっと、時間がないか。これまで。
2007年02月27日
コメント(0)
ハッシュの計算をするソフトを、少しずつ進めています。とりあえず、CRC32だけは、GUIに持ってこれました。MD5,SHA1も同様にGUIに持ってくる予定です。時間がないので、今日は、これまで。
2007年02月26日
コメント(0)
ハッシュとしては、CRC(32),MD5,SHA1の3種類をCで計算させる手段を検討しています。今回参考にしたのは、XySSLです。参考というより、丸ごとコピー&ペーストといった感じです。自力で書くより、こういうサイトで公開されているものを使った方が、計算の正確さを検証する手間が省けてよさそうだと思いました。まだ、今のところは、DOSコンソールで動くレベルですが、GUIに実装して、実用的に使えるようにしたいです。これまでは、CRCとMD5を同時に計算できるようにしてきたのですが、果たして、2つのハッシュが必要になる事例がどれほどあるのか?ちょっと考える余地がありそうな気がして来ました。3つの内、どれか一つを計算するような仕様にするのも、いいのかなと思っています。ハッシュが落ち着けば、vei.dllに心おきなくいけるでしょう。
2007年02月25日
コメント(0)
ReAspectと、EOF Deluxeを公開。Delphi版vei.dllも。さて、Delphi版のvei.dllで、特定の中身のファイルの、判別がうまく行かなくて、テキスト/バイナリ判別を一時的に外すことにしました。前にも書いた覚えがありますが、あまりに、veiが多機能化してきたせいで、すでに、Delphi版のDLLは、収拾が付かなくなって来ています。つまり、下手に修正を掛けると、他の処理にも影響が出てしまう可能性が大きいということです。特に、ファイル判別処理については、顕著にその影響が出てくるでしょう。幸いな事に、C版では、その辺の判別がうまく行っていそうなので、C版の方の開発を着実に進めて、いつか、DelphiからCに開発環境をバトンタッチできるようにしたいと思っています。Delphi版のβですが、DLLの仕様変更が、これ以上ないと確信できれば、正式版として公開することもできます。C版のコーデック周りが、もう、ほぼ大丈夫なので、おそらく、現仕様で、この先も問題は起きないとは思いますが。。。仕様変更が許されるのは、βの内だと思っていますので、もうちょっとβで進行する事になると思います。ハッシュの方は、せめて、WAVのCRCを計算する術を何か用意しておきたいと思っているので、それが、どうにかなったら、vei.dllのmatroskaへ、と思っています。
2007年02月24日
コメント(0)
ReAspect,EOF Deluxeのバージョンアップvei.dll(delphiとC版同時公開) MPEG絡みの再調整これらが、うまく進んだら、ハッシュをCで組み直す。そして、C版vei.dllのmatroska対応をボチボチと。とにかく、片付けられるものを少しずつでも。
2007年02月23日
コメント(0)
入手したSHA-1のソースを、何とか読み解いて、Hash C&Cに取り入れたいところですが、まず、Cで作るなら、MD5,CRCをCに移植しないといけないし、SHA-1を現ソフトに取り入れるなら、DLLの方にはめ込まないといけないし。また、DLLは、コールバック仕様にしているので、CでDLLを作り、コールバック仕様にするなんて、今、ググっているんですが、適当なサンプルが全くないという現状です。ということなので、ハッシュについては、ちょっと、後回し気味にしないといけないみたい。ほんとにもう、あれもこれも状態です。
2007年02月22日
コメント(0)
[118091main_other_loop_sm.mpeg][26]320x240 1:1 1158kbps 23.976fps 40960Byte[MPEG1] 1,990,212Byte 0:00:11.000(11.000000sec)video easy info DLL 070221α----------2/15で微調整をする事を書きました。ちょっと、調整を急ぐ必要性が生じたため、推測の域を超えませんが、やってみました。一応、サンプルのファイルは、11秒と解析するようになりました。できれば、Delphi版も修正して、こまめに公開する予定です。Sha1ハッシュに手を出す事を昨日書きましたが、これまで、CRCとMD5は、Delphiで実現しています。さて、ハッシュは他にも、Sha-1というのがあって、これも、興味があります。現に必要性に迫られています。そこで、Sha-1のCでのサンプルを見つけ出し、BCCでコンパイルができたので、これを元に、取り入れようと思います。vei.dllは、ハッシュが落ち着いたら、進めるかもしれません。
2007年02月21日
コメント(0)
ちょっと、ブログをお休みしていました。色々、都合がありまして。vei.dllは、次にmatroskaに進む事は、決めていますが、まだ、着手していません。そのうちという事で。最近、Cでハッシュの計算(CRC,MD5)をさせてみたいと思うようになりました。というのも、すでに、Delphiで、Hash C&Cというのを公開していますが、Cの計算の速度というのを、ここで、知っておくのもいいかな?と思い、計算速度を見るなら、ハッシュが一番実用的かな?と思っています。別件で、EACでリッピングした際に、WAVのCRCが計算されるんですが、あれって、ヘッダを含まない値なので、ちょっと、手直ししないといけないんです。ということで、どこかのタイミングで、ハッシュの計算にも、手を出していたいと思っています。前回書いた、EOF DeluxeとReAspectのバージョンアップも、そろそろいいんじゃないかと思っています。これはもう、手元では直っているので、後は、ドキュメントの更新と公開のみなんです。そうそう、真空も、MPEG-ES(映像のみ)の再生時間算出に対応されたようですが、どうやら、私とは違うアプローチを採ったようです。何だか、単純に、ファイルサイズをビットレートで割るというスタンダードな方法みたいで。それだと、結構、誤差が出てしまうので、私は、別の手段を模索してみた訳です。果たして、黒羽氏は、私が見つけたあの情報に気が付くのか?多分、veiの方は、誤差が出ても1秒だと思います。誤差をなるべく出さないようにする方法は、分かっているんで、どこかのタイミングで、修正を入れておきたいところです。
2007年02月20日
コメント(0)
昨晩、ブログを書いた後に、寝床に横になった時に、ふと、「そう言えば」と、思いつき、再度、コーデック処理を見直したところ、バグの原因が見つかりました。非常に、初歩的なミスなので、具体的な事を書くことは避けます。これで、大量のファイルを連続して解析させてもOKなはず。また、すでに、今日付でDLLをアップしてありますが、Pack HeaderのないMPEGで、再生時間を計算する手段を見つけたので、C版の方も修正を加えてあります。前回からの修正をまとめると、・QT 編集ソフト名の表示・コーデック変換の修正・MPEG、再生時間の計算方法の修正http://yakki-.hp.infoseek.co.jp/tc/videoeasyinfo/vei070217a.lzhこれで、MPEG,AVI,QTと、現状のDelphi版とほぼ同じになったはず。それで、次は、matroskaの予定ですが、MPEGの修正が入ったことで、ReAspectも一度バグの修正を含めて一度公開することにします。EOF Deluxeも、同様。
2007年02月17日
コメント(0)
どうやら、コーデック変換をしなくなるバグは、AVIに限ったことではなく、WAVでも起こります。大量のファイルを、veimain.exeにドロップしてやると、途中から、C無表示になってしまいました。コーデックファイル(vei-codec.ini)の有無をチェックする部分に何かあるらしいはずだから、明日以降、手を付けてみます。QTの編集ソフト名の取り出しと、音なしMPEGの再生時間の算出を実装したDLLは、明日にでも公開の予定です。もうすでに、手元では直してあります。それにしても、こうも、コーデック変換部分で足踏みを食らうとは。。。考えられる手段は、なるべく講じて、何とか、克服したいです。
2007年02月16日
コメント(0)
AVIのコーデック変換で、うまくいかない報告があり、これは、また、原因を突き止めないといけないところです。別件で、音なしMPEG(映像のみのES)で、再生時間を出してきませんでした。(Pack Headerがないので、出しようがない...と思っていた)でも、MMName2では、出しているし、何より、Media Playerでは、ちゃんと出ているので、ファイルの中のどっかに、そういう情報があるはずだと思い、じっと、探していたら、何か、それらしい情報が見つかったので、試してみた所、何だか、うまくいっていそうなので、音なしMPEGでも時間が出せそうです。MMname2 v2.5.0 2006/02/03版 (DB 20060203) - Windows 2000 Service Pack 4(5.0.2195)■基本情報ファイル:118091main_other_loop_sm.mpeg形式:MPEG1/Video / サイズ:1,990,212 (1.89 MB) / 再生時間:11s(略)■真空波動研情報320x240 23.98fps 1:1 1158.00kb/s[MPEG1] 00:00:00 (0.00sec) / 1,990,212BytesSinku.DLL 070202[118091main_other_loop_sm.mpeg][26]320x240 1:1 1158kbps 23.976fps 40960Byte[MPEG1] 1,990,212Byte 0:00:10.000(10.000000sec)video easy info DLL 070214α----------1秒の誤差は、後で、何とかする予定。
2007年02月15日
コメント(0)
Quick Timeの方が、良さそうなので、ここまでのvei.dllを公開します。http://yakki-.hp.infoseek.co.jp/tc/videoeasyinfo/vei070214a.lzh同梱のveimain.exeを実行してください。また、videoei.exe 070128βからでも、一応、使えます。作者側で、一通りの挙動は確認してありますが、未確認のバグがあるかどうか・・・ちょっと、AVIの方で、コーデック変換が時折うまく行っていなさそうな現象を確認しています。まだ、再現性とか、詳しくは分かっていません。ということで、matriskaに入る前に、ちょっと一息付こうかな。
2007年02月14日
コメント(1)
エラーの発生原因も分かり、fpsや、bitrateなど、細かな調整をしています。だいたい良いかな?という所に来ました。[*.3gp][15]176 x 144 MPEG4 24Bit 14.985fps 64.000kbpsMPEG4-AAC(LC) 16000Hz 2ch 16Bit 32.000kbps 14,367,301Byte 0:04:08.114(248.114533sec)video easy info DLL 070204α----------[*.3gp]176x144 24Bit MPEG4MPEG4-AAC 16.00kHz 16Bit 2ch[QuickTime] 00:04:08 (248.11sec) / 14,367,301Bytes真空波動研SuperLite 070202 / DLL 070202[Imitation.mov][15]330 x 220 Radius Cinepak 24Bit 29.955fps signed/two's complement(Big) 16000Hz 2ch 16Bit 161,758,120Byte 0:04:46.935(286.935000sec)video easy info DLL 070204α----------[Imitation.mov]330x220 24Bit Radius Cinepaksigned/two's complement(Big) 16.00kHz 16Bit 2ch[QuickTime] 00:04:47 (286.94sec) / 161,758,120Bytes真空波動研SuperLite 070202 / DLL 070202Delphi版同様、真空と差を付けるために、fpsやbitrate等、出来る範囲で拾っています。後は、コンテナ名、コーデックに[]を付ける等、調整して、問題なければ、また、ブログ経由でサンプル公開するつもりです。Quick Timeが問題なければ、次は、いよいよ、matroskaです。これは、ちょっと、色々ややこしいことをしているので、スムーズに行くことはあまり期待できないです。後は、ogg media,wmv,realmediaが残っています。これについては、matroskaが終わったら、順番を考えます。いずれにしろ、MPEG2-TSは、一番最後にします。それと、音声単独で、いわゆる可逆音声も、どこかで、割り込ませます。何だか、非常に順調にいけば、来月までに、Delphi版に追いつきそうな。。。とにかく、Cの勉強がてら、前進あるのみ。
2007年02月13日
コメント(0)
Quick Timeの解析を進めています。MPEG4 & AACの組み合わせでは、問題なくいくのですが、その他の組み合わせの場合、単体テスト(コンソールレベル)では、問題ないのに、DLLに実装すると、エラーが発生してしまう。malloc & freeは、NULLのチェックをしているので、これまでのようなミスはないはず。結局、Delphiでのソースを、そのまま、Cに移植しているだけのはずが、Delphi,Cの事情がそれぞれあるわけなので、その事情の違いを、その場の気分でちょっと変えてしまっています。複数の項目を、取得する処理なので、一気に、複数項目の処理を進めたい所ですが、これまでの例を振り返ると、一気に進めてしまうと、返ってエラーが出た時に、エラーの出所を特定できないという事になってしまいます。ですから、一項目ずつ、処理を書いては、DLLに実装して、テストという形を取らないといけないかも。それにしても、コンソールレベルではエラーにならないのに、DLLにすると、エラーになるっていうのが、ワカラン。Cの再挑戦を、こういった形で挑んでいるのです。21:21 追加エラーの発生箇所を突き止めました。大丈夫なはずだった、malloc & freeの組み合わせの所で、発生していました。freeによる解放の場所がまずかったみたい。一応、mp4のサンプル[MPEG4-AAC(HE+SBR+PS).mp4][15]MPEG4-AAC(HE+SBR+PS) 44100Hz 16Bit 2,936,100Byte 0:08:09.104(489.104744sec)video easy info DLL 070204α[MPEG4-AAC(HE+SBR+PS).mp4]MPEG4-AAC 44.10kHz 16Bit 2ch[QuickTime] 00:08:09 (489.10sec) / 2,936,100Bytes真空波動研SuperLite 070202 / DLL 070202こんな感じ。エラーが解決できたので、前進できるかな。。。後、2~3日くらいで、片付けられたらいいな。。。って、楽観しすぎ?
2007年02月12日
コメント(0)
ここのところ、寄り道をしていましたが、そろそろ、DLLにと言うことで、保留にしていたQuick Timeを進めています。まだ、先ほど、始めたばかりなので、結果を貼ることはできませんが、単純に、Delphi->Cなので、さほどの問題は出ないと踏んでいます。これから、深夜に向かって、形になったら、このブログに追記します。
2007年02月11日
コメント(0)
おととい、昨日と、ブログを書くだけのネタがなかったので、時間はあったのだけど、お休みとしました。さて、vei.dllを進めるつもりが、どうしても、作りたいソフトがあって、そちらに時間を割いていました。※2/6の続きようやく、何とか、得たい結果を得られるようになったみたいなので、これで、主流に戻れるかな?と思っています。気分的には、matroska>QTで、matroskaは、動画の中で、一番解析処理を書くのに、苦労しそうな形式です。まぁ、どんな順番で手を付けるかは、その時の気分次第。
2007年02月10日
コメント(0)
中カッコチェッカーは、自分で使う分には、多分、問題ないレベルにはなった。VBのように公開するとなると話は別。とりあえず、ここで、一旦、終わりにするつもり。vei.dllで、2つばかり、バグが見つかり、修正中一つは、無圧縮AVIで、コーデック検索に失敗するもう一つは、ac3の再生時間の計算ミスいづれも、簡単に修正できるレベルなので、さほど問題にはならなかった。本格的に、次の形式に手を出すのは、今週末。今日は、時間がないので、これにて。
2007年02月07日
コメント(0)
中カッコチェッカーの続きをするつもりでしたが、急遽、Cのサンプルとして昔(2ヶ月くらい前)、作って保留にしていたものを、完成させる必要が生じたので、これ(中カッコ)も、ちょっと中断気味。どんなソフトを作るにしても、アルゴリズムは、非常に大事だなと、つくづく思います。これは、言語には関係なく、どの言語で、何を作るにも、答えを求める手順は、ちゃんと考えてあげないといけない。vei.dllは、今週の週末くらいから、再開しようかなと、そういう予定でいます。それまでには、中カッコも、私にとっての”使えるもの”になっているでしょう。多分。
2007年02月06日
コメント(0)
vei.dllは、少し、お休みします。一息付かないと、疲れてしまいそう。それで、昨日書いたように、VBで作った中かっこチェッカーが、ちょっと、使いづらいので、Delphiにて、作り直そうとしています。要は、コンパイラで、{}の対応に原因があるエラーが出た場合、なるべく簡単に{}の対応が崩れている部分を見つけられるようにするのです。アルゴリズムは、スタックを使うことで実現できるので、いかにプログラムを組めばいいのかの一点のみ。あまり、Cばかりやっていると、他の言語がぼやけてしまうので、Delphiに、頭を切り換えています。ある程度、機能ができあがれば、また、vei.dllに戻ります。
2007年02月05日
コメント(0)
昨晩、領域確保にバグがあるのを発見したので、早速修正し、解析できなかったwavがOKになった事は確認できました。コーデック周りの処理を書き換えたので、wavとaviに関しては以前公開したソースに戻して、書き換えをしました。一通りのファイルで機能テストの結果、問題なさそうなので、改めて、C版vei.dllをブログ限定で、公開します。http://yakki-.hp.infoseek.co.jp/tc/videoeasyinfo/vei070204a.lzhこれで、解析途中で落ちる事がなければ、いいのですが...Cでプログラムを書くようになって、中括弧{}の対応がうまく行っているのか?チェックする機能が欲しくなってきました。普段は、秀丸を使っているので、おおまかな対応具合(ちゃんと{}で括られているのか?)は、分かりますが、今回のように、ソースの途中を、別のプログラムで置き換える時なんかは、{}を含めてうまく置き換わっているのか、なかなかうまくチェックができないことがあります。昔、まだ、VBでソフトを作っていた頃、中カッコチェッカーなるものを作りましたが、スクロールがマウスのホイールに対応できていなかったり、タブが中黒(・)になってしまったり、いざ、自分が実用的に使う時になって、いろいろ使いづらいところが露呈してしまいました。それで、今回は、Delphiで作り直してみたいと思っています。vei.dllの方を先に進めたい所ですが、Cでプログラムを作る上で、ちょっと個人的にあった方がいいので。正直な所、少しだけ、vei.dllを離れてみた方が、新鮮な気持ちで次の形式に手を出せるんじゃないかと思っています。
2007年02月04日
コメント(0)
昨日、例にあげた構造は、うまく解決できたものの、やはり、コーデック名称への変換をする直前で、エラーが発生します。こうしたらどうか?ここはこうか?と、幾度も修正しては、bcc32 xxxx.c と、コンパイル->実行の繰り返し。もう、そろそろ、試すケースがなくなりそうで、おそらく、確保したサイズ以上のところにアクセスしているんだろうと、言うことは予想が付くんですが、さて、どう特定したらいいのか、サッパリ。http://homepage1.nifty.com/toshio-k/prog/c/qa/array1.htmlおそらく、そういうことが原因なんだろうな...構造体を多用しているし、構造体もポインタで渡しているし。最悪、今、格闘しているソースを固めて、ブログ経由で公開し、また、どなたかにデバグのヘルプをお願いするかもしれません。さすがに、まだ、まだ、ポインタを誤って使用している箇所があるのかもしれません。23:45追加 buf = ( unsigned char * )malloc(4);という領域を確保しておきながら、 readsize=osd_fread(p_osd_f,buf,16);と、bufに16バイトを読み込ませている部分を発見。※osd_freadは、自作ファイル操作ライブラリです。mallocで、16バイトに修正したところ、特定のwavで、落ちる現象はなくなりました。明日、また、他のwavを解析させて、様子見です。いづれにしろ、iniを読み込む部分は、今回書き換えた方のが、ベターだと思うので、サンプルを公開したものに、修正を掛ける予定です。とりあえず、自力で、バグを見つけられたことが、非常に、良かった。
2007年02月03日
コメント(2)
一応、セクション、fourccから、コーデック名称を取り出す処理自体は書けました。が、しかし、それを解析処理に実装すると、いつもの警告音と共に、エラーがでてしまう。単純に、mainから、呼び出す分には、問題には、ならないのに、mainから、解析関数を呼び出し、その解析関数から、コーデック処理を呼び出すとエラーになる。↓エラーになるint コーデック変換関数(){}int wav解析関数(){ コーデック変換関数()}int main(){ wav解析関数()}↓問題ないint コーデック変換関数(){}int main(){ コーデック変換関数()}まだ、どこかおかしいのかデバグしていないケースがあるので、考えられるうちは、バグを探すのみ。
2007年02月02日
コメント(0)
下記の2つのソース。vei-codec.iniのテキストファイルを読み出しているのですが、読み出し部分を関数にすると、途端に、アプリケーションエラーが発生します。何が原因なのか、サッパリ。どなたか、Cの分かる方で、原因が分かる方、いらっしゃいませんか?問題ない例#include <stdio.h>#include <stdlib.h>int main(void){ FILE *fp; char s[256]; if ((fp = fopen("vei-codec.ini", "r")) == NULL) { printf("file open error!!\n"); return 1; } while (fgets(s, 256, fp) != NULL) { printf("%s", s); } fclose(fp); return 0;}エラーが発生する#include <stdio.h>#include <string.h>#include <stdlib.h>int getcodec(char *fn){ FILE *fp; char s[512]; if ((fp = fopen(fn, "r")) == NULL) { printf("file open error!!\n"); return 1; } while (fgets(s, 256, fp) != NULL) { printf("%s",s); } fclose(fp); return 0; }int main(){ char *fn; int ret; strcpy(fn,"vei-codec.ini"); ret=getcodec(fn); printf("戻り値=%d\n",ret); return 0; }昨日から、こういう初歩的なところで、躓いています。参った(=_=;
2007年02月01日
コメント(4)
全24件 (24件中 1-24件目)
1

