「Anarchy実況板」の版間の差分

提供:5ちゃんねるwiki
ナビゲーションに移動 検索に移動
(灰田勝彦 (トーク) による版 12638 を取り消し)
編集の要約なし
1行目: 1行目:
{{板
{{板
| 板名 = Anarchy実況
| 板名 = 奄美実況
| カテゴリ = 実況ch
| カテゴリ = 隔離
| サーバ = maguro
| サーバ = maguro
| フォルダ = liveanarchy
| フォルダ = liveanarchy
| 開設日 = [[2014年]][[7月2日]]
| 開設日 = [[2014年]][[7月2日]]
| 名無しの名前 = ライブ・アナーキーさん('''強制''')
| 名無しの名前 = 穴カス('''無能''')
| メール欄 = 空白(変更不可)
| メール欄 = 空白(変更不可)
| ID = 表示なし
| ID = 表示なし
| 板URL = http://maguro.2ch.net/liveanarchy/
| 板URL = http://maguro.2ch.net/mango/
}}
}}


== 諸注意 ==
# 過去ログが無いので、ほとんどの項目がソース不明となる。(←要出典)
# なので過去ログをスレに貼っても意味がない。
# なお、ログ速にログはある模様(全てあるとは言っていない。恐らく二割程度)
# 下記の項目は、全て参考にならないことを承知した上で読み進めて下さい。
# 穴実は聞けば教えてくれる優しい世界です。文化は口伝で脈々と受け継がれています。


