• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            kenlistian

            厚積薄發(fā). 勤為槳,思為帆

               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理 ::
              73 隨筆 :: 4 文章 :: 22 評論 :: 0 Trackbacks


            幾個格式細(xì)節(jié)備記(混)


            typedef struct  _MediaType {
                GUID      majortype; 
                GUID      subtype;
                BOOL      bFixedSizeSamples;
                BOOL      bTemporalCompression;
                ULONG     lSampleSize;
                GUID      formattype;
                IUnknown  *pUnk;                  //not use
                ULONG     cbFormat;
                BYTE *pbFormat;
            } AM_MEDIA_TYPE;

            主要有
               majortype  媒體類型大致說明
               subtype    更一步的細(xì)致說明
               formattype 
                  包括有以下:其對應(yīng)的不同的數(shù)據(jù)格式
                   FORMAT_None
                   FORMAT_DvInfo
                   FORMAT_MPEGVideo
                   FORMAT_MPEG2Video
                   FORMAT_VideoInfo
                   FORMAT_VideoInfo2 
                   FORMAT_WaveFormatEx  
                   GUID_NULL

              cbForamt成員指定了格式塊pbFormat的大小.
              pbFormat指針指向格式子塊。
                        pbFormat是一個void*的指針,因為格式塊會因為媒體類型
                        的不同而有不同的指向。如音頻填充的是WAVEFORMATEX結(jié)構(gòu)
                 數(shù)據(jù).

                 可以從中取出傳來的數(shù)據(jù)格式。
                

             

            //TWaveFormatEx 結(jié)構(gòu):
            TWaveFormatEx = packed record
              wFormatTag: Word;       {指定格式類型; 默認(rèn) WAVE_FORMAT_PCM = 1;}
              nChannels: Word;        {指出波形數(shù)據(jù)的通道數(shù); 單聲道為 1, 立體聲為 2}
              nSamplesPerSec: DWORD;  {指定樣本速率(每秒的樣本數(shù))}一般為8000
              nAvgBytesPerSec: DWORD; {指定數(shù)據(jù)傳輸?shù)钠骄俾?每秒的字節(jié)數(shù))} 每秒的字節(jié)數(shù):
              nBlockAlign: Word;      {指定塊對齊(單位字節(jié)), 塊對齊是數(shù)據(jù)的最小單位}
              wBitsPerSample: Word;   {采樣大小(字節(jié))}每個樣本的BIT數(shù)目,一般為16
              cbSize: Word;           {應(yīng)該是該結(jié)構(gòu)的大小}
            end;

            nChannels       :   對于pcm,其nchannels不超過2,對于非pcm格式,則超過2.
            nSamplesPerSec  :   通常為8kHz, 11.025 kHz, 22.05 kHz, and 44.1 kHz.
            nAvgBytesPerSec :   每秒傳送字節(jié)數(shù) = nSamplesPerSec * nBlockAlign
            nBlockAlign     :   對齊字節(jié)  = nChannels * wBitsPerSample / 8
                                就是表示一個樣本的最小字節(jié).
            wBitsPerSample  :   在格式默認(rèn)情況下,一般為8,16,表示的是樣本的bit 數(shù)

            對于一個8位,11k傳輸?shù)牧Ⅲw聲則
            nChannels  = 2
            nSamplesPerSec(每秒的樣本數(shù)) = 11025  就是取樣數(shù)
            nBlockAlign  = 2 * 8 / 8= 2           對齊字節(jié),最小樣本字節(jié)數(shù)
            nAvgBytesPerSec = 11025 *  2 = 22050
            wBitsPerSample  = 8
             

             下面的圖列清楚從另一個方面表達(dá)樣本
             樣本1  樣本2 ...n
            8位單聲道 0聲道 0聲道
            8位立體聲 0聲道L         1聲道R  0聲道L  1聲R道
            16位單聲道 0聲道(低字節(jié))    0聲道(高字節(jié)) 0聲道(低字節(jié))    0聲道(高字節(jié))
            16位立體聲

            0聲道(低字節(jié))0聲道(高字節(jié))1聲道(低) 1聲道(高) 

            同左

                                                                                                                                 
                                                    
                                               
            ---------

            waveform-audio 緩存格式     
              typedef   struct   {    
                      LPSTR     lpData;           //內(nèi)存指針,放置音頻pcm樣本數(shù)據(jù)
                      DWORD     dwBufferLength;   //長度    
                      DWORD     dwBytesRecorded;  //已錄音的字節(jié)長度  
                      DWORD     dwUser;    
                      DWORD     dwFlags;    
                      DWORD     dwLoops;           //循環(huán)次數(shù)  
                      struct   wavehdr_tag* lpNext; //保留    
                      DWORD     reserved;           //保留
              }   WAVEHDR; 
             
              其中l(wèi)pdata 即為pcm格式樣本數(shù)據(jù)。
             
            采樣大小為8位,則采樣的動態(tài)范圍為20*log(256)分貝=48db。
            樣本大小為16位,則采樣動態(tài)范圍為20*log(65536)大約是96分貝

            振幅大小:   20*log(A1/A2)分貝,A1,A2為兩個聲音的振幅。
            則對于的音頻:
                      8位       20 * lg( lpData[0] /256)
               16位      20 * lg( lpData[0]--lpData[1] / 65536)
             考慮到單雙道,還需要相應(yīng)取出左右聲道的值。
             考慮到lg求值為負(fù)48至0之間,則在實際轉(zhuǎn)換中需要+48or96.


            樣本大小  數(shù)據(jù)格式      最大值  最小值
            8位PCM    unsigned int   256     0
            16位PCM   int            32767  -32767

             8位音頻是unsigned 存放波形,取振幅要-127.
             而16位因其存放為int 類型,直接套用公式.
             

            audiometer左右聲道音量探測程序(參考代碼(delphi版

             

            posted on 2009-01-05 14:16 kenlistian 閱讀(804) 評論(0)  編輯 收藏 引用 所屬分類: directx
            久久精品中文字幕久久| 中文字幕精品久久| 国产精品一区二区久久精品无码| 国产亚洲婷婷香蕉久久精品| 88久久精品无码一区二区毛片| 久久精品国产亚洲精品| 色综合久久无码中文字幕| 91麻豆精品国产91久久久久久| 模特私拍国产精品久久| 青青国产成人久久91网| 伊人久久大香线蕉综合Av | 亚洲狠狠婷婷综合久久久久| 久久66热人妻偷产精品9| 久久久久亚洲精品中文字幕| 国产成人久久精品激情| 中文精品99久久国产| 久久99亚洲综合精品首页| 久久无码人妻一区二区三区| 欧美麻豆久久久久久中文| 久久99中文字幕久久| 久久久亚洲欧洲日产国码aⅴ| 日韩欧美亚洲综合久久影院Ds| 久久91精品国产91久久小草| 国内精品久久久久久99蜜桃| 欧美一区二区久久精品| 久久免费大片| 色偷偷91久久综合噜噜噜噜| 国产精品VIDEOSSEX久久发布 | 久久九九久精品国产免费直播| 久久成人国产精品一区二区| 国产精品欧美亚洲韩国日本久久| 久久九九有精品国产23百花影院| 精品久久久久久中文字幕人妻最新| 久久天天躁夜夜躁狠狠躁2022| 久久91精品国产91久| 久久国产劲爆AV内射—百度| 丁香色欲久久久久久综合网| 亚洲AV无码成人网站久久精品大| 伊人久久大香线蕉综合影院首页| 人妻精品久久无码区| 久久99久久99小草精品免视看|