_ リニア PCM 5.1ch についてもうすこし検証してみた。
_ DVD プレーヤ(DVD-S2300)のアナログ 5.1ch 端子からは出力されるが, チャンネルアサインがめちゃくちゃ。 L スピーカ,C スピーカからは C チャンネルが,R スピーカからは SW チャンネルが出力されているようだ。
_ WinDVD は L チャンネルと R チャンネルのみ出力, WMP,NVDVD だと L チャンネルと RS チャンネルが出力された。
_ DigiOnAudio2 が悪いのか,DVD プレーヤが悪いのかよくわからないが, どうもまともに使えないようだな。 DVD-Video の場合は Dolby Didital (AC3) 5.1ch が無難みたいだ。
_ 試験的に XML 1.1 対応してみた。 完全な対応じゃないけど:
_ その他の変更:
_ NameChar に半角カナなどが使えるようになったので, 以下のような XML もパースできるようになるはず。 まあ互換文字の使用は推奨されないけど。
<?xml version="1.1"?>
<?ホゲ・ホゲ?>
<!DOCTYPE ホゲ・ホゲ [
<!ENTITY ホゲ・ホゲ "ホゲ・ホゲ">
]>
<ホゲ・ホゲ>
&ホゲ・ホゲ;
</ホゲ・ホゲ>_ expat のバグ? 発見。
_ XML_ParserCreateNS で作った名前空間対応パーサで ':' を含む PI 名や実体名がエラーになる。 expat-1.95.7 で確認。
#include <stdio.h>
#include <string.h>
#include <expat.h>
int
main() {
int st;
const char* xml = "<?test:test?><test/>";
XML_Parser p = XML_ParserCreateNS(NULL, '!');
// XML_Parser p = XML_ParserCreate(NULL);
if (!p) {
printf("XML_ParserCreate error");
return 1;
}
st = XML_Parse(p, xml, strlen(xml), 1);
if (!st) {
printf("XML_Parse error: %s\n", XML_ErrorString(XML_GetErrorCode(p)));
return 1;
}
return 0;
}_ いろいろいじった。
_ expat-1.2 サポートの削除。 多分使っている人はいないだろう。 expat-1.0,1.1 ももう要らないかなぁ。
_ expat-1.95.x で XML::Parser#getIdAttribute が呼び出せなかった問題を修正。
_ XML::Parser#parse のイテレータ形式での呼出し時に XML::Parser オブジェクト自身をパラメータとして追加。
_ startElement などに渡る属性値のハッシュのキーを freeze。
_ オブジェクトの汚染範囲を少し変更。 外部 DTD サブセット,外部パラメタ実体が汚染されている場合,パース結果全体が汚染される。 外部実体が汚染されている場合はその実体のパース結果だけが汚染される。