!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="te
<b>
== 戦犯ミスト ==
http://info.2ch.net/index.php/Mango_Mangue
* ‮YuasaというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
* ‮RotというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
* X86CISCというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
* ‮SUJというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
* ‮WarというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。that any increase in the speed with which insight and improvements can be distributed to others can result in a dramatic acceleration in those improvements. I believe wiki -
* ‮Kinks-72というのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
* ‮MasaoというのはこのWikiの荒らしなので荒らしていたら注意してあげMOVWF W_TEMP ;SAVE OFF CURRENT W REGISTER CONTENTS
; MOVF EMP ;SAVE OFF CONTENTS OF STATUS REGISTER
; MOVFGISTER INTO W REGISTER
; MOVF STATUS_TEMP,W ;RETRIEVE COPY OF STATUS REGISTER
; MOVWF STATUS ;RESTORE PRE-ISR STATUS REGISTER CONTENTS
; SWAPF W_TEMP,F
; SWAPF W_TEMP,W ;RESTORE PRE-ISR W REGISTER CONTENTSよう。
* ‮MeumeuというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
* ‮全てがGuiltyというのはこのWikiの荒らしなので荒n Demand Settings ONLY
var _main hash for cookies
var _u="1800";  // set the inactive session timeout in seconds
var _ugifpath="/__utm.gif"; // set the web path to the __utm.gif filw[0]="q";
_uOsr[2]="msn"; _uOkw[2]="q";らしていたら注意してあげよう。
* ‮美月改造おじさんというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
* ‮白鵬ファンクラブというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
* ‮鼻血池沼というのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
</b>
そ他の戦犯
@(●)(●)@'''もうやめにしませんか'''赤座あかりは何故天使なのか アルベルト・アインシュタイン や赤神杉浦綾乃のゲロうんこ茶漬け松本りせちゃんがあかりのバキちんを内臓まで突っ込まれてバターみたいな固形になりかけな濃厚精子を1リットル注がれる様子めう松「無駄だぞ」内容を「 =='''''<FONT size="7"><big><p style="color:red">赤座あかり</p></big></font>'''''== あかりだよぉ」で置換(最新 | 前) 2014年12月21日 (日) 20:47‎ Yuasa (トーク | 投稿記録)‎ . . (2,760バイト) (+2,666)‎
(最新 | 前) 2014年12月21日 (日) 20:45‎ 赤座あかり (トーク | 投稿記録)‎ . . (94バイト) (-1,739)‎ . . (内容を「あか
<u>
りだよぉ 赤座あかりだよぉ '''や赤神'''     '''や赤神'''」で置換)
(最新 | 前) 2014年12月21日 (日) 20:33‎ Yuasa (トーク | 投稿記録)‎ . . (1,833バイト) (+1,739)‎
(最新 | 前) 2014年12月21日 (日) 3,059バイト) (-34,82620:21‎ 赤座あかり (トーク | 投稿記録)‎ . . (94バイト) (-50,694)‎ . . (内容を「あかりだよぉ 赤座あかりだよぉ '''や赤神'''     '''や赤神'''」で置換)というのWikゐi集してので荒らしていたら注あげよう。</u>


== 概要 ==
[[File:pakara.jpg|caption]]
'''Anarchy実況板'''(あなーきーじっきょういた)は、インターネット掲示板[[2ちゃんねる]]にある板のうちの一つ。略称は'''穴実'''など。Anarchy実況板に住んでいる人たち(住人)を一般的に'''穴実民'''と言う。
ぷはー☆
<p style="color: red; font-size: 5000%; text-align:center">
        †
</p>
<p style="color: red; font-size: 800%; text-shadow: 3px 3px 2px blue">
  R.I.P 赤座あか_り


== Anarchy実況板のローカルルール ==
<FONT color="red" style="include-source: http://taruo.net/ip/">💩😅</font>
<cite>http://maguro.2ch.net/liveanarchy/index.html</cite>
</p>
違法じゃない限りなんでも話そう。
連投は5秒毎に可、海外の回線やスマホからも書き込めます。
スレッドは最大10個まで。書き込みが3分なくてもdat落ちします。
なんと過去ログは作りません{{Tempcolor|red|(←ここ重要)}}


== 規制なしは嘘 ==
=='''''<FONT size="7"><big><p style="color:#610B0B; background:#5E610B;">赤座あかりちゃんのチンコバッキバキでワロタwww😓</p></big></font>'''''==
宣伝で来た人は「Anarchy実況は規制なし?やったぜ。」と思う人が多くいるだろう。'''だがそれは厳密には間違いである。'''以下に例を紹介するので書き込みすぎ、スレ立てすぎには注意しよう。




* '''例1''' Samba規制が5秒と言って5秒間隔で書き込みを続けるとバーボンハウス。
== 諸注意 ==
*:この例はよくあるバーボンハウスです。最低でも10秒間隔で書き込むことを心掛けましょう。


* '''例2''' スレが沢山立てられるからと言って立てすぎるとバーボンハウス。
# なお、ならないことを承知した上で読み進めて下さい。
*:この例もよく見かけるバーボンハウスです。3分に1スレくらいを心掛けましょう。
# 穴実は聞けば教えてくれない厳しい世界です。文化は口伝で脈々と受け継がれていません。


'''ただしスマホならバーボンハウスを気にする必要はないのでどんどんレスしてどんどんスレを立てよう。'''


== Anarchy実況の1001AA ==
<br/>
http://maguro.2ch.net/liveanarchy/1000.txt
<br/>
<pre style="background-color:transparent;border:none;font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12pt;line-height:12pt;">
<br/>
              ___
<br/>
               |
<br/><u style="cursor: not-allowed">'''あんなかわいい顔して立派なものつけてるとかぐう興奮する'''</u>
             /  / ..|
<br/>
            .__/ .......|
<br/>神定期
        │: : : │.............|
<br/><s>神<定期
        │: : : .............|
<br/>絶マー3115X6で5^13 3115 \ ^ 61 : ^ 113 乜ー乜マー3115^6で5^3 3 ! I ョ! ^ 6 でー 1 土 3 乜ー乜 3ひ3 ^ / 61 ー 113 >やすな
        │: : : .............|     このスレッドはもう牌を置けません。
<br/>神定,期
        │: : : │;;;;;;,,.....|     次のスレッドへ移って下さい。
<br/>立てた</s>り落としたりしろ
        │: : : │;;;;;;;;;;;;;|
<br/>神定#期
        │: : : │;;;;;;;;;;;;;|
/{{#replace:{{#replace:{{{1}}}| |%20}}|\|/}}
        │: : : │;;;;;;;;;;;;;|
<br/>たておとし
        │: : : │;;;;;;;;;;;;;|
<pre style="font-family:MS 明朝,細明朝体;font-size:16px;line-height:16px;border: groove 8px #0000ff;border-right-color: #00ff00;box-shadow: 10px 10px;">
        │: : : │;;;;;;;;/;:;:;:;:,,..
           z─ヽ ∨/   / / |     ハ ト、    ', ∨ノ─z_           
        │: : : │;;;;:;:;:;:,,..    Anarchy実況
           〈´,   オ /  ./|廴.人、   廴リ斗 ト、} ', 〈   、 /           
        │: : : |/;:;:;:;:,,..       http://maguro.2ch.net/liveanarchy/
           \ / ' |,イ /  /  \'     ∨: N ヽ/            
           ̄ ̄´
            l, /ヽ l. ゝ.イ.!,-ヽ//.イ二ニz!,'l/` ゝ              
               l,/ /ヾl`'´ Xニニェ 、////  / . ぃ              
              〕 |  | /.r´// r'' ̄_ヽ    _,/  l |ヽ              
  、          / .|  l/| ゝ.〈   ! イ ⌒i    . !   N.ト、            
   ` 、        /  .И   | 、 J.  ヽ、  ノ し / .,ハ | | ヽ             .
      ヽ    |/|   |  ハ .` 、   し´ヽ ,、_'´ レ ∨|V              
       ヽ    '´∨∨V、   .`.l ー -‐l´ /\ハ/                 
        > -y    ´ `' . ` ̄- y_ ._ ''´      y   ヽ           .  
\      Y ヽ/ _,/   ト、                     ',   ',          
  \    _,j   K     / ヽ_                ',   |          
    ー-'´    jヽ    / (:ぅ              ぅ:)  !   !           
         / ヽ    !                     l   !      /    .
       /    ヽ _,..!                   !  i     /    
     /        <  ',                 `J i   !   /       
  _,. /         ヽ i                    |  !.  /         
_/             ヽ|  J                !   | /          
                v         ,         !  !./           .
                `、        fy        ヽ /           .
                 ',         '     し    y             
    /             ',                 /  し           
    J              ',               /               
                     ',              /                
                       ',       . /|        /               
ヽ                   i      / '、     /                
 ',                  .i   _,ノィう)、     !                i   
  ',                       ', /イY:::i r.、ヽ   !                し  
  ',                 ィヽ彳⌒ !:::j i:::::i r、_ノ                 ..
</pre>
<br/>つまんね
[http://ur
<br/>神期
<br/>神定期
[http://do
<br/>[http://i.imgur.com/sp4xUKE.jpg]  [http://i.imgur.com/dXZ9Ggz.jpg][http://i.imgur.com/JwlkIz8.jpg]
<pre>
f="wiki?WikiWikiWebFaq">WikiWikiWebFaq</a>
<li> <a href="wiki?WikiGettingStartedFaq">WikiGettingStartedFaq</a>
<p></p>
</UL>
To read more about the <a href="wiki?WikiWikiWeb">WikiWikiWeb</a> itself:
<UL>
<li> <a href="wiki?WikiDesignPrinciples">WikiDesignPrinciples</a>
<li> <a href="wiki?WhyWikiWorks">WhyWikiWorks</a> and <a href="wiki?WhyWikiWorksNot">WhyWikiWorksNot</a>.
<li> <a href="wiki?WikiBase">WikiBase</a> hosts the original pages from the earliest wiki.
<p></p>
</UL>
Awards:
<UL>
<li> <a href="wiki?WikiInTheNews">WikiInTheNews</a>
<li> <a href="wiki?WikiWikiKudos">WikiWikiKudos</a>
<p></p>
</UL>
Other Wikis:
<UL>
<li> Wikipedia (<a href="http://www.wikipedia.org/" rel="nofollow">http://www.wikipedia.org/</a>)
<li> <a href="http://wikiindex.org/Category:Wiki_Lists" rel="nofollow">http://wikiindex.org/Category:Wiki_Lists</a>
<p></p>
</UL>
<hr>
<a href="wiki?CategoryWikiHelp">CategoryWikiHelp</a>
</div>
</form>
<hr>
View edit of <a href=quickDiff?WikiWikiWeb rel="nofollow">December 18, 2014</a>
or <a href="wiki?FindPage">FindPage</a> with title or text search<br>
<link rel="alternate" type="application/wiki" title="Edit this page!" href="wiki?edit=WikiWikiWeb"/>
<hr><a href=http://usemod.com/cgi-bin/mb.pl?WikiWikiWeb
</pre>
<pre style="font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12px;line-height:12px;">
                  xグ
                    //
               _,!{_,.. -- 、
           ,..- ´ ̄-‐ ` ´ -‐-..、 `ヽ、
      __   /   /         `ヽ  ` <二゙ヽ、
    r ´i:::/:/                   ヽ=<j: i
    !ヽ,y::/                      V::ノ
     ヽ::/ /    _,.. -       ―‐-i、    ヾ.ヘ、
   ,ィ´ .j /    / ト、::..     ::. |i::  :::`ヽ ヽ  !::. ヾヽ
    /:. .:::! | i / i ハ :i ヽ.:::::..  |!:./ i:: /ヽ: ii.  i  i::::,-゙
    ヽ!::|  !i i: i !i i _|_t-ミ\::::::::;j|/ x,レ== ミリ:: :. |  i´
     `! !ハ| ト| ,レ゙,ィ ァx゙ `ヽj"   f_, ,ikx ヽi :: リ  i
        !  : !:i i| fi:タiイ::i      i|ィオ::j ノ| j:  :: j
        ! : :.ト、`弋:::゙:ノ       `‐-‐゙ ,リ::: !: j
        ト、:. :iヾ ////     '    //// ij:: j:レi
       !:ヽト、.:!ヽ      r --―ァ     /:: /::::i´
      i::i:ヽ:ヽヽ:::ヽ、   j`i  - ´   ,/::::j/::ルリ
      `゙ ヽ!∨V`i:::::`::/ /._  ,ィクィ:::´リ|/|ノ∨
         ___|/V/ /  /, ' |\_
        ノ::!i:::::::::::::::/ !,// _/:::::::: ̄`ーt-、
         / ヾヽ:::::/   く,つ´ /::::::::::::::::::/ / ヽ
      / i  ヾ,>´       -!..-/::::::::::::::://   ヽ
     /´,i |  /      ,kッ゙:::/:::::::::::://  /     ト、
</pre>
</pre>
<br/>'''愚かな穴実民よ'''
<br/>穴実の神を崇めよ
<br/>穴実の神を畏れよ
<br/>穴実の神を奉れよ
<br/>
<br/>
<br/>
/**********************************************************************
* ISO MPEG Audio Subgroup Software Simulation Group (1996)
* ISO 13818-3 MPEG-2 Audio Encoder - Lower Sampling Frequency Extension
*
* $Id: encode.c,v 1.1 1996/02/14 04:04:23 rowlands Exp $
*
* $Log: encode.c,v $
* Revision 1.1  1996/02/14 04:04:23  rowlands
* Initial revision
*
* Received from Mike Coleman
**********************************************************************/
/**********************************************************************
*  date  programmers        comment                              *
* 3/01/91  Douglas Wong,      start of version 1.1 records          *
*          Davis Pan                                                *
* 3/06/91  Douglas Wong        rename: setup.h to endef.h            *
*                                      efilter to enfilter          *
*                                      ewindow to enwindow          *
*                              integrated "quantizer", "scalefactor",*
*                              and "transmission" files              *
*                              update routine "window_subband"      *
* 3/31/91  Bill Aspromonte    replaced read_filter by              *
*                              create_an_filter                      *
* 5/10/91  W. Joseph Carter    Ported to Macintosh and Unix.        *
*                              Incorporated Jean-Georges Fritsch's  *
*                              "bitstream.c" package.                *
*                              Incorporated Bill Aspromonte's        *
*                              filterbank coefficient matrix        *
*                              calculation routines and added        *
*                              roundoff to coincide with specs.      *
*                              Modified to strictly adhere to        *
*                              encoded bitstream specs, including    *
*                              "Berlin changes".                    *
*                              Modified PCM sound file handling to  *
*                              process all incoming samples and fill *
*                              out last encoded frame with zeros    *
*                              (silence) if needed.                  *
*                              Located and fixed numerous software  *
*                              bugs and table data errors.          *
* 19jun91  dpwe (Aware)        moved "alloc_*" reader to common.c    *
*                              Globals sblimit, alloc replaced by new*
*                              struct 'frame_params' passed as arg.  *
*                              Added JOINT STEREO coding, layers I,II*
*                              Affects: *_bit_allocation,            *
*                              subband_quantization, encode_bit_alloc*
*                              sample_encoding                      *
* 6/10/91  Earle Jennings      modified II_subband_quantization to  *
*                              resolve type cast problem for MS_DOS  *
* 6/11/91  Earle Jennings      modified to avoid overflow on MS_DOS  *
*                              in routine filter_subband            *
* 7/10/91  Earle Jennings      port to MsDos from MacIntosh version  *
* 8/ 8/91  Jens Spille        Change for MS-C6.00                  *
*10/ 1/91  S.I. Sudharsanan,  Ported to IBM AIX platform.          *
*          Don H. Lee,                                              *
*          Peter W. Farrett                                          *
*10/ 3/91  Don H. Lee          implemented CRC-16 error protection  *
*                              newly introduced function encode_CRC  *
*11/ 8/91  Kathy Wang          Documentation of code                *
*                              All variablenames are referred to    *
*                              with surrounding pound (#) signs      *
* 2/11/92  W. Joseph Carter    Ported new code to Macintosh.  Most  *
*                              important fixes involved changing    *
*                              16-bit ints to long or unsigned in    *
*                              bit alloc routines for quant of 65535 *
*                              and passing proper function args.    *
*                              Removed "Other Joint Stereo" option  *
*                              and made bitrate be total channel    *
*                              bitrate, irrespective of the mode.    *
*                              Fixed many small bugs & reorganized.  *
* 6/16/92  Shaun Astarabadi    Changed I_scale_factor_calc() and    *
*                              II_scale_factor_calc() to use scale  *
*                              factor 0 thru 62 only and not to      *
*                              encode index 63 into the bit stream.  *
* 7/27/92  Mike Li            (re-)Port to MS-DOS                  *
* 9/22/92  jddevine@aware.com  Fixed _scale_factor_calc() defs      *
* 3/31/93  Giogio Dimino      changed II_a_bit_allocation() from:  *
*                              if( ad > ...) to if(ad >= ...)        *
* 8/05/93  TEST                changed I_a_bit_allocation() from:    *
*                              if( ad > ...) to if(ad >= ...)        *
* 8/02/95  mc@fivebats.com    Changed audio file reading code to    *
*                              read samples big-endian              *
*10/15/95  mc@fivebats.com    Modified get_audio() for layer3-LSF  *
**********************************************************************/
#include "common.h"
#include "encoder.h"


一時期1001AAの一部が欠けていたが、現在は修正された。
#ifdef MS_DOS
extern unsigned _stklen = 16384;
#endif


== Anarchy実況板の歴史 ==
=== 来歴 ===
* 2014年
** '''7月2日 - Anarchy実況板新設'''
** '''7月3日 - 初の赤座あかりスレが立つ'''
** 7月6日 - バナーが赤座あかりに ''当初は某弁護士がバナーであった''
** 7月8日 - 「全球団共有野球実況スレ」という野球実況スレが立つ
*** 同日 - 「赤座あかりちゃんのチンコバッキバキでワロタwww」という今も立てられる定期スレが初めて立つ
** '''7月16日 - 名前欄とメール欄固定 固定ハンドルは禁止へ'''([[BE]]は可)
** 7月21日 - バナーがドミノ(モノリス)に
** '''8月2日 - Anarchy実況板設立一ヶ月'''
** 8月19日 - 野球スレ(甲子園スレ)が初完走
** 8月28日 - [[Mango Mangue]]によって新しい[[民間スレスト]]が実装される。穴実戦国時代へ
** '''9月2日 - Anarchy実況板設立ニヶ月'''
** 9月?日 - [[民間スレスト]]にメロンポイントが必要になる。穴実戦国時代終了
** '''10月2日 - Anarchy実況板設立三ヶ月'''
**10月25日 - 不祥事を起こした[[Mango Mangue]]が穴実から[[MANGO板]]へ追放される(でもたまに出てくる)


=== 栄えある穴実研究者たち ===
/*=======================================================================\
{|
|                                                                      |
|'''トマソン'''
| This segment contains all the core routines of the encoder,          |
|言わずも知れた穴実研究の第一人者、穴実の歴史について研究している、最近カナブン研究に没頭中
| except for the psychoacoustic models.                                |
|-
|                                                                       |
|'''デュシャン'''
| The user can select either one of the two psychoacoustic              |
|トマソンより数歩遅れた穴実研究者、成功するゴリ押しと失敗するゴリ押しの違いについて研究している
| models. Model I is a simple tonal and noise masking threshold        |
|-
| generator, and Model II is a more sophisticated cochlear masking      |
|'''ゾマホン'''
| threshold generator. Model I is recommended for lower complexity      |
|穴実研究者の恥さらし、穴実の赤座文化についての研究を発表するも間違いだらけで大ブーイングを受け怒って逃走
| applications whereas Model II gives better subjective quality at low  |
|-
| bit rates.                                                            |
|'''ニコライ'''
|                                                                       |
|ゆるゆりを研究している
| Layers I and II of mono, stereo, and joint stereo modes are supported.|
|-
| Routines associated with a given layer are prefixed by "I_" for layer |
|'''ボブ'''
| 1 and "II_" for layer 2.                                              |
|アオリという生物を研究している
\=======================================================================*/
|}
/************************************************************************
*
* read_samples()
*
* PURPOSE:  reads the PCM samples from a file to the buffer
*
*  SEMANTICS:
* Reads #samples_read# number of shorts from #musicin# filepointer
* into #sample_buffer[]#.  Returns the number of samples read.
*
************************************************************************/


=== AnarchySong一覧 ===
unsigned long read_samples(musicin, sample_buffer, num_samples, frame_size)
穴実民が作成したAnarchySongの一覧です。youtube以外のリンクがわかる方は適当に追加してください。
FILE *musicin;
short sample_buffer[2304];
unsigned long num_samples, frame_size;
{
    unsigned long samples_read;
    static unsigned long samples_to_read;
    static char init = TRUE;


* '''AnarchySong''' (https://youtu.be/bTvyjAQQBwc)
    if (init) {
*:ボカロネットで作成された穴実で一番ポピュラーなAnarchySongです
        samples_to_read = num_samples;
        init = FALSE;
    }
    if (samples_to_read >= frame_size)
        samples_read = frame_size;
    else
        samples_read = samples_to_read;
    if ((samples_read =
        fread(sample_buffer, sizeof(short), (int)samples_read, musicin)) == 0)
        printf("Hit end of audio data\n");
    /*
      Samples are big-endian. If this is a little-endian machine
      we must swap
    */
    if ( NativeByteOrder == order_unknown )
      {
NativeByteOrder = DetermineByteOrder();
if ( NativeByteOrder == order_unknown )
  {
    fprintf( stderr, "byte order not determined\n" );
    exit( 1 );
  }
      }
    if ( NativeByteOrder == order_littleEndian )
      SwapBytesInWords( sample_buffer, samples_read );


* '''AnarchySong Full''' (https://youtu.be/9JG_8ETmhQY)
    samples_to_read -= samples_read;
*:ボカロネットで作成されたAnarchySongのフルバージョンです
    if (samples_read < frame_size && samples_read > 0) {
        printf("Insufficient PCM input for one frame - fillout with zeros\n");
        for (; samples_read < frame_size; sample_buffer[samples_read++] = 0);
        samples_to_read = 0;
    }
    return(samples_read);
}


* '''アナーキー実況の歌(日本語)''' (https://youtu.be/uQZ6VM4LeBU)
/************************************************************************
*:ボカロネットで作成された日本語版のAnarchySongです
*
* get_audio()
*
* PURPOSE: reads a frame of audio data from a file to the buffer,
*  aligns the data for future processing, and separates the
*  left and right channels
*
*
************************************************************************/
unsigned long get_audio( musicin, buffer, num_samples, stereo, info )
FILE *musicin;
short FAR buffer[2][1152];
unsigned long num_samples;
int stereo;
layer *info;
{
    int j;
    short insamp[2304];
    unsigned long samples_read;
    int lay;
    lay = info->lay;


* '''アナーキー実況の歌''' (https://youtu.be/2RQ0IT2nlnA)
    if ( (lay == 3) && (info->version == 0) )
*:オルフェウスで作成されたフルバージョンの日本語版AnarchySongです
    {
if ( stereo == 2 )
{
    samples_read = read_samples( musicin, insamp, num_samples,
(unsigned long) 1152 );
    for ( j = 0; j < 576; j++ )
    {
buffer[0][j] = insamp[2 * j];
buffer[1][j] = insamp[2 * j + 1];
    }
}
else
{
    samples_read = read_samples( musicin, insamp, num_samples,
(unsigned long) 576 );
    for ( j = 0; j < 576; j++ )
    {
buffer[0][j] = insamp[j];
buffer[1][j] = 0;
    }
}
    }
    else
    {
if (lay == 1){
    if(stereo == 2){ /* layer 1, stereo */
samples_read = read_samples(musicin, insamp, num_samples,
    (unsigned long) 768);
for(j=0;j<448;j++) {
    if(j<64) {
buffer[0][j] = buffer[0][j+384];
buffer[1][j] = buffer[1][j+384];
    }
    else {
buffer[0][j] = insamp[2*j-128];
buffer[1][j] = insamp[2*j-127];
    }
}
    }
    else { /* layer 1, mono */
samples_read = read_samples(musicin, insamp, num_samples,
    (unsigned long) 384);
for(j=0;j<448;j++){
    if(j<64) {
buffer[0][j] = buffer[0][j+384];
buffer[1][j] = 0;
    }
    else {
buffer[0][j] = insamp[j-64];
buffer[1][j] = 0;
    }
}
    }
}
else {
    if(stereo == 2){ /* layer 2 (or 3), stereo */
samples_read = read_samples(musicin, insamp, num_samples,
    (unsigned long) 2304);
for(j=0;j<1152;j++) {
    buffer[0][j] = insamp[2*j];
    buffer[1][j] = insamp[2*j+1];
}
    }
    else { /* layer 2 (or 3), mono */
samples_read = read_samples(musicin, insamp, num_samples,
    (unsigned long) 1152);
for(j=0;j<1152;j++){
    buffer[0][j] = insamp[j];
    buffer[1][j] = 0;
}
    }
}
    }
    return(samples_read);
}
/************************************************************************
*
* read_ana_window()
*
* PURPOSE: Reads encoder window file "enwindow" into array #ana_win#
*
************************************************************************/
void read_ana_window(ana_win)
double FAR ana_win[HAN_SIZE];
{
    int i,j[4];
    FILE *fp;
    double f[4];
    char t[150];
    if (!(fp = OpenTableFile("enwindow") ) ) {
      printf("Please check analysis window table 'enwindow'\n");
      exit(1);
    }
    for (i=0;i<512;i+=4) {
      fgets(t, 150, fp);
      sscanf(t,"C[%d] = %lf C[%d] = %lf C[%d] = %lf C[%d] = %lf\n",
              j, f,j+1,f+1,j+2,f+2,j+3,f+3);
      if (i==j[0]) {
          ana_win[i] = f[0];
          ana_win[i+1] = f[1];
          ana_win[i+2] = f[2];
          ana_win[i+3] = f[3];
      }
      else {
          printf("Check index in analysis window table\n");
          exit(1);
      }
      fgets(t,150,fp);
    }
    fclose(fp);
}


=== 穴実でブームが起きたゲーム一覧 ===
/************************************************************************
* Domino Online http://shimage.net/domino/
*
* letters(通称文字遊び) http://www.lunchtimers.com/
* window_subband()
* ピクトセンス http://pictsense.com/
*
* RPGモード http://rpgen.us/dq/maps/
* PURPOSE: Overlapping window on PCM samples
* ねこ戦車 http://kyucon.com/tank/
*
* 天極牌(麻雀) http://www.touch.hangame.co.jp/game/S-MAHJONG/ (スマホのみなので注意)
* SEMANTICS:
* 人狼
* 32 16-bit pcm samples are scaled to fractional 2's complement and
* Wiki改変
* concatenated to the end of the window buffer #x#. The updated window
* buffer #x# is then windowed by the analysis window #c# to produce the
* windowed sample #z#
*
************************************************************************/
void window_subband(buffer, z, k)
short FAR **buffer;
double FAR z[HAN_SIZE];
int k;
{
    typedef double FAR XX[2][HAN_SIZE];
    static XX FAR *x;
    int i, j;
    static off[2] = {0,0};
    static char init = 0;
    static double FAR *c;
    if (!init) {
        c = (double FAR *) mem_alloc(sizeof(double) * HAN_SIZE, "window");
        read_ana_window(c);
        x = (XX FAR *) mem_alloc(sizeof(XX),"x");
        for (i=0;i<2;i++)
            for (j=0;j<HAN_SIZE;j++)
                (*x)[i][j] = 0;
        init = 1;
    }


=== まともに実況できているもの ===
    /* replace 32 oldest samples with 32 new samples */
本来穴実は実況板である。そんな中でも数少ないまともに実況できているスレの一覧がこちら。
    for (i=0;i<32;i++) (*x)[k][31-i+off[k]] = (double) *(*buffer)++/SCALE;
    /* shift samples into proper window positions */
    for (i=0;i<HAN_SIZE;i++) z[i] = (*x)[k][(i+off[k])&HAN_SIZE-1] * c[i];
    off[k] += 480;              /*offset is modulo (HAN_SIZE-1)*/
    off[k] &= HAN_SIZE-1;


* 全球団共有野球実況スレ
}
/************************************************************************
*
* create_ana_filter()
*
* PURPOSE:  Calculates the analysis filter bank coefficients
*
* SEMANTICS:
* Calculates the analysis filterbank coefficients and rounds to the
* 9th decimal place accuracy of the filterbank tables in the ISO
* document.  The coefficients are stored in #filter#


=== 神定期、糞定期一覧 ===
************************************************************************/
* 【新登場】2ちゃんねる快適ツール「浪人」。
* maguro.2ch.netの人気スレ
void create_ana_filter(filter)
* 赤座あかりちゃんのチンコバッキバキでワロタwww
double FAR filter[SBLIMIT][64];
* 集会所
{
* 古谷向日葵さんのふかふかおっぱい
  register int i,k;
* カロリーメイト総合
* くーでたー
  for (i=0; i<32; i++)
* (´・ω・`)承、勝負だ
      for (k=0; k<64; k++) {
* クソキモ君がバイトを始めるようです
          if ((filter[i][k] = 1e9*cos((double)((2*i+1)*(16-k)*PI64))) >= 0)
* ふるたにけ!
            modf(filter[i][k]+0.5, &filter[i][k]);
* 結衣先輩のゲロを入れた水枕
          else
* のんのんびよりのなっつんwwwwww
            modf(filter[i][k]-0.5, &filter[i][k]);
* 心ぴょんぴょん待ち
          filter[i][k] *= 1e-9;
* 花子だし
  }
}


=== 赤座あかりちゃんのチンコバッキバキでワロタwww ===
/************************************************************************
穴実の代表的な定期スレ。通称チンバキ。「神定期」「絶やすな」「立てたり落としたりしろ」のレスが殆どを占める。
*
* filter_subband()
*
* PURPOSE:  Calculates the analysis filter bank coefficients
*
* SEMANTICS:
*      The windowed samples #z# is filtered by the digital filter matrix #m#
* to produce the subband samples #s#. This done by first selectively
* picking out values from the windowed samples, and then multiplying
* them by the filter matrix, producing 32 subband samples.
*
************************************************************************/
void filter_subband(z,s)
double FAR z[HAN_SIZE], s[SBLIMIT];
{
  double y[64];
  int i,j;
static char init = 0;
  typedef double MM[SBLIMIT][64];
static MM FAR *m;
#ifdef MS_DOS
  long    SIZE_OF_MM;
  SIZE_OF_MM      = SBLIMIT*64;
  SIZE_OF_MM      *= 8;
  if (!init) {
      m = (MM FAR *) mem_alloc(SIZE_OF_MM, "filter");
      create_ana_filter(*m);
      init = 1;
  }
#else
  if (!init) {
      m = (MM FAR *) mem_alloc(sizeof(MM), "filter");
      create_ana_filter(*m);
      init = 1;
  }
#endif
  for (i=0;i<64;i++) for (j=0, y[i] = 0;j<8;j++) y[i] += z[i+64*j];
  for (i=0;i<SBLIMIT;i++)
      for (j=0, s[i]= 0;j<64;j++) s[i] += (*m)[i][j] * y[j];
}


雰囲気としてはガッツリフェラ栗山英樹やチンシュスレと似ているが殆ど3、40レス辺りまでしか伸ばさないで落とすのが特徴である(立てたり落としたりしろの精神)。荒らされてもスレが加速して盛り上がるという荒らし相手に脆い穴実の中でも最強のスレである。
/************************************************************************
* encode_info()
*
* PURPOSE:  Puts the syncword and header information on the output
* bitstream.
*
************************************************************************/
void encode_info(fr_ps,bs)
frame_params *fr_ps;
Bit_stream_struc *bs;
{
        layer *info = fr_ps->header;
        putbits(bs,0xfff,12);                    /* syncword 12 bits */
        put1bit(bs,info->version);              /* ID        1 bit  */
        putbits(bs,4-info->lay,2);              /* layer    2 bits */
        put1bit(bs,!info->error_protection);    /* bit set => no err prot */
        putbits(bs,info->bitrate_index,4);
        putbits(bs,info->sampling_frequency,2);
        put1bit(bs,info->padding);
        put1bit(bs,info->extension);            /* private_bit */
        putbits(bs,info->mode,2);
        putbits(bs,info->mode_ext,2);
        put1bit(bs,info->copyright);
        put1bit(bs,info->original);
        putbits(bs,info->emphasis,2);
}
/************************************************************************
*
* mod()
*
* PURPOSE:  Returns the absolute value of its argument
*
************************************************************************/
double mod(a)
double a;
{
    return (a > 0) ? a : -a;
}
/************************************************************************
*
* I_combine_LR    (Layer I)
* II_combine_LR  (Layer II)
*
* PURPOSE:Combines left and right channels into a mono channel
*
* SEMANTICS:  The average of left and right subband samples is put into
* #joint_sample#
*
* Layer I and II differ in frame length and # subbands used
*
************************************************************************/
void I_combine_LR(sb_sample, joint_sample)
double FAR sb_sample[2][3][SCALE_BLOCK][SBLIMIT];
double FAR joint_sample[3][SCALE_BLOCK][SBLIMIT];
{  /* make a filtered mono for joint stereo */
    int sb, smp;
  for(sb = 0; sb<SBLIMIT; ++sb)
      for(smp = 0; smp<SCALE_BLOCK; ++smp)
        joint_sample[0][smp][sb] = .5 *
                    (sb_sample[0][0][smp][sb] + sb_sample[1][0][smp][sb]);
}
void II_combine_LR(sb_sample, joint_sample, sblimit)
double FAR sb_sample[2][3][SCALE_BLOCK][SBLIMIT];
double FAR joint_sample[3][SCALE_BLOCK][SBLIMIT];
int sblimit;
{  /* make a filtered mono for joint stereo */
  int sb, smp, sufr;
  for(sb = 0; sb<sblimit; ++sb)
      for(smp = 0; smp<SCALE_BLOCK; ++smp)
        for(sufr = 0; sufr<3; ++sufr)
            joint_sample[sufr][smp][sb] = .5 * (sb_sample[0][sufr][smp][sb]
                                          + sb_sample[1][sufr][smp][sb]);
}
/************************************************************************
*
* I_scale_factor_calc    (Layer I)
* II_scale_factor_calc    (Layer II)
*
* PURPOSE:For each subband, calculate the scale factor for each set
* of the 12 subband samples
*
* SEMANTICS:  Pick the scalefactor #multiple[]# just larger than the
* absolute value of the peak subband sample of 12 samples,
* and store the corresponding scalefactor index in #scalar#.
*
* Layer II has three sets of 12-subband samples for a given
* subband.
*
************************************************************************/
void I_scale_factor_calc(sb_sample,scalar,stereo)
double FAR sb_sample[][3][SCALE_BLOCK][SBLIMIT];
unsigned int scalar[][3][SBLIMIT];
int stereo;
{
  int i,j, k;
  double s[SBLIMIT];
  for (k=0;k<stereo;k++) {
    for (i=0;i<SBLIMIT;i++)
      for (j=1, s[i] = mod(sb_sample[k][0][0][i]);j<SCALE_BLOCK;j++)
        if (mod(sb_sample[k][0][j][i]) > s[i])
            s[i] = mod(sb_sample[k][0][j][i]);
    for (i=0;i<SBLIMIT;i++)
      for (j=SCALE_RANGE-2,scalar[k][0][i]=0;j>=0;j--) /* $A 6/16/92 */
        if (s[i] <= multiple[j]) {
            scalar[k][0][i] = j;
            break;
        }
  }
}


=== 画像一覧 ===
/******************************** Layer II ******************************/
[[Anarchy実況板/画像]]を参照。
void II_scale_factor_calc(sb_sample,scalar,stereo,sblimit)
double FAR sb_sample[][3][SCALE_BLOCK][SBLIMIT];
unsigned int scalar[][3][SBLIMIT];
int stereo,sblimit;
{
  int i,j, k,t;
  double s[SBLIMIT];
  for (k=0;k<stereo;k++) for (t=0;t<3;t++) {
    for (i=0;i<sblimit;i++)
      for (j=1, s[i] = mod(sb_sample[k][t][0][i]);j<SCALE_BLOCK;j++)
        if (mod(sb_sample[k][t][j][i]) > s[i])
            s[i] = mod(sb_sample[k][t][j][i]);
  for (i=0;i<sblimit;i++)
    for (j=SCALE_RANGE-2,scalar[k][t][i]=0;j>=0;j--)    /* $A 6/16/92 */
      if (s[i] <= multiple[j]) {
        scalar[k][t][i] = j;
        break;
      }
      for (i=sblimit;i<SBLIMIT;i++) scalar[k][t][i] = SCALE_RANGE-1;
    }
}


== アスキーアート ==
/************************************************************************
詳しくは[[穴実AA]]を参照。様々なAAが作られている。作者本人もしくは気に入った者によるゴリ押しにより極一部だけが生き残る。
*
* pick_scale  (Layer II)
*
* PURPOSE:For each subband, puts the smallest scalefactor of the 3
* associated with a frame into #max_sc#.  This is used
* used by Psychoacoustic Model I.
* (I would recommend changin max_sc to min_sc)
*
************************************************************************/
void pick_scale(scalar, fr_ps, max_sc)
unsigned int scalar[2][3][SBLIMIT];
frame_params *fr_ps;
double FAR max_sc[2][SBLIMIT];
{
  int i,j,k,max;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  for (k=0;k<stereo;k++)
    for (i=0;i<sblimit;max_sc[k][i] = multiple[max],i++)
      for (j=1, max = scalar[k][0][i];j<3;j++)
        if (max > scalar[k][j][i]) max = scalar[k][j][i];
  for (i=sblimit;i<SBLIMIT;i++) max_sc[0][i] = max_sc[1][i] = 1E-20;
}


{|
/************************************************************************
|【*^▲^*
*
|「クソキモ」
* put_scale  (Layer I)
|おそらく穴実で最も代表的とされるAA。ウザい。
*
|-
* PURPOSE:Sets #max_sc# to the scalefactor index in #scalar.
|@( ●)(●)@
* This is used by Psychoacoustic Model I
|「唐澤あかり」
*
|穴実初のオリジナルAA。某弁護士と赤座あかりの子供のAA(かどうかはよくわかってない)。キモいとか怖いとか言われている。
************************************************************************/
|-
|メェ(゜゜松)
void put_scale(scalar, fr_ps, max_sc)
|「メェ松」
unsigned int scalar[2][3][SBLIMIT];
|とにかく良く分からないAA。かなりマイナーである。
frame_params *fr_ps;
|-
double FAR max_sc[2][SBLIMIT];
|a['-']a
{
|「穴美」
  int i,j,k, max;
|名前もハッキリしないし性別もハッキリしない。クソキモのライバルである。←「穴月」だぞ ←「実月だぞ」
  int stereo  = fr_ps->stereo;
|-
  int sblimit = fr_ps->sblimit;
|∬σ_σし
|「レタス民」
  for (k=0;k<stereo;k++) for (i=0;i<SBLIMIT;i++)
|金髪ロリの哲学者。
        max_sc[k][i] = multiple[scalar[k][0][i]];
|-
}
|¶ ゜ム゜ Ъ
|「スネーク」
/************************************************************************
|任務で良く穴実を荒せと命令され荒らす 有能
*
|-
* II_transmission_pattern (Layer II only)
|( )
*
|「穴実マン」
* PURPOSE:For a given subband, determines whether to send 1, 2, or
|必殺技はhttpビーム よわそう いやよわい
* all 3 of the scalefactors, and fills in the scalefactor
|-
* select information accordingly
|(゜゜松)
*
|「○○松」
* SEMANTICS:  The subbands and channels are classified based on how much
|あへあへ対立煽りマンが○○松と書こうとして失敗して生まれた。メェ松はこれの派生。
* the scalefactors changes over its three values (corresponding
|-
* to the 3 sets of 12 samples per subband).  The classification
|【*σ▲σ*
* will send 1 or 2 scalefactors instead of three if the scalefactors
|「レタキモ」
* do not change much.  The scalefactor select information,
|クソキモ父さんとレタス母さんの間に産まれた悪魔の子。
* #scfsi#, is filled in accordingly.
|-
*
|(丿_乀)  
************************************************************************/
|「穴実くん」
|突然作られたて認知度はイマイチ。自信がなさそう。
void II_transmission_pattern(scalar, scfsi, fr_ps)
|-
unsigned int scalar[2][3][SBLIMIT];
|[^<>^]
unsigned int scfsi[2][SBLIMIT];
|「穴鳥」
frame_params *fr_ps;
|自称クソキモのライバル その前にまず鳥かすらも怪しい
{
|-
  int stereo  = fr_ps->stereo;
|(`*<*)
  int sblimit = fr_ps->sblimit;
|「クソキモのライバル」
  int dscf[2];
|作者はこの様に命名したが何故か「ハラマキ」と呼ばれている。一人称はボイ
  int class[2],i,j,k;
|-
static int pattern[5][5] = {0x123, 0x122, 0x122, 0x133, 0x123,
|彡(・)益(・)
                            0x113, 0x111, 0x111, 0x444, 0x113,
|「ますを」
                            0x111, 0x111, 0x111, 0x333, 0x113,
|なんJの野球民モドキに「益」を付けただけだが改変にはとても便利。最近忘れられがち。
                            0x222, 0x222, 0x222, 0x333, 0x123,
|}
                            0x123, 0x122, 0x122, 0x133, 0x123};
  for (k=0;k<stereo;k++)
    for (i=0;i<sblimit;i++) {
      dscf[0] =  (scalar[k][0][i]-scalar[k][1][i]);
      dscf[1] =  (scalar[k][1][i]-scalar[k][2][i]);
      for (j=0;j<2;j++) {
        if (dscf[j]<=-3) class[j] = 0;
        else if (dscf[j] > -3 && dscf[j] <0) class[j] = 1;
              else if (dscf[j] == 0) class[j] = 2;
                  else if (dscf[j] > 0 && dscf[j] < 3) class[j] = 3;
                        else class[j] = 4;
      }
      switch (pattern[class[0]][class[1]]) {
        case 0x123 :    scfsi[k][i] = 0;
                        break;
        case 0x122 :    scfsi[k][i] = 3;
                        scalar[k][2][i] = scalar[k][1][i];
                        break;
        case 0x133 :    scfsi[k][i] = 3;
                        scalar[k][1][i] = scalar[k][2][i];
                        break;
        case 0x113 :    scfsi[k][i] = 1;
                        scalar[k][1][i] = scalar[k][0][i];
                        break;
        case 0x111 :    scfsi[k][i] = 2;
                        scalar[k][1][i] = scalar[k][2][i] = scalar[k][0][i];
                        break;
        case 0x222 :    scfsi[k][i] = 2;
                        scalar[k][0][i] = scalar[k][2][i] = scalar[k][1][i];
                        break;
        case 0x333 :    scfsi[k][i] = 2;
                        scalar[k][0][i] = scalar[k][1][i] = scalar[k][2][i];
                        break;
        case 0x444 :    scfsi[k][i] = 2;
                        if (scalar[k][0][i] > scalar[k][2][i])
                              scalar[k][0][i] = scalar[k][2][i];
                        scalar[k][1][i] = scalar[k][2][i] = scalar[k][0][i];
      }
  }
}
/************************************************************************
*
* I_encode_scale  (Layer I)
* II_encode_scale (Layer II)
*
* PURPOSE:The encoded scalar factor information is arranged and
* queued into the output fifo to be transmitted.
*
* For Layer II, the three scale factors associated with
* a given subband and channel are transmitted in accordance
* with the scfsi, which is transmitted first.
*
************************************************************************/
void I_encode_scale(scalar, bit_alloc, fr_ps, bs)
unsigned int scalar[2][3][SBLIMIT];
unsigned int bit_alloc[2][SBLIMIT];
frame_params *fr_ps;
Bit_stream_struc *bs;
{
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int i,j;
  for (i=0;i<SBLIMIT;i++) for (j=0;j<stereo;j++)
      if (bit_alloc[j][i]) putbits(bs,scalar[j][0][i],6);
}
/***************************** Layer II  ********************************/
void II_encode_scale(bit_alloc, scfsi, scalar, fr_ps, bs)
unsigned int bit_alloc[2][SBLIMIT], scfsi[2][SBLIMIT];
unsigned int scalar[2][3][SBLIMIT];
frame_params *fr_ps;
Bit_stream_struc *bs;
{
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  int i,j,k;
  for (i=0;i<sblimit;i++) for (k=0;k<stereo;k++)
    if (bit_alloc[k][i])  putbits(bs,scfsi[k][i],2);
  for (i=0;i<sblimit;i++) for (k=0;k<stereo;k++)
    if (bit_alloc[k][i])  /* above jsbound, bit_alloc[0][i] == ba[1][i] */
        switch (scfsi[k][i]) {
          case 0: for (j=0;j<3;j++)
                    putbits(bs,scalar[k][j][i],6);
                  break;
          case 1:
          case 3: putbits(bs,scalar[k][0][i],6);
                  putbits(bs,scalar[k][2][i],6);
                  break;
          case 2: putbits(bs,scalar[k][0][i],6);
        }
}
/*=======================================================================\
|                                                                       |
|     The following routines are done after the masking threshold      |
| has been calculated by the fft analysis routines in the Psychoacoustic |
| model. Using the MNR calculated, the actual number of bits allocated  |
| to each subband is found iteratively.                                  |
|                                                                       |
\=======================================================================*/
/************************************************************************
*
* I_bits_for_nonoise  (Layer I)
* II_bits_for_nonoise (Layer II)
*
* PURPOSE:Returns the number of bits required to produce a
* mask-to-noise ratio better or equal to the noise/no_noise threshold.
*
* SEMANTICS:
* bbal = # bits needed for encoding bit allocation
* bsel = # bits needed for encoding scalefactor select information
* banc = # bits needed for ancillary data (header info included)
*
* For each subband and channel, will add bits until one of the
* following occurs:
* - Hit maximum number of bits we can allocate for that subband
* - MNR is better than or equal to the minimum masking level
*  (NOISY_MIN_MNR)
* Then the bits required for scalefactors, scfsi, bit allocation,
* and the subband samples are tallied (#req_bits#) and returned.
*
* (NOISY_MIN_MNR) is the smallest MNR a subband can have before it is
* counted as 'noisy' by the logic which chooses the number of JS
* subbands.
*
* Joint stereo is supported.
*
************************************************************************/


== 草彅剛(くさなぎつよし) ==
static double snr[18] = {0.00, 7.00, 11.00, 16.00, 20.84,
穴実に時々書き込まれる日本の歌手、俳優、タレントであり、男性アイドルグループSMAPのメンバーである。主に「くっさ」 「なっぎ」 「つよし」 と分けて書き込まれる。
                        25.28, 31.59, 37.75, 43.84,
                        49.89, 55.93, 61.96, 67.98, 74.01,
                        80.03, 86.05, 92.01, 98.01};


  10 :{{Tempcolor|green|<b>アナーキーさん</b>}}:2014/08/19() 10:27:08.17
int I_bits_for_nonoise(perm_smr, fr_ps)
<u>{{Tempcolor|blue|&gt;&gt;7}}</u>
double FAR perm_smr[2][SBLIMIT];
くっさ
frame_params *fr_ps;
{
  int i,j,k;
  int stereo = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  int req_bits = 0;
  /* initial b_anc (header) allocation bits */
  req_bits = 32 + 4 * ( (jsbound * stereo) + (SBLIMIT-jsbound) );
  for(i=0; i<SBLIMIT; ++i)
    for(j=0; j<((i<jsbound)?stereo:1); ++j) {
      for(k=0;k<14; ++k)
        if( (-perm_smr[j][i] + snr[k]) >= NOISY_MIN_MNR)
          break; /* we found enough bits */
        if(stereo == 2 && i >= jsbound)    /* check other JS channel */
          for(;k<14; ++k)
            if( (-perm_smr[1-j][i] + snr[k]) >= NOISY_MIN_MNR) break;
        if(k>0) req_bits += (k+1)*SCALE_BLOCK + 6*((i>=jsbound)?stereo:1);
  }
  return req_bits;
}
   
   
  11 :{{Tempcolor|green|<b>アナーキーさん</b>}}:2014/08/19(火) 10:27:34.85
/***************************** Layer II ********************************/
{{Tempcolor|blue|&gt;&gt;10}}
なっぎ
   
   
  15 :{{Tempcolor|green|<b>アナーキーさん</b>}}:2014/08/19(火) 10:30:49.56
int II_bits_for_nonoise(perm_smr, scfsi, fr_ps)
{{Tempcolor|blue|&gt;&gt;11}}
double FAR perm_smr[2][SBLIMIT];
つよし
unsigned int scfsi[2][SBLIMIT];
frame_params *fr_ps;
{
  int sb,ch,ba;
  int stereo = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;
  int req_bits = 0, bbal = 0, berr = 0, banc = 32;
  int maxAlloc, sel_bits, sc_bits, smp_bits;
static int sfsPerScfsi[] = { 3,2,1,2 };    /* lookup # sfs per scfsi */


  /* added 92-08-11 shn */
  if (fr_ps->header->error_protection) berr=16; else berr=0;
  for (sb=0; sb<jsbound; ++sb)
    bbal += stereo * (*alloc)[sb][0].bits;
  for (sb=jsbound; sb<sblimit; ++sb)
    bbal += (*alloc)[sb][0].bits;
  req_bits = banc + bbal + berr;
  for(sb=0; sb<sblimit; ++sb)
    for(ch=0; ch<((sb<jsbound)?stereo:1); ++ch) {
      maxAlloc = (1<<(*alloc)[sb][0].bits)-1;
      sel_bits = sc_bits = smp_bits = 0;
      for(ba=0;ba<maxAlloc-1; ++ba)
        if( (-perm_smr[ch][sb] + snr[(*alloc)[sb][ba].quant+((ba>0)?1:0)])
            >= NOISY_MIN_MNR)
            break;      /* we found enough bits */
      if(stereo == 2 && sb >= jsbound) /* check other JS channel */
        for(;ba<maxAlloc-1; ++ba)
          if( (-perm_smr[1-ch][sb]+ snr[(*alloc)[sb][ba].quant+((ba>0)?1:0)])
              >= NOISY_MIN_MNR)
            break;
      if(ba>0) {
        smp_bits = SCALE_BLOCK * ((*alloc)[sb][ba].group * (*alloc)[sb][ba].bits);
        /* scale factor bits required for subband */
        sel_bits = 2;
        sc_bits  = 6 * sfsPerScfsi[scfsi[ch][sb]];
        if(stereo == 2 && sb >= jsbound) {
          /* each new js sb has L+R scfsis */
          sel_bits += 2;
          sc_bits  += 6 * sfsPerScfsi[scfsi[1-ch][sb]];
        }
        req_bits += smp_bits+sel_bits+sc_bits;
      }
  }
  return req_bits;
}
/************************************************************************
*
* I_main_bit_allocation  (Layer I)
* II_main_bit_allocation  (Layer II)
*
* PURPOSE:For joint stereo mode, determines which of the 4 joint
* stereo modes is needed.  Then calls *_a_bit_allocation(), which
* allocates bits for each of the subbands until there are no more bits
* left, or the MNR is at the noise/no_noise threshold.
*
* SEMANTICS:
*
* For joint stereo mode, joint stereo is changed to stereo if
* there are enough bits to encode stereo at or better than the
* no-noise threshold (NOISY_MIN_MNR).  Otherwise, the system
* iteratively allocates less bits by using joint stereo until one
* of the following occurs:
* - there are no more noisy subbands (MNR >= NOISY_MIN_MNR)
* - mode_ext has been reduced to 0, which means that all but the
*  lowest 4 subbands have been converted from stereo to joint
*  stereo, and no more subbands may be converted
*
*    This function calls *_bits_for_nonoise() and *_a_bit_allocation().
*
************************************************************************/
void I_main_bit_allocation(perm_smr, bit_alloc, adb, fr_ps)
double FAR perm_smr[2][SBLIMIT];
unsigned int bit_alloc[2][SBLIMIT];
int *adb;
frame_params *fr_ps;
{
  int  noisy_sbs;
  int  mode, mode_ext, lay, i;
  int  rq_db, av_db = *adb;
static  int init = 0;
  if(init == 0) {
    /* rearrange snr for layer I */
    snr[2] = snr[3];
    for (i=3;i<16;i++) snr[i] = snr[i+2];
    init = 1;
  }
  if((mode = fr_ps->actual_mode) == MPG_MD_JOINT_STEREO) {
    fr_ps->header->mode = MPG_MD_STEREO;
    fr_ps->header->mode_ext = 0;
    fr_ps->jsbound = fr_ps->sblimit;
    if(rq_db = I_bits_for_nonoise(perm_smr, fr_ps) > *adb) {
      fr_ps->header->mode = MPG_MD_JOINT_STEREO;
      mode_ext = 4;          /* 3 is least severe reduction */
      lay = fr_ps->header->lay;
      do {
          --mode_ext;
          fr_ps->jsbound = js_bound(lay, mode_ext);
          rq_db = I_bits_for_nonoise(perm_smr, fr_ps);
      } while( (rq_db > *adb) && (mode_ext > 0));
      fr_ps->header->mode_ext = mode_ext;
    }    /* well we either eliminated noisy sbs or mode_ext == 0 */
  }
  noisy_sbs = I_a_bit_allocation(perm_smr, bit_alloc, adb, fr_ps);
}
/***************************** Layer II  ********************************/
void II_main_bit_allocation(perm_smr, scfsi, bit_alloc, adb, fr_ps)
double FAR perm_smr[2][SBLIMIT];
unsigned int scfsi[2][SBLIMIT];
unsigned int bit_alloc[2][SBLIMIT];
int *adb;
frame_params *fr_ps;
{
  int  noisy_sbs, nn;
  int  mode, mode_ext, lay;
  int  rq_db, av_db = *adb;
  if((mode = fr_ps->actual_mode) == MPG_MD_JOINT_STEREO) {
    fr_ps->header->mode = MPG_MD_STEREO;
    fr_ps->header->mode_ext = 0;
    fr_ps->jsbound = fr_ps->sblimit;
    if((rq_db=II_bits_for_nonoise(perm_smr, scfsi, fr_ps)) > *adb) {
      fr_ps->header->mode = MPG_MD_JOINT_STEREO;
      mode_ext = 4;          /* 3 is least severe reduction */
      lay = fr_ps->header->lay;
      do {
        --mode_ext;
        fr_ps->jsbound = js_bound(lay, mode_ext);
        rq_db = II_bits_for_nonoise(perm_smr, scfsi, fr_ps);
      } while( (rq_db > *adb) && (mode_ext > 0));
      fr_ps->header->mode_ext = mode_ext;
    }    /* well we either eliminated noisy sbs or mode_ext == 0 */
  }
  noisy_sbs = II_a_bit_allocation(perm_smr, scfsi, bit_alloc, adb, fr_ps);
}
/************************************************************************
*
* I_a_bit_allocation  (Layer I)
* II_a_bit_allocation (Layer II)
*
* PURPOSE:Adds bits to the subbands with the lowest mask-to-noise
* ratios, until the maximum number of bits for the subband has
* been allocated.
*
* SEMANTICS:
* 1. Find the subband and channel with the smallest MNR (#min_sb#,
*    and #min_ch#)
* 2. Calculate the increase in bits needed if we increase the bit
*    allocation to the next higher level
* 3. If there are enough bits available for increasing the resolution
*    in #min_sb#, #min_ch#, and the subband has not yet reached its
*    maximum allocation, update the bit allocation, MNR, and bits
    available accordingly
* 4. Repeat until there are no more bits left, or no more available
*    subbands. (A subband is still available until the maximum
*    number of bits for the subband has been allocated, or there
*    aren't enough bits to go to the next higher resolution in the
    subband.)
*
************************************************************************/
int I_a_bit_allocation(perm_smr, bit_alloc, adb, fr_ps) /* return noisy sbs */
double FAR perm_smr[2][SBLIMIT];
unsigned int bit_alloc[2][SBLIMIT];
int *adb;
frame_params *fr_ps;
{
  int i, k, smpl_bits, scale_bits, min_sb, min_ch, oth_ch;
  int bspl, bscf, ad, noisy_sbs, done = 0, bbal ;
  double mnr[2][SBLIMIT], small;
  char used[2][SBLIMIT];
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;
static char init= 0;
static int banc=32, berr=0;
  if (!init) {
      init = 1;
      if (fr_ps->header->error_protection) berr = 16;  /* added 92-08-11 shn */
  }
  bbal = 4 * ( (jsbound * stereo) + (SBLIMIT-jsbound) );
  *adb -= bbal + berr + banc;
  ad= *adb;
  for (i=0;i<SBLIMIT;i++) for (k=0;k<stereo;k++) {
    mnr[k][i]=snr[0]-perm_smr[k][i];
    bit_alloc[k][i] = 0;
    used[k][i] = 0;
  }
  bspl = bscf = 0;
  do  {
    /* locate the subband with minimum SMR */
    small = mnr[0][0]+1;    min_sb = -1; min_ch = -1;
    for (i=0;i<SBLIMIT;i++) for (k=0;k<stereo;k++)
      /* go on only if there are bits left */
      if (used[k][i] != 2 && small > mnr[k][i]) {
        small = mnr[k][i];
        min_sb = i;  min_ch = k;
      }
    if(min_sb > -1) {  /* there was something to find */
      /* first step of bit allocation is biggest */
      if (used[min_ch][min_sb])  { smpl_bits = SCALE_BLOCK; scale_bits = 0; }
      else                      { smpl_bits = 24; scale_bits = 6; }
      if(min_sb >= jsbound)        scale_bits *= stereo;
      /* check to see enough bits were available for */
      /* increasing resolution in the minimum band */
      if (ad >= bspl + bscf + scale_bits + smpl_bits) {
        bspl += smpl_bits; /* bit for subband sample */
        bscf += scale_bits; /* bit for scale factor */
        bit_alloc[min_ch][min_sb]++;
        used[min_ch][min_sb] = 1; /* subband has bits */
        mnr[min_ch][min_sb] = -perm_smr[min_ch][min_sb]
                              + snr[bit_alloc[min_ch][min_sb]];
        /* Check if subband has been fully allocated max bits */
        if (bit_alloc[min_ch][min_sb] ==  14 ) used[min_ch][min_sb] = 2;
      }
      else            /* no room to improve this band */
        used[min_ch][min_sb] = 2; /*  for allocation anymore */
      if(stereo == 2 && min_sb >= jsbound) {
        oth_ch = 1-min_ch;  /* joint-st : fix other ch */
        bit_alloc[oth_ch][min_sb] = bit_alloc[min_ch][min_sb];
        used[oth_ch][min_sb] = used[min_ch][min_sb];
        mnr[oth_ch][min_sb] = -perm_smr[oth_ch][min_sb]
                              + snr[bit_alloc[oth_ch][min_sb]];
      }
    }
  } while(min_sb>-1);    /* i.e. still some sub-bands to find */


  /* Calculate the number of bits left, add on to pointed var */
  ad -= bspl+bscf;
  *adb = ad;


  /* see how many channels are noisy */
  noisy_sbs = 0; small = mnr[0][0];
  for(k=0; k<stereo; ++k) {
    for(i = 0; i< SBLIMIT; ++i) {
      if(mnr[k][i] < NOISY_MIN_MNR)  ++noisy_sbs;
      if(small > mnr[k][i])          small = mnr[k][i];
    }
  }
  return noisy_sbs;
}


/***************************** Layer II  ********************************/
int II_a_bit_allocation(perm_smr, scfsi, bit_alloc, adb, fr_ps)
double FAR perm_smr[2][SBLIMIT];
unsigned int scfsi[2][SBLIMIT];
unsigned int bit_alloc[2][SBLIMIT];
int *adb;
frame_params *fr_ps;
{
  int i, min_ch, min_sb, oth_ch, k, increment, scale, seli, ba;
  int bspl, bscf, bsel, ad, noisy_sbs, bbal=0;
  double mnr[2][SBLIMIT], small;
  char used[2][SBLIMIT];
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;
static char init= 0;
static int banc=32, berr=0;
static int sfsPerScfsi[] = { 3,2,1,2 };    /* lookup # sfs per scfsi */
  if (!init) {
      init = 1; 
      if (fr_ps->header->error_protection) berr=16; /* added 92-08-11 shn */
  }
  for (i=0; i<jsbound; ++i)
    bbal += stereo * (*alloc)[i][0].bits;
  for (i=jsbound; i<sblimit; ++i)
    bbal += (*alloc)[i][0].bits;
  *adb -= bbal + berr + banc;
  ad = *adb;
  for (i=0;i<sblimit;i++) for (k=0;k<stereo;k++) {
    mnr[k][i]=snr[0]-perm_smr[k][i];
    bit_alloc[k][i] = 0;
    used[k][i] = 0;
  }
  bspl = bscf = bsel = 0;
  do  {
    /* locate the subband with minimum SMR */
    small = 999999.0; min_sb = -1; min_ch = -1;
    for (i=0;i<sblimit;i++) for(k=0;k<stereo;++k)
      if (used[k][i]  != 2 && small > mnr[k][i]) {
        small = mnr[k][i];
        min_sb = i;  min_ch = k;
    }
    if(min_sb > -1) {  /* there was something to find */
      /* find increase in bit allocation in subband [min] */
      increment = SCALE_BLOCK * ((*alloc)[min_sb][bit_alloc[min_ch][min_sb]+1].group *
                        (*alloc)[min_sb][bit_alloc[min_ch][min_sb]+1].bits);
      if (used[min_ch][min_sb])
        increment -= SCALE_BLOCK * ((*alloc)[min_sb][bit_alloc[min_ch][min_sb]].group*
                          (*alloc)[min_sb][bit_alloc[min_ch][min_sb]].bits);
      /* scale factor bits required for subband [min] */
      oth_ch = 1 - min_ch;    /* above js bound, need both chans */
      if (used[min_ch][min_sb]) scale = seli = 0;
      else {          /* this channel had no bits or scfs before */
        seli = 2;
        scale = 6 * sfsPerScfsi[scfsi[min_ch][min_sb]];
        if(stereo == 2 && min_sb >= jsbound) {
          /* each new js sb has L+R scfsis */
          seli += 2;
          scale += 6 * sfsPerScfsi[scfsi[oth_ch][min_sb]];
        }
      }
      /* check to see enough bits were available for */
      /* increasing resolution in the minimum band */
      if (ad >= bspl + bscf + bsel + seli + scale + increment) {
        ba = ++bit_alloc[min_ch][min_sb]; /* next up alloc */
        bspl += increment;  /* bits for subband sample */
        bscf += scale;      /* bits for scale factor */
        bsel += seli;      /* bits for scfsi code */
        used[min_ch][min_sb] = 1; /* subband has bits */
        mnr[min_ch][min_sb] = -perm_smr[min_ch][min_sb] +
                              snr[(*alloc)[min_sb][ba].quant+1];
        /* Check if subband has been fully allocated max bits */
        if (ba >= (1<<(*alloc)[min_sb][0].bits)-1) used[min_ch][min_sb] = 2;
      }
      else used[min_ch][min_sb] = 2; /* can't increase this alloc */
      if(min_sb >= jsbound && stereo == 2) {
        /* above jsbound, alloc applies L+R */
        ba = bit_alloc[oth_ch][min_sb] = bit_alloc[min_ch][min_sb];
        used[oth_ch][min_sb] = used[min_ch][min_sb];
        mnr[oth_ch][min_sb] = -perm_smr[oth_ch][min_sb] +
                              snr[(*alloc)[min_sb][ba].quant+1];
      }
    }
  } while(min_sb > -1);  /* until could find no channel */
  /* Calculate the number of bits left */
  ad -= bspl+bscf+bsel;  *adb = ad;
  for (i=sblimit;i<SBLIMIT;i++) for (k=0;k<stereo;k++) bit_alloc[k][i]=0;
  noisy_sbs = 0;  small = mnr[0][0];      /* calc worst noise in case */
  for(k=0;k<stereo;++k) {
    for (i=0;i<sblimit;i++) {
      if (small > mnr[k][i]) small = mnr[k][i];
      if(mnr[k][i] < NOISY_MIN_MNR) ++noisy_sbs; /* noise is not masked */


以下、Wikipediaより引用<br/>
    }
  }
  return noisy_sbs;
}
/************************************************************************
*
* I_subband_quantization  (Layer I)
* II_subband_quantization (Layer II)
*
* PURPOSE:Quantizes subband samples to appropriate number of bits
*
* SEMANTICS:  Subband samples are divided by their scalefactors, which
makes the quantization more efficient. The scaled samples are
* quantized by the function a*x+b, where a and b are functions of
* the number of quantization levels. The result is then truncated
* to the appropriate number of bits and the MSB is inverted.
*
* Note that for fractional 2's complement, inverting the MSB for a
negative number x is equivalent to adding 1 to it.
*
************************************************************************/
static double a[17] = {
  0.750000000, 0.625000000, 0.875000000, 0.562500000, 0.937500000,
  0.968750000, 0.984375000, 0.992187500, 0.996093750, 0.998046875,
  0.999023438, 0.999511719, 0.999755859, 0.999877930, 0.999938965,
  0.999969482, 0.999984741 };
static double b[17] = {
  -0.250000000, -0.375000000, -0.125000000, -0.437500000, -0.062500000,
  -0.031250000, -0.015625000, -0.007812500, -0.003906250, -0.001953125,
  -0.000976563, -0.000488281, -0.000244141, -0.000122070, -0.000061035,
  -0.000030518, -0.000015259 };
void I_subband_quantization(scalar, sb_samples, j_scale, j_samps,
                            bit_alloc, sbband, fr_ps)
unsigned int scalar[2][3][SBLIMIT];
double FAR sb_samples[2][3][SCALE_BLOCK][SBLIMIT];
unsigned int j_scale[3][SBLIMIT];
double FAR j_samps[3][SCALE_BLOCK][SBLIMIT]; /* L+R for j-stereo if necess */
unsigned int bit_alloc[2][SBLIMIT];
unsigned int FAR sbband[2][3][SCALE_BLOCK][SBLIMIT];
frame_params *fr_ps;
{
  int i, j, k, n, sig;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  double d;
static char init = 0;


  if (!init) {
    init = 1;
    /* rearrange quantization coef to correspond to layer I table */
    a[1] = a[2]; b[1] = b[2];
    for (i=2;i<15;i++) { a[i] = a[i+2]; b[i] = b[i+2]; }
  }
  for (j=0;j<SCALE_BLOCK;j++) for (i=0;i<SBLIMIT;i++)
    for (k=0;k<((i<jsbound)?stereo:1);k++)
      if (bit_alloc[k][i]) {
        /* for joint stereo mode, have to construct a single subband stream
            for the js channels.  At present, we calculate a set of mono
            subband samples and pass them through the scaling system to
            generate an alternate normalised sample stream.
            Could normalise both streams (divide by their scfs), then average
            them.  In bad conditions, this could give rise to spurious
            cancellations.  Instead, we could just select the sb stream from
            the larger channel (higher scf), in which case _that_ channel
            would be 'properly' reconstructed, and the mate would just be a
            scaled version.  Spec recommends averaging the two (unnormalised)
            subband channels, then normalising this new signal without
            actually sending this scale factor... This means looking ahead.
        */
        if(stereo == 2 && i>=jsbound)
          /* use the joint data passed in */
          d = j_samps[0][j][i] / multiple[j_scale[0][i]];
        else
          d = sb_samples[k][0][j][i] / multiple[scalar[k][0][i]];
        /* scale and quantize floating point sample */
        n = bit_alloc[k][i];
        d = d * a[n-1] + b[n-1];
        /* extract MSB N-1 bits from the floating point sample */
        if (d >= 0) sig = 1;
        else { sig = 0; d += 1.0; }
        sbband[k][0][j][i] = (unsigned int) (d * (double) (1L<<n));
        /* tag the inverted sign bit to sbband at position N */
        if (sig) sbband[k][0][j][i] |= 1<<n;
      }
}
/***************************** Layer II  ********************************/
void II_subband_quantization(scalar, sb_samples, j_scale, j_samps,
                            bit_alloc, sbband, fr_ps)
unsigned int scalar[2][3][SBLIMIT];
double FAR sb_samples[2][3][SCALE_BLOCK][SBLIMIT];
unsigned int j_scale[3][SBLIMIT];
double FAR j_samps[3][SCALE_BLOCK][SBLIMIT];
unsigned int bit_alloc[2][SBLIMIT];
unsigned int FAR sbband[2][3][SCALE_BLOCK][SBLIMIT];
frame_params *fr_ps;
{
  int i, j, k, s, n, qnt, sig;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  unsigned int stps;
  double d;
  al_table *alloc = fr_ps->alloc;


  for (s=0;s<3;s++)
    for (j=0;j<SCALE_BLOCK;j++)
      for (i=0;i<sblimit;i++)
        for (k=0;k<((i<jsbound)?stereo:1);k++)
          if (bit_alloc[k][i]) {
            /* scale and quantize floating point sample */
            if(stereo == 2 && i>=jsbound)      /* use j-stereo samples */
              d = j_samps[s][j][i] / multiple[j_scale[s][i]];
            else
              d = sb_samples[k][s][j][i] / multiple[scalar[k][s][i]];
            if (mod(d) > 1.0)
              printf("Not scaled properly %d %d %d %d\n",k,s,j,i);
            qnt = (*alloc)[i][bit_alloc[k][i]].quant;
            d = d * a[qnt] + b[qnt];
            /* extract MSB N-1 bits from the floating point sample */
            if (d >= 0) sig = 1;
            else { sig = 0; d += 1.0; }
            n = 0;
#ifndef MS_DOS
            stps = (*alloc)[i][bit_alloc[k][i]].steps;
            while ((1L<<n) < stps) n++;
#else
            while  ( ( (unsigned long)(1L<<(long)n) <
                      ((unsigned long) ((*alloc)[i][bit_alloc[k][i]].steps)
                        & 0xffff
                        )
                      ) && ( n <16)
                    ) n++;
#endif
            n--;
            sbband[k][s][j][i] = (unsigned int) (d * (double) (1L<<n));
            /* tag the inverted sign bit to sbband at position N */
            /* The bit inversion is a must for grouping with 3,5,9 steps
                so it is done for all subbands */
            if (sig) sbband[k][s][j][i] |= 1<<n;
          }
          for (s=0;s<3;s++)
            for (j=sblimit;j<SBLIMIT;j++)
              for (i=0;i<SCALE_BLOCK;i++) for (k=0;k<stereo;k++) sbband[k][s][i][j] = 0;
}
/*************************************************************************
* I_encode_bit_alloc  (Layer I)
* II_encode_bit_alloc (Layer II)
*
* PURPOSE:Writes bit allocation information onto bitstream
*
* Layer I uses 4 bits/subband for bit allocation information,
* and Layer II uses 4,3,2, or 0 bits depending on the
* quantization table used.
*
************************************************************************/
void I_encode_bit_alloc(bit_alloc, fr_ps, bs)
unsigned int bit_alloc[2][SBLIMIT];
frame_params *fr_ps;
Bit_stream_struc *bs;
{
  int i,k;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  for (i=0;i<SBLIMIT;i++)
    for (k=0;k<((i<jsbound)?stereo:1);k++) putbits(bs,bit_alloc[k][i],4);
}
/***************************** Layer II  ********************************/
void II_encode_bit_alloc(bit_alloc, fr_ps, bs)
unsigned int bit_alloc[2][SBLIMIT];
frame_params *fr_ps;
Bit_stream_struc *bs;
{
  int i,k;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;
  for (i=0;i<sblimit;i++)
    for (k=0;k<((i<jsbound)?stereo:1);k++)
      putbits(bs,bit_alloc[k][i],(*alloc)[i][0].bits);
}
/************************************************************************
*
* I_sample_encoding  (Layer I)
* II_sample_encoding  (Layer II)
*
* PURPOSE:Put one frame of subband samples on to the bitstream
*
* SEMANTICS:  The number of bits allocated per sample is read from
* the bit allocation information #bit_alloc#.  Layer 2
* supports writing grouped samples for quantization steps
* that are not a power of 2.
*
************************************************************************/
void I_sample_encoding(sbband, bit_alloc, fr_ps, bs)
unsigned int FAR sbband[2][3][SCALE_BLOCK][SBLIMIT];
unsigned int bit_alloc[2][SBLIMIT];
frame_params *fr_ps;
Bit_stream_struc *bs;
{
  int i,j,k;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  for(j=0;j<SCALE_BLOCK;j++) {
    for(i=0;i<SBLIMIT;i++)
      for(k=0;k<((i<jsbound)?stereo:1);k++)
        if(bit_alloc[k][i]) putbits(bs,sbband[k][0][j][i],bit_alloc[k][i]+1);
  }
}
/***************************** Layer II  ********************************/
void II_sample_encoding(sbband, bit_alloc, fr_ps, bs)
unsigned int FAR sbband[2][3][SCALE_BLOCK][SBLIMIT];
unsigned int bit_alloc[2][SBLIMIT];
frame_params *fr_ps;
Bit_stream_struc *bs;
{
  unsigned int temp;
  unsigned int i,j,k,s,x,y;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;
  for (s=0;s<3;s++)
    for (j=0;j<SCALE_BLOCK;j+=3)
      for (i=0;i<sblimit;i++)
        for (k=0;k<((i<jsbound)?stereo:1);k++)
          if (bit_alloc[k][i]) {
            if ((*alloc)[i][bit_alloc[k][i]].group == 3) {
              for (x=0;x<3;x++) putbits(bs,sbband[k][s][j+x][i],
                                        (*alloc)[i][bit_alloc[k][i]].bits);
            }
            else {
              y =(*alloc)[i][bit_alloc[k][i]].steps;
              temp = sbband[k][s][j][i] +
                      sbband[k][s][j+1][i] * y +
                      sbband[k][s][j+2][i] * y * y;
              putbits(bs,temp,(*alloc)[i][bit_alloc[k][i]].bits);
            }
          }
}
/************************************************************************
*
* encode_CRC
*
************************************************************************/
void encode_CRC(crc, bs)
unsigned int crc;
Bit_stream_struc *bs;
{
  putbits(bs, crc, 16);
}


くさなぎ つよし<br/>
草彅 剛<br/>
生年月日 1974年7月9日(40歳)<br/>
出生地 愛媛県[1]<br/>
血液型 A型[2]<br/>
職業 歌手・俳優・タレント<br/>
ジャンル 映画・テレビドラマ・舞台<br/>
活動期間 1987年 -<br/>
公式サイト Johnny's net > SMAP<br/>
主な作品<br/>
映画<br/>
『メッセンジャー』『黄泉がえり』
『ホテルビーナス』『日本沈没』
『山のあなた〜徳市の恋〜』
『BALLAD 名もなき恋のうた』
『僕と妻の1778の物語』


== エスパー検定 ==
エスパー検定とは、LiveAnarchyエスパー養成機構主催の検定である。<br/>
穴実にはIDが無く書き込みでしか個人を推測できないのでエスパーの能力が必須となる<br/>
エスパー検定では筆記試験に加え穴実での実地試験も行われているので、必死にエスパーしている人を見かけたら試験中なのだと暖かい目で見守ってあげよう<br/>
君もまずはエスパー検定初段を目指してみてはどうだろうか<br/>
<br/>
<br/>
'''もし検定に合格しても、能力を使いすぎないようにすること'''
==新生VIPQ2==
[[新生VIPQ2]]とは[[Mango Mangue]] ★が作った<s>どうでもいい</s>機能である。<br/>
実は殆どがこの板で作られた。<br/>
現在は穴実と穴鍵の他になんJ、VIP、嫌儲、MANGOで全ての機能が使える。
===アタヒー===
[[Mango Mangue]] ★が導入した機能。上級削除人じゃなくてもスレストができるようになる機能である。<br/>
本文欄に!attack:でスレのHPを減らし、0になるとスレストする。<br/>
逆に!heal:と書き込むと回復する。<br/>
稀に威力が上がって名前欄が変わる(赤座あかり★、杉浦★綾乃、削ジェソヌ★、うんこー●など)。fusianasanされることも。<br/>
!status:でHP表示。
導入された瞬間穴実が殆ど機能しなくなり、一時的に停止した。<br/>
なおその後マンゴーがなんとなくで復活させマンゴーの信用を更に落とす事態となった。<br/>
無闇なアタック、ヒール、ステータス連投は規制される可能性大。<br/>
そもそもこの機能を使う自体荒らしと言ってもいだろう。<br/>
絶対に悪用してはいけない(戒め)<br/>
ちなみにアタック1回につき5MPが必要になったのは言わないでおこう。
=== 罰金バッキンガム ===
スレタイにとある言葉を含むとスレストされる機能。
<br/>>>1の名前欄が<font color="green">杉浦綾乃 ★</font>に変わる。
<pre style="background-color:transparent;border:none;font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12pt;line-height:12pt;">
みさきち*す
1 杉浦綾乃 ★:2014/09/18(木) 12:17:09.93
嘘だし
                      )
                     _..:─v'::─-、/⌒ヽ
                    .:´.::.:⌒.::.⌒::.::. ヽ.::.:::
               /::.::.::人::.:リ\::ハ ::. i::.::.|
                |/|::.i ト、∨/八}::.:i:|::.: |
            (\    _jハN○   ○ノ::.从::.::ヽ
          \ヽ、  乂八" r ⌒ヽーァ| ハ::.::.::.、
           r'⌒゙  `ト、_ノヘ::` ゝ __,ノイ::.|  ヽ.::.::.:、   罰金バッキンガムよ!
           く\ヽ_}>、)   }}\}く\,,ト|::.:|   '::.::.::.::.
            ̄¨¨`'ーーく/  ノ \7∧::|   i.::.:::.::.::.
                 T    凶 V}  _, |:.:::.::.::.::.
Backingum -1000000 pts. HP: 0 pts. Consumed 71 MP (liveanarchy/1411010229).
お亡くなり。(-人-) R.I.P This thread.
千葉県*******-**-*
1 杉浦綾乃 ★:2014/10/01(水) 12:46:08.03 ©2ch.net[転載禁止]
あ                      )
                     _..:─v'::─-、/⌒ヽ
                    .:´.::.:⌒.::.⌒::.::. ヽ.::.:::
               /::.::.::人::.:リ\::ハ ::. i::.::.|
                |/|::.i ト、∨/八}::.:i:|::.: |
            (\    _jハN○   ○ノ::.从::.::ヽ
          \ヽ、  乂八" r ⌒ヽーァ| ハ::.::.::.、
           r'⌒゙  `ト、_ノヘ::` ゝ __,ノイ::.|  ヽ.::.::.:、   罰金バッキンガムよ!
           く\ヽ_}>、)   }}\}く\,,ト|::.:|   '::.::.::.::.
            ̄¨¨`'ーーく/  ノ \7∧::|   i.::.:::.::.::.
                 T    凶 V}  _, |:.:::.::.::.::.
