miniDLNAいじり(じわじわ進行中)

その1

TSのパケットサイズ取得に失敗していた件。やはりamd64の場合だった。
miniDLNAが、API経由ではなく、AVFormatContextのpriv_dataを覗いてパケットサイズを拾っていて、LP64だとその位置がずれているという。。。こんなイメージ。

--miniDLNA/metadata.h.orig
++miniDLNA/metadata.h

 typedef struct tsinfo_s {
-	int x;
+	void* x;
	int packet_size;
 } tsinfo_t;

というわけで、こっちは解決。
miniDLNAにバグレポすべき?英語で??

その2

タイムベースシークが遅い件。デバッグモードでログがどかどか出てるので遅いのかと、普通に起動してみたが、やはり遅い。27秒スキップしても、27分スキップしても、だいたい3〜4秒かかる感じ。
だいたい同じフローを通るはずのバイトシークはそんなにかからないし、どこでひっかかってるんだろう。

その3

30分番組なのに9時間と判定されて、シークもぐちゃぐちゃ、の件。
av_find_stream_info()とdump_format()だけを呼んでみた。

Input #0, mpegts, from '(null)':
  Duration: 09:01:15.88, start: 22075.566433, bitrate: 2105 kb/s
  Program 101 NHKBS1
    Stream #0.19[0x100]: Video: mpeg2video, yuv420p, 720x480 [PAR 32:27 DAR 16:9], 10500 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.17[0x101]: Video: mpeg2video, yuv420p, 352x240 [PAR 40:33 DAR 16:9], 300 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.13[0x110]: Audio: mp3, 0 channels, s16
    Stream #0.18[0x112]: Audio: mp3, 0 channels, s16
  Program 102 NHKBS2
  Program 910 WNI
    Stream #0.14[0x1918]: Data: 0x000d
    Stream #0.15[0x1911]: Video: mpeg2video, yuv420p, 352x240 [PAR 10:11 DAR 4:3], 920 kb/s, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.16[0x1912]: Audio: aac, 48000 Hz, 1 channels, s16, 49 kb/s
  Program 929 Dpa
    Stream #0.0[0x771]: Data: 0x000d
    Stream #0.1[0x772]: Data: 0x000d
    Stream #0.2[0x773]: Data: 0x000d
    Stream #0.3[0x774]: Data: 0x000d
    Stream #0.4[0x775]: Data: 0x000d
    Stream #0.5[0x776]: Data: 0x000d
    Stream #0.6[0x777]: Data: 0x000d
    Stream #0.7[0x778]: Data: 0x000d
    Stream #0.8[0x779]: Data: 0x000d
    Stream #0.9[0x77a]: Data: 0x000d

上は、Program名が化けてたところを削ったもの。
そういえば、録画したのはNHKBSだったのだった。複数番組あって、それぞれbitrateが違うので、そりゃまあうまく取れないわなあ。というか、2105kb/sって、どこから出てきた数字なんだろう。
見える範囲のすべてのストリームのbitrateを合計して、総ファイルサイズを割ればdurationになる?mpeg2video以外のパケットの分が誤差で、audioの影響がでかそうだが。
ほんとは、ターゲットの番組を特定して、最初のPCRと最後のPCRの差を取ればいいんだろうなあ。遅そうだけど。
直接関係ないけど、このファイル3番組あったのね。BRAVIAからは選択できん。。。

予告して自分にプレッシャーかけてみる

そういえば、hdusrecを最初にさらしたのが去年のGWくらいだったと思って、日記をたどっていくと、4/30だった。なんかtss.pyをもとにtssplitterもどき作るとか、いろいろやってたなぁ。。。暇だったのか?PT2でBSデジタルも録れるようになったし、もどきじゃなくてwineでもなくて、TsSplitterが欲しいところ。今だと、tssplitter_liteからいくか、recpt1からいくか、こないだのEITパーサーからいくか。NHKBSは分離しないとBRAVIAで観れないしなあ。
それとは全然関係なく、PT2ドライバもこれ以上いじるネタがないので、4/30めどで公開しようかと自分を追い込んでみる。
ほんとは、/boot/loader.confで読ませると失敗して、起動後にkldloadすると成功する、というのをなんとかしてからと思っていたけど、どう手を付けていいのか分からんので、公開後にどこかの偉い人が直してくれるのを期待。
そういえばhdusrecも、最後に公開した後で手を入れたところがあったような。なんだっけ。
あと持ってる改造ネタは。。。

  • miniDLNA:BRAVIA、タイムベースシーク、.localizedフォルダ対応
  • uShare:TSのEITから番組名を振る(精度がいまいち)
  • foltiaPHPSmarty化、ファイル出力先を番組別に

。。。まあ、ぼちぼち。

PSPげっと

ブックオフで、本体のみ・付属品無しのPSP3000が9.9kだったので捕獲。
以前に、ワンセグ分離+TSConverterでMP4化してTCPMP、というのを試していたけど、iPAQを手放してしまってほったらかしだった。これで、溜まりまくった録画ファイルの電車視聴を実現するのだ。
というわけで軽くぐぐると、TSConverterでMP4化して、Yambというので分離・フレームレート書き換え・再結合すると、PSPで観れるらしい。
ところがどっこい、Yamb自体もgpac-mp4boxのGUIにすぎない?らしいので、うまくやればTSConverter(中でMP4BoxとDtsEditを呼んでいる)だけで終わるんじゃなかろうか。
うー、TODOだけが溜まっていくわね。とりあえず、ACアダプタとメモリスティックを買ってくるところからか。