亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? monkey.pas

?? Lossless Audio 縮解壓 window
?? PAS
字號(hào):
{ *************************************************************************** }
{                                                                             }
{ Audio Tools Library (Freeware)                                              }
{ Class TMonkey - for manipulating with Monkey's Audio file information       }
{                                                                             }
{ Uses:                                                                       }
{   - Class TID3v1                                                            }
{   - Class TID3v2                                                            }
{   - Class TAPEtag                                                           }
{                                                                             }
{ Copyright (c) 2001,2002 by Jurgen Faul                                      }
{ E-mail: jfaul@gmx.de                                                        }
{ http://jfaul.de/atl                                                         }
{                                                                             }
{ Version 1.2 (21 April 2002)                                                 }
{   - Class TID3v2: support for ID3v2 tags                                    }
{   - Class TAPEtag: support for APE tags                                     }
{                                                                             }
{ Version 1.1 (11 September 2001)                                             }
{   - Added property Samples                                                  }
{   - Removed WAV header information                                          }
{                                                                             }
{ Version 1.0 (7 September 2001)                                              }
{   - Support for Monkey's Audio files                                        }
{   - Class TID3v1: reading & writing support for ID3v1.x tags                }
{                                                                             }
{ *************************************************************************** }

unit Monkey;

interface

uses
  Classes, SysUtils, ID3v1, ID3v2, APEtag;

const
  { Compression level codes }
  MONKEY_COMPRESSION_FAST = 1000;                               { Fast (poor) }
  MONKEY_COMPRESSION_NORMAL = 2000;                           { Normal (good) }
  MONKEY_COMPRESSION_HIGH = 3000;                          { High (very good) }
  MONKEY_COMPRESSION_EXTRA_HIGH = 4000;                   { Extra high (best) }

  { Compression level names }
  MONKEY_COMPRESSION: array [0..4] of string =
    ('Unknown', 'Fast', 'Normal', 'High', 'Extra High');

  { Format flags }
  MONKEY_FLAG_8_BIT = 1;                                        { Audio 8-bit }
  MONKEY_FLAG_CRC = 2;                            { New CRC32 error detection }
  MONKEY_FLAG_PEAK_LEVEL = 4;                             { Peak level stored }
  MONKEY_FLAG_24_BIT = 8;                                      { Audio 24-bit }
  MONKEY_FLAG_SEEK_ELEMENTS = 16;            { Number of seek elements stored }
  MONKEY_FLAG_WAV_NOT_STORED = 32;                    { WAV header not stored }

  { Channel mode names }
  MONKEY_MODE: array [0..2] of string =
    ('Unknown', 'Mono', 'Stereo');

type
  { Real structure of Monkey's Audio header }
  MonkeyHeader = record
    ID: array [1..4] of Char;                                 { Always "MAC " }
    VersionID: Word;                    { Version number * 1000 (3.91 = 3910) }
    CompressionID: Word;                             { Compression level code }
    Flags: Word;                                           { Any format flags }
    Channels: Word;                                      { Number of channels }
    SampleRate: Integer;                                   { Sample rate (hz) }
    HeaderBytes: Integer;                 { Header length (without header ID) }
    TerminatingBytes: Integer;                                { Extended data }
    Frames: Integer;                           { Number of frames in the file }
    FinalSamples: Integer;             { Number of samples in the final frame }
    PeakLevel: Integer;                              { Peak level (if stored) }
    SeekElements: Integer;              { Number of seek elements (if stored) }
  end;

  { Class TMonkey }
  TMonkey = class(TObject)
    private
      { Private declarations }
      FFileLength: Integer;
      FHeader: MonkeyHeader;
      FID3v1: TID3v1;
      FID3v2: TID3v2;
      FAPEtag: TAPEtag;
      procedure FResetData;
      function FGetValid: Boolean;
      function FGetVersion: string;
      function FGetCompression: string;
      function FGetBits: Byte;
      function FGetChannelMode: string;
      function FGetPeak: Double;
      function FGetSamplesPerFrame: Integer;
      function FGetSamples: Integer;
      function FGetDuration: Double;
      function FGetRatio: Double;
    public
      { Public declarations }
      constructor Create;                                     { Create object }
      destructor Destroy; override;                          { Destroy object }
      function ReadFromFile(const FileName: string): Boolean;   { Load header }
      property FileLength: Integer read FFileLength;    { File length (bytes) }
      property Header: MonkeyHeader read FHeader;     { Monkey's Audio header }
      property ID3v1: TID3v1 read FID3v1;                    { ID3v1 tag data }
      property ID3v2: TID3v2 read FID3v2;                    { ID3v2 tag data }
      property APEtag: TAPEtag read FAPEtag;                   { APE tag data }
      property Valid: Boolean read FGetValid;          { True if header valid }
      property Version: string read FGetVersion;            { Encoder version }
      property Compression: string read FGetCompression;  { Compression level }
      property Bits: Byte read FGetBits;                    { Bits per sample }
      property ChannelMode: string read FGetChannelMode;       { Channel mode }
      property Peak: Double read FGetPeak;             { Peak level ratio (%) }
      property Samples: Integer read FGetSamples;         { Number of samples }
      property Duration: Double read FGetDuration;       { Duration (seconds) }
      property Ratio: Double read FGetRatio;          { Compression ratio (%) }
  end;

implementation

{ ********************** Private functions & procedures ********************* }

procedure TMonkey.FResetData;
begin
  { Reset data }
  FFileLength := 0;
  FillChar(FHeader, SizeOf(FHeader), 0);
  FID3v1.ResetData;
  FID3v2.ResetData;
  FAPEtag.ResetData;
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetValid: Boolean;
begin
  { Check for right Monkey's Audio file data }
  Result :=
    (FHeader.ID = 'MAC ') and
    (FHeader.SampleRate > 0) and
    (FHeader.Channels > 0);
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetVersion: string;
begin
  { Get encoder version }
  if FHeader.VersionID = 0 then Result := ''
  else Str(FHeader.VersionID / 1000 : 4 : 2, Result);
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetCompression: string;
begin
  { Get compression level }
  Result := MONKEY_COMPRESSION[FHeader.CompressionID div 1000];
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetBits: Byte;
begin
  { Get number of bits per sample }
  if FGetValid then
  begin
    Result := 16;
    if FHeader.Flags and MONKEY_FLAG_8_BIT > 0 then Result := 8;
    if FHeader.Flags and MONKEY_FLAG_24_BIT > 0 then Result := 24;
  end
  else
    Result := 0;
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetChannelMode: string;
begin
  { Get channel mode }
  Result := MONKEY_MODE[FHeader.Channels];
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetPeak: Double;
begin
  { Get peak level ratio }
  if (FGetValid) and (FHeader.Flags and MONKEY_FLAG_PEAK_LEVEL > 0) then
    case FGetBits of
      16: Result := FHeader.PeakLevel / 32768 * 100;
      24: Result := FHeader.PeakLevel / 8388608 * 100;
      else Result := FHeader.PeakLevel / 128 * 100;
    end
  else
    Result := 0;
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetSamplesPerFrame: Integer;
begin
  { Get number of samples in a frame }
  if FGetValid then
    if (FHeader.VersionID >= 3900) or
      ((FHeader.VersionID >= 3800) and
      (FHeader.CompressionID = MONKEY_COMPRESSION_EXTRA_HIGH)) then
      Result := 73728
    else
      Result := 9216
  else
    Result := 0;
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetSamples: Integer;
begin
  { Get number of samples }
  if FGetValid then
    Result := (FHeader.Frames - 1) * FGetSamplesPerFrame + FHeader.FinalSamples
  else
    Result := 0;
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetDuration: Double;
begin
  { Get song duration }
  if FGetValid then Result := FGetSamples / FHeader.SampleRate
  else Result := 0;
end;

{ --------------------------------------------------------------------------- }

function TMonkey.FGetRatio: Double;
begin
  { Get compression ratio }
  if FGetValid then
    Result := FFileLength /
      (FGetSamples * FHeader.Channels * FGetBits / 8 + 44) * 100
  else
    Result := 0;
end;

{ ********************** Public functions & procedures ********************** }

constructor TMonkey.Create;
begin
  { Create object }
  inherited;
  FID3v1 := TID3v1.Create;
  FID3v2 := TID3v2.Create;
  FAPEtag := TAPEtag.Create;
  FResetData;
end;

{ --------------------------------------------------------------------------- }

destructor TMonkey.Destroy;
begin
  { Destroy object }
  FID3v1.Free;
  FID3v2.Free;
  FAPEtag.Free;
  inherited;
end;

{ --------------------------------------------------------------------------- }

function TMonkey.ReadFromFile(const FileName: string): Boolean;
var
  SourceFile: file;
begin
  try
    { Reset data and search for file tag }
    FResetData;
    if (not FID3v1.ReadFromFile(FileName)) or
      (not FID3v2.ReadFromFile(FileName)) or
      (not FAPEtag.ReadFromFile(FileName)) then raise Exception.Create('');
    { Set read-access, open file and get file length }
    AssignFile(SourceFile, FileName);
    FileMode := 0;
    Reset(SourceFile, 1);
    FFileLength := FileSize(SourceFile);
    { Read Monkey's Audio header data }
    Seek(SourceFile, ID3v2.Size);
    BlockRead(SourceFile, FHeader, SizeOf(FHeader));
    if FHeader.Flags and MONKEY_FLAG_PEAK_LEVEL = 0 then
      FHeader.PeakLevel := 0;
    if FHeader.Flags and MONKEY_FLAG_SEEK_ELEMENTS = 0 then
      FHeader.SeekElements := 0;
    CloseFile(SourceFile);
    Result := true;
  except
    FResetData;
    Result := false;
  end;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品久久艾草纯爱| 日韩vs国产vs欧美| 欧美人妇做爰xxxⅹ性高电影| 极品美女销魂一区二区三区免费| 在线看一区二区| 精品无码三级在线观看视频| 精品国产一区二区在线观看| 日本道精品一区二区三区| 有坂深雪av一区二区精品| 2019国产精品| 欧美男男青年gay1069videost| 亚洲国产精品久久人人爱| 欧美激情一区不卡| 精品国产一区二区三区忘忧草| 国产麻豆91精品| 日日摸夜夜添夜夜添亚洲女人| 亚洲美女淫视频| 欧美伦理视频网站| 日本二三区不卡| 99久久777色| 日韩在线一二三区| 亚洲综合久久久| 国产精品成人一区二区艾草| 亚洲精品一区二区三区四区高清 | 一级日本不卡的影视| 2020国产精品| 日本久久电影网| 日韩国产高清影视| 亚洲国产高清不卡| 91精品福利在线| 色成人在线视频| 色综合欧美在线视频区| 日韩综合在线视频| 丝袜脚交一区二区| 国产视频一区在线播放| 色吧成人激情小说| 久久国产精品免费| 久久99精品国产麻豆婷婷 | 7777精品久久久大香线蕉| 99久久夜色精品国产网站| 国产成人aaa| 亚洲综合在线免费观看| 亚洲精品成人在线| 亚洲精品高清视频在线观看| 亚洲伦理在线精品| 亚洲午夜在线视频| 国产欧美一区二区在线观看| 欧美亚男人的天堂| 粉嫩欧美一区二区三区高清影视| 亚洲高清视频在线| 视频在线观看一区二区三区| 性久久久久久久久久久久| 日精品一区二区| 韩国精品在线观看| 国产精品 欧美精品| 国产91富婆露脸刺激对白| 成人h动漫精品一区二| 日韩国产欧美三级| 国产精品一线二线三线| 亚洲一二三四在线观看| 视频一区视频二区中文字幕| 美腿丝袜亚洲综合| 亚洲综合一区在线| 蜜臀99久久精品久久久久久软件| 久久国产视频网| 成人免费三级在线| 国产在线播放一区三区四| 亚洲国产视频一区| 国内精品免费**视频| 成人黄色777网| 欧美午夜电影网| 精品国产一区二区精华| 亚洲欧洲精品一区二区三区不卡| 亚洲精品欧美二区三区中文字幕| 日韩精品1区2区3区| 一级特黄大欧美久久久| 另类综合日韩欧美亚洲| 国产成人a级片| 精品视频在线免费| 久久影院视频免费| 亚洲欧美色图小说| 久久99最新地址| 色综合天天综合网天天狠天天| 日韩欧美区一区二| 欧美日韩1234| 亚洲国产成人一区二区三区| 一区二区理论电影在线观看| 国产精品国产三级国产专播品爱网 | 蜜臂av日日欢夜夜爽一区| 国产传媒欧美日韩成人| 国产精品888| 欧美日韩一级二级三级| 欧美性三三影院| 久久久99精品久久| 中文字幕免费不卡在线| 在线区一区二视频| 久久综合久久综合久久| 亚洲一区二区三区激情| 床上的激情91.| av在线综合网| 日本二三区不卡| 精品视频1区2区3区| 欧美少妇xxx| 欧美一区二区三区免费大片| 日韩免费一区二区| 一区二区三区不卡在线观看 | 麻豆国产91在线播放| 97se亚洲国产综合在线| 精品国产三级电影在线观看| 欧美精品一区二区三区蜜臀| 国产亚洲一二三区| 免费在线观看视频一区| 国产在线精品一区二区| 懂色av噜噜一区二区三区av| 91视频com| 欧美麻豆精品久久久久久| 中文字幕一区二区三区精华液| 精品中文字幕一区二区小辣椒| 欧美日本免费一区二区三区| 日韩你懂的电影在线观看| 亚洲第一主播视频| 欧美私人免费视频| 久久99热这里只有精品| 国产美女在线观看一区| 色综合天天综合网天天看片| 国产午夜精品一区二区三区视频 | 日韩一区二区三区观看| 国产日产欧美一区| 精品一区二区久久| 欧美成人a∨高清免费观看| 日韩不卡一区二区三区 | 色噜噜夜夜夜综合网| 最新成人av在线| 奇米综合一区二区三区精品视频| 欧美视频在线一区二区三区| 精品久久久久久亚洲综合网 | 99精品视频在线播放观看| 中文字幕不卡在线播放| 首页欧美精品中文字幕| 欧美理论电影在线| 欧美高清一级片在线观看| 午夜精品一区二区三区电影天堂| 色噜噜狠狠色综合中国| 一区二区免费视频| 国产suv一区二区三区88区| 国产日韩欧美精品综合| 丝袜国产日韩另类美女| 欧美一级日韩一级| 亚洲精品菠萝久久久久久久| 色激情天天射综合网| 国产视频视频一区| av亚洲精华国产精华精华| av在线播放成人| 夜夜精品视频一区二区| 8v天堂国产在线一区二区| 国产精品久99| 久久er精品视频| 国产三级久久久| 青青草伊人久久| 久久久久久亚洲综合影院红桃| 国产成人在线视频免费播放| 日韩一区有码在线| 国产sm精品调教视频网站| 国产精品高潮呻吟| 国产九色sp调教91| 国产精品国产精品国产专区不蜜| 久久国产综合精品| 91精品国产综合久久婷婷香蕉 | 亚洲电影你懂得| 91精品国产aⅴ一区二区| 一区二区三区在线免费| 在线观看91av| 成人免费看片app下载| 亚洲综合视频在线| 久久色在线视频| 精品伊人久久久久7777人| 欧美一区在线视频| 成人午夜在线播放| 天堂久久一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 91啦中文在线观看| 亚洲精品欧美二区三区中文字幕| 91精品国产丝袜白色高跟鞋| 成人小视频在线| 国产精品人妖ts系列视频| 国产风韵犹存在线视精品| 久久午夜国产精品| 国产精品影视在线| 欧美激情一二三区| av一二三不卡影片| 蜜臀av性久久久久蜜臀av麻豆| 国产目拍亚洲精品99久久精品| 欧美日韩国产高清一区二区三区 | 欧美精品tushy高清| 国产成人在线观看免费网站| 亚洲国产精品自拍| 国产精品久久久久久久久免费桃花| 91精品国产91久久久久久最新毛片| 成人黄色大片在线观看| 久久er精品视频|