Backingum -1000000 pts. HP: 0 pts. (liveanarchy/1412135168).
お亡くなり。(-人-) R.I.P This thread.
</pre>
== {{Tempcolor|red|'''ゆ'''}}{{Tempcolor|green|'''る'''}}{{Tempcolor|blue|'''ゆ'''}}{{Tempcolor|orange|'''り'''}} ==
アナーキー実況で大人気の神漫画。'''[[ゆるゆり板]]'''やぞ。
なもり作。百合あり笑いありの女子中学生のまったりとした日常を描く。
バナーはドミノになってしまったので'''ドミノ板'''な気もする。
<pre style="background-color:transparent;border:none;font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12pt;line-height:12pt;">
               __,. --- 、                 つ
              .:::::::::::::::::::::::::::\          __ --(-- 、__   マッテ~
               /:::::::::::::::::::::::::::::::::::\  と   _(tソ⌒: : ⌒ヾr:) っ
           .::::::::::::::、::::::::i\:::::::\::::.    ´7: : ハ∧ : :∧: Vゝ  っ
           .::::/:!::::/ \:::::|⌒\:::::::ヽ:::.   八:.(> ) <}iv:}′
         _,. イ::::':::ト´|_   乂|≦芯Y:::::、::::ト   从" , -- 、"八|      (・ω・)ー
         ̄ { .:i::::l x=ァc    v:ソ W:::::'.::!   .斗ぅ>r‐r≪^´       `ー``
            Yi.:.:代 Vソ  ,  .:::::.ノ;::::ハ:|   (  ソ\.:ト:i: :.ノ、     ______      --  、
        -- 、 ノ八:|:ハ.:::::.   ,-、   人(_____  ¨¨>. '゙´ ̄ ̄`ヽrxァ  ´       ` <)′    \
       ('ω` メ、 )乂 > ...__ ´ _.∠:::.(:-:‐ァ:/  (/       (:ノ   /  .:       `Y) __ _  '.
      ⌒'^^        ⌒Yi:! 「   爪{`: :,' /、 ノニ=-  |`ー‐    / ィ ′ .'  、   ハ  ⌒ヽ、 }
                     イ八:i、  -/ : , :/-=≦     ≫x /   )x/ {/   /「~`ハ i / }i、    く
                   /《 '. .:ir‐‐:/. ':/ !i ⌒Y      ー彡/  /{/     }_/ |__/ l|  ノ ゚.     `
          (・ω・)  .'  、 ': V^7.'/ __ | ノ人    / ノ ,: /{ x≠ミ、     fう^卞;|_!  /:ハ     ! }
          ^^^^  /  {:.\'.∨:/// ハ V., :':/}   / く/ L:〃んノ:i     廴.ソ 刈  Y }}!   ノ}/
                {≧==-r…く/////{_ \/ノ ,ィ ,.   ー=彡ハ辷ソ        ̄ イ }_」ノ ,.  ゚/
              .:V/////>'⌒¨¨` -=ニ≧ミく {/⌒≧=-く_./i ,,  ′   " {__」.ノ /      --  、
   ___     __,.∠ >ァ'⌒´             \、   \,. ≦人    _     .イ介 (    /      、
  / 。 ハ  ___f´   xく/         /        、  :.\x≪: : : : : :个o。._    _.。<: :l : }     .'  .   ・  .
 (゚ 々  八 (r__,ゝ/ .:      / //    、   \  ;\ 丶、:ヽ、: : : : : : :「    !: : : :!::,’    {    ω    }
  ー<^   ,.イ/ /   .:   //! ′ :/、ヽ    ハ ∨ \く丶、\: : : : 八  /i: : : ,':∧     、     ,..ノ
 --- 、 -=≦{/ 〃   /、i //八 !   / /\Y、  i ト个 ∨ ハ`ー ト、:.\: : : : {-_.ノ!: : ,:/  }      ⌒ノリルリノ
    ・ :.    人 /:i   /  |X, {  Y / ' __ j \|lハ i 、 ∨ 人{/ ヽ\:\: : :マ:-:!: ,:/ }! _{
・  、ノ  l / :/ |人{   ‐- 、  |ハ{   'x≦芋ミ: l| :i \{んr'1、   :. \ : ‐-:} j.:'/ Y-=:r…-  ァ⌒)、
  `   :八 イ ' /|N 〃≧ミ、       ん.:℃刈i :lミ 、込__{___}!    ≧ァoイ  Ⅵ/} 、  /___,.ノ
    xく   l i∧   {.ー{{ i:.℃ハ      V辷.:ソ 'リ :l^'}  \\ 丶、:」    /: 爪  }_,.  -┘
   xく^'     ∨ 人 i :l:^ヽ 弋辷ソ       `‥'’ :  iノ{_i___ } :ト、 '\     /:/ /∧ 厂´
⌒^^'       /   )リl  ハ  `¨   ,       ""  i  |: : : i : トミ }! \ \ /:/ /   ト. 、   --  、
--‐==‐- =彡  _ ,  ノ / :iヘ""    __ ノ     ィi  |: : : i : }  `⌒≧r<}/:/ ;  /∧ } ( ゚ト/ 。 ヽ
   -=≠=-‐ "´   .' .:  八>o。      ,. < }l  i:|: : : i: ,’     i: : l:!く /  // /{   \   _ノ
/ ./ ,. -=≦三‐  . ' ノ 〈: '. : ≧=<    i:l  i:|: : :,' .′;     /: :/:l  >‐--く{..,_}   ノリルリ
 / 〃  イ // .: / /    ∨'. : : : : :i^'   .l:l  ':| : /:/  {:    /: :/.:/  ___     ≧=- .
/   i|/ / / / / /八   、∨:、:. :.:八‐-  '|:| !人/:/   ヽ、_/: :/.:厶≦ ̄         >ァ'~⌒ヽ
仆 i八   { 〃/ / 人: :: . \  ヽ\:\: :/マー ≦l:::. |::.、く     k/7¨¨´ :// >ァ‐- 、        /  r 、ノ
从 l  \ Yi {斗く  \: :: :./ア^ヽ、\:.≧-∨: : l x:.lノ'\\    トく / // /://   `ー…‐一'^ー‐’
  \  >‐}l |      >'⌒   ハ  ` ー--ヽ:_:j-く \  \\  :. \ /  //      }
 __ ャ≦   ノ人 ,..   '"´  || /:/  、      i三_}     ``ー i:  ≧=- ミ    -==r'
(   \   ,.  ´      |人 :/   }\    i:l i ハ          !:.      `` <__,.ノ
 つ ノ¨¨´         l  ∨    ヽ、`   八  {\       : : .         ≧ 、
   ̄                        }  ::.《 /   \》       : : : .          /》
</pre>
===概要===
七森中の「ごらく部」に所属する女子中学生4人と、それを取り巻く生徒会の女の子たち。彼女たちの時に笑いあり、時に百合ありのまったりとした日常生活を描く。個性的な登場人物たちの中にあって存在感の薄さを理由にいじられる主人公を据え、軽い同性愛にも見えてしまう女子校の気風の中のちょっとした笑いや、片想いが連鎖する人間関係、たまに起こる本気度の高い同性愛感情によるハプニングなどが、緩やかな空気感の中で扱われている。
『コミック百合姫S』連載当時、同誌掲載作品の中では百合色が薄い作品にもかかわらず、当初から読者アンケートではダントツの1位だったという。また、1話12ページながら、一誌で3話 - 8話掲載しており、さらにはアニメ化決定後の2011年5月から7月にかけては、3か月連続で単行本の刊行がなされた。
作中において登場人物は年をとらない設定で、次の年になっても進級しないが出来事は引き継がれる。
『キャラ☆メル Febri』にて、本作と同じく七森中を舞台とするスピンオフ作品『りせっと!』が連載されているが、Vol.4以降休載中となっている。
『ニコニコ静画』にて2012年7月2日から7月25日にかけて、大室姉妹を中心に据えたスピンオフ作品『大室家』が配信されていた。2013年2月18日から『ニコニコ百合姫』で偶数月18日に配信されている。
『Comic REX』2012年9月号から2013年2月号にかけて、『かんぱち』とコラボした『ゆりぱち』が連載された(原作:なもり、武梨えり、作画:結城心一)。
アニメ化に際してメイン担当声優の4人(三上枝織、大坪由佳、津田美波、大久保瑠美)による声優ユニット「七森中☆ごらく部」が結成された。
「ゆるゆり」『フリー百科事典 ウィキペディア日本語版』。2014年11月22日 (土)12時04分から引用。<br/>
URL:http://ja.wikipedia.org/
=== 登場人物 ===
アナーキー実況板では[[ゆるゆり]]キャラのアナーキーな素顔が見られる。
{|
|{{Tempcolor|red|'''赤座あかり'''}}
|神なので[[チンコ]]が生えているあかりちゃん、[[まんこ]]がついてるあかりちゃんが同時に両方存在する。
|-
|{{Tempcolor|green|'''歳納京子'''}}
|ワキガ(穴実発のネタではない)。不死身。
|-
|{{Tempcolor|blue|'''船見結衣'''}}
|陰毛がヤスリ。
|-
|{{Tempcolor|orange|'''吉川ちなつ'''}}
|承。きうりキラー。
|-
|{{Tempcolor|purple|'''杉浦綾乃'''}}
|深海8000mまで素潜りする。一瞬で地球太陽間を行き来できる。よくうんこを漏らす。
|-
|{{Tempcolor|cyan|'''大室櫻子'''}}
|ほのかな[[おしっこ]]のにおいがする。
|-
|{{Tempcolor|yellow|'''古谷向日葵'''}}
|ふかふか[[おっぱい]]
|-
|用務員の男
|(中邑('''西垣奈々'''))鬼太郎みてぇな髪型
|-
|'''松本りせ'''
|常に怯えた表情をしている。誰かに何かされたのだろうか。
|-
|{{Tempcolor|pink|'''池田千歳'''}}
|鼻血を出す顔が池沼である。18円。
|-
|'''池田千鶴'''
|クラスメイトからはクールと言われているが実際は話せないパワー型池沼なのである
|-
|'''船見まり'''
|うにー!うにくれー!大きくなったらうにになる!などの謎発言が多い幼女。統合失調症の可能性高
|-
|'''古谷楓'''
|姉の向日葵に似ていない太眉幼女。親戚に両津勘吉、野原しんのすけ、ロックリー、朝倉涼子、村山元総理、琴吹紬、イモトアヤコがいる。
|-
|'''大室花子'''
|かわいい。牛乳が大好き。僕の牛乳も飲ませてあげるよ^^
|-
|'''{{Tempcolor|red|[[唐澤貴洋]]}}'''
|頭がよくて顔もイケメン。とても頼れる存在。
|-
|'''{{Tempcolor|red|[[長谷川亮太]]}}'''
|地頭がいいのでガチれば東大にも入れる。しかしガチらなかったので櫻子にすら学力で負けた。
|-
|'''[[白鵬]]'''
|第六十九代横綱。幕内通算勝利数758勝、優勝回数30回のレジェンド。(大相撲七月場所終了時点)どこまで成績を伸ばしていくのか大注目である。
|-
|'''[[Code Monkey]]'''
|たまに穴実に遊びに来る2chの運営。有能。Pen islandの王。
|}
<pre style="background-color:transparent;border:none;font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12pt;line-height:12pt;">
                      )
                     _..:─v'::─-、/⌒ヽ
                    .:´.::.:⌒.::.⌒::.::. ヽ.::.:::
               /::.::.::人::.:リ\::ハ ::. i::.::.|
                |/|::.i ト、∨/八}::.:i:|::.: |
            (\    _jハN○   ○ノ::.从::.::ヽ   もちろん殆どが二次創作設定よ!
          \ヽ、  乂八" r ⌒ヽーァ| ハ::.::.::.、
           r'⌒゙  `ト、_ノヘ::` ゝ __,ノイ::.|  ヽ.::.::.:、   真に受けたら罰金バッキンガム!
           く\ヽ_}>、)   }}\}く\,,ト|::.:|   '::.::.::.::.
            ̄¨¨`'ーーく/  ノ \7∧::|   i.::.:::.::.::.
                 T    凶 V}  _, |:.:::.::.::.::.
</pre>
=== Anarchy実況でのゆるゆりキャラの一般的呼称 ===
<br/>
<br/>
<br/><font color="red">'''赤座あかり'''</font>:女神
<br/>
<br/>
<br/><font color="green">'''歳納京子'''</font>:ワキガ
<br/>
<br/>
<br/><font color="blue">'''船見結衣'''</font>:麻雀折衷、おいこら、けつころも
<br/>
<br/>
<br/><font color="orange">'''吉川ちなつ'''</font>:承
<br/>�ノ、コー┠ヲ橋淀キ灸ヲヲ、ヲチヲク・惡シハ棣ウ嵯峭槐丼 ュカョヲエ插ヲシ-ーオ況ヲ・ヘ 唆ハ悚ヲウ勁ォケ┏オ楮垪ノ 慄ェ・垪ノ 3 ェキ匣棣ウ嵯峭槐丼ト恪サ、骨. 灸ヲヲ、垪ノ 4 砂、骨棣ウ嵯峭槐丼. ┨灸ヲヲ、垪ノ 4.2 ュヲハオ姦ヲヲ�棣ウ峭槐丼. 興璃ヲウュ括ヘ チ。コノートョハ涵ハチヲク・
<br/>
<br/>
<br/>
<br/>
<br/><font color="pink">'''池田千歳'''</font>:池沼千歳 18円
<br/>
<br/>
<br/>
<br/>'''池田千鶴''':池沼千鶴
<pre style="background-color:transparent;border:none;font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12pt;line-height:12pt;">
             __
       r:...、 /::::::}
       _{::-::> ´ ̄ ̄`   、
      く::::/         \
.      〉′{ / ハ }∧ ヽ ハ 
      { i ∨ト- } ノvイノハi }
      | |  | ◯   ◯ 〈从リ
      | |  l          } |  私と池田姉妹の扱い酷すぎやしませんかね
      } ∧ 、u   _   ノ八
      i ∧ >r-´-'r彡; | \
      / / i  |/}  /::::: l |ヽ \
.     / / /l  |::{_/::::/| | !   ヽ
    / / /人 |::::V::/ |ノ | } } }
.    { { { | ∨`冗´  ノイ |ノノ ノ
</pre>
=== ゆるゆりキャラの瞳の色 ===
{| class="wikitable"
! 赤座あかり
| <font color="purple">'''紫色'''</font>
|-
! 歳納京子
| <font color="blue">'''青色'''</font>
|-
! 船見結衣
| <font color="cyan2">'''茶色'''</font>
|-
! 吉川ちなつ
| <font color="cyan">'''水色'''</font>
|-
! 杉浦綾乃
| <font color="red">'''赤色'''</font>
|-
! 池田千歳
| <font color="blue">'''青色'''</font>
|-
! 大室櫻子
| <font color="cyan2">'''茶色'''</font>
|-
! 古谷向日葵
| <font color="cyan2">'''茶色'''</font>
|-
! 松本りせ
| <font color="red">'''赤色'''</font>
|-
! 西垣奈々
| <font color="red">'''赤色'''</font>
|-
! 池田千鶴
| <font color="green">'''緑色'''</font>
|-
! 赤座あかね
| '''不明'''
|}
=== 赤座あかりちゃんのチンコ ===
あかりちゃんのチンコはその状況に応じて長さが変化する。
{| class="wikitable"
! 通常時
| 14cm
|-
! 半立ち時
| 16.6cm
|-
! 受け時
| <font color="orange">'''18.612cm'''</font>
|-
! 攻め時
| <font color="orange">'''23.7cm'''</font>
|-
! 幽体離脱時
| <font color="red">'''測定不能'''</font>
|}
=== 穴実で人気があるカプ ===
*'''あかりせ'''
*ちなあか
*ひまさく
*京あか
*京ちな
*あかあか
*結あか
*綾さく
=== 高崎みさき ===
<font color="orange">'''通称みさきち。ゆるゆりのスピンオフの大室家に登場。'''
<br/>無能だけど身長も成績もこれから伸びるからいいの!</font>
<br/>
<br/>
===  その他 ===
*穴実にもゆるゆりの絵を描く人がたまにいる。絵に自信がある人もそうでもない人もどんどん描いてどうぞ
*かつて赤座あかりちゃんはチンコがあるかないかで荒れたが生えてるあかりちゃんもおまんこあるあかりちゃんも両方存在するということでおさまった。
*以前は穴実のバナーが赤座あかりだった。'''[[赤座板]]'''やぞ
== プロレス ==
穴実では日夜対立荒らしを装った自演プロレスが開催されている。<br/>
<br/>
<br/>
【Anarchy実況プロレスの流れ】<br/>
<br/>
<br/>
煽りフェイズ<br/>
<br/>ないです
↓<br/>
便乗フェイズ<br/>
↓<br/>
自治フェイズ<br/>
↓<br/>
ミッドナイトくずもちフィーバーフェイズ<br/>
↓<br/>
自演フェイズ<br/>
↓<br/>
ええんやでフェイズ<br/>
↓<br/>
優しい世界<br/>
 
== 立てたり落としたりしろ ==
チンバキスレから生まれた言葉。<br/>
穴実は一喜一憂一期一会。<br/>
その時その時が楽しければいいのだ。<br/>
 
== 愉快な運営達 ==
穴実はよく運営が降臨する。
 
* {{Tempcolor|#FF8C00|'''Mango Mangüé ★'''}}
*:通称:無能。穴実を<s>荒らしている</s>新機能の実験に利用しているのか、穴実民からは評判がよくない。
*:もっと知りたければこれを見ろ!オススメはしない [[Mango Mangue]]
* {{Tempcolor|orange|'''blast ★'''}}
*:heheheおじさん
* {{Tempcolor|green|'''Code Monkey ★'''}}
*:[[Code Monkey]] is here
 
== まりな ==
ほらマリネだよまりな
 
↑マリネおいしいよマリネ
 
まりなのうんこ食べたい
 
== くーでたー ==
くーでたー
うどんくーてたー
くーねるまるた
 
== 洋楽民 ==
ビートルズ部以外は残念な少数民族
<br/>↑なにいってだQueen最高だぜ
 
== 滑ってるぞ ==
ウケてるぞ
 
== ズオウとヒイタチ ==
くまのプーさんに出てくる強キャラ
どうやって倒すのかわからない
<br/>特技は嫌がらせと言う存在自体が嫌がらせみたいなヤツである
 
== 昼休みの吉野家 ==
リーマンで埋め尽くされている
今まで13時半からだったのに配置転換のせいでこんな時間に休憩入らさせられた
 
== お花植えるンゴ♪ ==
実際は焼夷弾を落としたり枯葉剤を使用してまっさらにした方がいい良い例もある
 
== なんでも鑑定団の鑑定中のBGM ==
嫌いな奴が多い
オープニングは4人組のアイドルが歌ってる感じがする
出張鑑定団の入りで流れるキングゴウザウラーの歌は好きでも嫌いでもないやつが多い
 
== レズバトル ==
穴実特有の戦いである
 
== 幽霊 ==
穴実には時々幽霊が現れるがその時はお経を聞かせてあげれば問題はない
 
== 穴実で一番人気のバンド ==
アンケートの結果イエスに決まりました
<br/>ご協力ありがとうございました
 
== 穴実民の特徴 ==
エスパー
<br/>統合失調症
<br/>アニメオタク
<br/>幽霊
== 提供 ==
ナチスドイツ
<br/>ソヴィエト社会主義共和国連邦
<br/>大日本帝国
<br/>七森中学校
<br/>ラビットハウス
<br/>グレードブリテン及び北アイルランド連合王国
<br/>イタリア共和国
<br/>国際連盟
<br/>江戸幕府
<br/>富士山こどもの国
<br/>EA(Electronic Anals)
<br/>トマソン国営総合研究所
 
== Special Thanks! ==
アドルフ・ヒトラー総統閣下
<br/>べニート・アミルカレ・アンドレア・ムッソリーニ首相
<br/>ヨシフ・ヴィッサリオノヴィチ・スターリン
<br/>元2chの貴公子西村博之
<br/>まりな
<br/>ミッドナイトくずもちフィーバー
<br/>イヤミ
<br/>ズオウとヒイタチ
<br/>白鵬翔
<br/>大室花子
<br/>香風智乃
<br/>唐澤貴洋大先生
<br/>藤岡弘、だよー
<br/>巨人小笠原
<br/>スイカ大王バンザーイ!!!
 
<pre style="font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12px;line-height:12px;">
 ,.:::.⌒⌒:::::ヽ
(::::::::::::::::::::::::::::)
(::::::::::::::人:::::::::ノ
(:::::::::彡(^)(^):ノ
 (::::::::   と<Thank You!
</pre>
 
 
 
== その他 ==
 
なんと週末には白鵬も武田鉄也もやって来る!(←ここ嘘)
 
フレディー・マーキュリーやジョン・レノンも愛したAnarchy実況(←要出典)
 
あかりは毎日いるよぉ(←そんなに重要じゃない)
 
優しい世界を目指しましょう。
 
あかりちゃんを見習って夜更かしせずに早く寝ましょう。
 
レバーを食べて夏バテを乗り切りましょう。
 
板が荒れたらお花を植えましょう。
 
対立煽りや喧嘩などは避けるようにしましょう。
 
Seesaaカスはお墓に埋めましょう。
 
???「人という字は互いに支えあってヒトとなる」
 
嘘を嘘と見抜ける人でないと(穴実を使うのは)難しい
 
 
<pre style="font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12px;line-height:12px;">
┏━━━━━┓
┃  / \  ┃
┃/    \┃
┃ ▲  ▲  ┃
┃【*^▲^*】┃  悲しいゾ!
┗━━━━━┛
</pre>
 
== 結論 ==
<pre style="background-color:transparent;border:none;font-family:IPAMonaPGothic,'IPA モナー Pゴシック',Monapo,Mona,'MS PGothic','MS Pゴシック',sans-serif;font-size:12pt;line-height:12pt;">
 。   ▲▲
  \【*^▲^*】 <Anarchy実況に来るな!
    ^^^||^^^(。
    < ̄\
    ▲   ▲
 
</pre>
 
 
 
 
 
<!-- カテゴリ表示でのデフォルトソート名 -->
<!-- カテゴリ表示でのデフォルトソート名 -->
{{DEFAULTSORT:あなあきいじつきよういた}}
{{DEFAULTSORT:あなあきいじつきよういた}}

2015年3月1日 (日) 11:37時点における版

奄美実況
カテゴリ 隔離
サーバ maguro
フォルダ liveanarchy
開設日 2014年7月2日
名無しの名前 穴カス(無能
ID 表示なし
板URL http://maguro.2ch.net/mango/


!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="content-type" content="te

戦犯ミスト

http://info.2ch.net/index.php/Mango_Mangue

  • ‮YuasaというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
  • ‮RotというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
  • X86CISCというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
  • ‮SUJというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
  • ‮WarというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。that any increase in the speed with which insight and improvements can be distributed to others can result in a dramatic acceleration in those improvements. I believe wiki -
  • ‮Kinks-72というのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
  • ‮MasaoというのはこのWikiの荒らしなので荒らしていたら注意してあげMOVWF W_TEMP ;SAVE OFF CURRENT W REGISTER CONTENTS
MOVF EMP ;SAVE OFF CONTENTS OF STATUS REGISTER
MOVFGISTER INTO W REGISTER
MOVF STATUS_TEMP,W ;RETRIEVE COPY OF STATUS REGISTER
MOVWF STATUS ;RESTORE PRE-ISR STATUS REGISTER CONTENTS
SWAPF W_TEMP,F
SWAPF W_TEMP,W ;RESTORE PRE-ISR W REGISTER CONTENTSよう。
  • ‮MeumeuというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
  • ‮全てがGuiltyというのはこのWikiの荒らしなので荒n Demand Settings ONLY

var _main hash for cookies var _u="1800"; // set the inactive session timeout in seconds var _ugifpath="/__utm.gif"; // set the web path to the __utm.gif filw[0]="q"; _uOsr[2]="msn"; _uOkw[2]="q";らしていたら注意してあげよう。

  • ‮美月改造おじさんというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
  • ‮白鵬ファンクラブというのはこのWikiの荒らしなので荒らしていたら注意してあげよう。
  • ‮鼻血池沼というのはこのWikiの荒らしなので荒らしていたら注意してあげよう。

そ他の戦犯

@(●)(●)@もうやめにしませんか赤座あかりは何故天使なのか アルベルト・アインシュタイン や赤神杉浦綾乃のゲロうんこ茶漬け松本りせちゃんがあかりのバキちんを内臓まで突っ込まれてバターみたいな固形になりかけな濃厚精子を1リットル注がれる様子めう松「無駄だぞ」内容を「 ==

赤座あかり

== あかりだよぉ」で置換(最新 | 前) 2014年12月21日 (日) 20:47‎ Yuasa (トーク | 投稿記録)‎ . . (2,760バイト) (+2,666)‎

(最新 | 前) 2014年12月21日 (日) 20:45‎ 赤座あかり (トーク | 投稿記録)‎ . . (94バイト) (-1,739)‎ . . (内容を「あか りだよぉ 赤座あかりだよぉ や赤神     や赤神」で置換) (最新 | 前) 2014年12月21日 (日) 20:33‎ Yuasa (トーク | 投稿記録)‎ . . (1,833バイト) (+1,739)‎ (最新 | 前) 2014年12月21日 (日) 3,059バイト) (-34,82620:21‎ 赤座あかり (トーク | 投稿記録)‎ . . (94バイト) (-50,694)‎ . . (内容を「あかりだよぉ 赤座あかりだよぉ や赤神     や赤神」で置換)というのWikゐi集してので荒らしていたら注あげよう。

caption ← ぷはー☆

R.I.P 赤座あか_り 💩😅

赤座あかりちゃんのチンコバッキバキでワロタwww😓

諸注意

  1. なお、ならないことを承知した上で読み進めて下さい。
  2. 穴実は聞けば教えてくれない厳しい世界です。文化は口伝で脈々と受け継がれていません。







あんなかわいい顔して立派なものつけてるとかぐう興奮する

神定期
神<定期
絶マー3115X6で5^13 3115 \ ^ 61 : ^ 113 乜ー乜マー3115^6で5^3 3 ! I ョ! ^ 6 でー 1 土 3 乜ー乜 3ひ3 ^ / 61 ー 113 >やすな
神定,期
立てた
り落としたりしろ
神定#期 /{{#replace:{{#replace:{{{1}}}| |%20}}|\|/}}
たておとし

           z─ヽ ∨/   / / |     ハ ト、    ', ∨ノ─z_           
           〈´,   オ /  ./|廴.人、   廴リ斗 ト、} ', 〈   、 /           
           \ / ' |,イ /  /  \'     ∨: N ヽ/            
            l, /ヽ l. ゝ.イ.!,-ヽ//.イ二ニz!,'l/` ゝ              
               l,/ /ヾl`'´ Xニニェ 、////  / . ぃ              
              〕 |  | /.r´// r'' ̄_ヽ    _,/  l |ヽ              
  、          / .|  l/| ゝ.〈   ! イ ⌒i    . !   N.ト、            
   ` 、        /  .И   | 、 J.  ヽ、  ノ し / .,ハ | | ヽ             .
      ヽ    |/|   |  ハ .` 、   し´ヽ ,、_'´ レ ∨|V              
       ヽ    '´∨∨V、   .`.l ー -‐l´ /\ハ/                 
        > -y    ´ `' . ` ̄- y_ ._ ''´      y   ヽ           .  
\      Y ヽ/ _,/   ト、                     ',   ',          
  \    _,j   K     / ヽ_                ',   |          
    ー-'´    jヽ    / (:ぅ              ぅ:)  !   !           
         / ヽ    !                     l   !      /    .
       /    ヽ _,..!                   !  i     /    
     /        <  ',                 `J i   !   /       
  _,. /         ヽ i                    |  !.  /         
_/             ヽ|  J                !   | /          
                v         ,         !  !./           .
                `、        fy        ヽ /           .
                 ',         '     し    y             
    /             ',                 /  し           
    J              ',               /               
                     ',              /                
                       ',       . /|        /               
ヽ                   i      / '、     /                
 ',                  .i   _,ノィう)、     !                i   
  ',                       ', /イY:::i r.、ヽ   !                し  
  ',                 ィヽ彳⌒ !:::j i:::::i r、_ノ                 ..


つまんね [http://ur
神期
神定期 [http://do
[1] [2][3]

 f="wiki?WikiWikiWebFaq">WikiWikiWebFaq</a>
 <li> <a href="wiki?WikiGettingStartedFaq">WikiGettingStartedFaq</a>
 <p></p>
 </UL>
 To read more about the <a href="wiki?WikiWikiWeb">WikiWikiWeb</a> itself:
 <UL>
 <li> <a href="wiki?WikiDesignPrinciples">WikiDesignPrinciples</a>
 <li> <a href="wiki?WhyWikiWorks">WhyWikiWorks</a> and <a href="wiki?WhyWikiWorksNot">WhyWikiWorksNot</a>.
 <li> <a href="wiki?WikiBase">WikiBase</a> hosts the original pages from the earliest wiki.
 <p></p>
 </UL>
 Awards:
 <UL>
 <li> <a href="wiki?WikiInTheNews">WikiInTheNews</a>
 <li> <a href="wiki?WikiWikiKudos">WikiWikiKudos</a>
 <p></p>
 </UL>
 Other Wikis:
 <UL>
 <li> Wikipedia (<a href="http://www.wikipedia.org/" rel="nofollow">http://www.wikipedia.org/</a>)
 <li> <a href="http://wikiindex.org/Category:Wiki_Lists" rel="nofollow">http://wikiindex.org/Category:Wiki_Lists</a>
 <p></p>
 </UL>
 <hr>
 <a href="wiki?CategoryWikiHelp">CategoryWikiHelp</a>
 </div>
 </form>
 <hr>
 View edit of <a href=quickDiff?WikiWikiWeb rel="nofollow">December 18, 2014</a>
 or <a href="wiki?FindPage">FindPage</a> with title or text search<br>
 <link rel="alternate" type="application/wiki" title="Edit this page!" href="wiki?edit=WikiWikiWeb"/>
 <hr><a href=http://usemod.com/cgi-bin/mb.pl?WikiWikiWeb
                  xグ
                    //
               _,!{_,.. -- 、
           ,..- ´ ̄-‐ ` ´ -‐-..、 `ヽ、
      __   /   /         `ヽ  ` <二゙ヽ、
    r ´i:::/:/                   ヽ=<j: i
    !ヽ,y::/                      V::ノ
     ヽ::/ /    _,.. -       ―‐-i、    ヾ.ヘ、
   ,ィ´ .j /    / ト、::..     ::. |i::  :::`ヽ ヽ  !::. ヾヽ
    /:. .:::! | i / i ハ :i ヽ.:::::..  |!:./ i:: /ヽ: ii.  i  i::::,-゙
    ヽ!::|  !i i: i !i i _|_t-ミ\::::::::;j|/ x,レ== ミリ:: :. |  i´
     `! !ハ| ト| ,レ゙,ィ ァx゙ `ヽj"   f_, ,ikx ヽi :: リ  i
        !  : !:i i| fi:タiイ::i      i|ィオ::j ノ| j:  :: j
        ! : :.ト、`弋:::゙:ノ       `‐-‐゙ ,リ::: !: j
        ト、:. :iヾ ////     '    //// ij:: j:レi
       !:ヽト、.:!ヽ      r --―ァ     /:: /::::i´
      i::i:ヽ:ヽヽ:::ヽ、   j`i  - ´   ,/::::j/::ルリ
      `゙ ヽ!∨V`i:::::`::/ /._  ,ィクィ:::´リ|/|ノ∨
         ___|/V/ /  /, ' |\_
        ノ::!i:::::::::::::::/ !,// _/:::::::: ̄`ーt-、
         / ヾヽ:::::/   く,つ´ /::::::::::::::::::/ / ヽ
      / i  ヾ,>´       -!..-/::::::::::::::://   ヽ
     /´,i |  /      ,kッ゙:::/:::::::::::://  /     ト、


愚かな穴実民よ
穴実の神を崇めよ
穴実の神を畏れよ
穴実の神を奉れよ


/**********************************************************************

* ISO MPEG Audio Subgroup Software Simulation Group (1996)
* ISO 13818-3 MPEG-2 Audio Encoder - Lower Sampling Frequency Extension
*
* $Id: encode.c,v 1.1 1996/02/14 04:04:23 rowlands Exp $
*
* $Log: encode.c,v $
* Revision 1.1  1996/02/14 04:04:23  rowlands
* Initial revision
*
* Received from Mike Coleman
**********************************************************************/

/**********************************************************************

*   date   programmers         comment                               *
* 3/01/91  Douglas Wong,       start of version 1.1 records          *
*          Davis Pan                                                 *
* 3/06/91  Douglas Wong        rename: setup.h to endef.h            *
*                                      efilter to enfilter           *
*                                      ewindow to enwindow           *
*                              integrated "quantizer", "scalefactor",*
*                              and "transmission" files              *
*                              update routine "window_subband"       *
* 3/31/91  Bill Aspromonte     replaced read_filter by               *
*                              create_an_filter                      *
* 5/10/91  W. Joseph Carter    Ported to Macintosh and Unix.         *
*                              Incorporated Jean-Georges Fritsch's   *
*                              "bitstream.c" package.                *
*                              Incorporated Bill Aspromonte's        *
*                              filterbank coefficient matrix         *
*                              calculation routines and added        *
*                              roundoff to coincide with specs.      *
*                              Modified to strictly adhere to        *
*                              encoded bitstream specs, including    *
*                              "Berlin changes".                     *
*                              Modified PCM sound file handling to   *
*                              process all incoming samples and fill *
*                              out last encoded frame with zeros     *
*                              (silence) if needed.                  *
*                              Located and fixed numerous software   *
*                              bugs and table data errors.           *
* 19jun91  dpwe (Aware)        moved "alloc_*" reader to common.c    *
*                              Globals sblimit, alloc replaced by new*
*                              struct 'frame_params' passed as arg.  *
*                              Added JOINT STEREO coding, layers I,II*
*                              Affects: *_bit_allocation,            *
*                              subband_quantization, encode_bit_alloc*
*                              sample_encoding                       *
* 6/10/91  Earle Jennings      modified II_subband_quantization to   *
*                              resolve type cast problem for MS_DOS  *
* 6/11/91  Earle Jennings      modified to avoid overflow on MS_DOS  *
*                              in routine filter_subband             *
* 7/10/91  Earle Jennings      port to MsDos from MacIntosh version  *
* 8/ 8/91  Jens Spille         Change for MS-C6.00                   *
*10/ 1/91  S.I. Sudharsanan,   Ported to IBM AIX platform.           *
*          Don H. Lee,                                               *
*          Peter W. Farrett                                          *
*10/ 3/91  Don H. Lee          implemented CRC-16 error protection   *
*                              newly introduced function encode_CRC  *
*11/ 8/91  Kathy Wang          Documentation of code                 *
*                              All variablenames are referred to     *
*                              with surrounding pound (#) signs      *
* 2/11/92  W. Joseph Carter    Ported new code to Macintosh.  Most   *
*                              important fixes involved changing     *
*                              16-bit ints to long or unsigned in    *
*                              bit alloc routines for quant of 65535 *
*                              and passing proper function args.     *
*                              Removed "Other Joint Stereo" option   *
*                              and made bitrate be total channel     *
*                              bitrate, irrespective of the mode.    *
*                              Fixed many small bugs & reorganized.  *
* 6/16/92  Shaun Astarabadi    Changed I_scale_factor_calc() and     *
*                              II_scale_factor_calc() to use scale   *
*                              factor 0 thru 62 only and not to      *
*                              encode index 63 into the bit stream.  *
* 7/27/92  Mike Li             (re-)Port to MS-DOS                   *
* 9/22/92  jddevine@aware.com  Fixed _scale_factor_calc() defs       *
* 3/31/93  Giogio Dimino       changed II_a_bit_allocation() from:   *
*                              if( ad > ...) to if(ad >= ...)        *
* 8/05/93  TEST                changed I_a_bit_allocation() from:    *
*                              if( ad > ...) to if(ad >= ...)        *
* 8/02/95  mc@fivebats.com     Changed audio file reading code to    *
*                              read samples big-endian               *
*10/15/95  mc@fivebats.com     Modified get_audio() for layer3-LSF   *
**********************************************************************/

  1. include "common.h"
  2. include "encoder.h"
  1. ifdef MS_DOS

extern unsigned _stklen = 16384;

  1. endif


/*=======================================================================\ | | | This segment contains all the core routines of the encoder, | | except for the psychoacoustic models. | | | | The user can select either one of the two psychoacoustic | | models. Model I is a simple tonal and noise masking threshold | | generator, and Model II is a more sophisticated cochlear masking | | threshold generator. Model I is recommended for lower complexity | | applications whereas Model II gives better subjective quality at low | | bit rates. | | | | Layers I and II of mono, stereo, and joint stereo modes are supported.| | Routines associated with a given layer are prefixed by "I_" for layer | | 1 and "II_" for layer 2. | \=======================================================================*/

/************************************************************************

  • read_samples()
  • PURPOSE: reads the PCM samples from a file to the buffer
  • SEMANTICS:
  • Reads #samples_read# number of shorts from #musicin# filepointer
  • into #sample_buffer[]#. Returns the number of samples read.
                                                                                                                                                • /

unsigned long read_samples(musicin, sample_buffer, num_samples, frame_size) FILE *musicin; short sample_buffer[2304]; unsigned long num_samples, frame_size; {

   unsigned long samples_read;
   static unsigned long samples_to_read;
   static char init = TRUE;
   if (init) {
       samples_to_read = num_samples;
       init = FALSE;
   }
   if (samples_to_read >= frame_size)
       samples_read = frame_size;
   else
       samples_read = samples_to_read;
   if ((samples_read =
        fread(sample_buffer, sizeof(short), (int)samples_read, musicin)) == 0)
       printf("Hit end of audio data\n");
   /*
      Samples are big-endian. If this is a little-endian machine
      we must swap
    */
   if ( NativeByteOrder == order_unknown )
     {

NativeByteOrder = DetermineByteOrder(); if ( NativeByteOrder == order_unknown ) { fprintf( stderr, "byte order not determined\n" ); exit( 1 ); }

     }
   if ( NativeByteOrder == order_littleEndian )
     SwapBytesInWords( sample_buffer, samples_read );
   samples_to_read -= samples_read;
   if (samples_read < frame_size && samples_read > 0) {
       printf("Insufficient PCM input for one frame - fillout with zeros\n");
       for (; samples_read < frame_size; sample_buffer[samples_read++] = 0);
       samples_to_read = 0;
   }
   return(samples_read);

}

/************************************************************************

  • get_audio()
  • PURPOSE: reads a frame of audio data from a file to the buffer,
  • aligns the data for future processing, and separates the
  • left and right channels
                                                                                                                                                • /

unsigned long get_audio( musicin, buffer, num_samples, stereo, info ) FILE *musicin; short FAR buffer[2][1152]; unsigned long num_samples; int stereo; layer *info; {

   int j;
   short insamp[2304];
   unsigned long samples_read;
   int lay;
   lay = info->lay;
   if ( (lay == 3) && (info->version == 0) )
   {

if ( stereo == 2 ) { samples_read = read_samples( musicin, insamp, num_samples, (unsigned long) 1152 ); for ( j = 0; j < 576; j++ ) { buffer[0][j] = insamp[2 * j]; buffer[1][j] = insamp[2 * j + 1]; } } else { samples_read = read_samples( musicin, insamp, num_samples, (unsigned long) 576 ); for ( j = 0; j < 576; j++ ) { buffer[0][j] = insamp[j]; buffer[1][j] = 0; } }

   }
   else
   {

if (lay == 1){ if(stereo == 2){ /* layer 1, stereo */ samples_read = read_samples(musicin, insamp, num_samples, (unsigned long) 768); for(j=0;j<448;j++) { if(j<64) { buffer[0][j] = buffer[0][j+384]; buffer[1][j] = buffer[1][j+384]; } else { buffer[0][j] = insamp[2*j-128]; buffer[1][j] = insamp[2*j-127]; } } } else { /* layer 1, mono */ samples_read = read_samples(musicin, insamp, num_samples, (unsigned long) 384); for(j=0;j<448;j++){ if(j<64) { buffer[0][j] = buffer[0][j+384]; buffer[1][j] = 0; } else { buffer[0][j] = insamp[j-64]; buffer[1][j] = 0; } } } } else { if(stereo == 2){ /* layer 2 (or 3), stereo */ samples_read = read_samples(musicin, insamp, num_samples, (unsigned long) 2304); for(j=0;j<1152;j++) { buffer[0][j] = insamp[2*j]; buffer[1][j] = insamp[2*j+1]; } } else { /* layer 2 (or 3), mono */ samples_read = read_samples(musicin, insamp, num_samples, (unsigned long) 1152); for(j=0;j<1152;j++){ buffer[0][j] = insamp[j]; buffer[1][j] = 0; } } }

   }
   return(samples_read);

}

/************************************************************************

  • read_ana_window()
  • PURPOSE: Reads encoder window file "enwindow" into array #ana_win#
                                                                                                                                                • /

void read_ana_window(ana_win) double FAR ana_win[HAN_SIZE]; {

   int i,j[4];
   FILE *fp;
   double f[4];
   char t[150];

   if (!(fp = OpenTableFile("enwindow") ) ) {
      printf("Please check analysis window table 'enwindow'\n");
      exit(1);
   }
   for (i=0;i<512;i+=4) {
      fgets(t, 150, fp);
      sscanf(t,"C[%d] = %lf C[%d] = %lf C[%d] = %lf C[%d] = %lf\n",
             j, f,j+1,f+1,j+2,f+2,j+3,f+3);
      if (i==j[0]) {
         ana_win[i] = f[0];
         ana_win[i+1] = f[1];
         ana_win[i+2] = f[2];
         ana_win[i+3] = f[3];
      }
      else {
         printf("Check index in analysis window table\n");
         exit(1);
      }
      fgets(t,150,fp);
   }
   fclose(fp);

}

/************************************************************************

  • window_subband()
  • PURPOSE: Overlapping window on PCM samples
  • SEMANTICS:
  • 32 16-bit pcm samples are scaled to fractional 2's complement and
  • concatenated to the end of the window buffer #x#. The updated window
  • buffer #x# is then windowed by the analysis window #c# to produce the
  • windowed sample #z#
                                                                                                                                                • /

void window_subband(buffer, z, k) short FAR **buffer; double FAR z[HAN_SIZE]; int k; {

   typedef double FAR XX[2][HAN_SIZE];
   static XX FAR *x;
   int i, j;
   static off[2] = {0,0};
   static char init = 0;
   static double FAR *c;
   if (!init) {
       c = (double FAR *) mem_alloc(sizeof(double) * HAN_SIZE, "window");
       read_ana_window(c);
       x = (XX FAR *) mem_alloc(sizeof(XX),"x");
       for (i=0;i<2;i++)
           for (j=0;j<HAN_SIZE;j++)
               (*x)[i][j] = 0;
       init = 1;
   }
   /* replace 32 oldest samples with 32 new samples */
   for (i=0;i<32;i++) (*x)[k][31-i+off[k]] = (double) *(*buffer)++/SCALE;
   /* shift samples into proper window positions */
   for (i=0;i<HAN_SIZE;i++) z[i] = (*x)[k][(i+off[k])&HAN_SIZE-1] * c[i];
   off[k] += 480;              /*offset is modulo (HAN_SIZE-1)*/
   off[k] &= HAN_SIZE-1;

}

/************************************************************************

  • create_ana_filter()
  • PURPOSE: Calculates the analysis filter bank coefficients
  • SEMANTICS:
  • Calculates the analysis filterbank coefficients and rounds to the
  • 9th decimal place accuracy of the filterbank tables in the ISO
  • document. The coefficients are stored in #filter#
                                                                                                                                                • /

void create_ana_filter(filter) double FAR filter[SBLIMIT][64]; {

  register int i,k;

  for (i=0; i<32; i++)
     for (k=0; k<64; k++) {
         if ((filter[i][k] = 1e9*cos((double)((2*i+1)*(16-k)*PI64))) >= 0)
            modf(filter[i][k]+0.5, &filter[i][k]);
         else
            modf(filter[i][k]-0.5, &filter[i][k]);
         filter[i][k] *= 1e-9;
  }

}

/************************************************************************

  • filter_subband()
  • PURPOSE: Calculates the analysis filter bank coefficients
  • SEMANTICS:
  • The windowed samples #z# is filtered by the digital filter matrix #m#
  • to produce the subband samples #s#. This done by first selectively
  • picking out values from the windowed samples, and then multiplying
  • them by the filter matrix, producing 32 subband samples.
                                                                                                                                                • /

void filter_subband(z,s) double FAR z[HAN_SIZE], s[SBLIMIT]; {

  double y[64];
  int i,j;

static char init = 0;

  typedef double MM[SBLIMIT][64];

static MM FAR *m;

  1. ifdef MS_DOS
  long    SIZE_OF_MM;
  SIZE_OF_MM      = SBLIMIT*64;
  SIZE_OF_MM      *= 8;
  if (!init) {
      m = (MM FAR *) mem_alloc(SIZE_OF_MM, "filter");
      create_ana_filter(*m);
      init = 1;
  }
  1. else
  if (!init) {
      m = (MM FAR *) mem_alloc(sizeof(MM), "filter");
      create_ana_filter(*m);
      init = 1;
  }
  1. endif
  for (i=0;i<64;i++) for (j=0, y[i] = 0;j<8;j++) y[i] += z[i+64*j];
  for (i=0;i<SBLIMIT;i++)
      for (j=0, s[i]= 0;j<64;j++) s[i] += (*m)[i][j] * y[j];

}

/************************************************************************

  • encode_info()
  • PURPOSE: Puts the syncword and header information on the output
  • bitstream.
                                                                                                                                                • /

void encode_info(fr_ps,bs) frame_params *fr_ps; Bit_stream_struc *bs; {

       layer *info = fr_ps->header;

       putbits(bs,0xfff,12);                    /* syncword 12 bits */
       put1bit(bs,info->version);               /* ID        1 bit  */
       putbits(bs,4-info->lay,2);               /* layer     2 bits */
       put1bit(bs,!info->error_protection);     /* bit set => no err prot */
       putbits(bs,info->bitrate_index,4);
       putbits(bs,info->sampling_frequency,2);
       put1bit(bs,info->padding);
       put1bit(bs,info->extension);             /* private_bit */
       putbits(bs,info->mode,2);
       putbits(bs,info->mode_ext,2);
       put1bit(bs,info->copyright);
       put1bit(bs,info->original);
       putbits(bs,info->emphasis,2);

}

/************************************************************************

  • mod()
  • PURPOSE: Returns the absolute value of its argument
                                                                                                                                                • /

double mod(a) double a; {

   return (a > 0) ? a : -a;

}

/************************************************************************

  • I_combine_LR (Layer I)
  • II_combine_LR (Layer II)
  • PURPOSE:Combines left and right channels into a mono channel
  • SEMANTICS: The average of left and right subband samples is put into
  • #joint_sample#
  • Layer I and II differ in frame length and # subbands used
                                                                                                                                                • /

void I_combine_LR(sb_sample, joint_sample) double FAR sb_sample[2][3][SCALE_BLOCK][SBLIMIT]; double FAR joint_sample[3][SCALE_BLOCK][SBLIMIT]; { /* make a filtered mono for joint stereo */

   int sb, smp;

  for(sb = 0; sb<SBLIMIT; ++sb)
     for(smp = 0; smp<SCALE_BLOCK; ++smp)
       joint_sample[0][smp][sb] = .5 *
                   (sb_sample[0][0][smp][sb] + sb_sample[1][0][smp][sb]);

}

void II_combine_LR(sb_sample, joint_sample, sblimit) double FAR sb_sample[2][3][SCALE_BLOCK][SBLIMIT]; double FAR joint_sample[3][SCALE_BLOCK][SBLIMIT]; int sblimit; { /* make a filtered mono for joint stereo */

  int sb, smp, sufr;

  for(sb = 0; sb<sblimit; ++sb)
     for(smp = 0; smp<SCALE_BLOCK; ++smp)
        for(sufr = 0; sufr<3; ++sufr)
           joint_sample[sufr][smp][sb] = .5 * (sb_sample[0][sufr][smp][sb]
                                          + sb_sample[1][sufr][smp][sb]);

}

/************************************************************************

  • I_scale_factor_calc (Layer I)
  • II_scale_factor_calc (Layer II)
  • PURPOSE:For each subband, calculate the scale factor for each set
  • of the 12 subband samples
  • SEMANTICS: Pick the scalefactor #multiple[]# just larger than the
  • absolute value of the peak subband sample of 12 samples,
  • and store the corresponding scalefactor index in #scalar#.
  • Layer II has three sets of 12-subband samples for a given
  • subband.
                                                                                                                                                • /

void I_scale_factor_calc(sb_sample,scalar,stereo) double FAR sb_sample[][3][SCALE_BLOCK][SBLIMIT]; unsigned int scalar[][3][SBLIMIT]; int stereo; {

  int i,j, k;
  double s[SBLIMIT];

  for (k=0;k<stereo;k++) {
    for (i=0;i<SBLIMIT;i++)
      for (j=1, s[i] = mod(sb_sample[k][0][0][i]);j<SCALE_BLOCK;j++)
        if (mod(sb_sample[k][0][j][i]) > s[i])
           s[i] = mod(sb_sample[k][0][j][i]);

    for (i=0;i<SBLIMIT;i++)
      for (j=SCALE_RANGE-2,scalar[k][0][i]=0;j>=0;j--) /* $A 6/16/92 */
        if (s[i] <= multiple[j]) {
           scalar[k][0][i] = j;
           break;
        }
  }

}

