約 2,388,366 件
https://w.atwiki.jp/nekonomike/pages/370.html
#blognavi This is part of the Dream Up article translated by Dingodevil at Lizzyolsenvideo, and it caught my interest because its a bit weird. これは、LizzyolsenvideoでDingodevilによって翻訳されるDream Up記事のパートです、そして、それは私の関心を捕えました‖その1ビットが運命づける。 "EXCLUSIVE! 「独占的な! Following the example of her sister, Ashley would like to postpone her university studies in order to concentrate on her acting career. Since May, the young girl has been attending more auditions in the hope of landing a part in a big Hollywood production. Her ideal role? That of Elizabeth Bennet, played by Keira Knightley in the romance Pride and Prejudice. Confidentially, Ashley has actually successfully auditioned for Keira’s replacement in the next installment of this classic literary saga, titled Mrs. Darcy Takes A Wife. Watch this space..." 彼女の姉妹の例の後で、アシュリーは彼女の舞台の経歴に集中するために彼女の大学研究を延期したいと思います。5月から、若い女の子は、大きいハリウッド生産との関係を着陸させることを願って、より多くのオーディションに出席していました。彼女の理想的な役割?エリザベスベネットのそれは、ロマンス高慢と偏見でケイラナイトリーによって遊びました。ここだけの話だが、アシュリーは実はこの古典の次の回でケイラの後任のために文学的なサガをうまく試聴しました。そして、ダーシーTakes A Wife夫人というタイトルでした。このスペースを見てください... I wonder if its actually what she said or if the magazine is just putting together various rumors. Wasn t the "Mr. Darcey takes a wife" thing just a joke from Olsen-Twins-News? かどうかわからないその実は、どうですか、彼女は言いました、あるいは、雑誌がちょうどいろいろな噂をまとめているならば。ちょっと物事で「ダーシー氏は、妻を連れて行きます」以外ことがあったオルセン-ツインズ-Newsから冗談? カテゴリ [Olsen News] - trackback- 2006年08月09日 09 33 26 #blognavi
https://w.atwiki.jp/justintv2/pages/23.html
SOS_BRIGADE 【和名:えす・おー・えす・ぶりがーど】 現在は すべてのチャンネルを削除 なので 配信者ではありません。 なので メッセージのある方は こちらに お願いします。 メッセージを 更新させていただきました。 ここにおねがいです。 -- SOS_brigade (2013-02-28 02 19 13) own3D.TV が1月31日で閉鎖 【いいサイトは、必ず負ける(潰される)】 の法則 発動ですね。 -- SOS_Brigade (2013-03-01 09 49 36) mbtreeの解説部分追記しました。 -- SOS_brigade (2013-03-23 18 15 46) 今期アニメの総括お願いします! -- こっぽら (2013-03-29 02 32 53) ヤマノススメ かな? -- SOS_brigade (2013-04-07 01 31 25) 3分アニメ良かったですねー -- こっぽら (2013-04-12 22 49 12) いや~本当に 3分アニメ どれもよかったね。 -- SOS_Brigade (2013-04-13 13 13 01) 桑谷夏子が入院しちゃった... -- SOS_brigade (2013-06-01 02 46 01) 斎藤千和さん 入籍したようです。。。これで私を 「逆神さま」 とわ言わせない!! -- SOS_brigade (2013-07-29 20 22 15) 発表ありましたねw高橋名人は既婚なはずなんだけどなーて -- 進撃のコッポラ (2013-08-01 23 18 50) 高橋名人の女体化・・・グゥゥ~ やめてくれwww -- SOS_Brigade (2013-08-02 22 33 30) 千和さんは結婚しても人気に変わりはなさそうですねw 平野、竹達の次に大久保瑠美とかお薦めですよぉw -- 紫吹蘭 (2013-09-10 23 19 53) えへへ~、、、ゆゆ式のゆずこ の 大久保瑠美さん いいね。。。それじゃー今月は、大久保瑠美さん強化月間にしましょうwwww 【逆神様より】 -- SOS_brigade (2013-09-11 19 08 10) コッポラさんへ > どこかに【黒歴史】など書きたいのですが「最多banの男伝説」とか・・どこか良いページはないでしょか ? -- Sos_brigade (2013-10-07 01 05 06) そっか、黒歴史はこのページで書くのがいいかもね。。。投稿方式で -- Sos_brigade (2013-10-09 13 25 55) そうですね~なんなら新しいページ作っちゃっても全然大丈夫ですよw -- こっぽら (2013-10-10 23 18 00) こっぽらさんへ > おー ありがたいお言葉 ページのひな形考えるね。。。それとネタ考えなければ・・・・ --SOS_brigade (2013-10-11 21 19 55) 大久保瑠美さん 強化月間 → あっ きっちり1ヶ月目で 強制終了させられた。。。 -- Sos_brigade (2013-10-13 10 19 00) 2013年度 アニメ総括 【最優秀作】 猫物語 -白- (つばさタイガー) 最終回で、すべてをスッキリと解決してくれた痛快な作品でした。(ほかのアニメはあまり見てなかったけどね・・) -- Sos_brigade (2013-12-29 02 23 17) これは、PSさんから聞いた話だが(笑)。。彼はPS3のユーザー名が欲しかったらしいが、すでに登録済みだった、その登録年月日を確認すると2007年5月・・・つまりJTVが誰かが登録していたようだ。Xbox360 ってのも同じだったようですhttp //www.justin.tv/playstation3/followers ここの About で確認出来る……とのこと。。。-- Sos_brigade (2014-01-18 00 27 00) 昨年6月以来 Justin.TVの 【改悪】 が、現在すでに 芸術の域に達した。。。 -- Sos_Brigade (2014-01-22 00 46 20) パスワードが無効になった。。。ありゃ -- Sos_brigade (2014-03-16 13 08 16) Twitch/Justin のラグが気になる方は⇒Cavetube もしくは CyberGameTV(ロシア) CyberGameはロシア語のページしかありません。クロームの日本語翻訳機能を使って設定すると良いでしょう。また IEは不可です -- Sos_Brigade (2014-07-11 10 44 51) 唐突に終わっちゃいましたねw -- こっぽら (2014-08-07 01 01 32) こっぽら -- Sos_Brigade (2014-08-07 01 30 43) こっぽら さんへ 乾いた笑いしか出ませんよwwwあはは -- sos_brigade (2014-08-07 01 36 15) 横の広告 やくみつる も 笑っている。。。 -- Sos_brigade (2014-08-07 01 37 36) twitchでちょっとやってみたらあっと言う間にBANされましたねw -- こっぽら (2014-08-07 03 09 35) そういえば connectcast.tv が(なんでもありの昔の)ジャスティンTVのような雰囲気になりつつある。また、あそこの運営(アドミニストレーター)が積極的に売り込んでいる。(そいつにTwitterで誘いを受けたが断った)おいら あそこは、あまり好きじゃない。。。まぁ リンク集にそこのURL貼っておくますね -- Sos_brigade (2014-08-07 11 52 17) まぁ3年前なら、そっちに乗り換えていたと思うけどね。。。もう時代も違うしね……いまはむしろ静かな場所(過疎)で、不定期に自由にやってます。配信自体に疲れちゃったしね。。。それに、ビュワーの要求に答えるだけの配信者に成り下がった感が否めないしね。。それ以上に質の悪いビュワーにいいようにやられたってのが本当のところだけど………(こっぽら さんなら きっと 理解出来るでしょう) -- sos_brigade (2014-08-07 13 01 27) リンクありがとうございますー -- こっぽら (2014-08-11 22 08 48) 配信自体をただ気楽な形でみんなで見るっていうだけの目的だったはずなんですけど、変に少し長く続けたばかりに色々な事情が起きてきますよねw -- こっぽら (2014-08-11 22 09 23) ただアニメを見るという目的が、変わって視聴者とコミュニケーションするというのが本筋になってくると、やっぱりそのコンテンツがメインというよりか、ただの酒の肴に過ぎなくなってくる -- こっぽら (2014-08-11 22 11 04) 勿論コミュニケーションする為に配信をするのが目的ですからねwしかしおっしゃる通りで、やり過ぎると自分の楽しみの為に配信するというのが、視聴者の為に配信っていう馬鹿みたいな事になっちゃう傾向はありますねw -- こっぽら (2014-08-11 22 13 13) 配信した結果そのタイトルが嫌いになっちゃうっていう事がちょいちょいあったりしましたからねw中々バランス良いことできるのが理想ではありますね -- こっぽら (2014-08-11 22 16 32) こっぽらさんへ > ここの閉鎖とかの判断は委せます。(案としては、更新記録の一部をTOPページに転載して(年表形式で掲載)、ほか全削除とか・・) まぁ、すべてを削除でも構いません。。。(ちなみにログイン出来なくたったので、私は大規模な改造はできない) -- Sos_brigade (2014-08-12 16 42 27) こっぽらさんへ > ここにも 一言 ちょうだい → http //playstation-2.bbs.fc2.com/?act=reply tid=14996184 -- sos_brigade (2014-08-12 19 26 17) そうだ ! 俺は 「逆神さま」 なんだよなぁ~ ⇒ Twitch 大好き Twitch 大好き これからはTwitchの時代だよね。。。。 (半年前 サザエさんでつぶやいた結果をご覧下さい)①1/19 18 50 https //twitter.com/playstation2_ch/status/424841309778485248 ② 1/26 18 53 https //twitter.com/playstation2_ch/status/427378860217233408 ③ 1/27 19 00 https //twitter.com/playstation2_ch/status/427742795843915776 -- Sos_brigade (2014-08-12 22 20 39) 皆さん、お疲れさまでした(でいいのかな?)ですー -- quo11 (2014-08-15 02 48 56) 掲示板ありがとうございます!駄文で申し訳ないのですが、掲示板に落とさせて頂きましたお許しくださいませw -- こっぽら (2014-08-15 05 41 37) quo11さんお久しぶりです!またどこかで配信の方を見たいと願っておりますw -- こっぽら (2014-08-15 05 42 14) あらあら quo11さんだ \(^o^)/ どーもです。 -- Sos_brigade (2014-08-15 09 59 44) こっぽらさん 投稿 ありがとうです。(また よろしかったらどうぞ)。。もしよかった quo11さんもどうぞ・・・ -- Sos_brigade (2014-08-17 23 08 02) 掲示板 ⇒ http //playstation-2.bbs.fc2.com/?act=reply tid=14996184 -- Sos_brigade (2014-08-17 23 09 34) 掲示板については ある一定の期間が過ぎたら削除しようと思ってます。まぁ それでも長く残っちゃうので やはり 本音は言いづらい その点すぐ消えるチャットの方が、本音を言いやすいね。 -- Sos_brigade (2014-08-24 12 57 48) この Justin.tv wiki の 削除に関しては、全てコッポラさんにまかせます。よろしくです。 -- sos_brigade (2014-09-25 02 23 48) age -- sos_brigade (2015-01-06 21 09 40) あけましておめでとうございます。wikiは放置で良いかなと思っておりますw -- copppppppooolaaaa (2015-01-13 04 10 42) 配信に関しては頭文字Vの方でちょくちょくテストしております・・・jtvと関連性ありましたよね確かあのサイトは -- copppppppooolaaaa (2015-01-13 04 11 47) あけましておめでとうございます ・・・・ 頭文字 V (BOTちゃんですね) あそこは 一応 アカウント持っている(昔の名前で) ・・・ 噴火のお山のマークの人もいるみたいだですね。 -- sos_brigade (2015-01-16 19 19 25) 広告がウザいから あげ -- sos_brigade (2015-04-05 22 37 14) あげ -- 名無しさん (2015-05-04 02 50 12) あげ の ご協力に感謝 -- sos_brigade (2015-06-06 11 54 46) 2016年4月2日で『涼宮ハルヒの憂鬱』放映後10周年 -- sos_brigade (2016-04-02 00 08 39) あげあげ -- 名無しさん (2016-07-12 10 43 06) age age -- Sos_brigade (2017-08-17 20 47 46) test test -- my sausage push into your asshole. (2017-10-27 13 17 23) あげあげ -- Sos_brisade (2018-11-26 11 23 03) あげあげ -- age (2019-05-25 21 37 33) あげあげ -- Sos_brisade (2020-01-30 20 54 07) 名前 コメント 【 LIVE 】 SOS_BRIGADE CHANNEL (FROM Resutoran) SOSさんは NY出張 フランクフルト 5$25¢ で販売中 【今月は、Youtube 生Live 強化月間です。】 SOS_Brigadeとは涼宮ハルヒに集まる習性がある害虫。萌えを栽培している萌農家では駆除するの頭を抱えているという。SOS団さんの駆除方法は彼氏との2ショット写真を30%に希釈して散布する方法が有効である。SOS団さんのライフラインは平野綾。・・・偶然か狙ってなのかは不明だが応援する女性声優が炎上するという特徴を持っている。 【SOS団さんのライフライン】 ①ひ乳類ハルヒ科平野綾属 ②ほう乳類あずにゃん科竹達彩奈属 ③ねこみみ科斎藤千和属 ※注3 杉田智和、竹達彩奈、斎藤千和 明坂聡美ともに十万石饅頭目アニメ科としても分類されている。 ※注4 ③について英語圏では、ほむら科斎藤千和属 スペイン語圏では、戦場ヶ原ひたぎ科斎藤千和属 といわれている。たまに、アスタロッテのおもちゃ!イニ科になる。噂では、ほむらが魔女化するとルッキーニになるとか言われている。 ※注5 ③がSOS団さんのライフラインに入った事で千和ちっすwwwが次に炎上するのではっ!?っと戦々恐々のファンが多いとか多くないとか。 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ とある日の FME設定 の様子 キャプチャーがSD規格(720*480)でS端子入力(S端子 ⇒ アナログ インターレース映像) 必ず Deinterlace はチャックしている。(ヨコの縞々⇒インターレースノイズを抑える為) えぇ 入力・出力のアスペクト比がおかしい? いやいや これで正解です。。。なんでだろうね。。 設定内容を要約 720×404 15コマ H.264 Main プロフィール レベル 3.1 とある日の XSPLIT の設定 歯車マークで詳細設定 最新版での設定の様子です。新しく【MODE】で(固定ビットレート)CBR ⇔ VBR (変動ビットレート)の設定が可能になりました。CBR(固定)は指定のビットレートで終始送信します。 1,000kb/s以上なら【CBR】でも問題ないと思いますが、静止画面とか、ゆるい画面でもキッチリと無駄にビットレートを使います。やっぱり無駄なビットレートは不要~って思うなら迷わず⇒【VBR】 設定内容 おおまかに・・・ 解像度 640×360 ~ 854×480 フレームレート 30FPS ~ 15FPS ビットレート 1000K ~ 1500K プリセット VeryFast ~ Medium (よく利用するのは、VeryFast) 【MODE】 VBR(変動ビットレート) 【詳細設定】 CRF23~18(通常20) Main level4.1(h.264) ⇒ ※詳しいことは、下の解説参照 【Location】 ⇒ デフォルト設定だが・・Cental Us Secondery (アメリカ中央)をバックアップセカンダリーとしている。最近 ⇒ West coast Secondery (西海岸セカンダリーFMS)は調子悪い) ※Location について、 詳しくは 「Justi.TV更新記録」のバックアップ サーバーの欄 最新版では、どこのサーバーが早いか解るようになっている。(Jsutin.tv) ■■■■■■■■■■■■■■■■■■■■■■■■■■ ※注意点 【重要】 ■■■■■■■■■■■■■■■■■■■■■■■■■■ ここより先については、多くのXsplit を 解説している ブログ とは、内容が異なります。 多くの解説は、ニコ生に関するもので、内容のほとんどが、ビットレート不足による画質劣化を改善するために 圧縮率を上げる方法を紹介しています。(基本 512×384 ビットレート上限が 384kbps時の設定) UstreamやJustin.tvでは、ビットレート不足を高圧縮化で改善する方法は、それほど重要ではない上、画面サイズ(SD・HD配信)・FPS(フレーム数)などで、CPUを使用しているケースが多いので、むしろCPU使用率オーバーによる弊害の方が大きい。無理に高圧縮設定すると、頻度にフレームが落ちることになるでしょう。 ※重要点(ニコ生でも同様ですが) プリセットを変更する時は、必ず CPU使用率 も確認してください また、高圧縮=高画質ではありません。 以下の文章で誤解を招く表現が多々ありますが、それは**正しくは ⇒ 高圧縮・低劣化 です。 『高圧縮・低劣化』 ⇒ より劣化を少なくするためにも、ビットレートとのバランスが重要な要素になります。 また、混雑時は、送信側の速度よりも、むしろ、サーバーからビュアーへの配信ビットレートが上がらずに、頻度にフレーム落ちすることもあります。高ビットレート設定の時は、サーバーの混雑具合も考慮するとよいでしょう。(JTVは 1,000kb/s前後なら、混雑時でもOKだと思います。) ※※注 ちなみに、高画質とは ⇒ 高解像度・高ビットレートのことを指す場合が多いが、あいまいです。 ※※ 相違点について ・・・ その2 Xsplitで圧縮率(プリセット)に頼らずに、低いビットレート設定を紹介している代表例が ゲーム専用配信サービスの「OWN3D.TV」の公式で紹介されている設定内容です。(標準PC・500Kb/sのセッティング例 公式より) Xsplit → bitrate 500kb/s FPS 20fps~15fps 品質3 画面サイズ 640×360(16 9) 「OWN3D.TV」では、品質4~8を推奨、9~10は非推奨 (例 HD配信の場合→ Core4 3.2MHz 1,200b/s 25-30fps 1280×720 品質6 ) ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 品質欄について(クオリティー)【CRF ⇒ 視覚的品質】 ※※品質【0~10 NotSet】による CRF調整 (CRF 0~51) ⇒ 品質の数字が大きいほど(品質0<5<10)高品質な設定になるが、反面、ビットレートも必要。注意が必要 品質 0=crf 35 1=crf 34 2=crf 33 3=crf 32 4=crf 31 5=crf 30 6=crf 29 7=crf 28 8=crf 27 9=crf 26 10=crf 25 Not set=crf 23 ※CRFは小さいほど高品質(劣化が小さい) 【重要 旧版では】 品質欄(0~10 or NotSet) より 高品質のCRF値を設定 したい場合 プリセット欄に 「 Medium ex crf 20 」 のように 後ろに ex crf 20を加える。(⇒ 区切りは コロン : です。) 【最新版】では・・・ 【Extra Encoder Parameters】欄に【 ex crf 20】と記入する。 【最新版での設定】 ここより先は、--- 最新版 --- での説明になります。 これは、キープレーム変更やプロフィール・レベル設定などにも使える。 【例】Extra Encoder Parameters欄 ⇒「 ex crf 18 ex keyint 90 ex profile main ex level 3.1」 crf18 キーフレーム 90 mainプロフィール レベル3.1 品質とビットレート ※CRF25(品質10)⇒CRF16(高品質)ではデータ量約3倍になる。反対に品質下げで1/3のbitrate設定も可能。 プリセットについて 【重要点】 プリセット変更でこまかく圧縮率を変更できる。Fastは、高速設定用で圧縮率は小さい。Slowは、低速設定用で圧縮率高い。 軽い(低圧縮)....①ultrafast ②superfast ③veryfast ④【xsplit-defualt】 ⑤faster ⑥fast ⑦medium ⑧slow ⑨slower ⑩veryslow ⑪placebo....重い(高圧縮) 圧縮率は ①<⑥<⑨ だが 実際は⑧以上はCPU重くなる。また本来⑦mediumが基本だが、配信用には重いため④defualtがXsplitの基本となっている。 通常は veryfast ~ slower この間を選択します。 注意 【圧縮率の高いものが 良い ではありません】 (※●圧縮率 高い⇔劣化大になる ●圧縮率 低い⇔ビットレートが高くなる。・・・バランスの良いものを探す・・) 考え方としては 【高速ビットレート・CPU軽処理 ⇔ 低速ビットレート・CPU重処理】の方が、ニュアンス的に解り易いと思う。 ユーザー設定のプリセットについて なお、プリセットについては、C \Program Files\SplitMediaLabs\XSplit\ffpresets のフォルダー下 libx264ext-XXXXX.FFPRESET のファイル設定内容を記述することにより、自由に変更できます。 【 XXXXX が プリセット名として表示されます。拡張子は ffpreset です 】 また、④【xsplit-defualt】のXsplitデフォルト・プリセットは、このフォルダーにあるlibx264ext-XSplit Default.ffpresetファイルで、設定されている内容を確認(変更)出来ます。 チューニングについて フィルム・アニメ・静止画など、映像素材に適応する画質チューニングが、用意されている。 全部で8種類あるが、大きく分けると画質チューニング用(file animation grain stillimage)・品質維持用(psnr ssim)・負担軽減チューニング用(fastdecode zerolatency)などある。 チューニングを適応することで、かえってバランスが悪くなる場合もあるので注意 チューニングの種類と設定変更内容 【film】:実写用 deblock -1 -1, psy-rd (変更なし) 0.15 【animation】:アニメ用 deblock 1 1, psy-rd 0.4 (変更なし), aq-strength 0.6, bframes (デフォルト3)+2 →通常5になる。 ref 各プリセット設定値の2倍 【grain】 こまかな粒子が漂う画面用 /特殊な設定⇒deadzoneやipratioなど変更 deblock -2 -2, psy-rd (変更なし) 0.25, no-dct-decimate, ipratio 1.1, pbratio 1.1, aq-strength 0.5,deadzone-intra 6, deadzone-inter 6, qcomp 0.8 【stillimage】 静止画/動き少さい用設定 deblock -3 -3, psy-rd 2.0 0.7, aq-strength 1.2 【PSNR】 PSNR値を最大限にする(あまりオススメしません) ※PSNRは、画質劣化を計測する指数 aq-mode 0, no-psy 【SSIM】 SSIM値を最大限にする(ビットレートを考慮しない場合、これもアリです) ※PSNR値を改良した画質劣化を計測する指数 aq-mode 2, no-psy 【touhou】 東方Project関連のゲーム専用チューニング deblock -1 -1, aq-strength 1.3, partitions {p4x4 if p8x8 set}, psy-rd unset 0.2, ref {Double if 1 else 1} ※このチューニングは 知る人ぞ知る ものです。 ※注意点 psy-rd は fast(subme 6)以上で有効。。。。Psy-RD (psy-rd) (psy-trellis) ※【Grain】について 通常は粒々の粒子状ノイズなので、フィルターなどでノイズを取り除きますが、シーンによっては、意図的にエフェクト効果として使っている場合がある。このようにノイズをエフェクトとして意図的に入れている場合、再現するのはかなり難しい。 設定方法は、Extra Encoder Parameters欄に 「 ex tune チューニング名 」で設定できる。 【例】 → ex tune animation アニメチューニング設定になる。(⇒ 区切りは コロン : です。) ※※参考1:プリセットとRef数 ①ultrafast~veryfast ⇒ref 1 ②faster~fast⇒ref 2 ③Defult~medium⇒ref 3 ④slow⇒ref 5⑤slower⇒ref 8 ⑥veryslow ⇒ref 16 ⑦placebo ⇒ref 16 ※※参考2: 変更になったところを確認してみた。。。AVInapticで調べた結果です。 前 → 単なる「 medium 」の設定 cabac=1| ref=3 | deblock=1 0 0 | analyse=0x3 0x113 | me=hex | subme=7 | psy=1| psy_rd=1.00 0.00 | mixed_ref=1 | me_range=16 | chroma_me=1| trellis=1 | 8x8dct=1 | cqm=0 | deadzone=21,11 | fast_pskip=1 | chroma_qp_offset=-2 | threads=3 | sliced_threads=0 | nr=0 | decimate=1 | interlaced=0 | bluray_compat=0 | constrained_intra=0 | bframes=3 | b_pyramid=2 | b_adapt=1 | b_bias=0 | direct=1 | weightb=1 | open_gop=0 | weightp=2 | keyint=250 | keyint_min=25 | scenecut=40 | intra_refresh=0 | rc_lookahead=40 | rc=crf | mbtree=1| crf=29.0 | qcomp=0.60 | qpmin=0 | qpmax=69 | qpstep=4 | vbv_maxrate=1000 | vbv_bufsize=1000 | crf_max=0.0 | nal_hrd=none | ip_ratio=1.40 | aq=1 1.00 後 → 「 medium + ex tune animation 」のアニメ用チューニング適応した時の結果 cabac=1| ref=6 | deblock=1 1 1 | analyse=0x3 0x113 | me=hex | subme=7 | psy=1 | psy_rd=0.40 0.00 | mixed_ref=1 | me_range=16 | chroma_me=1 | trellis=1 | 8x8dct=1 | cqm=0 | deadzone=21,11 | fast_pskip=1 | chroma_qp_offset=-2 | threads=3 | sliced_threads=0 | nr=0 | decimate=1 | interlaced=0 | bluray_compat=0 | constrained_intra=0 | bframes=5 | b_pyramid=2 | b_adapt=1 | b_bias=0 | direct=1 | weightb=1 | open_gop=0 | weightp=2 | keyint=250 | keyint_min=25 | scenecut=40 | intra_refresh=0 | rc_lookahead=40 | rc=crf | mbtree=1 | crf=29.0 | qcomp=0.60 | qpmin=0 | qpmax=69 | qpstep=4 | vbv_maxrate=1000 | vbv_bufsize=1000 | crf_max=0.0 | nal_hrd=none | ip_ratio=1.40 | aq=1 0.60 【Xsplit_設定のまとめ】 ① ビットレート 上げられない環境の場合(CPU性能の高いPC 編)【500Kb/s以下】 ⇒ 圧縮率の高い Medium Slow Slower など、圧縮でCPUを使う。品質は8~10(CRF27~25) サイズやコマ数も見直す。 ⇒ 上記設定でも、CPUに余裕がある場合、CRF23~20 に 変えて様子を見るのもOK ①-① ビットレート 上げられない環境 (CPU能力が低いPC 編)【圧縮率に頼らす低ビットレート配信】 ⇒ 圧縮率の低いFaster Xsplit-default veryfast などで設定。 品質「3」~「8」 フレームレート15~30で様子を見る。CPU使用率を確認。品質「3」では、かなり低いビットレートでも設定可能です。 ⇒ 動き重視の場合は、品質「3」~「6」の低い設定。フレームレートを上げる(20~30FPS) ⇒ 品質重視の場合は、フレームレート20~15を低く、品質「6」~「8」を上げる。 ⇒ 画面サイズも640×360程度にする。 ② ビットレート 高設定でもOKの場合【1Mb/s以上】 ⇒ 圧縮率の低い Faster VeryFast など選択し、CRF値は高品質のCRF20以下(CRF16~20)、品質でCPUを使う。 ⇒ それでもCPUが厳しい場合、CRFを23以上に。反対にCPUに余裕がある場合、圧縮率の高いプリセットでもOK 【補足 H13.3追記】 veryfast以下の2つのプリセット(ultrafast superfast)について 私の個人的な意見ですが・・・「veryfast」より低いプリセットは設定しないことを提案します。 ① ultrafast ⇒ CPU能力が低くてどうしようもない場合のみ使用。これは【baseline】プロファイルに相当します。 baselineはFMEでは馴染みのある方も多いと思いますが、性能も悪くはない。しかしveryfastと比較すると、どうしても見劣りしてしまいます。特徴は ⇒ I, Pフレームのみ使用します。圧縮方式も CAVLC+UVLCを利用する点です。。。個人的には結構好きなんですが・・・積極的に使うことも無いと思います。。。 ② superfast ⇒ これはBフレーム利用でCABAC方式になりますが、動き予測アルゴリズム Dia が大きな特用です。(軽い)しかしそれなりに画質も犠牲になっています。また、MBtreeもoffなのでrc-lookahead(MBtreeの参照距離)も0です。・・・これも積極的に利用するプリセットではないと思います。 以上のように細かく見ていくと、「veryfast」以下の2つのプリセットは、基本部分の変更が大きすぎる為、「調整する」レベルではないことが理解できると思います。よって、理由がない場合は、利用は避けた方がいいプリセットだと言えるのではないのでしょうか。。。。おしまし ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ (2013年10月追記) FME と FFmpeg系(Xsplit OBS)について、 2011年ごろの Xsplit解説プログには、決まって こう書かれていた。。。 「Xsplitは、FMEよりきれいに配信できる!」 Xsplit を紹介しているプログの決まり文句である。多くの人は、何も疑問を持たず、これらの文句を信じたのだろう。。。 はてまた、「いったい、何が違ってなぜ?FMEよりキレイと言い切れるのだろうか?」と、少なからず疑問を抱いた人も多いだろう・・・ それらの紹介を読んでいると、比較の仕方が いい加減であったことも多かった。。。その代表例は・・・ ① FMEの Vp6 と Xsplit を比べて評価を出している。(参考としてならOKだが・・) ② FMEの H.264@Baseline と Xsplit を比べて評価している。 これらは参考程度で、ほとんど無視しても 問題ないレベルである。また、本来 FMEでもMain@4.1のものと比較した場合、それほど見劣りしないはずなのである。しかし、私自身がなかなか認めたくない事実も、一方ではあった。以下のことは、どこのXsplitやFMEを紹介しているブログには当然書かれていない指摘です。なので、当初、私自身とう考えてみていいのかわかりませんでした。 FMEとXsplit(OBSなどの FFmpeg系)で、動きの激しい動画のフレームを比較した時のことです。(当然 FMEはH.264 main@4.1。。。Xsplit:プリセット ミデアム ※※ 以下の文章は Xsplitは、プリセット:ミデアム 時での話になります。) FMEは、どんなに激しい場面でも、Bフレーム を多く使う。それもキッチリ3フレーム連続で使われることが多い。これは想像どおりだった。なぜなら「FMEは動きに弱い」という、実証になるからだ。。。だが、驚いたことに Xsplit(FFMpeg系)では、動きなどのシーンとは、関係なしに Bフレーム は、あまり利用しない。。。通常、動きが小さい部分は、Bフレームを多くして、圧縮率を上げるのだが、FFmpeg系では、静かなシーンでも、せいぜい連続1-2枚程度しかBフレームを使っておらず、あとは Pフレーム だった。。。これは、何を意味しているか? ____私なりに、考えた 結論は____ 「Xsplitに代表されるFFmpeg系では、Pフレーム を より効率的にビットレートを割り振ることにより、Bフレームに頼らず 圧縮率を高めた。」 つまり、Pフレームを効率化することで、Bフレームの欠点を克服し なお データーは小さくした。と・・・・ ここで、Bフレームの欠点をおさらいすると、確かに圧縮は高いが、その分、劣化も大きい。大雑把だが1齣(←化物語ww 1フレーム)当たりのビットレートは、Iフレームを 1 とすると、Pフレームは、1/3-1/4 Bフレームは 1/10(もっと小さいかな?)ぐらいである。どうしても劣化は避けられない。その劣化を補う為に、様々な処理を施している。これが、CPUを使う原因でもあり、また再生側にも負担をかけている原因でもある。※注意2 ___だが _____ ① Bフレーム を 多く使う FME でも よほどビットレートが不足してなければ、画面破綻はない。。。 ② FFmpeg系は、Pフレームをより良く利用するために、「動き予測」の(Me)や「サブピクセル精度」(SubMe) に多くのCPU能力を使う傾向がある。。。 これらから導き出される。。。FME や FFmpeg系 の エンコーダー 特徴を まとめ ると・・・ FME は、Bフレーム を多用する。これは再生側に負担を掛ける場合がある。また、Bフレームをあまり劣化させない為にも、ビットレートを決めることがFMEでは重要である。これにより不適切なシーンでBフレームがチョイスされても画質劣化を補うことができる(Bフレーム自体の、質を上げるために・・)。。。 通常はBフレームは、劣化が大きいため、あらゆるフィルターで品質向上させる。これによりCPUを多く消費するという欠点もある・・・が、適切なシーンで Bフレームを利用すると 劣化はなく、むしろ圧縮率向上というメリットの方が大きくなる※注意2 FFmpeg系 OBS・Xsplit は、Pフレームに効率よくQPを割当てるために「動き予測」の精度を高める必要がある。(Me)hex・umh(Subme)などでCPUを使う。また、QP値の決定に影響する AQ CRFなどの変更が、より品質向上につながる。また、Pフレーム中心で考える必要がある。プリセット変更して、圧縮の高いものでも、Bフレームはあまり利用されない。。。(と・・言うものの Pフレームとの比較で少ないと言ってるだけで、Bフレームも全体の30%以上あったりします。当然、無視出来ない存在です。) また、CPUに幅を持たせる為に、動き予測、サブマクロ精度、は 軽い物 から 重い物 まで状況に合わせて用意されている。 さてさて・・・はたして本当に、「Xsplitの方が、FMEよりきれい!」 と いい切れるのだろうか?? __私には、どちらが、キレイ とか判断できません。。。(なぜなら 正しいシーンで bフレームを多用しても劣化はない為) 強いて言うなら、FMEは、激しい動きに弱い.....言い換えると 適当でないシーンで Bフレーム を多く使う・・・まぁ、ある条件下では、Xsplitがキレイというのも間違ってはない。。。しかし、こうは言える「Xsplit(FFmpeg)は、FMEの欠点を考慮し、Pフレームの向上と、Bフレームをより正しく利用するよう設計されている」 最後に なが~い文章 を 1行 に まとめると ___________⇒ いくらなんでも そんなに激しいシーンで 3枚連続Bフレームは ないでしょう。。。FMEさん の ばか ばか ばか おわり ※注意1 余談だが・・・もし Xsplit や OBS などで、上の FME のように適当でないシーンで Bフレームを多用するなら 「b-adapt 0」(Bフレーム判定:無効)になっている可能性があります。⇒ b-adapt は、1:簡易 または、2:完全 すると 改善すると思います。 ※注意2 Bフレームを適当でないシーンで使うと「劣化するフレーム」と刺激的に書いていますが、正しいシーンで Bフレームを使うと ①bフレームを多用しても劣化は全くありません(人の目で判断できるレベルでの劣化は ない) ②高圧縮で効率良がいい など メリットはかなり大きいです。 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ユーザー設定による独自のプリセット作成について 【参考にどうぞ】 C \Program Files\SplitMediaLabs\XSplit\ffpresets のフォルダー下 libx264ext-XXXXX.FFPRESET のファイル設定内容を記述することにより、自由に変更できます。 ■■■■■■■■■■■■■■■■■■■■■■■■■■ 下記についての注意点 ■■■■■■■■■■■■■■■■■■■■■■■■■■ 高圧縮=高画質ではありません。正しくは ⇒ 高圧縮・低劣化(これがx264が凄いところ)なので、 劣化を少なくするためにも、ビットレートとのバランスが重要な要素になります。 また、映像素材 画質・画面サイズ ビットレート PC環境 etcによって、適切プリセットは大きく変わります。 ※注意 高圧縮時、ビットレートを上げても効果のない場合がある。 Xsplitは、圧縮率にあったBitRateを常に選択する為。その場合、プリセットを軽い物か、bitrateを適正数値にする。(品質や画面サイズなどを上げて必要ビットレートを上げる方法もあるが、CPU負担を考えると推奨できません)(コマ数 画面サイズ 品質 を変えることでも、問題解決になる場合も)(また、ビットレートの上限がある場合、品質変更によって必要ビットレートを少なくする方法もある【品質0~10又はNotSet】) ■■■■■■■■■■■■■■■■■■■■■ ユーザー独自設定を理解するうえで、知っておきたい知識■■■■■■■■■■■■■■■■■■■■■ 前置き・・・ H.264の技術は、ほとんど特許です。しかし、x264のプロジェクトが(ライセンス管理団体MPEG LA)から訴えられることは、いまのところないようです。しかし、将来において、これを理由に特許侵害のない独自仕様に変更させられる可能性や、場合によっては開発断念という事態になるリスクもあることを念頭においてほしい。 例)東芝 → 適応重み付け予測 IBM → CABACなど・・・ オープンソースとパテント マイクロソフトの主張によると、Linuxカーネルは42件の同社特許を、Linux GUIは65件、OpenOfficeスイートは45件、電子メールプログラムは15件、その他のフリー・オープンソースプログラムは68件の特許を侵害していると主張している。また、一方では、発明に巨額の投資を必要としないソフトウエアの分野では,特許権者に強力な権利を与えるよりも,むしろ知識を解放することが技術革新を促進するという「オープン・イノベーション」という考え方もヨーロッパ中心に支持を増やしている。 そんなことを考えながら、この文章を書いている。。。笑 可変マクロブロックサイズ/マクロブロックパーティション 圧縮処理の単位として、画面を正方形の小さな「マクロブロック」に分割する。H.264/AVCでは、4×4ピクセル~16×16ピクセルのさまざまなサイズが使えるようになった。16×8や4×8など全部で7種類ある。 ※1 マクロブロックのイメージ ※2 (0・1・2・3)の正方形で16×16のマクロブロック 0や1(8×16)サブマクロブロック や 2(8×8)など柔軟に対応 H.264では,サイズや形状の異なるブロックを用いて,マクロブロックの動き補償を行う。 ビットレートが低いと、ブロックノイズと呼ばれる正方形のマス目が目立つようになる。ブロックサイズを小さくすることでマス目が目立ちにくくなり、画質が向上できる。 映像の内容に合わせて、画面上をさまざまな大きさのマクロブロックに分割する。どのように分割するかは、エンコーダの処理方式次第だが、最適な組み合わせを見付けるには、大量の演算処理が必要となる。 ビデオ画像をマクロブロック(16×16ドットの小領域)単位に分割 サブマクロブロック(16×16、16×8、8×16、8×8、8×4、4×8、4×4ドットの小領域)単位に分割 ※3 マクロブロック単位で 動きを ベクトル化して予測しているイメージ図 より柔軟にサイズや形状の異なるサブマクロブロックを用いてることにより,精密にマクロブロックの動き補償を行う。 → 動き予測 ベクトル処理 Bフレームのマクロブロックには、Bフレーム用のモーションベクトルの供給情報として「ダイレクト」タイプのマクロブロックがある。(「スキップ」と「ダイレクト」2種類のマクロブロック)「ダイレクト」は動き情報を符号化してないので、その情報を基にして動き予測(モーションベクトル)を計算している。 (ダイレクトマクロブロック設定・・ex=direct spatial→空間軸 temporal→時間軸 Auto→両者混合で適切に処理) 補足1 正確には、Bスライス用のモーションベクトルの供給情報としてダイレクトタイプのマクロブロックがある。 ※フレーム(1画面)→ スライス(画面をある程度の大きさに分割したもの)→ マクロブロック(16×16単位などに細分化すること)→ピクセル フレーム間予測時の遠隔参照フレーム 隣り合うフレームの差分を取ることで情報量を圧縮している。→動きの差の情報しか記憶しないフレーム(P・Bフレーム) 最も効率の良い差分フレームを作るには、どのフレームとの差分を取ると一番圧縮率が良くなるかを探す必要があり、最適な組み合わせを見付けるには、演算処理とメモリー使用量が大幅に増える。 【補足】フレームの種類 フレーム間予測では、各フレームを Iフレーム、Pフレーム、または Bフレームのようなフレームタイプに分類します。 Iフレーム(完全なるフレーム、キーフレームとも呼ばれる) 他の画像を参照せずとも表示することが可能なフレームです。最初の画像は常に Iフレームになります。一定の間隔で自動的に Iフレームを挿入したり、また、配信を閲覧するビュワーが新しく加わった時などに必要に応じて Iフレームを挿入します。Iフレームはより多くのビット数を必要とするという欠点がありますが、データの欠落によるノイズなどが発生することはありません。 Pフレーム(前方向予測のみ)(単独では表示できない) 前の Iフレームまたは Pフレームの一部を参照してフレームを構成します(単独では表示できない)。Pフレームは Iフレームよりもビット数が少なくなりますが、前の Pフレームまたは Iフレームと複雑な依存関係にあるため、伝送エラーによる影響を受けやすくなります。 Bフレーム(未来方向予測など両方向可能)(単独では表示できない) 前方向予測、後方向予測、両方向予測のうちいずれかを選択して符号化(圧縮)されるフレーム。 ※※ FMEでは、Baseline時は、I・Pフレームのみ、Mian時にBフレームを使用。Xsplitでは、「Ultrafast」は I・Pフレームのみ 「Superfast」は、Bフレームを使用するが、未来方向での参照は「Veryfast」以上になります。 イメージ図のとおり Pフレーム→Iのみ参照(過去方向) Bフレーム→IまたはPフレーム参照(過去・未来 両方向) ※Bフレームのピラミッド参照化(b_pyramid)することでBフレームも参照することが可能(圧縮効率UP)(※デメリットは、若干の画質劣化やBフレーム由来の初期ディレイの問題など) 整数変換 エンコード時に差分を取った後、マクロブロックを圧縮するために高周波成分、つまり、人も目では知覚出来ない画面の細かい点を省略する演算を行う。⇒(4×4画素のDCT係数F(u,v)を利用して,量子化マトリクスという人の視覚では分から部分を削除する)従来のMPEGビデオ圧縮では、8×8ピクセル単位でDCT演算(離散コサイン変換)をしていた。H.264/AVCでは、4×4ピクセル単位で整数変換と呼ばれるDCTに似た演算手法を使う。DCTは浮動小数点計算が必要だが、整数変換は整数計算のみで計算でき、しかも掛け算処理を必要としない分、高速に演算できる。※H.264Highプロファイルでは、上記MPEGビデオ圧縮で使用されている → 8x8画素整数変換(「8x8 離散コサイン変換」 (8x8dct=1))が可能になった。(mainとHighの違い①8x8 離散コサイン変換②量子化マトリックス) qP値の決定方法(H.264 の場合) H.264では,量子化幅を決めるために量子化パラメータ、qP(0 qP 51,qPが大きいほど量子化幅が大きい)を用いる。一般的には、1つの画面のqP値を一定にする方法が最も処理が簡易である。しかし、この方法では一部の領域に画像劣化が目立つことがある。そこでH.264では、人の目で目立つところを算術して、人の目の注目を引く領域の量子化幅を小さくし,それ以外の領域の量子化幅を大きくすることで、より効率的にビットレートを割り振ることをしている。注目度の指標として顕著性マップS(i,j),エッジ強度E(i,j),輝度信号Y(i,j)を算出して、注目指数として利用している。 参考 : 顕著性マップを用いたH.264/AVC適応量子化方式の研究 ループフィルタ(Loop/Deblocking Filter デブロッキング・フィルター) ビットレートが低い場合、デコード後の映像にフィルタ演算を適用することで、ブロックノイズを削減できる。H.264/AVCでは、エンコード時にこのフィルタ演算を考慮することで、画質を向上できる。 エントロピー符号化 (圧縮に相当する処理) MPEGビデオ圧縮では、圧縮の最終段階では、冗長度を減らすためのエントロピー符号化と呼ばれる圧縮処理をする。LZH/ZIP形式の圧縮に相当する処理。 H.264/AVCでは2種類の手法が規定されている。そのうちCABAC(Context-based Adaptive Binary Arithmetic Coding:適応算術演算符号化)と呼ばれる圧縮法は、周りの領域のデータ内容に合わせて最適なモードで圧縮するもので、より圧縮率が向上する。 ①CAVLC方式 処理される量(演算能力・小)は少ないが効果もそこそこ・・・(no-cabacで変更) (FMEでは、Baselineプロファイル xsplitでは Ultlafast プロファイル) ②CABAC方式 処理量は大きいが効果も高い (デフォルト) (FMEでは、mainプロファイル xsplitでは superfast プロファイル 以上) ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 以上を踏まえた上で、独自のプロファイル作成の参考にしてください。 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ※※【括弧】は最近使用している設定です。参考の為 記述しました。 【ex=profile main】そのままだと Hightプロフィール 一応 mainの時は ex=8x8dct 0 【ex=level 3.1】 これを記入しないと レベル5.1 になるので注意 ex=deblock 0 0 ⇒ デブロック・(ループ)フィルター シャープ-6~+6ほやける ±1程度が無難 deblock -1 -1 ex=partitions i8x8,i4x4,p8x8,b8x8 ex=me umh 【hex】 ⇒ 動き予測 アルゴリズム【軽】dia → hex → umh → tesa【重】 ex=subme 3 【7】 ⇒ サブピクセル動き予測・精度 0から11まで。下記に詳細 ex=merange 16 ⇒ ベクトル探査範囲 HD解像度でも24で十分と言われているが、16~32を推奨。高いほど高画質 ⇒ 動き予測「dia」か「hex」の場合は4~16まで、 「umh」「esa」「tesa」の場合は4~64まで ⇒ まとめると、16~32 の範疇ってのが一般的のようです。 ex=scenecut 40 ⇒ シーンカット閾値 Iフレーム挿入の閾値 デフォルト推奨 ex=qcomp 0.6 【0.8】 ⇒ 最近は qcomp 0.3 ( ビットレート変動量 30%)にしている 訂正⇒Mb-tree ON の場合 mbtree強度設定の意味になる。数値少=MBtree(強)数値大=Mbtree(弱) ex=qpmin 10 ex=qpmax 51 ex=qpstep 4 ⇒ x.264は、高精度に、qpを調整している為、デフォルト値を変更はしない。 ⇒ QPが CRFを中心に min.QP ~ max.QPまで 変動する ex=bframes 3 ⇒ 連続bフレーム数 ex=b-adapt 2 【1】 ⇒ bフレーム判定 1 :簡易判定 2:完全判定 最近は【2】だがCPUが重くなる。無効にすると激しいシーンなどの適切でないシーンでbフレームを利用することになりますので注意 ex=ref 3 ⇒ フレーム参照距離 (0~16)フレームが前後何フレームまで画像参照し構成するか 参考 BブレームRef値 による ビットレート・圧縮率・画質の影響 (日常をとりまくあれこれ より) ※注 設定される画面サイズとレベルよって最大値があります。 level 3.1 1280x720 (ref最大値5) level 4.1 1280x720 (ref最大値9) level 5.1 1920x1080 (ref最大値16) ex=direct spatial ⇒ B-フレームモード【プリセットslow以上は Auto】(none, spatial, temporal, auto) Bフレームにあるダイレクトマクロブロックで使う動き予測方式の選択。 temporal(*時間軸*)動き予測に後続するPフレームを使う。⇒こちらがデフォルトだった時期・・ spatial(*空間軸*)は周辺マクロブロックとそのモーションを使う。⇒【※デフォルトspatial】 none 最も画質が悪いだけでなく速度まで落ちる。 auto 自動にブロック毎に【空間軸と時間軸の配分】適切なモーションベクトルを判断し振分けてくれる。 【Autoでは・・・空間軸と時間軸の配分はアニメで9 1。実写で7 3程度。】 参考 ダイレクトマクロブロック direct_について x264 ex=trellis 0 【1】 ⇒ レート歪み最適化の量子化→CABACなどの符号化(圧縮)などで発生した歪みやデーターの破損を補正(量子化誤差補整)前提条件として、CABACが必要 10%ほどbitrateを節約できるがややデコード負荷が上がる。 0 非使用(default) 1 最終エンコードでのみ使用 2 全モード決定で使用。(低速、要subq =6) 参考 trellis= 0-2 :レート歪み最適化の量子化 ex=b-pyramid normal (none, strict, normal) ⇒ B フレームも参照フレームとして利用していく設定 (bframesを2以上にした場合に使用可能) "normal"を指定することを推奨します。"strict"はBlu-ray用の設定です。 参考 b-pyramid の意味 (まるも製作所 より) ex=mixed-refs 0 ⇒ 複数参照(マルチレファレンス)フレーム【0 off 1 on】 動き補償で、1つのフレームだけではなく、複数のフレームを参照する方式。 8x8,8x16マクロブロックが独自に参照フレームを選べるようにする。複数のピクチャを参照ピクチャとして用いる事ができ、この中からブロックごとに最適なものを選択して動き補償を行う。これによる効果は動く物体の影に隠れてしまう背景なども予測可能になる事。その結果、動き補償の効率が向上する。 ex=weightb 1 ⇒ no-weightb にしていることもある。また、x264では適応的B 挿入が強く、あまり出番が無いという説もある。 ex=8x8dct 1 ⇒ 8x8 離散コサイン変換【--8x8dct】 High Profileになる。 ex=no-mbtree 0 ⇒ no-mbtree 0(mb-tree 1と同じOFF) no-mbtree 1(mb-tree 0と同じON)※下に補足 ex=ratetol 10 ex=weightp 0 ⇒ weghtp 2 に設定することも、しかし一部では不安定との声がある為0ffにしている ⇒ weightp0 (weightp off) weightp2 (輝度のみ) weightp2 (輝度+色差) ex=ipratio 1.41 ex=pbratio 1.25 ex=keyint 350 【250】 ex=min-keyint 90 ex=rc-lookahead 20 【60】 ⇒ ビットレート制御 先行検査フレーム数 20コマ ex=aq-mode 1 ⇒ 【mb-treeオンで、自動でオン】AQモード選択 0:off 1 分散 2 自動分散 同じフレーム内でほかのマクロブロックを参照にしながら、QPを決定する。 ex=aq-strength 1.00 ⇒ 【デフォルト 1.00】 Aqの強度 0~3 数字が小さいほど弱くなってQPの差が少なくなり、数字がQPの差が大きい。デフォルトにあるチューニングでも、アニメモードでは0.6 実写では1.0 静止画では 1.2になっている。 ex=psy-rd 1.0 0.0 ⇒ Psy-RD (psy-rd) (psy-trellis) 視覚心理最適 【要subme 6以上】 Psy-RD は見た目に重要な部分について品質を引き上げたり、ノイズ部分をぼかしたりします。アニメ用チューニングで0.4の設定ですが、0.0が最適という意見もある。(0.0~0.4)また、実写用チューニングでも1.0(デフォルト)が最適といわれている。2つ目の数字 Psy-Trellis強度 デフォルトは0.0 Psy-RDについては、デフォルトを推奨ですが、X264であらかじめ設定されているチューニングでの設定例などを参考にするとよいのではないのでしょうか。その上で、判断してください。 大方の例では、実写でグレインノイズがある時は 0.5 0 〜 1.0 0.0 の設定 x264に設定されている チューニング では・・・・【参考】 anime用 0.4:0.0 実写用 1.0 0.15 粒子の画面 1.0 0.25 静止画/動き少さい用設定 2.0 0.7 ★★★★★★★★★★ とりあえず、変更するならこのあたりをいじってみては? ★★★★★★★★★★ 【画質系】 ⇒ deblock 0 0 aq-mode 1 aq-strength 1.0 psy-rd 1.0 0 【圧縮系】 ⇒ b-freams 3 rc-lookahead 50 ref 5 me hex subme 7 ⇒ CRF値などの変更も忘れないでね。。。 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ※※ まぁ それぞれの値や設定説明など、私はそんなに詳しくないので、適当でいい加減です。 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ※※ サブピクセル動き予測精度 (subme 0~11) デフォルト7 サブピクセルの予測精度の設定します。数字が大きいほど優れています。 レベル1-5は、単にピクセルの改良強度を制御します。【1:SADモード 2:SATDモード 3-5 徐々にQPEL】 レベル6は、RDOモードが選択可能となり、 レベル8は、動きベクトルとイントラ予測モードのRDOが可能になります。 ※注 RDO【Rate–distortion optimization】レート-歪み 最適化 数値が大きいほど大幅に遅く(重く)なります。 数値2より小さいモードにすると 高速・低品質先読みモードになる。だが品質が悪くなるので推奨しない。 --------------- 0 fullpelのみ --------------- 1 QPEL SAD モード 2 QPEL SATD モード 3 HPel on MB then QPel 4 常にQPEL 5 マルチQPEL+双方向の動き推定 --------------- 6 I / PフレームのRD判定 7 すべてのフレームのRD判定 【デフォルト】 8 I / PフレームのRDの改良 9 すべてのフレームのRDの改良 10 QP-RD(要 --trellis=2, --aq-mode 0) 11 フルRD --------------- プリセット別 ultrafast ⇒ subme 0 superfast ⇒ subme 1 veryfast ⇒ subme 2 【deflut】 ⇒ subme 3 faster ⇒ subme 4 fast ⇒ subme 6 medium ⇒ subme 7 slow ⇒ subme 8 slower ⇒ subme 9 veryslow ⇒ subme 10 placebo ⇒ subme 10 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ※※ mb-tree について 【簡単な説明】Macroblock Tree Ratecontrol mb-tree は、 プリセット「veryfast」以上の設定時には、mb=treeは、ONになっております。。。 ※注意 デフォルトプリセットの場合、「mb-tree off」の状態です。 ONにしたい場合「ex=no-mbtree 0」または「ex=mbtree 1」に書き換えると良いでしょう。 複数フレームに渡ってマクロブロックごとにモーションベクトル(動きベクタ)の動向を追跡し、その情報を元に、各マクロブロックのQP値を変動させる。モーションベクトルの大きな(動きの大きい)マクロブロックは高QPで低画質に(人間の視覚では劣化を認知できないので、QPを上げて、ビットレートを節約している)、モーションベクトルの小さなブロックは低QP(動きの小さい所は、人間の目で劣化を認知されやすい為、高画質にする)を保つように動作する。 猫化研究によると、Aq(マクロブロック単位/空間軸)とCRF(フレーム単位/時間軸)の中間との解説をしている。 Aq 隣接するマクロブロックなどを参照にして、QPを(量子化)決定する → 空間的方向でQP決定 CRF 前後フレームを参照してフレームごとに品質を変え、QPを決定する。 → 時間方向でQP決定 解りやすく言い換えると・・・画像を先読みして、1つの画面中にある、動きの大きな部分(マクロブロック単位)は、品質を下げても劣化は認知されにくくビットレート節約できる。動きが小さい部分は、品質を上げないと劣化を認知されやすい為、品質を上げる。、そうすることで全体的な品質とビットレートのバランスがよくなる上、ビットレートも節約できる。・・説明、間違っていたらごめん 伝播(propagation)範囲(先行検査フレーム数)を指定するために、--rc-lookaheadが使用される。これは先読みフレーム数を表しており、デフォルト値は40。presetでの値は、fastで30、slowで50、slowerとplaceboで60。最大250 ① より効果を上げるには、qcomp の値 (変動ビットレートの許可%)を下げる・・・しかしバランス的には デフォルトの0.6 や 0.8 が一般的です。反対にMb-treeを 弱く反応 させるには、qcomp値を上げる。 ② 精度を高めるには、rc-lookahead 40 ⇒ビットレート制御 先行検査フレーム数(デフォルト40フレーム)値を上げる。しかし反面、大量にメモリーを消費します。 ③ bフレームの精度判定など mb-treeで制御する為、B-Pフレーム間QP係数(ex=pbratio 1.25)は無視される。 ④ AQは、自動的ONになる。・・・Aq-mode 1 ⑤ 2010年以降のバージョンでは、B-Pyramid の使用ができる。 mbtreeの強度 qcomp値(0.9 0.6 0.1)に変更した結果の検証例 mbtreeの効果を解りやすく解説しているので参考としてリンクします。⇒ http //seiga.nicovideo.jp/seiga/im2707745 参考資料 X264フォーラム Mb-tree解説 英語 猫科研究所 フォーラムのmb-tree部分を日本語訳してます) X264フォーラムに Mb-tree使用例として投稿された 有名な神圧縮動画 bitrate 67k b/s ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ Mb-tree にかんして 個人的な感想・・・ mb-tree は まったりとした静かな動画には、大きな効果が期待できる。低ビットレートでも画面が保てる。・・・・といわれているが、効果が大きい動画・そうでない動画もあるようです。この辺は【経験値】にたよるしかないようです。まぁデメリットがあまりないようなので、デフォルトONのままにして・・・・ うーん あまりにも高等技術すぎるので・・・個人的には デフォルトで いじらない。。。。。 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ ※※ 設定でよく 変更する 箇所・・・ ex=me umh ⇒ 動き予測 アルゴリズム【軽】dia → hex → umh → tesa【重】 ex=subme 3 ⇒ サブピクセル精度 ex=qcomp 0.6 ⇒ ビットレート変動量 % 静かな映像0.3 激しい映像0.6 ex=bframes 3 ⇒ 連続bフレーム数 噂では⇒3の倍数がいいと 3⇒6・・12 これは--b-pyramidが、連続3フレームだとうまく作用する とか? (理由)bframesを1以上に設定した場合、映像が1フレーム分遅れ b-pyramidを有効にした場合は2フレーム分遅れるため。らしい・・・あくまでも 推測の域 ex=b-adapt 2 ⇒ bフレーム判定 ex=ref 3 ⇒ フレーム参照距離(フレームが前後何フレームまで参照して画像を構成するか) 噂では⇒Bフレームを増やすより、こちらを増やした方がビットレート削減に効果あるとか? ex=rc-lookahead 20 ⇒ ビットレート制御 先行検査フレーム数 MB-treeの精度を上げたいとき 50ぐらいにする ※※ それぞれの 適正値 は 求める画質 と 環境 によって大きく変わりますが、・・・ おまけ 上の設定で配信する映像の Iフレーム間隔 Pフレーム 連続 Bフレーム を検証しました Iフレーム間隔 350 コマ 連続 Bフレーム数 3 ⇒ 設定どおりになるか検証
https://w.atwiki.jp/ypen/pages/53.html
Iran says British embassy stoked protests Relations between Iran and Britain are coming under further strain as the Iranian government accused the British embassy in Tehran of stoking post-election protests. Iran s Fars news agency said on Sunday that security authorities detained 8 locally hired Iranian staff of the British embassy in relation to the rallies organized by opposition supporters. Iran s Intelligence Minister Gholam Hossein Mohseni Ejehi accused the British embassy of sending local staff to stir up the protests and collect information. He said Iranian security authorities had several embassy employees in custody and had released some. Earlier British Foreign Secretary David Miliband demanded the release of the embassy staff. But Iran s Foreign Minister Manouchehr Mottaki said Miliband should accept reality and stop useless actions. Meanwhile pro-reform protests calling for a re-run of the presidential election have been subsiding due to a crackdown on protesters. On Sunday security forces used tear gas to break up a crowd of several thousand opposition supporters that had gathered in Tehran for a memorial for a famous Muslim cleric. North Korea s economy grew 3.7 percent in 2008 North Korea s economy in 2008 is likely to have grown for the first time in 3 years, according to South Korea s central bank. In an estimate released on Sunday, the Bank of Korea says North Korea s gross domestic product grew by 3.7 percent last year. This is the first time the North has posted positive growth since 2005, when a gain of 3.8 was projected. The bank attributes the growth to a bumper harvest and international aid. There was an 8.2 percent increase in the production of rice and other agricultural products, helped by favorable weather. North Korea also received heavy oil and other energy assistance from countries in the 6-party talks in return for disabling its nuclear facilities. The bank predicts the positive growth will be temporary as it does not see an increase in capital spending. It also sees long-term recovery as difficult amid mounting international pressure on North Korea over its nuclear and long-range missile tests. The estimate also revealed the economic disparity between the two Koreas. North Korea s annual per capita income stood at about 900 dollars, which is about 5 percent of the amount in the South. Quake-hit reactor to resume commercial operation A Japanese government committee says it has found no problems in a nuclear power reactor in Niigata Prefecture on the Sea of Japan coast. The reactor has been undergoing a test-run after it was severely damaged in an earthquake 2 years ago. The Nuclear and Industrial Safety Agency committee has concluded that the Number 7 reactor at the Kashiwazaki-Kariwa nuclear plant is safe to resume commercial operation. The reactor is the only one at the site that has been restarted for a test-run after the entire facility was shut down due to damages by the quake in July 2007. It will be able to resume commercial operation once it clears final inspections by the central and prefectural governments. The Kashiwazaki-Kariwa nuclear plant is one of the largest producers of nuclear energy in the world. To meet the demand during the facility s shutdown, Tokyo Electric Power Company has spent about 12 billion dollars to reactivate its thermal power plants and to procure electricity from other power companies. However, the operation of the thermal power plants has resulted in an additional 30 million tons of carbon dioxide being emitted in a year. This is blamed for a rise in Japan s entire greenhouse gas emissions by more than 2 percent. Ishikawa pref to restrict children s cellphone use A local assembly in Japan has approved the first ordinance in the country restricting children s use of mobile phones. The prefectural assembly of Ishikawa approved the revised ordinance on Monday. It requires that parents prevent children in elementary and junior high school from using mobile phones except for security purposes. The assembly passed an additional revision to the ordinance restricting children s access to potentially harmful websites. It stipulates that parents of children under aged 18 ensure there is filtering software on their children s mobile phones. But offenders will not punished. The Ishikawa prefectural government says the revised ordinance will go into effect on January first, 2010. It says the assembly has introduced the restrictions in response to increasing incidents of bullying on mobile phone websites, and crimes involving children using their phones to access harmful sites. Police raise reward in murder of British woman Japanese police have raised by 10-fold the reward money for information leading to the arrest of a suspect in the murder of a British woman near Tokyo. English teacher Lindsay Ann Hawker, who was 22 at the time, was found dead in March 2007 at the suspect s apartment veranda in Ichikawa City. The 30-year-old suspect, Tatsuya Ichihashi, is wanted by police on suspicion of abandoning the victim s body. The reward has been raised from up to about10,000 to up to about 100,000 dollars and is effective from Monday through June 2010. Police have made 30,000 new posters with photographs of the suspect and posted them at police and railway stations across the country. On Monday, police officers also handed out flyers at three railway stations near the site of the scene of the incident calling for public cooperation. One of the officers said the police are determined to capture the suspect.
https://w.atwiki.jp/xboxonescore/pages/107.html
ABC News 項目数:10 総ポイント:0 難易度:★☆☆☆☆ 全て無料で実績解除可能。 実績コンプにはツイッターのアカウントが必要。 日本でも本アプリは配信されているが、ローカライズは一切なされていない。→2019年2月時点でストアで発見できず。おそらく新規ダウンロードは不可? News Newbie Watch your first video. Archivist Save a video. Field Reporter Watch a Live video. Social Media Journalist Share (Tweet) a video with a friend. News Junkie Watch 10 videos. Tech Specialist Watch 5 videos from the Technology section. Entertainment Critic Watch 5 videos from the Entertainment section. Politico Watch 5 videos from the Politics section. Town Crier Watch 5 Local videos. Newsie Pin the ABC News app to Xbox One home. 再生数カウントの仕様について 指定された条件のビデオを選択し、ビデオが始まった時点でカウントが回る。最後まで再生する必要はない。 「Watch ~ videos」とあるものは、同じものを繰り返してもよい。 News Newbie 起動時のロード中に再生されるビデオも再生数カウントに入っているらしく、実質的に起動実績に近い。 Archivist ビデオを再生中にメニューボタンを押し、「Save for Later」を選択すると実績解除。ただし、視聴するビデオによっては「Save for Later」の選択肢が出てこない。「SHOWS」セクションの動画は保存できるものが多いようなので、このセクションからいくつかビデオを再生し、メニューボタンを押して保存できるかどうかチェックしてみよう。
https://w.atwiki.jp/eslina/pages/27.html
名称 set_uos_size - uOS イメージサイズの設定 書式 int set_uos_size( uint8_t * mmio_va, uint32_t uos_size); 引数 mmio_va MMIO の仮想アドレス uos_size uOS イメージサイズ 説明 引数 mmio_va で指定されたカードに、引数 uos_size で指定された uOS のイメージサイズを設定する。 設定値は bootstrap が使用する。 設定には、SBOX_SCRATCH5 レジスタを使用する。 戻り値 処理に成功した場合、0 を返す。 そうでない場合、0 以外の値を返す。 とはいうものの、失敗するケースはない。 参照 SBOX_SCRATCH5 実装 host/driver/uos_download.c 345 /* 346 DESCRIPTION Programs a scratch register that the bootstrap reads to determine 347 how large is uOS image. 348 PARAMETERS 349 [in]void *mmio_va - virtual address to mmio register, 350 [in]uint32_t uos_size - size of uos image 351 RETURN_VALUE 0 if successful, non-zero if failure 352 */ 353 int 354 set_uos_size(uint8_t *mmio_va, uint32_t uos_size) 355 { 356 int status = 0; 357 358 uint32_t scratch5; 359 360 scratch5 = uos_size; 361 362 // XPU_RACE_CONDITION write to MMIO space is uncached and flushes WC buffers 363 SBOX_WRITE(scratch5, mmio_va, SBOX_SCRATCH5); 364 365 return status; 366 }
https://w.atwiki.jp/nicoiidx/pages/25.html
beatmaniaIIDX14 GOLD 2hot2eat Air Bell ANDROMEDA II Blind Justice ~Torn souls, Hurt Faiths~ Candy Galy CaptivAte~裁き~ CaptivAte~誓い~ Come On CROSSROAD Cyber Force Dreaming Sweetness earth-like planet Fascination MAXX FIRE FIRE four-leaf GHOSTBUSTERS GOLD RUSH GRID KNIGHT HALF MOON heaven above High School Love HONEY♂PUNCH KAMAITACHI LASER CRUSTER Make Me Your Own METALLIC MIND My Only Shining Star never... op.31 叙情 Play back hate you Red Rocket Rising Roulette Second Heaven Sense 2007 smile snow storm So Real STARS☆☆☆ (Re-tuned by HΛL) -IIDX EDITION- the shadow The Smile of You TRANOID VANESSA Watch Out!! With your Smile X-rated Yabis Starlight カミロ・ウナ・メンデス 鬼言集 クルクル☆ラブ ~Opioid Peptide MIX~ シティ・エンジェル 零 -ZERO- 電人、暁に斃れる。 花吹雪 ~IIDX LIMITED~ 星をこの手に ヨシダさん ムービーまとめ
https://w.atwiki.jp/beniroumu/pages/12.html
名前
https://w.atwiki.jp/external_storage/pages/29.html
UPDATE 2010年10月08日 (金) 23時08分44秒; Apache2のインストール Version : apache 2.2.16 ※順番間違えるとなんだかバグる ■yum版のMySQLを消す バイナリインストールが目的なので入っていたら消す。 # yum list installed | grep httpd 何か表示されていたら消す # yum remoee httpd ■ユーザの追加 インストールをする前にグループとユーザを作成する。 # groupadd apache # useradd -g apache apache ■ダウンロード ディレクトリを移動してからダウンロードするといいかも。 # cd /usr/local/src # wget http //ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.2.16.tar.gz ■解凍 # tar zxvf httpd-2.2.16.tar.gz ■コンパイル前処理 # cd httpd-2.2.16 # CC="gcc" CFLAGS="-O2" \ ./configure \ --prefix=/usr/local/www/apache2.2 \ --with-mpm=prefork \ --enable-mods-shared=all \ --enable-proxy \ --enable-proxy-balancer \ --enable-mods-shared=all \ --enable-ssl 使ったオプション 設定 説明 CC="gcc" Cプログラムをコンパイルするプログラム。正直わからん CFLAGS="-O2" Cコンパイラに与える追加フラグ。正直わからん --prefix インストール先(指定しないとファイルがバラける) --with-mpm リクエストの処理方法の指定 --enable-mods-shared Apacheのモジュールを動的にインストール --enable-ssl SSL対応 ※エラーが出た1 checking for zlib location... not found checking whether to enable mod_deflate... configure error mod_deflate has been requested but can not be built due to prerequisite failures zlibがないらしいのでインストール # yum install zlib-devel ※エラーが出た2 no SSL-C headers found configure error ...No recognized SSL/TLS toolkit detected opensslがないらしいのでインストール # yum install openssl-devel ■コンパイルとインストール # make # make install ■権限の変更 ディレクトリとその配下のファイルとディレクトリのユーザとグループを変更する。 # chown -R apache apache /usr/local/www/apache2.2/ ■Apacheの起動 # /usr/local/www/apache2.2/bin/apachectl start ■Apacheを起動確認(ただしローカル内で) 元からあるindex.htmlにアクセスする ブラウザから見る場合 URLに http //localhost 80/ 又は http //127.0.0.1/ 特に内容を変えていないのなら以下のように表示される It works! コマンドから見る場合 # telnet localhost 80 [enter] [enter] 特に内容を変えていないのなら以下のように表示される HTTP/1.1 200 OK Date Fri, 08 Oct 2010 16 44 00 GMT Server Apache/2.2.16 (Unix) mod_ssl/2.2.16 OpenSSL/0.9.8e-fips-rhel5 DAV/2 Last-Modified Sat, 20 Nov 2004 20 16 24 GMT ETag "21082d-2c-3e9564c23b600" Accept-Ranges bytes Content-Length 44 Connection close Content-Type text/html html body h1 It works! /h1 /body /html Connection closed by foreign host. ■自動起動設定 起動ファイルを名前を変えてコピーする # cp /usr/local/src/httpd-2.2.16/build/rpm/httpd.init /etc/rc.d/init.d/httpd httpd書き換え #httpd=${HTTPD-/usr/sbin/httpd} httpd=${HTTPD-/usr/local/www/apache2/bin/httpd} #pidfile=${PIDFILE-/var/log/httpd/httpd.pid} pidfile=${PIDFILE-/usr/local/www/apache2/logs/httpd.pid} #CONFFILE=/etc/httpd/conf/httpd.conf CONFFILE=/usr/local/www/apache2/conf/httpd.conf 自動起動を設定する # chkconfig --add httpd # chkconfig httpd on 自動起動の確認 # chkconfig --list httpd mysql.server 0 off 1 off 2 on 3 on 4 on 5 on 6 off 次からこれだけで手動起動や停止もできる。 # /etc/rc.d/init.d/httpd start 又は # service httpd start ■参考サイト http //www.apache.jp/manual/ http //www.ecoop.net/coop/translated/GNUMake3.77/make_10.jp.html http //itochif.com/contents/Linux/centos5/web/apache_00100.html
https://w.atwiki.jp/gamemusicbest100/pages/1390.html
GENETOS 機種:PC 作曲者:小山達矢 公開年:2007年(体験版), 2009年(完全版) 概要 小山達矢氏が手掛けるフリーの縦シューティング。キャッチコピーは「進化するシューティングゲーム」。 シューティングゲームの歴史を辿るように、自機とステージが「進化」していくというシステムが特徴のフリーゲーム。 BGMデータの拡張子「.ore」を削除することでMP3やMIDIとして運用できる 収録曲 曲名 補足 順位 The Planet GENETOS 進化する惑星 タイトル画面 Preparation 決意 メニュー画面 Little Invader 小さな来訪者 ステージ1 一面239位 Big Invader 第二種接近遭遇 ステージ1ボス Lonely Galaxy 孤高の一匹狼 ステージ2 Lonely Universe 悠久の星 ステージ2ボス Blue Sky 新境地への第一歩 ステージ3 Dark Cloud 勇者達の見る空 ステージ3ボス Dawn of a new Era 受け継がれた世界 ステージ4 第2回フリゲ107位 Price of Prosperity その先にあるもの ステージ4ボス Origin 星の記憶 ラストステージ 第5回315位第6回224位第7回131位第8回146位第9回247位第10回494位第11回341位第12回468位第13回737位第14回809位2009年193位第1回フリゲ67位第2回フリゲ3位パソコンゲーム31位インディーゲーム57位 Answer 始まりと終わり ラスボス 第2回フリゲ196位ラストバトル182位第2回ラストバトル290位和風136位パソコンゲーム50位 Rebirth いつか見た未来で エンディング Game Over 夢の終わりに リザルト画面 トレーラー
https://w.atwiki.jp/0x0b/pages/46.html
Array オブジェクト (Array Objects) Array オブジェクトはプロパティ名のクラスに特別な扱いを与える。プロパティ名 P (文字列値形式) は、ToString(ToUint32(P)) と P が等しく、かつ ToUint32(P) と 232-1 が等しくない場合、配列のインデックスであり、かつこの場合に限られる。各 Array オブジェクトは length プロパティを持ち、その値は常に 232 未満の負でない整数\である。length プロパティの値は配列のインデックスである各プロパティ名よりも数値的に大きい; Array オブジェクトのプロパティが作成または変更されるときは、他のプロパティがこの不変を維持する必要からいつでも調整される。特別に、配列のインデックスのプロパティが追加されるときはいつでも、length プロパティは変更され、必要であれば、配列のインデックスの数値的な値より大きくなる; そして length プロパティが変更されるといつでも、新しい length 以上の値の配列インデックスの各プロパティは自動的に削除される。この制約は Array オブジェクト自身のプロパティにのみ適用され、length やその prototype から継承されうる配列インデックスプロパティによっては影響されない。 15.4.1 関数として呼出される Array コンストラクタ (The Array Constructor Called as a Function) Array がコンストラクタとしてではなく関数として呼出されるならば、新規に Array オブジェクトを生成して初期化する。関数呼出し Array(...) は、同じ引数を持つオブジェクト生成式 new Array(...) と等価である。 15.4.1.1 Array ( [ item1 [ , item2 [ , ... ] ] ] ) Array 関数が呼出されると、次のステップが取られる 同じ引数\で Array コンストラクタを呼出す (セクション 15.4.2) のと全く同様に、新規 Array オブジェクトを生成して返す。 15.4.2 Array コンストラクタ (The Array Constructor) Array が new 式の一部として呼出されるとき、それはコンストラクタである; 新規に生成したオブジェクトを初期化する。 15.4.2.1 new Array ( [ item0 [ , item1 [ , ... ] ] ] ) この説明は、引数を与えられないか、 2 つ以上与えられる Array コンストラクタに適用する。 新規に構築されたオブジェクトの Prototype プロパティは、 Array.prototype の初期値 (せくしょん 15.4.3.1) である、オリジナルの Array プロトタイプオブジェクトに設定される。 新規に構築されたオブジェクトの Class プロパティは、 "Array" に設定される。新規に構築されたオブジェクトの length プロパティは、引数の数に設定される。 新規に構築されたオブジェクトの 0 プロパティは、 (供給された) item0 に設定される; 新規に構築されたオブジェクトの 1 プロパティは、(もし供給されれば) item1 に設定される; そして、一般に、そこにあるのと同じだけの引数に対して、新規に構築されたオブジェクトの k プロパティは、第一引数を引数番号 0 と考えて引数 k に設定される。 15.4.2.2 new Array (len) 新規に構築されるオブジェクトの Prototype プロパティは、Array.prototype (セクション 15.4.3.1) の初期値である、オリジナルの Array プロトタイプオブジェクトに設定される。新規に構築されるオブジェクトの Class プロパティは "Array" に設定される。 引数 len が Number で、かつ ToUint32(len) が len と等しければ、新規に構築されるオブジェクトの length プロパティは、 ToUint32(len) に設定される。引数 len が Number で、かつ ToUint32(len) か len と等しくなければ、例外 RangeError が投げられる。 引数 len が Number でなければ、新規に構築されるオブジェクトの length プロパティは 1 に設定され、新規に構築されるオブジェクトの 0 プロパティは、 len に設定される。 15.4.3 Array コンストラクタのプロパティ (Properties of the Array Constructor) Array コンストラクタの内部 Prototype プロパティの値は、 Function プロトタイプオブジェクト (セクション 15.3.4) である。 内部プロパティ及び length プロパティ (値は 1 ) の他に、Array コンストラクタは次のプロパティを持つ 15.4.3.1 Array.prototype Array.prototype の初期値は Array プロトタイプオブジェクト (セクション 15.4.4) である。 このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。 15.4.4 Array プロトタイプオブジェクトのプロパティ (Properties of the Array Prototype Object) Array プロトタイプオブジェクトの内部 Prototype プロパティの値は、 Object プロトタイプオブジェクト (セクション 15.2.3.1) である。 Array プロトタイプオブジェクトはそれ自身が配列である; その Class は "Array" で、 length プロパティ (初期値は +0) とセクション 15.4.5.1 に述べる特殊な内部 Put メソッドを持つ。 プロトタイプオブジェクトのプロパティである関数の説明において、以降フレーズ "このオブジェクト" は関数実施の this 値であるオブジェクトを参照する。内部 Class プロパティの値が "Array" でないオブジェクトであることが this に許可される。 NOTE Array プロトタイプオブジェクトは独自の valueOf プロパティを持たない; だが、 valueOf プロパティを Object プロトタイプオブジェクトから継承する。 15.4.4.1 Array.prototype.constructor Array.prototype.constructor の初期値は、組込み Array コンストラクタである。 15.4.4.2 Array.prototype.toString ( ) この関数の呼び出しの結果は、このオブジェクトに組込み join メソッドを引数無しで呼出すのと同様である。 toString 関数は汎用的ではない; this 値が Array オブジェクトでなければ、例外 TypeError を投げる。それゆえ、他の種類のオブジェクトにメソッドとして転用できない。 15.4.4.3 Array.prototype.toLocaleString ( ) 配列要素は toLocaleString メソッドで文字列に変換され、それらの文字列は連結され、実装が定義するロケール特定の方法で引き出される分離子文字列で分離される。この関数の呼出しの結果は、 toString の結果に類似することが意図されるが、この関数の結果はロケール特定であることが意図される。 結果は次のように計算される このオブジェクトの Get メソッドを引数 "length" で呼出す。 ToUint32(Result(1)) を呼出す。 separator をホスト環境の現在のロケールに置いて適当なリスト分離文字列 (これは実装が定義する方法で引き出される) とする。 ToString(separator) を呼出す。 Result(2) が 0 ならば、空文字列を返す。 このオブジェクトの Get メソッドを引数 "0" で呼出す。 Result(6) が undefined か null ならば、空文字列を使用する; そうでなければ、 ToObject(Result(6)).toLocaleString() を呼出す。 R を Result(7) とする。 k を 1 とする。 k が Result(2) と等しければ、 R を返す。 R と Result(4) の連結で生成される文字列値を R とする。 このオブジェクトの Get メソッドを引数 ToString(k) で呼出す。 Result(12) が undefined か null ならば、空文字列を使用する; そうでなければ、 ToObject(Result(12)).toLocaleString() を呼出す。 S と Result(13) の連結で生成される文字列値を R とする。 k を 1 増分する。 ステップ 10 へ。 toLocaleString 関数は汎用的ではない; this 値が Array オブジェクトでなければ、例外 TypeError を投げる。 それゆえ、他の種類のオブジェクトにメソッドとして転用できない。 NOTE この関数の第一パラメータは、この標準の将来のバージョンで使用される可能性がある; 実装はこのパラメータを他の用途に使用しないことを推奨する。 15.4.4.4 Array.prototype.concat ( [ item1 [ , item2 [ , ... ] ] ] ) concat メソッドが 0 個以上の引数 item1, item2, etc. で呼出されると、順に各引数の配列要素が続く、オブジェクトの配列要素で構成される配列を返す。 次のステップが取られる A を、式 new Array() と同様に生成された新規配列とする。 n を 0 とする。 E を このオブジェクトとする。 E が Array オブジェクトでなければ、 ステップ 16 へ。 k を 0 とする。 E の Get メソッドを、引数 "length" で呼出す。 k と Result(6) が等しければ、ステップ 19 へ。 ToString(k) を呼出す。 E が Result(8) という名前のプロパティを持つならば、ステップ 10 へ。 E が Result(8) という名前のプロパティを持たないならば、 ステップ 13 へ。 ToString(n) を呼出す。 E の Get メソッドを、引数 Result(8) で呼出す。 A の Put メソッドを、引数 Result(10) と Result(11) で呼出す。 n を 1 増分する。 k を 1 増分する。 ステップ 7 へ。 ToString(n) を呼出す。 A の Put メソッドを、引数 Result(16) と E で呼出す。 n を 1 増分する。 引数リストから次の引数を取得する; これ以上引数がなければ、ステップ 22 へ。 E を Result(19) とする。 ステップ 4 へ。 A の Put メソッドを、引数 "length" と n で呼出す。 A を返す。 concat メソッドの length プロパティは 1 である。 NOTE concat 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 concat 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.5 Array.prototype.join (separator) 配列要素は文字列に変換され、文字列は連結され、 separator で分離される。 separator が提供されないならば、 1 つのカンマが separator に用いられる。 join メソッドは引数 separator をとり、次のステップを実行する このオブジェクト の Get メソッドを、引数 "length" で呼出す。 ToUint32(Result(1)) を呼出す。 separator が undefined ならば、 separator を 1 文字の文字列 "," とする。 ToString(separator) を呼出す。 Result(2) が 0 ならば、空文字列を返す。 このオブジェクト の Get メソッドを、引数 "0" で呼出す。 Result(6) が undefined か null ならば、 空文字列を用いる; そうでなければ、 ToString(Result(6)) を呼出す。 R を Result(7) とする。 k を 1 とする。 k が Result(2) が等しければ、 R を返す。 S を、 R と Result(4) を連結して生成される文字列値とする。 このオブジェクト の Get メソッドを、引数 ToString(k) で呼出す。 Result(12) が undefined か null ならば、空文字列を用いる; そうでなければ、 ToString(Result(12)) を呼出す。 R を、 S と Result(13) を連結して生成される文字列値とする。 k を 1 増分する。 ステップ 10 へ。 join メソッドの length プロパティは 1 である。 NOTE join 関数は故意に汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 join 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.6 Array.prototype.pop ( ) 配列の最後の要素が配列から取り除かれ、返される。 このオブジェクト の Get メソッドを、引数 "length" で呼出す。 ToUint32(Result(1)) を呼出す。 Result(2) が 0 以外ならば、 ステップ 6 へ。 このオブジェクト の Put メソッドを、引数 "length" と Result(2) で呼出す。 undefined を返す。 ToString(Result(2)-1) を呼出す。 このオブジェクト の Get メソッドを、引数 Result(6) で呼出す。 このオブジェクト の Delete メソッドを、引数 Result(6) で呼出す。 このオブジェクト の Put メソッドを、引数 "length" と (Result(2)-1) で呼出す。 Result(7) を返す。 NOTE pop 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 pop 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.7 Array.prototype.push ( [ item1 [ , item2 [ , ... ] ] ] ) 引数が出現した順に配列の末尾に追加される。呼出しの結果として、新しい配列の長さが返される。 push メソッドが 0 個以上の引数 item1, item2, etc. で呼出されると、次のステップが取られる このオブジェクト の Get メソッドを、引数 "length" で呼出す。 n を ToUint32(Result(1)) 呼出しの結果とする。 引数リストから次の引数を取得する; これ以上引数がなければ、 ステップ 7 へ。 このオブジェクト の Put メソッドを、引数 ToString(n) と Result(3) で呼出す。 n を 1 増分する。 ステップ 3 へ。 このオブジェクト の Put メソッドを、引数 "length" と n で呼出す。 n を返す。 push メソッドの length プロパティは 1 である。 NOTE push 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 pust 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.8 Array.prototype.reverse ( ) 配列要素は順序を逆に再編される。呼出しの結果としてオブジェクトが返される。 引数 "length" で、このオブジェクトの Get メソッドを呼出す。 ToUint32(Result(1)) を呼出す。 floor(Result(2)/2) を算出する。 k を 0 とする。 k が Result(3) と等しければ、このオブジェクトを返す。 Result(2)-k-1 を算出する。 ToString(k) を呼出す。 ToString(Result(6)) を呼出す。 引数 Result(7) で、このオブジェクトの Get メソッドを呼出す。 引数 Result(8) で、このオブジェクトの Get メソッドを呼出す。 このオブジェクトが Result(8) という名前のプロパティを持たなければ、ステップ 19 へ。 このオブジェクトが Result(7) という名前のプロパティを持たなければ、ステップ 16 へ。 引数 Result(7) と Result(10) で、このオブジェクトの Put メソッドを呼出す。 引数 Result(8) と Result(9) で、このオブジェクトの Put メソッドを呼出す。 ステップ 25 へ。 引数 Result(7) と Result(10) で、このオブジェクトの Put メソッドを呼出す。 削除するプロパティ名として Result(8) を提供して、このオブジェクトの Delete メソッドを呼出す。 ステップ 25 へ。 このオブジェクトが Result(7) という名前のプロパティを持たなければ、ステップ 23 へ。 削除するプロパティ名として Result(7) を提供して、このオブジェクトの Delete メソッドを呼出す。 引数 Result(8) と Result(9) で、このオブジェクトの Put メソッドを呼出す。 ステップ 25 へ。 削除するプロパティ名として Result(7) を提供して、このオブジェクトの Delete メソッドを呼出す。 削除するプロパティ名として Result(8) を提供して、このオブジェクトの Delete メソッドを呼出す。 k を 1 増加させる。 ステップ 5 へ。 NOTE reverse 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 reverse 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.9 Array.prototype.shift ( ) 配列の最初の要素が配列から取り除かれ、返される。 このオブジェクト の Get メソッドを、引数 "length" で呼出す。 ToUint32(Result(1)) を呼出す。 Result(2) が 0 以外ならば、 ステップ 6 へ。 このオブジェクト の Put メソッドを、引数 "length" と Result(2) で呼出す。 undefined を返す。 このオブジェクト の Get メソッドを、引数 0 で呼出す。 k を 1 とする。 k が Result(2) と等しければ、 ステップ 18 へ。 ToString(k) を呼出す。 ToString(k-1) を呼出す。 このオブジェクトが Result(9) という名前のプロパティを持つならば、 ステップ 12 へ; このオブジェクトが Result(9) という名前のプロパティを持たないならば、 ステップ 15 へ。 このオブジェクト の Get メソッドを、引数 Result(9) で呼出す。 このオブジェクト の Put メソッドを、引数 Result(10) と Result(12) で呼出す。 ステップ 16 へ。 このオブジェクト の Delete メソッドを、引数 Result(10) で呼出す。 k を 1 増分する。 ステップ 8 へ。 このオブジェクト の Delete メソッドを、引数 ToString(Result(2)-1) で呼出す。 このオブジェクト の Put メソッドを、引数 "length" と (Result(2)-1) で呼出す。 Result(6) を返す。 NOTE shift 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 shift 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.10 Array.prototype.slice (start, end) slice メソッドは 2 つの引数、 start と end をとり、要素 start から要素 end の前まで (または、 end が undefined ならば配列の末尾まで) の配列要素で構成される配列を返す。 start が負ならば、 length を配列の長さとして、(length+start) として扱われる。 end が負ならば、length を配列の長さとして (length+end) として扱われる。 次のステップが取られる A を、式 new Array() と同様に生成した配列とする。 このオブジェクト の Get メソッドを、引数 "length" で呼出す。 ToUint32(Result(2)) を呼出す。 ToInteger(start) を呼出す。 Result(4) が負ならば、 max(*1),0) を用いる; そうでなければ min(Result(4),Result(3)) を用いる。 k を Result(5) とする。 end が undefined ならば、 Result(3) を用いる; そうでなければ ToInteger(end) を用いる。 Result(7) が負ならば、 max(*2),0) を用いる; そうでなければ min(Result(7),Result(3)) を用いる。 n を 0 とする。 k が Result(8) 以上ならば、 ステップ 19 へ。 ToString(k) を呼出す。 このオブジェクトが Result(11) という名前のプロパティを持つならば、 ステップ 13 へ; このオブジェクトが Result(11) という名前のプロパティを持たないならば、 ステップ 16 へ。 ToString(n) を呼出す。 このオブジェクト の Get メソッドを、引数 Result(11) で呼出す。 A の Put メソッドを、引数 Result(13) と Result(14) で呼出す。 k を 1 増分する。 n を 1 増分する。 ステップ 10 へ。 A の Put メソッドを、引数 "length" と n で呼出す。 A を返す。 slice メソッドの length プロパティは 2 である。 NOTE slice 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 slice 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.11 Array.prototype.sort (comparefn) 配列要素はソート (並べ替え) される。ソートは必ずしも安定的ではない(つまり、等価と比較された要素が元の順で残るとは限らない). comparefn が undefined でないならば、それは 2 個の引数 x と y を受け付け、 x y ならば負の値、 x = y ならば 0、 x y ならば正の値を返す関数であるべきである。 comparefn が undefined でなく、かつ この配列の要素について首尾一貫した比較関数 (下記参照) でない場合、 ソートの振る舞いは実装依存である。 len を ToUint32(this.length) とする。下記の全条件を満たす整数 i 及び j と オブジェクト P が存在する場合、ソートの振る舞いは実装依存である 0 ≦ i ≦ len 0 ≦ j ≦ len this は ToString(i) という名前のプロパティを持たない。 P は、 this で始まる 1 個以上の Prototype プロパティを辿ることによって取得される。 P は ToString(j) という名前のプロパティを持つ。 そうでなければ次のステップが取られる. このオブジェクト の Get メソッドを、引数 "length" で呼出す。 ToUint32(Result(1)) を呼出す。 このオブジェクトの Get, Put, Delete メソッドと SortCompare (後述) の呼出しを実装依存の順序で実行する。 Get, Put, Delete の各呼出しの第1引数は 0 以上 Result(2) 未満の整数とし、 SortCompare 呼出しの引数は先行する Get メソッド呼出しの結果とする。 このオブジェクト を返す。 返されるオブジェクトは、次の 2 個のプロパティを持たなければならない。 0 以上 Result(2) 未満の整数 j それぞれにとってプロパティ old[j] が存在するならば、 new[π(j)] は old[j], と全く同じ値であり、プロパティ old[j] が存在しないならば、 new[π(j)] は存在しないような、0 以上 Result(2) 未満の整数の数学的順列 π が存在しなければならない。 0 以上 Result(2) 未満の全ての整数 j と k それぞれについて、 SortCompare(j, k) 0 (下記 SortCompare 参照) ならば、 π(j) π(k) である。 ここでは、表記 old[j] でこの関数の実行前のこのオブジェクトの Get メソッドの引数 j での呼出しの仮の結果を参照し、 表記 new[j] でこの関数の実行後のこのオブジェクトの Get メソッドの引数 j での呼出しの仮の結果を参照する。 下記の必要条件の全てが集合 S 内の値 a, b, c (または同じ値) 全てについて満たされる場合、値の集合 S について関数 comparefn は首尾一貫した比較関数である 記法 CF b は comparefn(a,b) 0 を意味する; a =CF b は comparefn(a,b) = 0 (of either sign) を意味する; a CF b は comparefn(a,b) 0 を意味する。 comparefn(a,b) 呼出しは、 2 個の引数として a と b の値のペアを与えられるとき常に同じ値 v を返す。 さらに、 v は Number 型であり、 v は NaN ではない。 与えられる a と b のペアにとって、厳密には a CF b, a =CF b, a CF b のうち一つは true になるということに注意。 a =CF a (再帰) a =CF b ならば、 b =CF a (対称) a =CF b かつ b =CF c ならば、 a =CF c (=CF の他動) a CF b かつ b CF c ならば、 a CF c ( CF の他動) a CF b かつ b CF c ならば、 a CF c ( CF の他動) NOTE 上の条件は、 comparefn が集合 S を等価な種別に分割し、その等価な種別が全く整然としているのを保証にするのに、必要かつ十分である。 SortCompare 演算子が 2 個の引数 j と k で呼出されると、次のステップが取られる ToString(j) を呼出す。 ToString(k) を呼出す。 このオブジェクトが Result(1) という名前のプロパティを持たず、かつ このオブジェクトが Result(2) という名前のプロパティを持たないならば、 +0 を返す。 このオブジェクトが Result(1) という名前のプロパティを持たないならば、 1 を返す。 このオブジェクトが Result(2) という名前のプロパティを持たないならば、 -1 を返す。 このオブジェクト の Get メソッドを、引数 Result(1) で呼出す。 このオブジェクト の Get メソッドを、引数 Result(2) で呼出す。 x を Result(6) とする。 y を Result(7) とする。 x と y が両方 undefined ならば、 +0 を返す。 x が undefined ならば、 1 を返す。 y が undefined ならば、 -1 を返す。 引数 comparefn が undefined ならば、 ステップ 16 へ。 comparefn を、引数 x と y で呼出す。 Result(14) を返す。 ToString(x) を呼出す。 ToString(y) を呼出す。 Result(16) Result(17) ならば、 -1 を返す。 Result(16) Result(17) ならば、 1 を返す。 0 を返す。 NOTE 存在しないプロパティの値は、常に undefined プロパティ値より大きく比較し、 undefined は他の値よりも大きいと比較するため、 undefined プロパティ値は常に結果の末尾にソートし、存在しないプロパティの値が続く。 NOTE sort 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 sort 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.12 Array.prototype.splice (start, deleteCount [ , item1 [ , item2 [ , ... ] ] ] ) splice メソッドが 2 個以上の引数 start, deleteCount, そして(選択的に) item1, item2, etc. で呼出されると、配列の添え字 start から始まる deleteCount 個の配列要素が、引数 item1, item2, etc で置換される。次のステップが取られる A を、式 new Array() と同様に生成した配列とする。 このオブジェクト の Get メソッドを、引数 "length" で呼出す。 ToUint32(Result(2)) を呼出す。 ToInteger(start) を呼出す。 Result(4) が負ならば、 max(*3),0) を用いる; そうでなければ min(Result(4),Result(3)) を用いる。 min(max(ToInteger(deleteCount),0),Result(3)-Result(5)) を算出する。 k を 0 とする。 k が Result(6) と等価ならば、 ステップ 16 へ。 ToString(Result(5)+k) を呼出す。 このオブジェクトが Result(9) という名前のプロパティを持つならば、 ステップ 11 へ; このオブジェクトが Result(9) という名前のプロパティを持たないならば、 ステップ 14 へ。 ToString(k) を呼出す。 このオブジェクト の Get メソッドを、引数 Result(9) で呼出す。 A の Put メソッドを、引数 Result(11) と Result(12) で呼出す。 k を 1 増分させる。 ステップ 8 へ。 A の Put メソッドを、引数 "length" と Result(6) で呼出す。 追加引数 item1, item2, etc の数を算出する。 Result(17) が Result(6) と等しければ、 ステップ 48 へ。 Result(17) が Result(6) より大きいならば、 ステップ 37 へ。 k を Result(5) とする。 k が (Result(3)-Result(6)) と等しければ、 ステップ 31 へ。 ToString(k+Result(6)) を呼出す。 ToString(k+Result(17)) を呼出す。 このオブジェクトが Result(22) という名前のプロパティを持つならば、 ステップ 25 へ; このオブジェクトが Result(22) という名前のプロパティを持たないならば、 ステップ 28 へ。 このオブジェクト の Get メソッドを、引数 Result(22) で呼出す。 このオブジェクト の Put メソッドを、引数 Result(23) と Result(25) で呼出す。 ステップ 29 へ。 このオブジェクト の Delete メソッドを、引数 Result(23) で呼出す。 k を 1 増分する。 ステップ 21 へ。 k を Result(3) とする。 k が (Result(3)-Result(6)+Result(17)) と等しければ、 ステップ 48 へ。 ToString(k-1) を呼出す。 このオブジェクト の Delete メソッドを、引数 Result(33) で呼出す。 k を 1 減分する。 ステップ 32 へ。 k を (Result(3)-Result(6)) とする。 k が Result(5) と等しければ、 ステップ 48 へ。 ToString(k+Result(6)-1) を呼出す。 ToString(k+Result(17)-1) を呼出す。 このオブジェクトが Result(39) という名前のプロパティを持つならば、 ステップ 42 へ; このオブジェクトが Result(39) という名前のプロパティを持たないならば、 ステップ 45 へ。 このオブジェクト の Get メソッドを、引数 Result(39) で呼出す。 このオブジェクト の Put メソッドを、引数 Result(40) と Result(42) で呼出す。 ステップ 46 へ。 このオブジェクト の Delete メソッドを、引数 Result(40) で呼出す。 k を 1 減分する。 ステップ 38 へ。 k を Result(5) とする。 item1 から始まる引数リストの一部から、次の引数を取得する; これ以上引数がないならば、 ステップ 53 へ。 このオブジェクト の Put メソッドを、引数 ToString(k) と Result(49) で呼出す。 k を 1 増分する。 ステップ 49 へ。 このオブジェクト の Put メソッドを、引数 "length" と (Result(3)-Result(6)+Result(17)) で呼出す。 A を返す。 splice メソッドの length プロパティは 2 である。 NOTE splice 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 splice 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.4.13 Array.prototype.unshift ( [ item1 [ , item2 [ , ... ] ] ] ) 配列内の順所が引数リスト内に出現順と同じになるように、引数が配列の先頭に prepend される。 unshift メソッドが 0 個以上の引数 item1, item2, etc. で呼出されると、次のステップが取られる このオブジェクト の Get メソッドを、引数 "length" で呼出す。 ToUint32(Result(1)) を呼出す。 引数の数を算出する。 k を Result(2) とする。 k が 0 ならば、 ステップ 15 へ。 ToString(k-1) を呼出す。 ToString(k+Result(3)-1) を呼出す。 このオブジェクトが Result(6) という名前のプロパティを持つならば、 ステップ 9 へ; このオブジェクトが Result(6) という名前のプロパティを持たないならば、 ステップ 12 へ。 このオブジェクト の Get メソッドを、引数 Result(6) で呼出す。 このオブジェクト の Put メソッドを、引数 Result(7) と Result(9) で呼出す。 ステップ 13 へ。 このオブジェクト の Delete メソッドを、引数 Result(7) で呼出す。 k を 1 減分する。 ステップ 5 へ。 k を 0 とする。 item1 で始まる引数リストの一部から、次の引数を取得する; これ以上引数がないならば、 ステップ 21 へ。 ToString(k) を呼出す。 このオブジェクト の Put メソッドを、引数 Result(17) と Result(16) で呼出す。 k を 1 増分する。 ステップ 16 へ。 このオブジェクト の Put メソッドを、引数 "length" と (Result(2)+Result(3)) で呼出す。 (Result(2)+Result(3)) を返す。 unshift メソッドの length プロパティは 1 である。 NOTE unshift 関数は故意にに汎用的である; this 値が Array オブジェクトであることを要求されない。それゆえ、他の種類のオブジェクトにメソッドとして転用可能である。 unshift 関数が host オブジェクトにうまく適用できるかどうかは、実装依存である。 15.4.5 Array インスタンスのプロパティ (Properties of Array Instances) Array インスタンスは、 Array プロトタイプオブジェクトからプロパティを継承し、そして次のプロパティも持つ。 15.4.5.1 Put (P, V) Array オブジェクトは変化した Put メソッドを用いて他の Native ECMAScript オブジェクトのために使用される。 A を Array オブジェクト、 P を文字列と想定する。 A の Put メソッドが、プロパティ P と値 V で呼出されるとき、次のステップが取られる A の CanPut method を名前 P で呼出す。 Result(1) が false ならば、戻る。 A 名前 P のプロパティを持たないならば、ステップ 7 へ。 P が "length" ならば、ステップ 12 へ。 A のプロパティ P を V に設定する。 ステップ 8 ヘ。 名前 P のプロパティを生成し、値を V に設定し空の属性を与える。 P が配列の添え字でなければ、戻る。 ToUint32(P) が A の length プロパティ未満ならば、戻る。 A の length プロパティを ToUint32(P)+1 に変更 (または設定) する。 戻る。 ToUint32(V) を算出する。 Result(12) が ToNumber(V) と等しくなければ、例外 RangeError を投げる。 A の length プロパティ の値未満であり Result(12) 未満でない各整数 k について、 A 自身が ToString(k) という名前の (継承したプロパティではない) プロパティを持つならば、そのプロパティを削除する。 A のプロパティ P の値を Result(12) に設定する。 戻る。 15.4.5.2 length Array オブジェクトの length プロパティは、配列の添え字を名前とする各プロパティの名前より、常に数値的に大きい。 length プロパティは属性 { DontEnum, DontDelete } を持つ。