Thursday, March 4, 2010

TSConverter patch の bug

以前 TSConverter のUNIX系パッチは linux(debian/lenny) ではセグメンテーション違反で落ちるというコメントがあった。
最近、coLinux で lenny を動かしてみたので、コメントにあったように _file を _fileno に変更し、コンパイルして試してみると確かに落ちる。コマンドラインオプションの処理がいい加減だったため、ファイル名を指定しないと strncpy に NULL ポインタが渡され落ちるようだ。
もしやと思い FreeBSD でもファイル名を指定しないで動かしてみると、落ちた。なぜ気づかない!!!かなり荒っぽく移植したものの、はずかし。
ご使用中の皆さんは、気になるようなら argv[optid] が NULL なら文句言って終了するようにしておいてください。

strncpy(mp4boxpath,pt,PATH_MAX);
+ if(argv[optind]==NULL){
+ fprintf(stderr,"no input file\n");
+ exit(-1);
+ }
strncpy(lpFile,argv[optind],PATH_MAX);
- if(strlen(lpFile)==0){
- fprintf(stderr,"no input file\n");
- exit(-1);
- }

そのうちパッチファイルを9/1版にするときにこっそり修正しておきます。

ファイル名さえ指定すれば lenny でも動いたんですけど、どこか他にも問題あるんでしょうかね?

Tuesday, March 2, 2010

rec.pl フルセグストリーム対応(多分)

recBone.exe をフルセグチューナーで使ってみた人がいたらしい。
フルセグストリームでも perlrtmp は pid 0x1FC8 の PMT からストリームの PID を探してきてビデオとオーディオを送信してくれそうなものだが、多分 IDX ファイルのポインタの方が long 型を超えてしまうので、正しく動作しないようだ。
そんな人のために OneSeg24forLinux 付属の rec.pl を改造してフルセグストリームからワンセグ関連のみ抽出して IDX ファイルと共に保存するパッチを作ってみた。
ついでに、来るべきフルセグ野郎時代のために、フルセグ野郎 IDX 形式勝手に暫定版対応を行った。
IDX ファイルはポインタのビット数を増やすか、TS ファイルを1時間より短くして、IDX はそのままなど、やりかたはいろいろ考えられるが、勝手に暫定版ではファイルポインタではなく、パケット数を記録して、ビット数を増やさず、 TS も1時間のまま。188倍すればオリジナル IDX と同様に使用可能とした。
使用方法は rec.pl と同様。デフォルトでワンセグ野郎形式で保存 -f オプションでフルセグ野郎形式も同時に記録するという改造を行った。当然ながらフルセグ野郎形式対応ソフトは存在しない。
recFS.patch
ただ残念ながら、現在フルセグストリームを取り出す環境がないので...
recBoneFS.exe はまたの機会に。ってどっちも需要ないか。