/******************************** Layer II ******************************/

void II_scale_factor_calc(sb_sample,scalar,stereo,sblimit) double FAR sb_sample[][3][SCALE_BLOCK][SBLIMIT]; unsigned int scalar[][3][SBLIMIT]; int stereo,sblimit; {

 int i,j, k,t;
 double s[SBLIMIT];

 for (k=0;k<stereo;k++) for (t=0;t<3;t++) {
   for (i=0;i<sblimit;i++)
     for (j=1, s[i] = mod(sb_sample[k][t][0][i]);j<SCALE_BLOCK;j++)
       if (mod(sb_sample[k][t][j][i]) > s[i])
            s[i] = mod(sb_sample[k][t][j][i]);

 for (i=0;i<sblimit;i++)
   for (j=SCALE_RANGE-2,scalar[k][t][i]=0;j>=0;j--)    /* $A 6/16/92 */
     if (s[i] <= multiple[j]) {
        scalar[k][t][i] = j;
        break;
     }
     for (i=sblimit;i<SBLIMIT;i++) scalar[k][t][i] = SCALE_RANGE-1;
   }

}

/************************************************************************

  • pick_scale (Layer II)
  • PURPOSE:For each subband, puts the smallest scalefactor of the 3
  • associated with a frame into #max_sc#. This is used
  • used by Psychoacoustic Model I.
  • (I would recommend changin max_sc to min_sc)
                                                                                                                                                • /

void pick_scale(scalar, fr_ps, max_sc) unsigned int scalar[2][3][SBLIMIT]; frame_params *fr_ps; double FAR max_sc[2][SBLIMIT]; {

 int i,j,k,max;
 int stereo  = fr_ps->stereo;
 int sblimit = fr_ps->sblimit;

 for (k=0;k<stereo;k++)
   for (i=0;i<sblimit;max_sc[k][i] = multiple[max],i++)
     for (j=1, max = scalar[k][0][i];j<3;j++)
        if (max > scalar[k][j][i]) max = scalar[k][j][i];
 for (i=sblimit;i<SBLIMIT;i++) max_sc[0][i] = max_sc[1][i] = 1E-20;

}

/************************************************************************

  • put_scale (Layer I)
  • PURPOSE:Sets #max_sc# to the scalefactor index in #scalar.
  • This is used by Psychoacoustic Model I
                                                                                                                                                • /

void put_scale(scalar, fr_ps, max_sc) unsigned int scalar[2][3][SBLIMIT]; frame_params *fr_ps; double FAR max_sc[2][SBLIMIT]; {

  int i,j,k, max;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;

  for (k=0;k<stereo;k++) for (i=0;i<SBLIMIT;i++)
       max_sc[k][i] = multiple[scalar[k][0][i]];

}

/************************************************************************

  • II_transmission_pattern (Layer II only)
  • PURPOSE:For a given subband, determines whether to send 1, 2, or
  • all 3 of the scalefactors, and fills in the scalefactor
  • select information accordingly
  • SEMANTICS: The subbands and channels are classified based on how much
  • the scalefactors changes over its three values (corresponding
  • to the 3 sets of 12 samples per subband). The classification
  • will send 1 or 2 scalefactors instead of three if the scalefactors
  • do not change much. The scalefactor select information,
  • #scfsi#, is filled in accordingly.
                                                                                                                                                • /

void II_transmission_pattern(scalar, scfsi, fr_ps) unsigned int scalar[2][3][SBLIMIT]; unsigned int scfsi[2][SBLIMIT]; frame_params *fr_ps; {

  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int dscf[2];
  int class[2],i,j,k;

static int pattern[5][5] = {0x123, 0x122, 0x122, 0x133, 0x123,

                           0x113, 0x111, 0x111, 0x444, 0x113,
                           0x111, 0x111, 0x111, 0x333, 0x113,
                           0x222, 0x222, 0x222, 0x333, 0x123,
                           0x123, 0x122, 0x122, 0x133, 0x123};

  for (k=0;k<stereo;k++)
    for (i=0;i<sblimit;i++) {
      dscf[0] =  (scalar[k][0][i]-scalar[k][1][i]);
      dscf[1] =  (scalar[k][1][i]-scalar[k][2][i]);
      for (j=0;j<2;j++) {
        if (dscf[j]<=-3) class[j] = 0;
        else if (dscf[j] > -3 && dscf[j] <0) class[j] = 1;
             else if (dscf[j] == 0) class[j] = 2;
                  else if (dscf[j] > 0 && dscf[j] < 3) class[j] = 3;
                       else class[j] = 4;
      }
      switch (pattern[class[0]][class[1]]) {
        case 0x123 :    scfsi[k][i] = 0;
                        break;
        case 0x122 :    scfsi[k][i] = 3;
                        scalar[k][2][i] = scalar[k][1][i];
                        break;
        case 0x133 :    scfsi[k][i] = 3;
                        scalar[k][1][i] = scalar[k][2][i];
                        break;
        case 0x113 :    scfsi[k][i] = 1;
                        scalar[k][1][i] = scalar[k][0][i];
                        break;
        case 0x111 :    scfsi[k][i] = 2;
                        scalar[k][1][i] = scalar[k][2][i] = scalar[k][0][i];
                        break;
        case 0x222 :    scfsi[k][i] = 2;
                        scalar[k][0][i] = scalar[k][2][i] = scalar[k][1][i];
                        break;
        case 0x333 :    scfsi[k][i] = 2;
                        scalar[k][0][i] = scalar[k][1][i] = scalar[k][2][i];
                        break;
        case 0x444 :    scfsi[k][i] = 2;
                        if (scalar[k][0][i] > scalar[k][2][i])
                             scalar[k][0][i] = scalar[k][2][i];
                        scalar[k][1][i] = scalar[k][2][i] = scalar[k][0][i];
     }
  }

}

/************************************************************************

  • I_encode_scale (Layer I)
  • II_encode_scale (Layer II)
  • PURPOSE:The encoded scalar factor information is arranged and
  • queued into the output fifo to be transmitted.
  • For Layer II, the three scale factors associated with
  • a given subband and channel are transmitted in accordance
  • with the scfsi, which is transmitted first.
                                                                                                                                                • /

void I_encode_scale(scalar, bit_alloc, fr_ps, bs) unsigned int scalar[2][3][SBLIMIT]; unsigned int bit_alloc[2][SBLIMIT]; frame_params *fr_ps; Bit_stream_struc *bs; {

  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int i,j;

  for (i=0;i<SBLIMIT;i++) for (j=0;j<stereo;j++)
     if (bit_alloc[j][i]) putbits(bs,scalar[j][0][i],6);

}

/***************************** Layer II ********************************/

void II_encode_scale(bit_alloc, scfsi, scalar, fr_ps, bs) unsigned int bit_alloc[2][SBLIMIT], scfsi[2][SBLIMIT]; unsigned int scalar[2][3][SBLIMIT]; frame_params *fr_ps; Bit_stream_struc *bs; {

  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  int i,j,k;

  for (i=0;i<sblimit;i++) for (k=0;k<stereo;k++)
    if (bit_alloc[k][i])  putbits(bs,scfsi[k][i],2);

  for (i=0;i<sblimit;i++) for (k=0;k<stereo;k++)
    if (bit_alloc[k][i])  /* above jsbound, bit_alloc[0][i] == ba[1][i] */
       switch (scfsi[k][i]) {
          case 0: for (j=0;j<3;j++)
                    putbits(bs,scalar[k][j][i],6);
                  break;
          case 1:
          case 3: putbits(bs,scalar[k][0][i],6);
                  putbits(bs,scalar[k][2][i],6);
                  break;
          case 2: putbits(bs,scalar[k][0][i],6);
       }

}

/*=======================================================================\ | | | The following routines are done after the masking threshold | | has been calculated by the fft analysis routines in the Psychoacoustic | | model. Using the MNR calculated, the actual number of bits allocated | | to each subband is found iteratively. | | | \=======================================================================*/

/************************************************************************

  • I_bits_for_nonoise (Layer I)
  • II_bits_for_nonoise (Layer II)
  • PURPOSE:Returns the number of bits required to produce a
  • mask-to-noise ratio better or equal to the noise/no_noise threshold.
  • SEMANTICS:
  • bbal = # bits needed for encoding bit allocation
  • bsel = # bits needed for encoding scalefactor select information
  • banc = # bits needed for ancillary data (header info included)
  • For each subband and channel, will add bits until one of the
  • following occurs:
  • - Hit maximum number of bits we can allocate for that subband
  • - MNR is better than or equal to the minimum masking level
  • (NOISY_MIN_MNR)
  • Then the bits required for scalefactors, scfsi, bit allocation,
  • and the subband samples are tallied (#req_bits#) and returned.
  • (NOISY_MIN_MNR) is the smallest MNR a subband can have before it is
  • counted as 'noisy' by the logic which chooses the number of JS
  • subbands.
  • Joint stereo is supported.
                                                                                                                                                • /

static double snr[18] = {0.00, 7.00, 11.00, 16.00, 20.84,

                        25.28, 31.59, 37.75, 43.84,
                        49.89, 55.93, 61.96, 67.98, 74.01,
                        80.03, 86.05, 92.01, 98.01};

int I_bits_for_nonoise(perm_smr, fr_ps) double FAR perm_smr[2][SBLIMIT]; frame_params *fr_ps; {

  int i,j,k;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  int req_bits = 0;

  /* initial b_anc (header) allocation bits */
  req_bits = 32 + 4 * ( (jsbound * stereo) + (SBLIMIT-jsbound) );

  for(i=0; i<SBLIMIT; ++i)
    for(j=0; j<((i<jsbound)?stereo:1); ++j) {
      for(k=0;k<14; ++k)
        if( (-perm_smr[j][i] + snr[k]) >= NOISY_MIN_MNR)
          break; /* we found enough bits */
        if(stereo == 2 && i >= jsbound)     /* check other JS channel */
          for(;k<14; ++k)
            if( (-perm_smr[1-j][i] + snr[k]) >= NOISY_MIN_MNR) break;
        if(k>0) req_bits += (k+1)*SCALE_BLOCK + 6*((i>=jsbound)?stereo:1);
  }
  return req_bits;

}

/***************************** Layer II ********************************/

int II_bits_for_nonoise(perm_smr, scfsi, fr_ps) double FAR perm_smr[2][SBLIMIT]; unsigned int scfsi[2][SBLIMIT]; frame_params *fr_ps; {

  int sb,ch,ba;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;
  int req_bits = 0, bbal = 0, berr = 0, banc = 32;
  int maxAlloc, sel_bits, sc_bits, smp_bits;

static int sfsPerScfsi[] = { 3,2,1,2 }; /* lookup # sfs per scfsi */

  /* added 92-08-11 shn */
  if (fr_ps->header->error_protection) berr=16; else berr=0; 

  for (sb=0; sb<jsbound; ++sb)
    bbal += stereo * (*alloc)[sb][0].bits;
  for (sb=jsbound; sb<sblimit; ++sb)
    bbal += (*alloc)[sb][0].bits;
  req_bits = banc + bbal + berr;

  for(sb=0; sb<sblimit; ++sb)
    for(ch=0; ch<((sb<jsbound)?stereo:1); ++ch) {
      maxAlloc = (1<<(*alloc)[sb][0].bits)-1;
      sel_bits = sc_bits = smp_bits = 0;
      for(ba=0;ba<maxAlloc-1; ++ba)
        if( (-perm_smr[ch][sb] + snr[(*alloc)[sb][ba].quant+((ba>0)?1:0)])
            >= NOISY_MIN_MNR)
           break;      /* we found enough bits */
      if(stereo == 2 && sb >= jsbound) /* check other JS channel */
        for(;ba<maxAlloc-1; ++ba)
          if( (-perm_smr[1-ch][sb]+ snr[(*alloc)[sb][ba].quant+((ba>0)?1:0)])
              >= NOISY_MIN_MNR)
            break;
      if(ba>0) {
        smp_bits = SCALE_BLOCK * ((*alloc)[sb][ba].group * (*alloc)[sb][ba].bits);
        /* scale factor bits required for subband */
        sel_bits = 2;
        sc_bits  = 6 * sfsPerScfsi[scfsi[ch][sb]];
        if(stereo == 2 && sb >= jsbound) {
          /* each new js sb has L+R scfsis */
          sel_bits += 2;
          sc_bits  += 6 * sfsPerScfsi[scfsi[1-ch][sb]];
        }
        req_bits += smp_bits+sel_bits+sc_bits;
      }
  }
  return req_bits;

}

/************************************************************************

  • I_main_bit_allocation (Layer I)
  • II_main_bit_allocation (Layer II)
  • PURPOSE:For joint stereo mode, determines which of the 4 joint
  • stereo modes is needed. Then calls *_a_bit_allocation(), which
  • allocates bits for each of the subbands until there are no more bits
  • left, or the MNR is at the noise/no_noise threshold.
  • SEMANTICS:
  • For joint stereo mode, joint stereo is changed to stereo if
  • there are enough bits to encode stereo at or better than the
  • no-noise threshold (NOISY_MIN_MNR). Otherwise, the system
  • iteratively allocates less bits by using joint stereo until one
  • of the following occurs:
  • - there are no more noisy subbands (MNR >= NOISY_MIN_MNR)
  • - mode_ext has been reduced to 0, which means that all but the
  • lowest 4 subbands have been converted from stereo to joint
  • stereo, and no more subbands may be converted
  • This function calls *_bits_for_nonoise() and *_a_bit_allocation().
                                                                                                                                                • /

void I_main_bit_allocation(perm_smr, bit_alloc, adb, fr_ps) double FAR perm_smr[2][SBLIMIT]; unsigned int bit_alloc[2][SBLIMIT]; int *adb; frame_params *fr_ps; {

  int  noisy_sbs;
  int  mode, mode_ext, lay, i;
  int  rq_db, av_db = *adb;

static int init = 0;

  if(init == 0) {
    /* rearrange snr for layer I */
    snr[2] = snr[3];
    for (i=3;i<16;i++) snr[i] = snr[i+2];
    init = 1;
  }

  if((mode = fr_ps->actual_mode) == MPG_MD_JOINT_STEREO) {
    fr_ps->header->mode = MPG_MD_STEREO;
    fr_ps->header->mode_ext = 0;
    fr_ps->jsbound = fr_ps->sblimit;
    if(rq_db = I_bits_for_nonoise(perm_smr, fr_ps) > *adb) {
      fr_ps->header->mode = MPG_MD_JOINT_STEREO;
      mode_ext = 4;           /* 3 is least severe reduction */
      lay = fr_ps->header->lay;
      do {
         --mode_ext;
         fr_ps->jsbound = js_bound(lay, mode_ext);
         rq_db = I_bits_for_nonoise(perm_smr, fr_ps);
      } while( (rq_db > *adb) && (mode_ext > 0));
      fr_ps->header->mode_ext = mode_ext;
    }    /* well we either eliminated noisy sbs or mode_ext == 0 */
  }
  noisy_sbs = I_a_bit_allocation(perm_smr, bit_alloc, adb, fr_ps);

}

/***************************** Layer II ********************************/

void II_main_bit_allocation(perm_smr, scfsi, bit_alloc, adb, fr_ps) double FAR perm_smr[2][SBLIMIT]; unsigned int scfsi[2][SBLIMIT]; unsigned int bit_alloc[2][SBLIMIT]; int *adb; frame_params *fr_ps; {

  int  noisy_sbs, nn;
  int  mode, mode_ext, lay;
  int  rq_db, av_db = *adb;

  if((mode = fr_ps->actual_mode) == MPG_MD_JOINT_STEREO) {
    fr_ps->header->mode = MPG_MD_STEREO;
    fr_ps->header->mode_ext = 0;
    fr_ps->jsbound = fr_ps->sblimit;
    if((rq_db=II_bits_for_nonoise(perm_smr, scfsi, fr_ps)) > *adb) {
      fr_ps->header->mode = MPG_MD_JOINT_STEREO;
      mode_ext = 4;           /* 3 is least severe reduction */
      lay = fr_ps->header->lay;
      do {
        --mode_ext;
        fr_ps->jsbound = js_bound(lay, mode_ext);
        rq_db = II_bits_for_nonoise(perm_smr, scfsi, fr_ps);
      } while( (rq_db > *adb) && (mode_ext > 0));
      fr_ps->header->mode_ext = mode_ext;
    }    /* well we either eliminated noisy sbs or mode_ext == 0 */
  }
  noisy_sbs = II_a_bit_allocation(perm_smr, scfsi, bit_alloc, adb, fr_ps);

}

/************************************************************************

  • I_a_bit_allocation (Layer I)
  • II_a_bit_allocation (Layer II)
  • PURPOSE:Adds bits to the subbands with the lowest mask-to-noise
  • ratios, until the maximum number of bits for the subband has
  • been allocated.
  • SEMANTICS:
  • 1. Find the subband and channel with the smallest MNR (#min_sb#,
  • and #min_ch#)
  • 2. Calculate the increase in bits needed if we increase the bit
  • allocation to the next higher level
  • 3. If there are enough bits available for increasing the resolution
  • in #min_sb#, #min_ch#, and the subband has not yet reached its
  • maximum allocation, update the bit allocation, MNR, and bits
   available accordingly
  • 4. Repeat until there are no more bits left, or no more available
  • subbands. (A subband is still available until the maximum
  • number of bits for the subband has been allocated, or there
  • aren't enough bits to go to the next higher resolution in the
   subband.)
                                                                                                                                                • /

int I_a_bit_allocation(perm_smr, bit_alloc, adb, fr_ps) /* return noisy sbs */ double FAR perm_smr[2][SBLIMIT]; unsigned int bit_alloc[2][SBLIMIT]; int *adb; frame_params *fr_ps; {

  int i, k, smpl_bits, scale_bits, min_sb, min_ch, oth_ch;
  int bspl, bscf, ad, noisy_sbs, done = 0, bbal ;
  double mnr[2][SBLIMIT], small;
  char used[2][SBLIMIT];
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;

static char init= 0; static int banc=32, berr=0;

  if (!init) {
     init = 1;
     if (fr_ps->header->error_protection) berr = 16;  /* added 92-08-11 shn */
  }
  bbal = 4 * ( (jsbound * stereo) + (SBLIMIT-jsbound) );
  *adb -= bbal + berr + banc;
  ad= *adb;

  for (i=0;i<SBLIMIT;i++) for (k=0;k<stereo;k++) {
    mnr[k][i]=snr[0]-perm_smr[k][i];
    bit_alloc[k][i] = 0;
    used[k][i] = 0;
  }
  bspl = bscf = 0;

  do  {
    /* locate the subband with minimum SMR */
    small = mnr[0][0]+1;    min_sb = -1; min_ch = -1;
    for (i=0;i<SBLIMIT;i++) for (k=0;k<stereo;k++)
      /* go on only if there are bits left */
      if (used[k][i] != 2 && small > mnr[k][i]) {
        small = mnr[k][i];
        min_sb = i;  min_ch = k;
      }
    if(min_sb > -1) {   /* there was something to find */
      /* first step of bit allocation is biggest */
      if (used[min_ch][min_sb])  { smpl_bits = SCALE_BLOCK; scale_bits = 0; }
      else                       { smpl_bits = 24; scale_bits = 6; }
      if(min_sb >= jsbound)        scale_bits *= stereo;

      /* check to see enough bits were available for */
      /* increasing resolution in the minimum band */

      if (ad >= bspl + bscf + scale_bits + smpl_bits) {
        bspl += smpl_bits; /* bit for subband sample */
        bscf += scale_bits; /* bit for scale factor */
        bit_alloc[min_ch][min_sb]++;
        used[min_ch][min_sb] = 1; /* subband has bits */
        mnr[min_ch][min_sb] = -perm_smr[min_ch][min_sb]
                              + snr[bit_alloc[min_ch][min_sb]];
        /* Check if subband has been fully allocated max bits */
        if (bit_alloc[min_ch][min_sb] ==  14 ) used[min_ch][min_sb] = 2;
      }
      else            /* no room to improve this band */
        used[min_ch][min_sb] = 2; /*   for allocation anymore */
      if(stereo == 2 && min_sb >= jsbound) {
        oth_ch = 1-min_ch;  /* joint-st : fix other ch */
        bit_alloc[oth_ch][min_sb] = bit_alloc[min_ch][min_sb];
        used[oth_ch][min_sb] = used[min_ch][min_sb];
        mnr[oth_ch][min_sb] = -perm_smr[oth_ch][min_sb]
                              + snr[bit_alloc[oth_ch][min_sb]];
      }
    }
  } while(min_sb>-1);     /* i.e. still some sub-bands to find */
  /* Calculate the number of bits left, add on to pointed var */
  ad -= bspl+bscf;
  *adb = ad;
  /* see how many channels are noisy */
  noisy_sbs = 0; small = mnr[0][0];
  for(k=0; k<stereo; ++k) {
    for(i = 0; i< SBLIMIT; ++i) {
      if(mnr[k][i] < NOISY_MIN_MNR)   ++noisy_sbs;
      if(small > mnr[k][i])           small = mnr[k][i];
    }
  }
  return noisy_sbs;

}

/***************************** Layer II ********************************/

int II_a_bit_allocation(perm_smr, scfsi, bit_alloc, adb, fr_ps) double FAR perm_smr[2][SBLIMIT]; unsigned int scfsi[2][SBLIMIT]; unsigned int bit_alloc[2][SBLIMIT]; int *adb; frame_params *fr_ps; {

  int i, min_ch, min_sb, oth_ch, k, increment, scale, seli, ba;
  int bspl, bscf, bsel, ad, noisy_sbs, bbal=0;
  double mnr[2][SBLIMIT], small;
  char used[2][SBLIMIT];
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;

static char init= 0; static int banc=32, berr=0; static int sfsPerScfsi[] = { 3,2,1,2 }; /* lookup # sfs per scfsi */

  if (!init) { 
      init = 1;  
      if (fr_ps->header->error_protection) berr=16; /* added 92-08-11 shn */
  }
  for (i=0; i<jsbound; ++i)
    bbal += stereo * (*alloc)[i][0].bits;
  for (i=jsbound; i<sblimit; ++i)
    bbal += (*alloc)[i][0].bits;
  *adb -= bbal + berr + banc;
  ad = *adb;

  for (i=0;i<sblimit;i++) for (k=0;k<stereo;k++) {
    mnr[k][i]=snr[0]-perm_smr[k][i];
    bit_alloc[k][i] = 0;
    used[k][i] = 0;
  }
  bspl = bscf = bsel = 0;

  do  {
    /* locate the subband with minimum SMR */
    small = 999999.0; min_sb = -1; min_ch = -1;
    for (i=0;i<sblimit;i++) for(k=0;k<stereo;++k)
      if (used[k][i]  != 2 && small > mnr[k][i]) {
        small = mnr[k][i];
        min_sb = i;  min_ch = k;
    }
    if(min_sb > -1) {   /* there was something to find */
      /* find increase in bit allocation in subband [min] */
      increment = SCALE_BLOCK * ((*alloc)[min_sb][bit_alloc[min_ch][min_sb]+1].group *
                       (*alloc)[min_sb][bit_alloc[min_ch][min_sb]+1].bits);
      if (used[min_ch][min_sb])
        increment -= SCALE_BLOCK * ((*alloc)[min_sb][bit_alloc[min_ch][min_sb]].group*
                          (*alloc)[min_sb][bit_alloc[min_ch][min_sb]].bits);

      /* scale factor bits required for subband [min] */
      oth_ch = 1 - min_ch;    /* above js bound, need both chans */
      if (used[min_ch][min_sb]) scale = seli = 0;
      else {          /* this channel had no bits or scfs before */
        seli = 2;
        scale = 6 * sfsPerScfsi[scfsi[min_ch][min_sb]];
        if(stereo == 2 && min_sb >= jsbound) {
          /* each new js sb has L+R scfsis */
          seli += 2;
          scale += 6 * sfsPerScfsi[scfsi[oth_ch][min_sb]];
        }
      }
      /* check to see enough bits were available for */
      /* increasing resolution in the minimum band */
      if (ad >= bspl + bscf + bsel + seli + scale + increment) {
        ba = ++bit_alloc[min_ch][min_sb]; /* next up alloc */
        bspl += increment;  /* bits for subband sample */
        bscf += scale;      /* bits for scale factor */
        bsel += seli;       /* bits for scfsi code */
        used[min_ch][min_sb] = 1; /* subband has bits */
        mnr[min_ch][min_sb] = -perm_smr[min_ch][min_sb] +
                              snr[(*alloc)[min_sb][ba].quant+1];
        /* Check if subband has been fully allocated max bits */
        if (ba >= (1<<(*alloc)[min_sb][0].bits)-1) used[min_ch][min_sb] = 2;
      }
      else used[min_ch][min_sb] = 2; /* can't increase this alloc */
      if(min_sb >= jsbound && stereo == 2) {
        /* above jsbound, alloc applies L+R */
        ba = bit_alloc[oth_ch][min_sb] = bit_alloc[min_ch][min_sb];
        used[oth_ch][min_sb] = used[min_ch][min_sb];
        mnr[oth_ch][min_sb] = -perm_smr[oth_ch][min_sb] +
                              snr[(*alloc)[min_sb][ba].quant+1];
      }
    }
  } while(min_sb > -1);   /* until could find no channel */
  /* Calculate the number of bits left */
  ad -= bspl+bscf+bsel;   *adb = ad;
  for (i=sblimit;i<SBLIMIT;i++) for (k=0;k<stereo;k++) bit_alloc[k][i]=0;

  noisy_sbs = 0;  small = mnr[0][0];      /* calc worst noise in case */
  for(k=0;k<stereo;++k) {
    for (i=0;i<sblimit;i++) {
      if (small > mnr[k][i]) small = mnr[k][i];
      if(mnr[k][i] < NOISY_MIN_MNR) ++noisy_sbs; /* noise is not masked */
    }
  }
  return noisy_sbs;

}

/************************************************************************

  • I_subband_quantization (Layer I)
  • II_subband_quantization (Layer II)
  • PURPOSE:Quantizes subband samples to appropriate number of bits
  • SEMANTICS: Subband samples are divided by their scalefactors, which
makes the quantization more efficient. The scaled samples are
  • quantized by the function a*x+b, where a and b are functions of
  • the number of quantization levels. The result is then truncated
  • to the appropriate number of bits and the MSB is inverted.
  • Note that for fractional 2's complement, inverting the MSB for a
negative number x is equivalent to adding 1 to it.
                                                                                                                                                • /

static double a[17] = {

 0.750000000, 0.625000000, 0.875000000, 0.562500000, 0.937500000,
 0.968750000, 0.984375000, 0.992187500, 0.996093750, 0.998046875,
 0.999023438, 0.999511719, 0.999755859, 0.999877930, 0.999938965,
 0.999969482, 0.999984741 };

static double b[17] = {

 -0.250000000, -0.375000000, -0.125000000, -0.437500000, -0.062500000,
 -0.031250000, -0.015625000, -0.007812500, -0.003906250, -0.001953125,
 -0.000976563, -0.000488281, -0.000244141, -0.000122070, -0.000061035,
 -0.000030518, -0.000015259 };

void I_subband_quantization(scalar, sb_samples, j_scale, j_samps,

                           bit_alloc, sbband, fr_ps)

unsigned int scalar[2][3][SBLIMIT]; double FAR sb_samples[2][3][SCALE_BLOCK][SBLIMIT]; unsigned int j_scale[3][SBLIMIT]; double FAR j_samps[3][SCALE_BLOCK][SBLIMIT]; /* L+R for j-stereo if necess */ unsigned int bit_alloc[2][SBLIMIT]; unsigned int FAR sbband[2][3][SCALE_BLOCK][SBLIMIT]; frame_params *fr_ps; {

  int i, j, k, n, sig;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  double d;

static char init = 0;

  if (!init) {
    init = 1;
    /* rearrange quantization coef to correspond to layer I table */
    a[1] = a[2]; b[1] = b[2];
    for (i=2;i<15;i++) { a[i] = a[i+2]; b[i] = b[i+2]; }
  }
  for (j=0;j<SCALE_BLOCK;j++) for (i=0;i<SBLIMIT;i++)
    for (k=0;k<((i<jsbound)?stereo:1);k++)
      if (bit_alloc[k][i]) {
        /* for joint stereo mode, have to construct a single subband stream
           for the js channels.  At present, we calculate a set of mono
           subband samples and pass them through the scaling system to
           generate an alternate normalised sample stream.

           Could normalise both streams (divide by their scfs), then average
           them.  In bad conditions, this could give rise to spurious
           cancellations.  Instead, we could just select the sb stream from
           the larger channel (higher scf), in which case _that_ channel
           would be 'properly' reconstructed, and the mate would just be a
           scaled version.  Spec recommends averaging the two (unnormalised)
           subband channels, then normalising this new signal without
           actually sending this scale factor... This means looking ahead.
        */
        if(stereo == 2 && i>=jsbound)
          /* use the joint data passed in */
          d = j_samps[0][j][i] / multiple[j_scale[0][i]];
        else
          d = sb_samples[k][0][j][i] / multiple[scalar[k][0][i]];
        /* scale and quantize floating point sample */
        n = bit_alloc[k][i];
        d = d * a[n-1] + b[n-1];
        /* extract MSB N-1 bits from the floating point sample */
        if (d >= 0) sig = 1;
        else { sig = 0; d += 1.0; }
        sbband[k][0][j][i] = (unsigned int) (d * (double) (1L<<n));
        /* tag the inverted sign bit to sbband at position N */
        if (sig) sbband[k][0][j][i] |= 1<<n;
      }

}

/***************************** Layer II ********************************/

void II_subband_quantization(scalar, sb_samples, j_scale, j_samps,

                            bit_alloc, sbband, fr_ps)

unsigned int scalar[2][3][SBLIMIT]; double FAR sb_samples[2][3][SCALE_BLOCK][SBLIMIT]; unsigned int j_scale[3][SBLIMIT]; double FAR j_samps[3][SCALE_BLOCK][SBLIMIT]; unsigned int bit_alloc[2][SBLIMIT]; unsigned int FAR sbband[2][3][SCALE_BLOCK][SBLIMIT]; frame_params *fr_ps; {

  int i, j, k, s, n, qnt, sig;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  unsigned int stps;
  double d;
  al_table *alloc = fr_ps->alloc;
  for (s=0;s<3;s++)
    for (j=0;j<SCALE_BLOCK;j++)
      for (i=0;i<sblimit;i++)
        for (k=0;k<((i<jsbound)?stereo:1);k++)
          if (bit_alloc[k][i]) {
            /* scale and quantize floating point sample */
            if(stereo == 2 && i>=jsbound)       /* use j-stereo samples */
              d = j_samps[s][j][i] / multiple[j_scale[s][i]];
            else
              d = sb_samples[k][s][j][i] / multiple[scalar[k][s][i]];
            if (mod(d) > 1.0)
              printf("Not scaled properly %d %d %d %d\n",k,s,j,i);
            qnt = (*alloc)[i][bit_alloc[k][i]].quant;
            d = d * a[qnt] + b[qnt];
            /* extract MSB N-1 bits from the floating point sample */
            if (d >= 0) sig = 1;
            else { sig = 0; d += 1.0; }
            n = 0;
  1. ifndef MS_DOS
            stps = (*alloc)[i][bit_alloc[k][i]].steps;
            while ((1L<<n) < stps) n++;
  1. else
            while  ( ( (unsigned long)(1L<<(long)n) <
                      ((unsigned long) ((*alloc)[i][bit_alloc[k][i]].steps)
                       & 0xffff
                       )
                      ) && ( n <16)
                    ) n++;
  1. endif
            n--;
            sbband[k][s][j][i] = (unsigned int) (d * (double) (1L<<n));
            /* tag the inverted sign bit to sbband at position N */
            /* The bit inversion is a must for grouping with 3,5,9 steps
               so it is done for all subbands */
            if (sig) sbband[k][s][j][i] |= 1<<n;
          }
          for (s=0;s<3;s++)
            for (j=sblimit;j<SBLIMIT;j++)
              for (i=0;i<SCALE_BLOCK;i++) for (k=0;k<stereo;k++) sbband[k][s][i][j] = 0;

}

/*************************************************************************

  • I_encode_bit_alloc (Layer I)
  • II_encode_bit_alloc (Layer II)
  • PURPOSE:Writes bit allocation information onto bitstream
  • Layer I uses 4 bits/subband for bit allocation information,
  • and Layer II uses 4,3,2, or 0 bits depending on the
  • quantization table used.
                                                                                                                                                • /

void I_encode_bit_alloc(bit_alloc, fr_ps, bs) unsigned int bit_alloc[2][SBLIMIT]; frame_params *fr_ps; Bit_stream_struc *bs; {

  int i,k;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;

  for (i=0;i<SBLIMIT;i++)
    for (k=0;k<((i<jsbound)?stereo:1);k++) putbits(bs,bit_alloc[k][i],4);

}

/***************************** Layer II ********************************/

void II_encode_bit_alloc(bit_alloc, fr_ps, bs) unsigned int bit_alloc[2][SBLIMIT]; frame_params *fr_ps; Bit_stream_struc *bs; {

  int i,k;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;

  for (i=0;i<sblimit;i++)
    for (k=0;k<((i<jsbound)?stereo:1);k++)
      putbits(bs,bit_alloc[k][i],(*alloc)[i][0].bits);

}

/************************************************************************

  • I_sample_encoding (Layer I)
  • II_sample_encoding (Layer II)
  • PURPOSE:Put one frame of subband samples on to the bitstream
  • SEMANTICS: The number of bits allocated per sample is read from
  • the bit allocation information #bit_alloc#. Layer 2
  • supports writing grouped samples for quantization steps
  • that are not a power of 2.
                                                                                                                                                • /

void I_sample_encoding(sbband, bit_alloc, fr_ps, bs) unsigned int FAR sbband[2][3][SCALE_BLOCK][SBLIMIT]; unsigned int bit_alloc[2][SBLIMIT]; frame_params *fr_ps; Bit_stream_struc *bs; {

  int i,j,k;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;

  for(j=0;j<SCALE_BLOCK;j++) {
    for(i=0;i<SBLIMIT;i++)
      for(k=0;k<((i<jsbound)?stereo:1);k++)
        if(bit_alloc[k][i]) putbits(bs,sbband[k][0][j][i],bit_alloc[k][i]+1);
  }

}

/***************************** Layer II ********************************/

void II_sample_encoding(sbband, bit_alloc, fr_ps, bs) unsigned int FAR sbband[2][3][SCALE_BLOCK][SBLIMIT]; unsigned int bit_alloc[2][SBLIMIT]; frame_params *fr_ps; Bit_stream_struc *bs; {

  unsigned int temp;
  unsigned int i,j,k,s,x,y;
  int stereo  = fr_ps->stereo;
  int sblimit = fr_ps->sblimit;
  int jsbound = fr_ps->jsbound;
  al_table *alloc = fr_ps->alloc;

  for (s=0;s<3;s++)
    for (j=0;j<SCALE_BLOCK;j+=3)
      for (i=0;i<sblimit;i++)
        for (k=0;k<((i<jsbound)?stereo:1);k++)
          if (bit_alloc[k][i]) {
            if ((*alloc)[i][bit_alloc[k][i]].group == 3) {
              for (x=0;x<3;x++) putbits(bs,sbband[k][s][j+x][i],
                                        (*alloc)[i][bit_alloc[k][i]].bits);
            }
            else {
              y =(*alloc)[i][bit_alloc[k][i]].steps;
              temp = sbband[k][s][j][i] +
                     sbband[k][s][j+1][i] * y +
                     sbband[k][s][j+2][i] * y * y;
              putbits(bs,temp,(*alloc)[i][bit_alloc[k][i]].bits);
            }
          }

}

/************************************************************************

  • encode_CRC
                                                                                                                                                • /

void encode_CRC(crc, bs) unsigned int crc; Bit_stream_struc *bs; {

  putbits(bs, crc, 16);

}








�ノ、コー┠ヲ橋淀キ灸ヲヲ、ヲチヲク・惡シハ棣ウ嵯峭槐丼 ュカョヲエ插ヲシ-ーオ況ヲ・ヘ 唆ハ悚ヲウ勁ォケ┏オ楮垪ノ 慄ェ・垪ノ 3 ェキ匣棣ウ嵯峭槐丼ト恪サ、骨. 灸ヲヲ、垪ノ 4 砂、骨棣ウ嵯峭槐丼. ┨灸ヲヲ、垪ノ 4.2 ュヲハオ姦ヲヲ�棣ウ峭槐丼. 興璃ヲウュ括ヘ チ。コノートョハ涵ハチヲク・








ないです