57ee8ecc1cc8b2c08177c4f579a276aeb9dc7e10
[platform/upstream/flac.git] / doc / html / ru / documentation.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//RU">
2 <!-- Copyright (c) 2000,2001,2002  Josh Coalson -->
3 <!-- Permission is granted to copy, distribute and/or modify this document -->
4 <!-- under the terms of the GNU Free Documentation License, Version 1.1 -->
5 <!-- or any later version published by the Free Software Foundation; -->
6 <!-- with no invariant sections. -->
7 <!-- A copy of the license can be found at http://www.gnu.org/copyleft/fdl.html -->
8 <HTML>
9 <HEAD>
10 <META CHARSET="windows-1251">
11 <TITLE>FLAC: äîêóìåíòàöèÿ</TITLE>
12 </HEAD>
13
14 <BODY>
15 <CENTER><TABLE cellpadding=0 cellspacing=0 border=0>
16 <TR>
17 <TD align=center>|</TD>
18 <TD height=22 align=center nowrap>
19 &nbsp;<A HREF="index.html">íà÷àëî</A>&nbsp;</TD>
20 <TD align=center>|</TD>
21 <TD align=center nowrap>
22 &nbsp;<A HREF="news.html">íîâîñòè</A>&nbsp;</TD>
23 <TD align=center>|</TD>
24 <TD align=center nowrap>
25 &nbsp;<A HREF="download.html">ôàéëû</A>&nbsp;</TD>
26 <TD align=center>|</TD>
27 <TD align=center nowrap>
28 &nbsp;<A HREF="features.html">õàðàêòåðèñòèêè</A>&nbsp;</TD>
29 <TD align=center>|</TD>
30 <TD align=center nowrap>
31 &nbsp;<A HREF="goals.html">öåëè</A>&nbsp;</TD>
32 <TD align=center>|</TD>
33 <TD align=center nowrap>
34 &nbsp;<A HREF="format.html">ôîðìàò</A>&nbsp;</TD>
35 <TD align=center>|</TD></TR>
36
37 <TR>
38 <TD align=center>|</TD>
39 <TD align=center nowrap>
40 &nbsp;<A HREF="id.html">id</A>&nbsp;</TD>
41 <TD align=center>|</TD>
42 <TD align=center nowrap>
43 &nbsp;<A HREF="comparison.html">ñðàâíåíèå</A>&nbsp;</TD>
44 <TD align=center>|</TD>
45 <TD align=center nowrap>
46 &nbsp;<A HREF="developers.html">ðàçðàáîòêà</A>&nbsp;</TD>
47 <TD align=center>|</TD>
48 <TD align=center nowrap>
49 &nbsp;äîêóìåíòàöèÿ&nbsp;</TD>
50 <TD align=center>|</TD>
51 <TD align=center nowrap>
52 &nbsp;<A HREF="links.html">ññûëêè</A>&nbsp;</TD>
53 <TD align=center>|</TD>
54 <TD align=center nowrap>
55 &nbsp;<A HREF="authors.html">àâòîðû</A>&nbsp;</TD>
56 <TD align=center>|</TD></TR>
57 </TABLE></CENTER>
58
59 <P><CENTER><TABLE cellpadding=0 cellspacing=0 border=0>
60 <TR><TD align=center>|</TD>
61 <TD height=22 align=center nowrap>
62 &nbsp;<A HREF="../documentation.html">english</A>&nbsp;</TD>
63 <TD align=center>|</TD>
64 <TD align=center nowrap>
65 &nbsp;ðóññêèé</A>&nbsp;</TD>
66 <TD align=center>|</TD></TR>
67 </TABLE></CENTER></P>
68
69
70 <CENTER><H2>FLAC: äîêóìåíòàöèÿ</H2></CENTER>
71
72 <H3>Äîêóìåíòàöèÿ</H3>
73
74 <P>Ýòà ñòðàíèöà ðàçáèòà íà ñëåäóþùèå ðàçäåëû:</P>
75
76 <UL>
77         <LI><A HREF="#format">ôîðìàò</A> - îïèñàíèå ôîðìàòà FLAC äëÿ ïîëüçîâàòåëÿ (áîëåå äåòàëüíîå îïèñàíèå äëÿ ðàçðàáîò÷èêà ïðèâåäåíî íà <A HREF="format.html">ýòîé</A> ñòðàíèöå).</LI>
78         <LI><A HREF="#flac"><B><TT>flac</TT></B></A> - ècïîëüçîâàíèå êîäåêà <B><TT>flac</TT></B>, ðàáîòàþùåãî èç êîìàíäíîé ñòðîêè.</LI>
79         <LI><A HREF="#metaflac"><B><TT>metaflac</TT></B></A> - èñïîëüçîâàíèå ðåäàêòîðà ìåòàäàííûõ <B><TT>metaflac</TT></B>, ðàáîòàþùåãî èç êîìàíäíîé ñòðîêè.</LI>
80         <LI><A HREF="#plugins">ïëàãèíû</A> - äîêóìåíòàöèÿ äëÿ ðàçëè÷íûõ ïëàãèíîâ.</LI>
81         <LI><A HREF="#libflac">API äëÿ <B><TT>libFLAC</TT></B></A> - äëÿ ðàçðàáîò÷èêîâ, æåëàþùèõ èñïîëüçîâàòü ïîääåðæêó FLAC â ñâîèõ ïðîäóêòàõ.</LI>
82         <LI><A HREF="#bugs">îøèáêè</A> - èçâåñòíûå îøèáêè.</LI>
83         <LI><A HREF="#monkey">êàê äîáàâèòü ïîääåðæêó FLAC â Monkey's Audio GUI</A></LI>
84 </UL>
85
86 <P>Ïîìíèòå, ÷òî îíëàéíîâàÿ âåðñèÿ ýòîãî äîêóìåíòà (íà àíãëèéñêîì ÿçûêå) âêëþ÷àåòñÿ â ïîñëåäíèé ðåëèç.</P>
87
88 <A NAME="format">
89 <H3>Ôîðìàò</H3>
90
91 <P>Îïöèè ïî óìîë÷àíèþ äëÿ <B><TT>flac</TT></B> íàñòðîåíû íà ïîëó÷åíèå îïòèìàëüíîãî ñîîòíîøåíèÿ ñêîðîñòü/óðîâåíü ñæàòèÿ äëÿ áîëüøèíñòâà òèïîâ âõîäíûõ ôàéëîâ. Çäåñü îïèñûâàåòñÿ êàê ìîæíî ïîïûòàòüñÿ óâåëè÷èòü óðîâåíü èëè ñêîðîñòü ñæàòèÿ èëè ñ íàèáîëüøèì ýôôåêòîì èñïîëüçîâàòü ñèñòåìó ìåòàäàííûõ.</P>
92
93 <P>Îñíîâíûìè ÷àñòÿìè ïîòîêà ÿâëÿþòñÿ:</P>
94
95 <P><BLOCKQUOTE><UL>
96    <LI>Ñòðîêà èç ÷åòûðåõ áàéòîâ &quot;fLaC&quot;.</LI>
97
98    <LI>Áëîê ìåòàäàííûõ <A HREF="format.html#def_STREAMINFO">STREAMINFO</A>.</LI>
99
100    <LI>Äðóãèå íåîáÿçàòåëüíûå áëîêè ìåòàäàííûõ.</LI>
101
102    <LI>Îäèí èëè áîëåå àóäèî ôðåéìîâ.</LI>
103 </UL></BLOCKQUOTE></P>
104
105 <P>Ïåðâûå ÷åòûðå áàéòà èäåòèôèöèðóþò ïîòîê FLAC. Ñëåäóþùèå çà íèìè ìåòàäàííûå ñîäåðæàò èíôîðìàöèþ î ïîòîêå, çàòåì èäóò ñæàòûå àóäèîäàííûå.</P>
106
107 <A NAME="metaflac">
108 <H4>Ìåòàäàííûå</H4>
109
110 <P>FLAC îïðåäåëÿåò íåñêîëüêî òèïîâ áëîêîâ ìåòàäàííûõ (âñå îíè ïåðå÷èñëåíû íà ñòðàíèöå <A HREF="format.html">ôîðìàò</A>). Áëîêè ìåòàäàííûõ ìîãóò áûòü ëþáîãî ðàçìåðà, íîâûå áëîêè ìîãóò áûòü ëåãêî äîáàâëåíû. Äåêîäåð èìååò âîçìîæíîñòü ïðîïóñêàòü íåèçâåòíûå åìó áëîêè ìåòàäàííûõ. Îáÿçàòåëåí òîëüêî áëîê STREAMINFO. Â íåì ñîäåðæèòñÿ ÷àñòîòà äèñêðåòèçàöèÿ, êîëè÷åñòâî êàíàëîâ è ò.ï., à òàêæå äàííûå ïîçâîëÿþùèå äåêîäåðó íàñòðîèòü áóôôåðû. Ñþäà òàêæå çàïèñûâàåòñÿ ïîäïèñü MD5 <I>íåñæàòûõ</I> àóäèîäàííûõ. Ýòî ïîëåçíî äëÿ ïðîâåðêè âñåãî ïîòîêà ïîñëå åãî ïåðåäà÷è.</P>
111
112 <P>Äðóãèå áëîêè ïðåäíàçíà÷åíû äëÿ ðåçåðâèðîâàíèÿ ìåñòà, õðàíåíèÿ òàáëèö òî÷åê ïîèñêà, à òàêæå äàííûõ äëÿ êîíêðåòíûõ ïðèëîæåíèé. Îïöèè äëÿ äîáàâëåíèÿ áëîêîâ PADDING èëè òî÷åê ïîèñêà ïðèâåäåíû íèæå. FLAC íå íóæäàåòñÿ â òî÷êàõ ïîèñêà, îäíàêî îíè ïîçâîëÿþò çíà÷èòåëüíî óâåëè÷èòü ñêîðîñòü äîñòóïà, à òàêæå ìîãóò áûòü èñïîëüçîâàíèÿ äëÿ ðàññòàíîâêè ìåòîê â àóäèî ðåäàêòîðàõ.</P>
113
114 <P>Åñëè Âàì íóæåí ñîáñòâåííûé áëîê ìåòàäàííûõ, Âû ìîæåòå îïðåäåëèòü åãî è çàïðîñèòü èäåíòèôèêàòîð <A HREF="id.html">çäåñü</A>. Âû ìîæåòå çàðåçåðâèðîâàòü áëîê PADDING íåîáõîäèìîãî ðàçìåðà è çàïèñàòü íà åãî ìåñòî ñâîè äàííûå ïîñëå êîäèðîâàíèÿ. Ïîëó÷åíííûé ïîòîê áóäåò îòâå÷àòü ôîðìàòó FLAC, äåêîäåðû ðàñïîçíàþùèå ýòè áëîêè ñìîãóò èõ èñïîëüçîâàòü, îñòàëüíûå áóäóò èõ ïðîïóñêàòü.</P>
115
116
117 <H4>Àóäèîäàííûå</H4>
118
119 <P>Çà ìåòàäàííûì ñëåäóþò ñæàòûå àóäèîäàííûå. Ìåòàäàííûå è àóäèîäàííûå íå ÷åðåäóþòñÿ. Êàê è áîëüøèíñòâî êîäåêîâ FLAC äåëèò âõîäíîé ïîòîê íà áëîêè è êîäèðóåò èõ íåçàâèñèìî äðóã îò äðóãà. Áëîê óïàêîâûâàòñÿ âî ôðåéì è äîáàâëÿåòñÿ ê ïîòîêó. Áàçîâûé êîäåð èñïîëüçóåò áëîêè ïîñòîÿííîãî ðàçìåðà äëÿ âñåãî ïîòîêà, îäíàêî ôîðìàò ïðåäóñìàòðèâàåò íàëè÷èå áëîêîâ ðàçíîé äëèíû â ïîòîêå.</P>
120
121
122 <H4>Ðàçáèåíèå íà áëîêè</H4>
123
124 <P>Ðàçìåð áëîêà - î÷åíü âàæíûé ïàðàìåòð äëÿ êîäèðîâàíèÿ. Åñëè îí î÷åíü ìàë, òî â ïîòîêå áóäåò ñëèøêîì çàãîëîâêîâ ôðåéìîâ, ÷òî óìåíüøèò óðîâåíü ñæàòèÿ. Åñëè ðàçìåð áîëüøîé, òî êîäåð íå ñìîæåò ïîäîáðàòü ýôôåêòèâíóþ ìîäåëü ñæàòèÿ. Ïîíèìàíèå ïðîöåññà ìîäåëèðîâàíèÿ ïîìîæåò Âàì óâåëè÷èòü óðîâåíü ñæàòèÿ äëÿ íåêîòîðûõ òèïîâ âõîäíûõ äàííûõ. Îáû÷íî ïðè èñïîëüçîâàíèè ëèíåéíîãî ïðîãíîçèðîâàíèÿ íà àóäèîäàííûõ ñ ÷àñòîòîé äèñêðåòèçàöèè 44.1 êÃö îïòèìàëüíûé ðàçìåð áëîêà ëåæèò â äèàïàçîíå 2-6 òûñÿ÷ ñýìïëîâ. Â ýòîì ñëó÷àå çíà÷åíèå ïî óìîë÷àíèþ - 4608. Åñëè èñïîëüçîâàòü áûñòðûå ïîñòîÿííûå ïðåäèêòîðû, ïðåäïî÷òèòåëüíåå ìåíüøèå ðàçìåðû áëîêîâ, òàê êàê â ýòîì ñëó÷àå ðàçìåðû çàãîëîâêîâ ôðåéìîâ ìåíüøå.</P>
125
126
127 <H4>Ìåæêàíàëüíàÿ äåêîððåëÿöèÿ</H4>
128
129 <P>Åñëè íà âõîä ïîñòóïàþò ñòåðåî àóäèîäàííûå, îíè ìîãóò ïðîéòè ÷åðåç ñòàäèþ ìåæêàíàëüíîé äåêîððåëÿöèè. Ïðàâûé è ëåâûé êàíàë ïðåîáðàçóþòñÿ ê ñðåäíåìó è ðàçíîñòíîìó ïî ôîðìóëàì: <TT>ñðåäíèé = (ëåâûé + ïðàâûé)/2</TT>, <TT>ðàçíîñòíûé = ëåâûé - ïðàâûé</TT>. Â îòëè÷èå îò joint stereo ýòîò ïðîöåññ íå ïðèâîäèò ê ïîòåðÿì. Äëÿ äàííûõ ñ àóäèî êîìïàêò-äèñêîâ ýòî îáû÷íî ïðèâîäèò ê çíà÷èòåëüíîìó óâåëè÷åíèþ óðîâíÿ ñæàòèÿ. Äëÿ âêëþ÷åíèÿ èñïîëüçîâàíèÿ ýòîãî ìåòîäà êîäèðîâàíèÿ <B><TT>flac</TT></B> èìååò äâå îïöèè: <TT>-m</TT> âñåãäà äåëàåò ðàçíîñòíóþ è íåçàâèñèìóþ âåðñèþ áëîêà è âûáèðàåò íàèìåíüøèé ôðåéì è <TT>-M</TT>, êîòîðàÿ àäàïòèâíî âûáèðàåò ñõåìó ñæàòèÿ.</P>
130
131
132 <H4>Ìîäåëèðîâàíèå</H4>
133
134 <P>Íà ñëåäóþùåì ýòàïå êîäåð ïûòàåòñÿ àïïðîêñèìèðîâàòü ñèãíàë òàêîé ôóíêöèåé, ÷òîáû ïîëó÷åííûé ïîñëå åå âû÷èòàíèÿ èç îðèãèíàëà ðåçóëüòàò (íàçûâàåìûé ðàçíîñòüþ, îñòàòêîì, îøèáêîé) ìîæíî áûëî çàêîäèðîâàòü ìèíèìàëüíûì êîëè÷åñòâîì áèòîâ. Ïàðàìåòðû ôóíêöèé òîæå äîëæíû çàïèñûâàòüñÿ, ïîýòîìó îíè íå äîëæíû çàíèìàòü ìíîãî ìåñòà. FLAC èñïîëüçóåò äâà ìåòîäà ôîðìèðîâàíèÿ àïïðîêñèìàöèé: 1) ïîäãîíêà ïðîñòîãî ïîëèíîìà ê ñèãíàëó è 2) îáùåå êîäèðîâàíèå ñ ëèíåéíûìè ïðåäèêòîðàìè (LPC).</P>
135
136 <P>Âî-ïåðâûõ, ïîñòîÿííîå ïîëèíîìèàëüíîå ïðåäñêàçàíèå (<TT>-l 0</TT>) ðàáîòàåò çíà÷èòåëüíî áûñòðåå, íî ìåíåå òî÷íî, ÷åì LPC. ×åì âûøå ïîðÿäîê LPC, òåì ìåäëåííåå, íî ëó÷øå áóäåò ìîäåëü. Îäíàêî ñ óâåëè÷åíèåì ïîðÿäêà âûèãðûø áóäåò âñå ìåíåå çíà÷èòåëüíûì. Â íåêîòîðîé òî÷êå (îáû÷íî îêîëî 9) ïðîöåäóðà êîäåðà, îïðåäåëÿþùàÿ íàèëó÷øèé ïîðÿäîê, íà÷èíàåò îøèáàòüñÿ è ðàçìåð ïîëó÷àåìûõ ôðåéìîâ âîçðàñòàåò. ×òîáû ïðåîäîëåòü ýòî, ìîæíî èñïîëüçîâàòü ïîëíûé ïåðåáîð (îïöèÿ <TT>-e</TT>), ÷òî ïðèâåäåò ê çíà÷èòåëüíîìó óâåëè÷åíèþ âðåìåíè êîäèðîâàíèÿ.</P>
137
138 <P>Âî-âòîðûõ, ïàðàìåòðû äëÿ ïîñòîÿííûõ ïðåäèêòîðîâ ìîãóò áûòü îïèñàíû òðåìÿ áèòàìè, à ïàðàìåòðû äëÿ ìîäåëè LPC çàâèñÿò îò êîëè÷åñòâà áèò íà ñýìïë è ïîðÿäêà LPC. Ýòî çíà÷èò, ÷òî ðàçìåð çàãîëîâêà ôðåéìà çàâèñèò îò âûáðàííîãî ìåòîäà è ïîðÿäêà è ìîæåò ïîâëèÿòü íà îïòèìàëüíûé ðàçìåð áëîêà.</P>
139
140
141 <H4>Îñòàòî÷íîå êîäèðîâàíèå</H4>
142
143 <P>Êîãäà ìîäåëü ïîäîáðàíà, êîäåð âû÷èòàåò ïðèáëèæåíèå èç îðèãèíàëà, ÷òîáû ïîëó÷èòü îñòàòî÷íûé (îøèáî÷íûé) ñèãíàë, êîòîðûé çàòåì êîäèðóåòñÿ áåç ïîòåðü. Äëÿ ýòîãî èñïîëüçóåòñÿ òî îáñòîÿòåëüñòâî, ÷òî ðàçíîñòíûé ñèãíàë îáû÷íî èìååò ðàñïðåäåëåíèå Ëàïëàñà è åñòü íàáîð ñïåöèàëüíûé êîäîâ Õàôôìàíà, íàçûâàåìûå êîäàìè Ðàéñà, ïîçâîëÿþùèå ýôôåêòèâíî è áûñòðî êîäèðîâàòü ýòè ñèãíàëû áåç èñïîëüçîâàíèÿ ñëîâàðÿ.</P>
144
145 <P>Êîäèðîâàíèå Ðàéñà ñîñòîèò èç íàõîæäåíèÿ îäíîãî ïàðàìåòðà, îòâå÷àþùåãî ðàñïðåäåëåíèþ ñèãíàëà, à çàòåì èñïîëüçîâàíèÿ åãî äëÿ ñîñòàâëåíèÿ êîäîâ. Ïðè èçìåíåíèè ðàñïðåäåëåíèÿ ìåíÿåòñÿ è îïòèìàëüíûé ïàðàìåòð, ïîýòîìó èìååòñÿ ìåòîä ïîçâîëÿþùèé ïåðåñ÷èòûâàòü åãî ïî íåîáõîäèìîñòè. Îñòàòîê ìîæåò áûòü ðàçáèò íà <I>êîíòåêñòû</I> èëè <I>ðàçäåëû</I>, ó êàæäîãî èç êîòîðûõ áóäåò ñâîé ïàðàìåòð Ðàéñà. <B><TT>flac</TT></B> ïîçâîëÿåò óêàçàòü, êàê íóæíî ïðîèçâîäèòü ðàçáèåíèå, ñ ïîìîùüþ îïöèè <TT>-r</TT>. Îñòàòîê ìîæåò áûòü ðàçáèò íà <I>2^n</I> ðàçäåëà, åñëè èñïîëüçîâàòü <TT>-r n,n</TT>. Ïàðàìåòð <I>n</I> íàçûâàåòñÿ ïîðÿäêîì ðàçäåëà. Òàêæå êîäåð ìîæåò èñêàòü â ïðåäåëàõ îò <I>m</I> äî <I>n</I> ïîðÿäêà, âûáèðàÿ ëó÷øèé âàðèàíò, åñëè óêàçàòü <TT>-r m,n</TT>. Îáû÷íî âûáîð <I>n</I> íå âëèÿåò íà ñêîðîñòü êîäèðîâàíèÿ. Îò ðàçíèöû ìåæäó <I>m</I> è <I>n</I> ñèëüíî çàâèñèò âðåìÿ ðàáîòû, ÷åì îíà áîëüøå, òåì áîëüøå âðåìåíè áóäåò çàòðà÷èâàòüñÿ íà ïîèñê ëó÷øåãî ïîðÿäêà. Âûáîð ðàçìåðà áëîêà òàêæå âëèÿåò íà îïòèìàëüíûé ïîðÿäîê ðàçäåëà.</P>
146
147
148 <H4>Ñîñòàâëåíèå ôðåéìîâ</H4>
149
150 <P>Àóäèîôðåéìó ïðåäøåñòâóåò çàãîëîâîê, êîòîðûé íà÷èíàåòñÿ ñ êîäà ñèíõðîíèçàöèè è ñîäåðæèò ìèíèìóì èíôîðìàöèè, íåîáõîäèìîé äåêîäåðó äëÿ âîñïðîèçâåäåíèÿ ïîòîêà. Ñþäà òàêæå çàïèñûâàåòñÿ íîìåð áëîêà èëè ñýìïëà è âîñüìèáèòíàÿ êîíòðîëüíàÿ ñóììà ñàìîãî çàãîëîâêà. Êîä ñèíõðîíèçàöèè, CRC çàãîëîâêà ôðåéìà è íîìåð áëîêà/ñýìïëà ïîçâîëÿþò îñóùåñòâëÿòü ïåðåñèíõðîíèçàöèþ è ïîèñê äàæå â îòñóòñòâèå òî÷åê ïîèñêà. Â êîíöå ôðåéìà çàïèñûâàåòñÿ åãî øåñòíàäöàòèáèòíàÿ êîíòðîëüíàÿ ñóììà. Åñëè áàçîâûé äåêîäåð îáíàðóæèò îøèáêó, áóäåò ñãåíåðèðîâàí áëîê òèøèíû.</P>
151
152
153 <H4>Ðàçíîå</H4>
154
155 <P>×òîáû ïîääåðæèâàòü îñíîâíûå òèïû ìåòàäàííûõ, áàçîâûé äåêîäåð óìååò ïðîïóñêàòü òåãè ID3V1 è ID3V2, ïîýòîìó èõ ìîæíî ñâîáîäíî äîáàâëÿòü. Òåãè ID3V2 äîëæíû ðàñïîëàãàòüñÿ ïåðåä ìàðêåðîì &quot;fLaC&quot;, à òåãè ID3V1 - â êîíöå ôàéëà.</P>
156
157 <P>Ó <B><TT>flac</TT></B> åñòü îïöèÿ (<TT>-V</TT>) äëÿ ïðîâåðêè âûõîäíûõ äàííûõ ïðè êîäèðîâàíèè. Â ýòîì ñëó÷àå äåêîäåð ðàáîòàåò îäíîâðåìåííî ñ êîäåðîì è åãî âûõîä ñðàâíèâàåòñÿ ñ îðèãèíàëüíûì ââîäîì. Åñëè áóäåò íàéäåíî îòëè÷èå, <B><TT>flac</TT></B> çàêîí÷èò ðàáîòó ñ ñîîáùåíèåì îá îøèáêå.</P>
158
159
160 <A NAME="flac">
161 <H3><B><TT>flac</TT></B></H3>
162
163 <P><B><TT>flac</TT></B> - ýòî êîäåê, ðàáîòàþùèé èç êîìàíäíîé ñòðîêè. Âõîäîì äëÿ êîäåðà è âûõîäîì äëÿ äåêîäåðà äîëæåí áûòü ëèáî äàííûå â ôîðìàòå RIFF WAVE, ëèáî ïîòîê ñýìïëîâ áåç çàãîëîâêà. <B><TT>flac</TT></B> èñïîëüçóåò òîëüêî ëèíåéíûå PCM ñýìïëû (äðóãèìè ñëîâàìè, A-LAW, uLAW, è ò.ï. íå ïîääåðæèâàþòñÿ). Ñëåäóþùèì îãðàíè÷åíèåì ÿâëÿåòñÿ òî, ÷òî âî êîäèðóåìîì ôàéëå ñýìïëû äîëæíû áûòü 8, 16 èëè 24-áèòíûìè. Ýòî íå îãðàíè÷åíèå ôîðìàòà, ïðîñòî òàê ðàáîòàþò áàçîâûé êîäåð è äåêîäåð.</P>
164
165 <P><B><TT>flac</TT></B> ïðåäïîëàãàåò, ÷òî ôàéëû RIFF WAVE èìåþò ñóôôèêñ ".wav"; ýòî óìîë÷àíèå ìîæåò áûòü ïåðåîïðåäåëåíî ñïåöèàëüíûì êëþ÷îì. Òàêæå ïðåäïîëàãàåòñÿ, ÷òî ôàéëû ñ ñóôôèêîì ".ogg" èìåþò ôîðìàò Ogg-FLAC. Â îñòàëüíûõ ñëó÷àÿõ <B><TT>flac</TT></B> íå äåëàåò ïðåäïîëîæåíèé î ñóôôèêñàõ, õîòÿ ïî ñîãëàøåíèþ ôàéëû FLAC èìåþò ñóôôèêñ ".flac" (èëè ".fla" íà ñòàðûõ ôàéëîâûõ ñèñòåìàõ òàêèõ êàê FAT-16).</P>
166
167 <P>Ïåðåä ïîëíûì îïèñàíèåì êëþ÷åé, èñïîëüçóåìûõ <B><TT>flac</TT></B>, îáðàòèì âíèìàíèå íà òî ÷òî: 1) ïî óìîë÷àíèþ <B><TT>flac</TT></B> ñæèìàåò ôàéëû (äëÿ äåêîäèðîâàíèÿ èñïîëüçóéòå êëþ÷ <TT>-d</TT>); 2) êëþ÷è <TT>-0..-8</TT>, à òàêæå <TT>--fast</TT> è <TT>--best</TT>, óïðàâëÿþùèå óðîâíåì ñæàòèÿ, ÿâëÿþòñÿ ñèíîíèìàìè äëÿ ðàçëè÷íûõ ãðóïï íàñòðîåê êîäèðîâàíèÿ. Òîãî æå ýôôåêòà ìîæíî äîáèòüñÿ, èñïîëüçóÿ íàáîðû ñîîòâåòñòâóþùèõ êëþ÷åé; 3) ìîäåëü îáðàáîòêè âõîäíûõ è âûõîäíûõ ôàéëîâ ó <B><TT>flac</TT></B> àíàëîãè÷íà <B><TT>gzip</TT></B>.</P>
168
169 <P><B><TT>flac</TT></B> âûçûâàåòñÿ îäíèì èç ÷åòûðåõ ñïîñîáîâ:</P>
170
171 <BLOCKQUOTE><UL>
172     <LI>Êîäèðîâàíèå:<BR><TT>flac [-s] [--skip #] [<I><A HREF="#format_options">&lt;íàñòðîéêè_ôîðìàòà&gt;</A></I>] [<I><A HREF="#encoding_options">&lt;îïöèè_êîäèðîâàíèÿ&gt;</A></I>] [âõîäíîé_ôàéë [...]]</TT></LI>
173
174     <LI>Äåêîäèðîâàíèå:<BR><TT>flac -d [-s] [--skip #] [-F] [<I><A HREF="#format_options">&lt;íàñòðîéêè_ôîðìàòà&gt;</A></I>] [<I><A HREF="#encoding_options">&lt;îïöèè_êîäèðîâàíèÿ&gt;</A></I>] [âõîäíîé_ôàéë [...]]</TT></LI>
175
176     <LI>Òåñòèðîâàíèå:<BR><TT>flac -t [-s] [âõîäíîé_ôàéë [...]]</TT></LI>
177
178     <LI>Àíàëèç:<BR><TT>flac -a [-s] [--skip #] [<I><A HREF="#analysis_options">&lt;îïöèè_àíàëèçà&gt;</A></I>] [âõîäíîé_ôàéë [...]]</TT></LI>
179 </UL></BLOCKQUOTE></P>
180
181 <P> ëþáîì ñëó÷àå, åñëè âõîäíîé ôàéë íå óêàçàí, ïîäðàçóìåâàåòñÿ ñòàíäàðòíûé ââîä. Åñëè óêàçàí òîëüêî îäèí âõîäíîé ôàéë, òî ýòî ìîæåò áûòü "-" äëÿ ñòàíäàðòíîãî ââîäà (stdin). Êîãäà èñïîëüçóåòñÿ ñòàíäàðòíûé ââîä, <B><TT>flac</TT></B> ïèøåò â ñòàíäàðòíûé âûâîä (stdout).  Â îñòàëüíûõ ñëó÷àÿõ <B><TT>flac</TT></B> âûïîëíèò óêàçàííûå äåéñòâèÿ äëÿ êàæäîãî âõîäíîãî ôàéëà è çàïèøåò ðåçóëüòàòû â ôàéëû ñ àíàëîãè÷íûìè èìåíàìè (ïðè êîäèðîâàíèè ñóôôèêñ áóäåò çàìåíåí íà ".flac" èëè, åñëè åãî íå áûëî, áóäåò äîáàâëåí; ïðè äåêîäèðîâàíèè ñóôôèêñû òàêæå èçìåíÿþòñÿ â ñîîòâåòñòâèè ñ òèïîì âûõîäíûõ äàííûõ.) Îðèãèíàë óäàëÿåòñÿ, òîëüêî åñëè óêàçàí êëþ÷ <TT>--delete-input-file</TT>.</P>
182
183 <P>Ñóùåñòâóþò îñîáûå ôîðìû âûçîâà ïðîöåäóð êîäèðîâàíèÿ/äåêîäèðîâàíèÿ èç ñòàíäàíäàðòíîãî ââîäà â ôàéë.</P>
184
185 <P><BLOCKQUOTE>
186 <UL>
187     <LI><TT>flac [îïöèè] - âûõîäíîé_ôàéë</TT></LI>
188
189     <LI><TT>flac -d [îïöèè] - âûõîäíîé_ôàéë</TT></LI>
190 </UL>
191
192 <P>êîòîðûå ëó÷øå ÷åì</P>
193
194 <UL>
195     <LI><TT>flac [îïöèè] &gt; âûõîäíîé_ôàéë</TT></LI>
196
197     <LI><TT>flac -d [îïöèè] &gt; âûõîäíîé_ôàéë</TT></LI>
198 </UL>
199 </BLOCKQUOTE></P>
200
201 <P>òàê êàê â ïåðâîì ñëó÷àå ñîõðàíÿåòñÿ âîçìîæíîñòü ïðîèçâåñòè ïðè íåîáõîäèìîñòè ïîñëåäóþùóþ îáðàáîòêó ôàéëà, íàïðèìåð äëÿ çàïèñè çàãîëîâêîâ <TT>RIFF WAVE</TT> èëè <TT>STREAMINFO</TT>.</P>
202
203 <P>Äàííûå â ñòàíäàðòíûé âûâîä ìîæíî ïåðåíàïðàâèòü ñ ïîìîùüþ êëþ÷à <TT>-c</TT>.</P>
204
205 <P>Îïöèè êîäèðîâàíèÿ âëèÿþò íà ñêîðîñòü ðàáîòû è óðîâåíü ñæàòèÿ. Íàñòðîéêè ôîðìàòà îïðåäåëÿþò ðàñïîëîæåíèå ñýìïëîâ, åñëè íà âõîä ïîñòóïàåò ôàéë áåç çàãîëîâêà. Åñëè ó ôàéëà åñòü çàãîëîâîê <TT>RIFF WAVE</TT>, òî íàñòîéêè ôîðìàòà íå íóæíû, òàê êàê îíè áåðóòñÿ èç ôàéëà.</P>
206
207 <P> ðåæèìå òåñòèðîâàíèÿ <B><TT>flac</TT></B> ðàáîòàåò êàê è ïðè äåêîäèðîâàíèè, òîëüêî âûõîäíîé ôàéë íå çàïèñûâàåòñÿ. Ðåæèìû äåêîäèðîâàíèÿ è òåñòèðîâàíèÿ ïðîâåðÿþò ïîòîê íà íàëè÷èå îøèáîê, à òàêæå ñðàâíèâàþò ïîäïèñü MD5 äåêîäèðîâàííîãî ïîòîêà ñ ñîõðàíåííîé ïîäïèñüþ, äàæå åñëè ôîðìàò ïîòîêà ïðàâèëüíûé.</P>
208
209 <H4><a name="general_options">Îñíîâíûå êëþ÷è</A></H4>
210 <TABLE border=1>
211
212 <TR><TD width=25%><TT>-d</TT></TD>
213 <TD width=75%>Äåêîäèðîâàíèå (ïî óìîë÷àíèþ <B><TT>flac</TT></B> êîäèðóåò). <B><TT>flac</TT></B> çàâåðøèò ðàáîòó ñ êîäîì âûõîäà <TT>1</TT>, åñëè áóäåò âñòðå÷åíà îøèáêà èëè êîíòðîëüíàÿ ñóììà MD5 äåêîäèðîâàííîãî ïîòîêà íå ñîâïàäåò ñ ñîõðàíåííîé. Åñëè îøèáîê íå áóäåò, êîä âîçâðàòà áóäåò ðàâåí <TT>0</TT>.</TD></TR>
214 \r
215 <TR><TD><TT>-H</TT></TD>
216 <TD>Âûâåñòè ñïðàâêó ïîëíîñòüþ. Ïðè çàïóñêå <B><TT>flac</TT></B> áåç àðãóìåíòîâ îòîáðàæàåòñÿ êðàòêàÿ ñïðàâêà.</TD></TR>
217
218 <TR><TD><TT>-t</TT></TD>
219 <TD>Òåñòèðîâàíèå (òî æå ñàìîå, ÷òî è äåêîäèðîâàíèå, òîëüêî âûõîä íå çàïèñûâàåòñÿ â ôàéë). Êîäû âîçâðàòà òå æå.</TD></TR>
220
221 <TR><TD><TT>-a</TT></TD>
222 <TD>Àíàëèç (òî æå ñàìîå, ÷òî è äåêîäèðîâàíèå, òîëüêî âûõîäîì ÿâëÿåòñÿ ôàéë ñòàòèñòèêè). Êîäû âîçâðàòà òå æå.  Ðåæèì ïðåäíàçíà÷åí â îñíîâíîì äëÿ ðàçðàáîò÷èêîâ. Â âûõîäíîé òåêñòîâûé ôàéë çàïèñûâàåòñÿ èíôîðìàöèÿ î êàæäîì ôðåéìå è ïîäôðåéìå.</TD></TR>
223
224 <TR><TD><TT>-c</TT></TD>
225 <TD>Íàïðàâèòü ðåçóëüòàò â ñòàíäàðòíûé âûâîä (stdout).</TD></TR>
226
227 <TR><TD><TT>-s</TT></TD>
228 <TD>Íå ïîêàçûâàòü ñòàòèñòèêó ïðè êîäèðîâàíèè/äåêîäèðîâàíèè.</TD></TR>
229
230 <TR><TD><TT>-o ôàéë</TT></TD>
231 <TD>ßâíî óêàçàòü èìÿ âûõîäíîãî ôàéëà, ïî óìîë÷àíèþ <B><TT>flac</TT></B> ïðîñòî çàìåíÿåò ñóôôèêñ.</TD></TR>
232
233 <TR><TD><TT>--output-prefix ñòðîêà</TT></TD>
234 <TD>Äîáàâëÿåò ïðåôèêñ ê êàæäîìó èìåíè âûõîäíîìó ôàéëó. Ìîæåò èìñïîëüçîâàòüñÿ äëÿ êîäèðîâàíèÿ/äåêîäèðîâàíèÿ ôàéëîâ â äðóãîé êàòàëîã. Åñëè óêàçàííàÿ ñòðîêà ÿâëÿåòñÿ ÷àñòüþ ïóòè, óáåäèòåñü, ÷òî îíà çàêàí÷èâàåòñÿ ñëýøåì '/'.</TD></TR>
235
236 <TR><TD><TT>--delete-input-file</TT></TD>
237 <TD>Ïîñëå óñïåøíîãî îêîí÷àíèÿ êîäèðîâàíèÿ/äåêîäèðîâàíèÿ âõîäíîé ôàéë áóäåò óäàëåí. Åñëè ïðîèçîéäåò îøèáêà, èñõîäíûé ôàéë îñòàíåòñÿ.</TD></TR>
238
239 <TR><TD><TT>--skip #</TT></TD>
240 <TD>Ïðîïóñòèòü ïåðâûå <TT>#</TT> ñýìïëîâ âõîäíîãî ôàéëà. Ðàáîòàåò äëÿ êîäèðîâàíèÿ è äåêîäèðîâàíèÿ, íî íå äëÿ òåñòèðîâàíèÿ.</TD></TR>
241 </TABLE>
242
243
244 <H4><a name="analysis_options">Îïöèè àíàëèçà</H4>
245 <TABLE border=1>
246 <TR><TD width=15%><TT>--a-rtext</TT></TD>
247 <TD width=85%>Äîáàâëÿåò â ôàéë îñòàòî÷íûé ñèãíàë. Ðåçóëüòèðóþùèé ôàéë ïîëó÷àåòñÿ <B>î÷åíü áîëüøèì</B>.</TD></TR>
248
249 <TR><TD width=10%><TT>--a-rgp</TT></TD>
250 <TD width=90%>Ñîçäàåò ôàéëû-äèàãðàììû äëÿ êàæäîãî ïîäôðåéìà. Â êàæäîì ôàéëå áóäåò îñòàòî÷íîå ðàñïðåäåëåíèå äëÿ ïîäôðåéìà. Áóäåò ñîçäàíî <B>î÷åíü ìíîãî</B> ôàéëîâ.</TD></TR>
251 </TABLE>
252
253 <H4><a name="decoding_options">Îïöèè äåêîäèðîâàíèÿ</H4>
254 <TABLE border=1>
255 <TR><TD width=15%><TT>-F</TT></TD>
256 <TD width=85%>Ïî óìîë÷àíèþ <B><TT>flac</TT></B> ïðåêðàùàåò äåêîäèðîâàíèå
257 â ñëó÷àå îøèáêè â ïîòîêå è óäàëÿåò ÷àñòè÷íî äåêîäèðîâàííûé ôàéë.
258 Èñïîëüçîâàíèå êëþ÷à <TT>-F</TT> âåäåò ê òîìó, ÷òî ñîîáùåíèÿ îá îøèáêàõ
259 âûâîäÿòñÿ, íî <B><TT>flac</TT></B> ïðîäîëæàåò ðàáîòó äî êîíöà.
260 Îáðàòèòå âíèìàíèå, ÷òî â ðåçóëüòàòå òàêîãî äåêîäèðîâàíèÿ â âûõîäíîì ôàéëå
261 ìîãóò áûòü ïðîïóùåíû ñýìïëû èëè ïîÿâèòñÿ áëîêè òèøèíû.</TD></TR>
262 </TABLE>
263
264 <H4><a name="encoding_options">Îïöèè êîäèðîâàíèÿ</A></H4>
265 <TABLE border=1>
266 \r
267 <TR><TD width=15%><TT>--ogg</TT></TD>
268 <TD width=85%>\r
269 <P>Ïðè êîäèðîâàíèè ãåíåðèðóåòñÿ âûâîä â ôîðìàòå Ogg-FLAC âìåñòî "ðîäíîãî"FLAC. Ïîòîêè Ogg-FLAC ïðåäñòàâëÿþò ñîáîé ïîòîêè FLAC îáåðíóòûå â òðàíñïîðòíûé óðîâåíü Ogg. Ïîëó÷åííûé ôàéë áóäåò èìåòü ñóôôèêñ '.ogg' è áóäåò äåêîäèðîâàòüñÿ óòèëèòîé <TT><B>flac</B></TT>.</P>\r
270 <P>Ïðè äåêîäèðîâàíèè ôîðìàò ââîäà îäíîçíà÷íî îïðåäåëÿåòñÿ êàê Ogg-FLAC. Ýòî ïîëåçíî ïðè ïîëó÷åíèè äàííûõ ñî ñòàíäàðòíîãî ââîäà èëè åñëè ó ôàéëà ñóôôèêñ íå '.ogg'.</P></TD></TR>\r
271
272 <TR><TD><TT>--lax</TT></TD>
273 <TD>Ïîçâîëÿåò êîäåðó ñîçäàâàòü ôàéëû, îòâå÷àþùèå ïîäìíîæåñòâó ôîðìàòà FLAC. Â ðåçóëüòàòå ðàáîòû áóäåò ïîëó÷àòüñÿ íåïîòîêîâûé ôàéë, ïîýòîìó ýòîò êëþ÷ ñëåäóåò èñïîëüçîâàòü òîëüêî äëÿ àðõèâèðîâàíèÿ. Äåêîäåð áóäåò ïîääåðæèâàòü âîñïðîèçâåäåíèå è ïîèñê â òàêèõ ôàéëàõ.</TD></TR>
274
275 <TR><TD><TT>--sector-align</TT></TD>
276 <TD>
277 <P>Ïðè êîäèðîâàíèè íåñêîëüêèõ WAVE ôàéëîâ ôîðìàòà CD-Audio âûðàâíèâàòü èõ íà ãðàíèöó ñåêòîðà. Ýòà îïöèÿ ïðèìåíèìà òîëüêî äëÿ êîäèðîâàíèÿ íåñêîëüêèõ WAVE ôàéëîâ, êàæäûé èç êîòîðûõ äîëæåí èìåòü ÷àñòîòó äèñêðåòèçàöèè 44.1 êÃö è äâà êàíàëà. Åñëè áóäåò óêàçàíà ýòà îïöèÿ êîäåð âûðîâíÿåò ïîòîêè .flac òàê,
278 ÷òî èõ äëèíû áóäóò êðàòíû ðàçìåðó ñåêòîðà CD-Audio (ðàâíû 1/75 ñåêóíäàì èëè 588 ñýìïëàì). Ýòî îñóùåñòâëÿåòñÿ ïåðåíîñîì ÷àñòè ñåêòîðà â êîíöå êàæäîãî WAVE ôàéëà â íà÷àëî ñëåäóþùåãî. Ïîñëåäíèé ïîòîê áóäåò äîïîëíåí äî ãðàíèöû âûðàâíèâàíèÿ íóëÿìè.</P>
279 <P>Èñïîëüçîâàíèå ýòîé îïöèè íå ïðèâåäåò íè ê ÷åìó, åñëè ôàéëû óæå âûðîâíåíû (íàïðèìåð, åñëè ïðàâèëüíî ñêîïèðîâàíû ñ àóäèî-CD). <TT><B>flac</B></TT> ìîæåò âûðîâíÿòü òîëüêî íåñêîëüêî ôàéëîâ çà îäèí âûçîâ.</P>
280
281 <P><B>ÂÍÈÌÀÍÈÅ</B>: Ïîðÿäîê ôàéëîâ èìååò çíà÷åíèå! Åñëè âû ñäåëàåòå ñëåäóþùèé âûçîâ '<TT>flac --sector-align *.wav</TT>', êîìàíäíûé ïðîöåññîð ìîæåò îáðàáîòàòü øàáëîí íå â òîì ïîðÿäêå, â êàêîì âû ðàññ÷èòûâàåòå. Ïîýòîìó ëó÷øå âñåãî âûçûâàòü ïðîãðàììó, ÿâíî óêàçàâ ñïèñîê ôàéëîâ, íàïðèìåð, '<TT>flac --sector-align 8.wav 9.wav 10.wav</TT>'. 
282 </TD></TR>
283
284 <TR><TD><TT>-S {#|X|#x}</TT></TD>
285 <TD width=90%>Äîáàâëÿåò òî÷êè äëÿ ïîèñêà â òàáëèöó <TT>SEEKTABLE</TT>.
286
287 <UL>
288     <LI><TT>#&nbsp;</TT> : ñîçäàåòñÿ òî÷êà ïîèñêà äëÿ ñýìïëà ñ îïðåäåëåííûì íîìåðîì.</LI>
289     
290     <LI><TT>X&nbsp;</TT> : ðåçåðâèðóåìûå òî÷êè (âñåãäà ïîìåùàþòñÿ â êîíöå <TT>SEEKTABLE</TT>).</LI>
291     
292     <LI><TT>#x</TT> : # ðàâíîìåðíî ðàñïðåäåëåííûõ òî÷åê ïîèñêà, ïåðâàÿ ñîîòâåòñòâóåò 0 ñýìïëó.</LI>
293 </UL>
294
295 <P>Îïöèþ <TT>-S</TT> ìîæíî èñïîëüçîâàòü íåñêîëüêî ðàç. Â ðåçóëüòàòå ïîëó÷èòñÿ îáúåäèíåííàÿ òàáëèöà, â êîòîðîé áóäóò ïðèñóòñòâîâàòü òîëüêî óíèêàëüíûå çíà÷åíèÿ.<BR>
296 Ïî óìîë÷àíèþ <B><TT>flac</TT></B> èñïîëüçóåò <TT>-S 100x</TT>. Åñëè òàáëèöà ïîèñêà íå íóæíà, óêàæèòå <TT>-S-</TT>.<BR>
297 <B>ÏÐÈÌÅ×ÀÍÈÅ</B>: <TT>-S #x</TT> íå áóäåò ðàáîòàòü, åñëè êîäåð íå ñìîæåò îïðåäåëèòü ðàçìåð âõîäíîãî ôàéëà â íà÷àëå ðàáîòû.<BR>
298 <B>ÏÐÈÌÅ×ÀÍÈÅ</B>: åñëè <I>#</I> áîëüøå èëè ðàâåí êîëè÷åñòâó ñýìïëîâ âî âõîäíîì ôàéëå, òî òî÷êè äîáàâëåíû íå áóäóò, åñëè ðàçìåð ìîæíî îïðåäåëèòü äî êîäèðîâàíèÿ, â ïðîòèâíîì ñëó÷àå áóäóò çàïèñàíû ðåçåðâèðóåìûå òî÷êè.</P>
299 </TD></TR>
300
301 <TR><TD><TT>-P #</TT></TD>
302 <TD>Eíêîäåð çàïèøåò áëîê ìåòàäàííûõ <TT>PADDING</TT>, óêàçàííîãî ðàçìåðà (â áàéòàõ), ïîñëå áëîêà <TT>STREAMINFO</TT>. Êëþ÷è <TT>-P 0</TT> èëè <TT>-P-</TT> óêàçûâàþò, ÷òî áëîê <TT>PADDING</TT> íå íóæåí (çíà÷åíèå ïî óìîë÷àíèþ). Ýòîò áëîê ïîëåçåí, åñëè âû ñîáèðàåòåñü äîáàâèòü òýã â ôàéë ïîçæå. Âìåñòî òîãî, ÷òîáû ïåðåïèñûâàòü ôàéë ïîëíîñòüþ, ìîæíî áóäåò çàïèñàòü èíôîðìàöèþ âìåñòî áëîêà <TT>PADDING</TT>. Îáðàòèòå âíèìàíèå íà òî, ÷òî îáùèé ðàçìåð áëîêà <TT>PADDING</TT> áóäåò íà 4 áàéòà áîëüøå, òàê êàê 4 áàéòà çàíèìàåò çàãîëîâîê.</TD></TR>
303
304 <TR><TD><TT>-b #</TT></TD>
305 <TD>Óñòàíàâëèâàåò ðàçìåð áëîêà â ñýìïëàõ. Ïî óìîë÷àíèþ <TT>1152</TT> äëÿ <TT>-l 0</TT>, èíà÷å <TT>4608</TT>. Ñòàíäàðòíûå ïîòîêè äîëæíû èñïîëüçîâàòü îäíî èç óêàçàíûõ çíà÷åíèé: <TT>192/576/1152/2304/4608/256/512/1024/2048/4096/8192/16384/32768</TT>. Ñåé÷àñ êîäåð èñïîëüçóåò ïîñòîÿííûé ðàçìåð áëîêà äëÿ âñåãî ôàéëà.</TD></TR>
306
307 <TR><TD><TT>-m</TT></TD>
308 <TD>Âêëþ÷àåò ðàçíîñòíîå êîäèðîâàíèå (òîëüêî äëÿ ñòåðåî ïîòîêîâ). Îáû÷íî óâåëè÷èâàåò óðîâåíü ñæàòèÿ íà íåñêîëüêî ïðîöåíòîâ. Äëÿ êàæäîãî áëîêà ñîçäàåòñÿ óñðåäíåííàÿ è ñòåðåî âåðñèÿ áëîêà, ñîõðàíÿåòñÿ áëîê ìåíüøåãî ðàçìåðà. Ñåé÷àñ ðàçíîñòíîå êîäèðîâàíèå äîñòóïíî äëÿ ôàéëîâ, ãäå ñýìïë èìååò ðàçìåð íå áîëüøå 16 áèò.</TD></TR>
309
310 <TR><TD><TT>-M</TT></TD>
311 <TD>Âêëþ÷àåò ñâîáîäíîå ðàçíîñòíîå êîäèðîâàíèå (òîëüêî äëÿ ñòåðåî ïîòîêîâ). Ðàáîòàåò àíàëîãè÷íî <TT>-m</TT>, îäíàêî êîäåð ïåðåêëþ÷àåòñÿ ìåæäó íåçàâèñèìûì è óñðåäíÿþùèì êîäèðîâàíèåì àäàïòèâíî. Ìåòîä ðàáîòàåò áûñòðåå, íî óðîâåíü ñæàòèÿ ìåíüøå, òàê êàê <TT>-m</TT> ïðîèçâîäèò ïîëíûé ïåðåáîð âàðèàíòîâ.</TD></TR>
312
313 <TR><TD><TT>-0..-8</TT></TD>
314 <TD>Áûñòðåéøåå ñæàòèå ... ìàêñèìàëüíîå ñæàòèå. Ïî óìîë÷àíèþ <TT>-5</TT>.</TD></TR>
315
316 <TR><TD><TT>-0</TT></TD>
317 <TD>Àíàëîãè÷íî <TT>-l 0 -b 1152 -r 2,2</TT>.</TD></TR>
318
319 <TR><TD><TT>-1</TT></TD>
320 <TD>Àíàëîãè÷íî <TT>-l 0 -b 1152 -r 2,2 -M</TT>.</TD></TR>
321
322 <TR><TD><TT>-2</TT></TD>
323 <TD>Àíàëîãè÷íî <TT>-l 0 -b 1152 -r 3 -m</TT>.</TD></TR>
324
325 <TR><TD><TT>-3</TT></TD>
326 <TD>Àíàëîãè÷íî <TT>-l 6 -b 4608 -r 3,3</TD></TR>
327
328 <TR><TD><TT>-4</TT></TD>
329 <TD>Àíàëîãè÷íî <TT>-l 8 -b 4608 -r 3,3 -M</TT>.</TD></TR>
330
331 <TR><TD><TT>-5</TT></TD>
332 <TD>Àíàëîãè÷íî <TT>-l 8 -b 4608 -r 3,3 -m</TT>.</TD></TR>
333
334 <TR><TD><TT>-6</TT></TD>
335 <TD>Àíàëîãè÷íî <TT>-l 8 -b 4608 -r 4 -m</TT>.</TD></TR>
336
337 <TR><TD><TT>-7</TT></TD>
338 <TD>Àíàëîãè÷íî <TT>-l 8 -b 4608 -r 6 -m -e</TT>.</TD></TR>
339
340 <TR><TD><TT>-8</TT></TD>
341 <TD>Àíàëîãè÷íî <TT>-l 12 -b 4608 -r 6 -m -e</TT>.</TD></TR>
342 \r
343 <TR><TD><TT>--fast</TT></TD>
344 <TD>Áûñòðåéøåå ñæàòèå. Àíàëîãè÷íî <TT>-0</TT>.</TD></TR>
345
346 <TR><TD><TT>--best</TT></TD>
347 <TD>Ìàêñèìàëüíîå ñæàòèå. Àíàëîãè÷íî <TT>-8</TT>.</TD></TR>
348
349 <TR><TD><TT>-e</TT></TD>
350 <TD>Ïîëíûé ïîèñê ìîäåëè (ðàáîòàåò ìåäëåííî!). Îáû÷íî êîäåð îïðåäåëÿåò ëó÷øóþ ìîäåëü è êîäèðóåò äàëåå îïèðàÿñü íà íåå. Â äàííîì ðåæèìå êîäåð áóäåò ñîçäàâàòü ïîäôðåéìû âñåõ ïîðÿäêîâ è èñïîëüçîâàòü íàèìåíüøèé. Åñëè ìàêñèìàëüíîå çíà÷åíèå ïîðÿäêà LPC âåëèêî, âðåìÿ êîäèðîâàíèÿ ñóùåñòâåííî âîçðàñòåò. Âûèãðûø îáû÷íî ñîñòàâëÿåò îêîëî 0.5%.</TD></TR>
351
352 <TR><TD><TT>-E</TT></TD>
353 <TD>Èñïîëüçîâàòü óïðàâëÿþùèå êîäû â êîäåðå ýíòðîïèè. Ýòà îïöèÿ ïîçâîëÿåò çàïèñûâàòü íåçàêîäèðîâàííîå ïðåäñòàâëåíèå îñòàòêà â ðàçäåëå, åñëè åãî ðàçìåð ìåíüøå. Ïðè ýòîì âðåìÿ ðàáîòû óâåëè÷èâàåòñÿ, à óðîâåíü ñæàòèÿ îáû÷íî óëó÷øàåòñÿ ïðèìåðíî íà 1%.</TD></TR>
354
355 <TR><TD><TT>-l #</TT></TD>
356 <TD>Îïðåäåëÿåò ìàêñèìàëüíûé ïîðÿäîê LPC (êîýôôèöèåíòîâ ëèíåéíîãî ïðîãíîçèðîâàíèÿ). ×èñëî äîëæíî áûòü ìåíüøå èëè ðàâíî <TT>32</TT>. Åñëè çíà÷åíèå ðàâíî <TT>0</TT>, êîäåð áóäåò èñïîëüçîâàòü âìåñòî îáùåãî ëèíåéíîãî ïðîãíîçèðîâàíèÿ ïîñòîÿííûå êîýôôèöèåíòû. Ýòîò ìåòîä óâåëè÷èâàåò ñêîðîñòü ðàáîòû, íî ôàéëû ïîëó÷àþòñÿ íà 5-10% áîëüøå.</TD></TR>
357
358 <TR><TD><TT>-q #</TT></TD>
359 <TD>Îïðåäåëÿåò òî÷íîñòü äèñêðåòíûõ êîýôôèöèåíòîâ ëèíåéíîãî ïðîãíîçèðîâàíèÿ â áèòàõ. Ïî óìîë÷àíèþ <TT>-q 0</TT>, ÷òî ïîçâîëÿåò êîäåðó ïðèíèìàòü ðåøåíèå â çàâèñèìîñòè îò ñèãíàëà. Ëó÷øå îñòàâëÿòü çíà÷åíèå ïî óìîë÷àíèþ.</TD></TR>
360
361 <TR><TD><TT>-p</TT></TD>
362 <TD>Ïðîèçâîäèòü îïòèìèçàöèþ LPC. Ïåðåîïðåäåëÿåò ëþáóþ îïöèþ <TT>-q</TT>. Ñèëüíî çàìåäëÿåò ðàáîòó, è óìåíüøàåò ðàçìåð ôàéëà íà äîëþ ïðîöåíòà. <TT>-q</TT> íå ðàáîòàåò, êîãäà èñïîëüçóåòñÿ <TT>-l 0</TT>.</TD></TR>
363
364 <TR><TD><TT>-r [#,]#</TT></TD>
365 <TD>Óñòàíîâèòü <I>[min,]max</I> ïîðÿäîê ðàçäåëà. Åñëè ìèíèìàëüíîå çíà÷åíèå íå óêàçàíî, òî îíî óñòàíàâëèâàåòñÿ ðàâíûì 0. Ïî óìîë÷àíèþ êîäåð îäèí ïàðàìåòð Ðàéñà äëÿ âñåãî îñòàòêà ïîäôðåéìà. Åñëè èñïîëüçîâàòü ýòó îïöèþ, îñòàòîê áóäåò ðàçäåëÿòüñÿ íà <I>2^min#</I> ... <I>2^max</I> ÷àñòåé, äëÿ êàæäîé èç êîòîðûõ áóäåò îïðåäåëåí ñîáñòâåííûé ïàðàìåòð Ðàéñà. Ñ óâåëè÷åíèåì ïàðàìåòðà <I>max</I> âûèãðûø áóäåò âñå ìåíüøå. Íàèáîëåå îïòèìàëüíûé âàðèàíò äîñòèãàåòñÿ ïðè èñïîëüçîâàíèè <TT>-r 2,2</TT> (è áîëüøèõ çíà÷åíèé äëÿ áîëüøèõ ðàçìåðîâ áëîêîâ). Ïðè ýòîì ñæàòèå îáû÷íî óâåëè÷èâàåòñÿ íà 1.5%. Âûáîð îïòèìàëüíîãî çíà÷åíèÿ ìîæíî ïðîèçâåñòè ïî ôîðìóëå <TT>ðàçìåð_áëîêà/(2^n)=128</TT>. Ìàêñèìàëüíûé óðîâåíü ñæàòèÿ äîñòèãàåòñÿ ïðè èñïîëüçîâàíèè <TT>-r 0,16</TT>.</TD></TR>
366
367 <TR><TD><TT>-V</TT></TD>
368 <TD>Ïðîâåðÿòü ïðîöåññ ñæàòèÿ. Â äàííîì ñëó÷àå <B><TT>flac</TT></B> ñîçäàåò ïàðàëëåëüíûé äåêîäåð, ðàñêîäèðóþùèé âûõîä êîäåðà è ñðàâíèâàåò ðåçóëüòàò ñ îðèãèíàëîì. Åñëè áóäåò íàéäåíî íåñîîòâåòñòâèå, êîäèðîâàíèå ïðåêðàòèòñÿ. Âðåìÿ ðàáîòû ñ ýòîé îïöèåé óâåëè÷èâàåòñÿ, îäíàêî, ïðè ýòîì ãàðàíòèðóåòñÿ, ÷òî ôàéë áóäåò ïðàâèëüíî äåêîäèðîâàí.</TD></TR>
369
370 <TR><TD>&nbsp;</TD>
371 <TD><TT>-F-</TT>, <TT>-S-</TT>, <TT>-P-</TT>, <TT>-m-</TT>, <TT>-e-</TT>, <TT>-E-</TT>, <TT>-p-</TT>, <TT>-V-</TT>, <TT>--lax-</TT>, <TT>--delete-input-file-</TT>, <TT>--sector-align-</TT> èñïîëüçóþòñÿ äëÿ îòêëþ÷åíèÿ ñîîòâåòñòâóþùèõ îïöèé.</TD></TR>
372 </TABLE>
373
374
375 <H4>Íàñòðîéêè ôîðìàòà</H4>
376 <TABLE border=1>
377
378 <TR><TD width=15%><TT>-fb | -fl</TT></TD>
379 <TD width=90%>Îïðåäåëÿåò ïîðÿäîê áàéòîâ â ôàéëå áåç çàãîëîâêà big-endian | little-endian.</TD></TR>
380
381 <TR><TD><TT>-fc n</TT></TD>
382 <TD>Îïðåäåëÿåò êîëè÷åñòâî êàíàëîâ â ôàéëå áåç çàãîëîâêà.</TD></TR>
383
384 <TR><TD><TT>-fp n</TT></TD>
385 <TD>Îïðåäåëÿåò êîëè÷åñòâî áèò íà ñýìïë â ôàéëå áåç çàãîëîâêà.</TD></TR>
386
387 <TR><TD><TT>-fs n</TT></TD>
388 <TD>Îïðåäåëÿåò êîëè÷åñòâî ñýìïëîâ â ñåêóíäó â ôàéëå áåç çàãîëîâêà.</TD></TR>
389
390 <TR><TD><TT>-fu</TT></TD>
391 <TD>Óêàçûâàåò, ÷òî ñýìïëû â ôàéëå áåç çàãîëîâêà áåççíàêîâûå (ïî óìîë÷àíèþ çíàêîâûå).</TD></TR>
392
393 <TR><TD><TT>-fr</TT></TD>
394 <TD>Âîñïðèíèìàòü âõîäíîé (èëè âûõîäíîé ïðè äåêîäèðîâàíèè) ôàéë êàê raw ïîòîê ñýìïëîâ âíå çàâèñèìîñòè îò ñóôôèêñà.</TD></TR>
395 </TABLE>
396
397
398 <A NAME="metaflac">
399 <H3><B><TT>metaflac</TT></B></H3>
400
401 <P><B><TT>metaflac</TT></B> - ýòî ðåäàêòîð ìåòàäàííûõ, ðàáîòàþùèé èç êîìàíäíîé ñòðîêè. Ñåé÷àñ îí òîëüêî âûâîäèò ñîäåðæèìîå áëîêîâ ìåòàäàííûõ âî .flac ôàéëå, íî ñêîðî ñ åãî ïîìîùüþ ìîæíî áóäåò âñòàâëÿòü, óäàëÿòü è ðåäàêòèðîâàòü áëîêè.</P>
402
403 <P>Cåé÷àñ <B><TT>metaflac</TT></B> âûçûâàåòñÿ òîëüêî îäíèì ñïîñîáîì:</P>
404
405 <P><TT>metaflac [-v] âõîäíîé_ôàéë</TT></P>
406
407 <P>Âõîäíûì_ôàéëîì ìîæåò áûòü "-" äëÿ ñòàíäàðòíîãî ââîäà (stdin). åñëè èñïîëüçîâàòü <TT>-v</TT>, áóäåò ïîëó÷åí áîëåå ïîäðîáíûé îò÷åò.</P>
408
409
410 <A NAME="plugins"><A NAME="xmms_plugin">
411 <H3>Ïëàãèí äëÿ XMMS</H3>
412
413 <P>Äëÿ åãî óñòàíîâêè íåîáõîäèìî ñêîïèðîâàòü <TT>libxmms-flac.so</TT> â êàòàëîã, ãäå íàõîäÿòñÿ ïëàãèíû ââîäà XMMS (îáû÷íî <TT>/usr/lib/xmms/Input</TT>). Áîëüøå íè÷åãî íàñòðàèâàòü íå íàäî. Äëÿ âîñïðîèçâåäåíèÿ .flac ôàéëîâ ïåðåçàïóñòèòå XMMS.</P>
414
415 <A NAME="winamp_plugin2">
416 <H3>Ïëàãèí äëÿ Winamp</H3>
417 \r
418 <P>Åñòü äâà ïëàãèíà äëÿ Winamp: îäèí äëÿ âåðñèé 2.x, à âòîðîé äëÿ 3.x. Åñëè âû èñïîëüçóåòå Winamp 2.x, òî äëÿ óñòàíîâêè ïëàãèíà íåîáõîäèìî ñêîïèðîâàòü <TT>in_flac.dll</TT> â êàòàëîã, ãäå íàõîäÿòñÿ ïëàãèíû ââîäà Winamp (îáû÷íî <TT>/Plugins</TT>). Áîëüøå íè÷åãî íàñòðàèâàòü íå íàäî. Äëÿ âîñïðîèçâåäåíèÿ .flac ôàéëîâ ïåðåçàïóñòèòå Winamp.</P>
419
420 <A NAME="winamp_plugin3">
421 <H3>Ïëàãèí äëÿ Winamp</H3>
422 \r
423 <P>Åñòü äâà ïëàãèíà äëÿ Winamp: îäèí äëÿ âåðñèé 2.x, à âòîðîé äëÿ 3.x. Åñëè âû èñïîëüçóåòå Winamp 3.x, òî äëÿ óñòàíîâêè ïëàãèíà íåîáõîäèìî ñêîïèðîâàòü <TT>cnv_flacpcm.wac</TT> â êàòàëîã, ãäå íàõîäÿòñÿ ïëàãèíû ââîäà Winamp (îáû÷íî <TT>/Wacs</TT>). Áîëüøå íè÷åãî íàñòðàèâàòü íå íàäî. Äëÿ âîñïðîèçâåäåíèÿ .flac ôàéëîâ ïåðåçàïóñòèòå Winamp.</P>
424
425 <A NAME="libflac">
426 <H3><B><TT>libFLAC</TT></B></H3>
427
428 <P>Áèáëèîòåêà <B><TT>libFLAC</TT></B> ÿâëÿåòñÿ ðåàëèçàöèåé íà C áàçîâîãî êîäåðà è äåêîäåðà. Èñïîëüçóÿ ýòó áèáëèîòåêó è íàïèñàâ íåìíîãî êîäà, ìîæíî äîáàâèòü ïîääåðæêó FLAC â ñâîþ ïðîãðàììó. Óñëîâèÿ åå ðàñïðîñòðàíåíèÿ - <A HREF="http://www.gnu.org/copyleft/lesser.html">LGPL</A>. Èñõîäíûå òåêñòû áèáëèîòåêè <B><TT>libFLAC</TT></B>, òàêæå êàê è êîíñîëüíîãî êîäåêà è ïëàãèíîâ, äîñòóïíû, è ìîãóò ïîñëóæèòü õîðîøèì ïðèìåðîì äëÿ èñïîëüçîâàíèÿ.</P>
429
430 <P><B><TT>libFLAC</TT></B> òðåáóåò ñòàíäàðòíóþ è ìàòåìàòè÷åñêóþ áèáëèîòåêè äëÿ ÿçûêà C. Ïðîãðàììíûå ïîòîêè íå èñïîëüçóþòñÿ, îäíàêî, òàê êàê <B><TT>libFLAC</TT></B> íå èñïîëüçóåò ãëîáàëüíûå ïåðåìåííûå, áèáëèîòåêà äîëæíà áûòü thread-safe.</P>
431
432 <P>Èíòåðôåéñ <B><TT>libFLAC</TT></B> îïèñàí â ïóáëè÷íûõ çàãîëîâî÷íûõ ôàéëàõ â êàòàëîãå include/FLAC. Äëÿ èñïîëüçîâàíèÿ ñêîìïèëèðîâàííîé áèáëèîòåêè íóæíû òîëüêî ïóáëè÷íûå çàãîëîâêè. Îáðàòèòå âíèìàíèå íà òî, ÷òî êîä èç src/libFLAC/, âêëþ÷àÿ çàùèùåííûå çàãîëîâî÷íûå ôàéëû èç src/libFLAC/include/ íå íóæåí.</P>
433
434 <P> îñíîâíîì èñïîëüçîâàíèå <B><TT>libFLAC</TT></B> ñîñòîèò â ñëåäóþùåì:</P>
435
436 <OL>
437         <LI>Ïðîãðàììà ñîçäàåò ýêçåìïëÿð êîäåðà èëè äåêîäåðà ñ ïîìîùüþ ôóíêöèé <TT>*_new()</TT>.</LI>
438         
439         <LI>Ïðîãðàììà óñòàíàâëèâàåò ïàðàìåòðû ýêçåìïëÿðà è ïðåäîñòàâëÿåò åìó îáðàòíûå âûçîâû äëÿ ÷òåíèÿ, çàïèñè, ñîîáùåíèÿ îá îøèáêàõ è ðàáîòû ñ ìåòàäàííûìè ñ ïîìîùüþ ôóíêöèé <TT>*_set_*()</TT>.</LI>
440         
441         <LI>Ïðîãðàììà èíèöèàëèçèðóåò ýêçåìïëÿð, ïðîâåðÿåò ïàðàìåòðû è ãîòîâèòñÿ ê êîäèðîâàíèþ/äåêîäèðîâàíèþ, èñïîëüçóÿ ôóíêöèè <TT>*_init()</TT>.</LI>
442         
443         <LI>Ïðîãðàììà âûçûâàåò ôóíêöèè <TT>*_process_*()</TT> äëÿ êîäèðîâàíèÿ èëè äåêîäèðîâàíèÿ äàííûõ, êîòîðûå â ñâîþ î÷åðåäü äåëàþò îáðàòíûå âûçîâû.</LI>
444         
445         <LI>Ïðîãðàììà çàâåðøàåò ðàáîòó ýêçåìïëÿðà ôóíêöèåé <TT>*_finish()</TT>, êîòîðàÿ ñáðàñûâàåò áóôåðû ââîäà è âûâîäà.</LI>
446         
447         <LI>Ýêçåìïëÿð ìîæåò áûòü èñïîëüçîâàí ñíîâà ëèáî óäàëåí ôóíêöèåé <TT>*_delete()</TT>.</LI>
448
449 </OL>
450
451 <P>Äëÿ äåêîäèðîâàíèÿ <B><TT>libFLAC</TT></B> ïðåäîñòàâëÿåò òðè óðîâíÿ äîñòóïà. Íà íèæíåì óðîâíå íàõîäèòñÿ äåêîäåð ïîòîêîâ, íà ñëåäóþùåì - äåêîäåð ïîòîêîâ ñ âîçìîæíîñòüþ ïîèñêà, à íà âåðõíåì - äåêîäåð ôàéëîâ. Èíòåðôåéñû îïèñàíû â ôàéëàõ <TT>stream_decoder.h</TT>, <TT>seekable_stream_decoder.h</TT> è <TT>file_decoder.h</TT> ñîîòâåòñòâåííî. Èñïîëüçîâàòü ëó÷øå âñåãî äåêîäåð áîëåå âåðõíåãî óðîâíÿ.</P>\r
452 \r
453 <P>Ïîòîêîâûé äåêîäåð ðàññ÷èòûâàåò íà îáðàòíûå âûçîâû äëÿ ïîëó÷åíèÿ âõîäíûõ è âûõîäíûõ äàííûõ. Äåêîäåð ñ âîçìîæíîñòüþ ïîèñêà ÿâëÿåòñÿ îáåðòêîé ïîòîêîâîãî äåêîäåðà, ïðåäîñòàâëÿþùèé âîçìîæíîñòü ïîèñêà, îäíàêî äëÿ åãî âûïîëíåíèÿ âàì íåîáõîäèìî äîáàâèòü îáðàòíûå âûçîâû. Ôàéëîâûé äåêîäåð ñàì îñóùåñòâëÿåò îáðàòíûå âûçîâû äëÿ ÷òåíèÿ è ïðåäîñòàâëÿåò ôóíêöèè ïîèñêà.</P>\r
454 \r
455 <P>êîäåð ïîêà ÷òî ðåàëèçîâàí òîëüêî íà ïîòîêîâîì óðîâíå (<TT>stream_encoder.h</TT>).</P>
456
457 <P>Ñòðóêòóðû è êîíñòàíòû, îòíîñÿùèåñÿ ê ôîðìàòó, îïðåäåëåíû â ôàéëå <TT>format.h</TT>.</P>
458 \r
459
460 <P><B>ÄÅÊÎÄÅРÏÎÒÎÊÎÂ</B></P>
461  
462 <P>Ñíà÷àëà îáñóäèì äåêîäåð ïîòîêîâ. Òèï åãî ýêçåìïëÿðà <TT>FLAC__StreamDecoder</TT>. Îáû÷íî â ïðîãðàììå ýêçåìïëÿð ñîçäàåòñÿ âûçîâîì <TT>FLAC__stream_decoder_new()</TT>, çàòåì âûçûâàåò ôóíêöèè <TT>FLAC__stream_decoder_set_*()</TT> äëÿ óñòàíîâêè îáðàòíûõ âûçîâîâ è ïîëüçîâàòåëüñêèõ äàííûõ è èíèöèàëèçèðóåòñÿ ôóíêöèåé <TT>FLAC__stream_decoder_init()</TT>. Íåîáõîäèìûå îáðàòíûå âûçîâû:</P>
463
464 <UL>
465         <LI>Îáðàòíûé âûçîâ äëÿ ÷òåíèÿ. Ýòà ôóíêöèÿ âûçûâàåòñÿ, êîãäà äåêîäåðó íåîáõîäèìû äàííûå. Â êà÷åñòâå ïàðàìåòðîâ ïåðåäàåòñÿ àäðåñ áóôåðà, êîòîðûé íóæíî çàïîëíèòü, è åãî ðàçìåð â áàéòàõ. Îáðàòíûé âûçîâ ìîæåò âåðíóòü ìåíüøå äàííûõ è èçìåíèòü ñ÷åò÷èê áàéòîâ, íî íå äîëæåí ïåðåïîëíÿòü áóôåð. Êîä âîçâðàòà ïðè âûõîäå âûáèðàåòñÿ èç <TT>FLAC__StreamDecoderReadStatus</TT>.</LI>
466
467         <LI>Îáðàòíûé âûçîâ äëÿ çàïèñè. Ýòà ôóíêöèÿ âûçûâàåòñÿ ïîñëå äåêîäèðîâàíèÿ îäíîãî ôðåéìà äàííûõ. Äåêîäåð ïåðåäàñò ìåòàäàííûå ôðåéìà, à òàêæå ìàññèâ óêàçàòåëåé (ïî îäíîìó íà êàæäûé êàíàë) íà äåêîäèðîâàííûå äàííûå.</LI>
468
469         <LI>Îáðàòíûé âûçîâ äëÿ ðàáîòû ñ ìåòàäàííûìè. Ôóíêöèÿ âûçûâàåòñÿ ïîñëå ðàçáîðà áëîêà ìåòàäàííûõ. Äëÿ ïîòîêà âñåãäà äîëæåí ñóùåñòâîâàòü áëîê ìåòàäàííûõ <TT>STREAMINFO</TT>, çà êîòîðûì ìîæåò ñëåäîâàòü ïðîèçâîëüíîå êîëè÷åñòâî äðóãèõ áëîêîâ. Îíè áóäóò âîçâðàùåíû äåêîäåðîì â òîì æå ïîðÿäêå, â êàêîì îíè ðàñïîëîæåíû â ïîòîêå è âñåãäà ïåðåä ïåðâûì àóäèî ôðåéìîì. Ïåðåäàííûé áëîê ìåòàäàííûõ íå äîëæåí èçìåíÿòüñÿ è íå ñîõðàíÿåòñÿ ïîñëå îáðàòíîãî âûçîâà, ïîýòîìó, åñëè îí áóäåò íóæåí â äàëüíåéøåì ñäåëàéòå åãî êîïèþ ñ ïîìîùüþ ôóíêöèè <TT>FLAC__metadata_object_copy()</TT>.</LI>\r
470 \r
471         <LI>Îáðàòíûé âûçîâ äëÿ ñîîáùåíèÿ îá îøèáêå. Ýòà ôóíêöèÿ âûçûâàåòñÿ, åñëè ïðè äåêîäèðîâàíèè ïðîèñõîäèò îøèáêà.</LI>
472 </UL>
473
474 <P>Êîãäà äåêîäåð èíèöèàëèçèðîâàí, ïðîãðàììà ìîæåò âûçâàòü îäíó èç ñëåäóþùèõ ôóíêöèé äëÿ äåêîäèðîâàíèÿ:</P>
475
476 <UL>
477         <LI><B><TT>FLAC__stream_decoder_process_whole_stream()</TT></B> - Äåêîäåð íà÷èíàåò ðàáîòó è ïðîäîëæàåò îáðàáàòûâàòü ïîòîê ïîêà ôóíêöèÿ îáðàòíîãî âûçîâà ÷òåíèÿ íå ïåðåäàñò êîä <TT>FLAC__STREAM_DECODER_READ_END_OF_STREAM</TT> èëè <TT>FLAC__STREAM_DECODER_READ_ABORT</TT>.</LI>
478
479         <LI><B><TT>FLAC__stream_decoder_process_metadata()</TT></B> - Äåêîäåð îáðàáàòûâàåò ïîòîê äî ïåðâîãî àóäèî ôðåéìà.</LI>
480         
481         <LI><B><TT>FLAC__stream_decoder_process_one_frame()</TT></B> - Äåêîäåðîâàòü òîëüêî îäèí ôðåéì. Ïåðåä âûçîâîì ýòîé ôóíêöèè âñå ìåòàäàííûå äîëæíû áûòü îáðàáîòàíû.</LI>
482
483         <LI><B><TT>FLAC__stream_decoder_process_remaining_frames()</TT></B> - Äåêîäèðîâàòü âñå îñòàâøèåñÿ ôðåéìû.  Ïåðåä âûçîâîì ýòîé ôóíêöèè âñå ìåòàäàííûå äîëæíû áûòü îáðàáîòàíû. Ïåðåä âûçîâîì ýòîé ôóíöèè òàêæå ìîæåò âûçûâàòüñÿ <TT>FLAC__stream_decoder_process_one_frame()</TT>.</LI>
484 </UL>
485
486 <P>Êîãäà äåêîäåð çàêàí÷èâàåò ðàáîòó, ýêçåìïëÿð îáðàáàòûâàåòñÿ ôóíêöèåé <TT>FLAC__stream_decoder_finish()</TT>, êîòîðàÿ ïðîâåðÿåò ñîñòîÿíèå äåêîäåðà è îñâîáîæäàåò ïàìÿòü. Çàòåì ýêçåìïëÿð ìîæåò áûòü óäàëåí ôóíêöèåé <TT>FLAC__stream_decoder_delete()</TT> èëè èíèöèàëèçèðîâàí çàíîâî äëÿ äåêîäèðîâàíèÿ äðóãîãî ïîòîêà.</P>
487
488 <P>Îáðàòèòå âíèìàíèå íà òî, ÷òî ïîòîêîâûé äåêîäåð íå èìååò ïðåäñòàâëåíèÿ î ïîçèöèè â ïîòîêå, îí òîëüêî ïðåîáðàçîâûâàåò äàííûå. ×òîáû îñóùåñòâëÿòü ïîèñê â ïîòîêå ôóíêöèè îáðàòíîãî âûçîâà ìîãóò òîëüêî ñáðàñûâàòü äàííûå äåêîäåðà ôóíêöèåé <TT>FLAC__stream_decoder_flush()</TT> è íà÷èíàòü ïîäàâàòü äàííûå ñ íîâîé ïîçèöèè ñ ïîìîùüþ îáðàòíîãî âûçîâà äëÿ ÷òåíèÿ. Äåêîäåð ôàéëîâ ïîñòóïàåò èìåííî òàê.</P>
489 \r
490 <P><B>ÄÅÊÎÄÅРÏÎÒÎÊΠѠÂÎÇÌÎÆÍÎÑÒÜÞ ÏÎÈÑÊÀ</B></P>\r
491
492 <P>Äåêîäåð ïîòîêîâ ñ âîçìîæíîñòüþ ïîèñêà ÿâëÿåòñÿ îáåðòêîé äëÿ ñòàíäàðòíîãî äåêîäåðà ïîòîêîâ. Òèï åãî ýêçåìïëÿðà - <TT>FLAC__SeekableStreamDecoder</TT>. Ê îáðàíûì âûçîâàì äåêîäåðà ïîòîêîâ äëÿ ÷òåíèÿ, çàïèñè, ðàáîòû ñ ìåòàäàííûìè è îáðàáîòêè îøèáîê íåîáõîäèìî äîáàâèòü åùå ñëåäóþùèå:</P>\r
493 \r
494 <UL>\r
495         <LI>Îáðàòíûé âûçîâ äëÿ ïîèñêà. Ýòà ôóíêöèÿ âûçûâàåòñÿ, êîãäà äåêîäåðó íóæíî íàéòè àáñîëþòíóþ ïîçèöèþ â ïîòîêå.</LI>\r
496         <LI>Îáðàòíûé âûçîâ äëÿ îïðåäåëåíèÿ òåêóùåé ïîçèöèè. Ýòà ôóíêöèÿ âûçûâàåòñÿ, êîãäà äåêîäåðó íóæíî óçíàòü òåêóùóþ ïîçèöèþ â ïîòîêå.</LI>\r
497         <LI>Îáðàòíûé âûçîâ äëÿ îïðåäåëåíèÿ ðàçìåðà ïîòîêà. Ôóíêöèÿ âûçûâàåòñÿ, êîãäà äåêîäåðó íóæíî óçíàòü ðàçìåð ïîòîêà. Èñïîëüçóåìîìó àëãîðèòìó ïîèñêà òðåáóåòñÿ çíàòü îáùèé ðàçìåð ïîòîêà.</LI>\r
498         <LI>Îáðàòíûé âûçîâ äëÿ îïðåäåëåíèÿ êîíöà ïîòîêà. Ôóíêöèÿ âûçûâàåòñÿ, êîãäà äåêîäåðó íóæíî çíàòü, äîñòèã ëè îí êîíöà ïîòîêà. Ýòîãî ðåçóëüòàòà ìîæíî äîáèòüñÿ, èñïîëüçóÿ îáðàòíûå âûçîâû äëÿ îïðåäåëåíèÿ òåêóùåé ïîçèöèè è îáùåãî ðàçìåðà, íî òàêîé ñïîñîá ìîæåò ïîòðåáîâàòü ãîðàçäî áîëüøå ðåñóðñîâ.</LI>\r
499 \r
500 <P>Ïîèñê îñóùåñâëÿåòñÿ ÷åðåç ìåòîä <TT>FLAC__seekable_stream_decoder_seek_absolute()</TT>. Â ëþáîé ìîìåíò ïîñëå èíèöèàëèçàöèè ïîëüçîâàòåë ìîæåò âûçâàòü ýòó ôóíêöèþ äëÿ ïåðåõîäà ê îïðäåëåííîìó ñýìïëó â ïîòîêå. Ïåðâûé îáðàòíûé âûçîâ çàïèñè áóäåò ñîäåðæàòü (âîçìîæíî, íåïîëíûé) áëîê, íà÷èíàþùèéñÿ ñ çàäàííîãî ñýìïëà.</P>\r
501 \r
502 <P>Äåêîäåð ïîòîêîâ ñ âîçìîæíîñòüþ ïîèñêà ïðåäîñòàâëÿåò ïðîâåðêó ïîäïèñåé MD5. Åñëè åå âêëþ÷èòü ïåðåä èíèöèàëèçàöèåé, ôóíêöèÿ <TT>FLAC__seekable_stream_decoder_finish()</TT> ñîîáùèò ñîâïàäàåò ëè ïîäïèñü MD5 äåêîäèðîâàííîãî ïîòîêà ñ ñîõðàíåííîé áëîêå <TT>STREAMINFO</TT>. Ïðîâåðêà ïîäïèñè MD5 àâòîìàòè÷åñêè îòêëþ÷àåòñÿ ïðè ïîïûòêå ïîñèêà èëè åñëè â áëîêå <TT>STREAMINFO</TT> íå íàéäåíà ïîäïèñü.</TT>\r
503
504 <P><B>ÄÅÊÎÄÅРÔÀÉËÎÂ</B></P>
505
506 <P>Äåêîäåð ôàéëîâ - ýòî îáîëî÷êà äåêîäåðà ïîòîêîâ ñ âîçìîæíîñòüþ ïîèñêà, ïðèçâàííàÿ óïðîñòèòü ïðîöåññ äåêîäèðîâàíèÿ ôàéëîâ. Òèï åãî ýêçåìïëÿðà - <TT>FLAC__FileDecoder</TT>. Îòëè÷èå îò ïîòîêîâîãî äåêîäåðà ñîñòîèò â òîì, ÷òî âìåñòî îáðàòíîãî âûçîâà äëÿ ÷òåíèÿ (êîòîðûé îáðàáàòûâàåò ñàì äåêîäåð) ïðè èíèöèàëèçàöèè óêàçûâàåòñÿ ïóòü ê ôàéëó. Âûïîëíåíèå îñòàëüíûõ ôóíêöèé äåêîäåð áåðåò íà ñåáÿ.</P>
507
508 <P>Àíàëîãè÷íî äåêîäåðó ïîòîêîâ ñ âîçìîæíîñòüþ ïîèñêà îí ïðåäîñòàâëÿåò ïîèñê ÷åðåç ìåòîä <TT>FLAC__file_decoder_seek_absolute()</TT>. Â ëþáîé ìîìåíò ïîñëå èíèöèàëèçàöèè äåêîäåðà ôàéëîâ ïðîãðàììà ìîæåò âûçâàòü ýòó ôóíêöèþ äëÿ ïîèñêà ñýìïëà â ôàéëå. Âïîñëåäñòâèè, ïðè ïåðâîì îáðàòíîì âûçîâå äëÿ çàïèñè îí áóäåò ñîäåðæàòü (âîçæîæíî íåïîëíûé) áëîê, íà÷èíàþùèéñÿ ñ ýòîãî ñýìïëà.</P>
509
510 <P>Îò äåêîäåðà ïîòîêîâ ñ âîçìîæíîñòüþ ïîèñêà òàêæå íàñëåäóåòñÿ ïðîâåðêà ïîäïèñè MD5. Åñëè ýòà âîçìîæíîñòü áóäåò âêëþ÷åíà ïåðåä èíèöèàëèçàöèåé, <TT>FLAC__file_decoder_finish()</TT> ñîîáùèò, åñëè ïîäïèñü MD5 ðàñïàêîâàííûõ äàííûõ íå ñîâïàäåò ñ ñîõðàíåííîé â áëîêå STREAMINFO. Ïðîâåðêà MD5 àâòîìàòè÷åñêè âûêëþ÷àåòñÿ, åñëè â áëîêå STREAMINFO íåò ïîäïèñè èëè ïðè ïîïûòêå îñóùåñòâëåíèÿ ïîèñêà.
511
512
513 <P><B>êîäåð ÏÎÒÎÊÎÂ</B></P>
514
515 <P>êîäåð ïîòîêîâ ðàáîòàåò àíàëîãè÷íî äåêîäåðó, îäíàêî èìååò ìåíüøå îáðàòíûõ âûçîâîâ è áîëüøå îïöèé. Òèï ýêçåìïëÿðà - <TT>FLAC__StreamEncoder</TT>. Äëÿ ñîçäàíèÿ íîâîãî ýêçåìïëÿðà â ïðîãðàììå íóæíî âûçâàòü ôóíêöèþ <TT>FLAC__stream_encoder_new()</TT>, à ÷òîáû ïðîèíèöèàëèçèðîâàòü åãî - <TT>FLAC__stream_encoder_init()</TT>.</P>
516
517 <P> îòëè÷èå îò ïðîöåññà äåêîäèðîâàíèÿ êîäèðîâàíèå â ôîðìàò FLAC èìååò ìíîæåñòâî îïöèé, âëèÿþùèõ íà ñêîðîñòü è óðîâåíü ñæàòèÿ. Êîãäà ïðîãðàììà âûçûâàåò <TT>FLAC__stream_encoder_init()</TT>, êîäåð ïðîâåðÿåò çíà÷åíèÿ, ïîýòîìó íåîáõîäèìî óáåäèòüñÿ, ÷òî âîçâðàùåìîå ýòîé ôóíêöèåé çíà÷åíèå - <TT>FLAC__STREAM_ENCODER_OK</TT>. Äëÿ óñòàíîâêè ïàðàìåòðîâ íóæíî èìåòü íåêîòîðîå ïðåäñòàâëåíèå î ôîðìàòå (ñì. <A HREF="#format">îïèñàíèå ôîðìàòà äëÿ ïîëüçîâàòåëÿ</A> èëè åãî <A HREF="format.html">ôîðìàëüíîå îïèñàíèå</A>). Ñïèñîê íåîáõîäèìûõ ïàðàìåòðîâ ïðèâåäåí çäåñü:</P>
518
519 <UL>
520     <LI><B><TT>streamable_subset</TT></B> - <TT>èñòèíà</TT>, åñëè íåîáõîäèìî, ÷òîáû âûõîä ñîîòâåòñòâîâàë ïîòîêîâîìó <A HREF="format.html#subset">ïîäìíîæåñòâó ôîðìàòà</A>, èíà÷å <TT>ëîæü</TT>.</LI>
521
522     <LI><B><TT>do_mid_side_stereo</TT></B> - <TT>èñòèíà</TT>, åñëè íóæíî èñïîëüçîâàòü óñðåäíåííîå êîäèðîâàíèå äëÿ ñòåðåî ïîòîêîâ. Çíà÷åíèå <TT>channels</TT> äîëæíî áûòü <TT>2</TT>.</LI>
523
524     <LI><B><TT>loose_mid_side_stereo</TT></B> - <TT>èñòèíà</TT>, ÷òîáû ïðèìåíèòü àäàïòèâíîå ïåðåêëþ÷åíèå ðåæèìà óñðåäíåííîãî êîäèðîâàíèÿ, èíà÷å ëîæü. <TT>do_mid_side_stereo</TT> äîëæíî áûòü èñòèíà.</LI>
525
526     <LI><B><TT>channels</TT></B> (êîëè÷åñòâî êàíàëîâ) - äîëæíî áûòü &lt;= <TT>FLAC__MAX_CHANNELS</TT>.</LI>
527
528     <LI><B><TT>bits_per_sample</TT></B> - êîëè÷åñòâî áèòîâ íà ñýìïë.</LI>
529
530     <LI><B><TT>sample_rate</TT></B> (÷àñòîòà äèñêðåòèçàöèè) - äîëæíî áûòü &lt;= <TT>FLAC__MAX_SAMPLE_RATE</TT>.</LI>
531
532     <LI><B><TT>blocksize</TT></B> (ðàçìåð áëîêà) - äîëæåí áûòü ìåæäó <TT>FLAC__MIN_BLOCKSIZE</TT> è <TT>FLAC__MAX_BLOCKSIZE</TT>.</LI>
533
534     <LI><B><TT>max_lpc_order</TT></B> (ìàêñèìàëüíûé ïîðÿäîê êîýôôèöèåíòîâ ëèíåéíîãî ïðîãíîçèðîâàíèÿ) - <TT>0</TT> óêàçûâàåò, ÷òî êîäåð íå äîëæåí èñïîëüçîâàòü LPC, à òîëüêî ïîñòîÿííûå ïðåäèêòîðû. Äîëæíî áûòü &lt;= <TT>FLAC__MAX_LPC_ORDER</TT>.</LI>
535
536     <LI><B><TT>qlp_coeff_precision</TT></B> - äîëæíî áûòü &gt;= <TT>FLAC__MIN_QLP_COEFF_PRECISION</TT>, èëè <TT>0</TT>, ÷òîáû êîäåð ìîã âûáèðàòü êîýôôèöèåíòû â çàâèñèìîñòè îò ðàçìåðà áëîêà. Â òåêóùåé ðåàëèçàöèè ñóììà <TT>qlp_coeff_precision</TT>+<TT>bits_per_sample</TT> äîëæíà áûòü &lt; <TT>32</TT>.</LI>
537
538     <LI><B><TT>do_qlp_coeff_prec_search</TT></B> - <TT>ëîæü</TT>, ÷òîáû èñïîëüçîâàòü çàäàííîå çíà÷åíèå <TT>qlp_coeff_precision</TT>; <TT>èñòèíà</TT> äëÿ ïîèñêà è âûáîðà ëó÷øåãî çíà÷åíèÿ <TT>qlp_coeff_precision</TT>.</LI>
539
540         <LI><B><TT>do_escape_coding</TT></B> - èñòèíà, åñëè íóæíî èñêàòü óïðàâëÿþùèé êîä íà ñòàäèè êîäèðîâàíèÿ ýíòðîïèè äëÿ íåáîëüøîãî óâåëè÷åíèÿ óðîâíÿ ñæàòèÿ.</LI>
541
542     <LI><B><TT>do_exhaustive_model_search</TT></B> (ïðîèçâîäèòü ïîëíûé ïîèñê íàèëó÷øåé ìîäåëè) - <TT>ëîæü</TT>, to use estimated bits per residual for scoring; <TT>èñòèíà</TT> äëÿ ïåðåáîðà âñåõ âîçìîæíûõ âàðèàíòîâ è âûáîðà íàèëó÷øåãî.</LI>
543
544     <LI><B><TT>min_residual_partition_order</TT></B> (ìèíèìàëüíûé ïîðÿäîê ðàçäåëà îñòàòêîâ), <B><TT>max_residual_partition_order</TT></B> (ìàêñèìàëüíûé ïîðÿäîê ðàçäåëà îñòàòêîâ)= <TT>0</TT>, ÷òîáû îöåíèâàòü ïàðàìåòð Ðàéñà îñíîâûâàÿñü íà äèñïåðñèè îñòàòêîâ; &gt; <TT>0</TT> äëÿ ðàçäåëåíèÿ îñòàòêîâ è îïðåäåëåíèÿ ïàðàìåòðà äëÿ êàæäîãî ðàçäåëà, îñíîâûâàÿñü íà ñðåäíåì. <TT>min_residual_partition_order</TT> è <TT>max_residual_partition_order</TT> îïðåäåëÿþò ìèíèìàëüíûé è ìàêñèìàëüíûé ïîðÿäîê ðàçäåëà Ðàéñà.</LI>
545
546     <LI><B><TT>rice_parameter_search_dist</TT></B> (èíòåðâàë äëÿ ïîèñêà ïàðàìåòðà Ðàéñà) - <TT>0</TT>, ÷òîáû èñïîëüçîâàòü òîëüêî âû÷èñëåííûé ïàðàìåòð <TT>k</TT>; èíà÷å ïûòàòüñÿ êîäèðîâàòü ñî âñåìè ïàðàìåòðàìè èç èíòåðâàëà [<TT>k</TT>-<TT>rice_parameter_search_dist</TT>..<TT>k</TT>+<TT>rice_parameter_search_dist</TT>] è âûáèðàòü ëó÷øèé âàðèàíò.</LI>
547
548     <LI><B><TT>total_samples_estimate</TT></B> (êîëè÷åñòâî ñýìïëîâ) - Ìîæåò ðàâíÿòüñÿ <TT>0</TT>, åñëè íåèçâåñòíî. Èíà÷å óêàçûâàåòñÿ êîëè÷åñòâî ñýìïëîâ, êîòîðîå íóæíî çàêîäèðîâàòü. Ýòî ïîçâîëÿåò ñîçäàâàòü áîëåå òî÷íûé áëîê <TT>STREAMINFO</TT> ïðè ïåðâîì æå ïðîõîäå â ñëó÷àå, êîãäà êîäåð íå ìîæåò âåðíóòüñÿ ê íà÷àëó âûâîäà, ÷òîáû îáíîâèòü áëîê <TT>STREAMINFO</TT>.</LI>
549
550     <LI><B><TT>seek_table</TT></B> (òàáëèöà äëÿ ïîèñêà) - ñîçäàòü íåîáÿçàòåëüíóþ òàáëèöó äëÿ ïîèñêà â ôàéëå. <TT>NULL</TT> óêàçûâàåò, ÷òî òàáëèöà íå íóæíà.</LI>
551
552     <LI><B><TT>padding</TT></B> (ðåçåðâèðîâàíèå ìåñòà) - ðàçìåð áëîêà <TT>PADDING</TT> (ñëåäóåò çà òàáëèöåé äëÿ ïîèñêà); <TT>-1</TT> îçíà÷àåò, ÷òî áëîê <TT>PADDING</TT> äîáàâëÿòü íå íóæíî. Ïîìíèòå, ÷òî óêàçûâàåòñÿ ðàçìåð äëÿ äàííûõ; îáùèé ðàçìåð áëîêà PADDING áóäåò íà 4 áàéòà áîëüøå èç-çà çàãîëîâêà.</LI>
553 </UL>
554
555 <P>Ïðîãðàììà äîëæíà ïðåäîñòàâèòü <TT>FLAC__stream_encoder_init()</TT> àäðåñà äëÿ ñëåäóþùèõ îáðàòíûõ âûçîâîâ:</TT>
556
557 <UL>
558     <LI>Îáðàòíûé âûçîâ äëÿ çàïèñè. Âûçûâàåòñÿ, êîãäà ïîÿâëÿþòñÿ çàêîäèðîâàííûå äàííûå äëÿ çàïèñè. Ýòî ìîãóò áûòü ìåòàäàííûå ñìåøàííûå ñ àóäèî ôðåéìàìè, ïðè÷åì íå ãàðàíòèðóåòñÿ, ÷òî äàííûå áóäóò âûðîâíåíû íà ãðàíèöó áëîêà ìåòàäàííûõ èëè ôðåéìà.</LI>
559
560     <LI>Îáðàòíûé âûçîâ äëÿ ðàáîòû ñ ìåòàäàííûìè. Âûçûâàåòñÿ îäíàæäû ïî çàâåðøåíèè êîäèðîâàíèÿ ñ populated ñòðóêòóðîé <TT>STREAMINFO</TT>. Ýòî íóæíî äëÿ òîãî, ÷òîáû êîäåðû ôàéëîâ ìîãëè âåðíóòüñÿ ê íà÷àëó ôàéëà è çàïèñàòü â áëîê <TT>STREAMINFO</TT> êîððåêòíûå äàííûå î êîäèðîâàíèè, íàïðèìåð ìèíèìàëüíûé è ìàêñèìàëüíûé ðàçìåð ôðåéìà.</LI>
561 </UL>
562
563 <P>Âûçîâ <TT>FLAC__stream_encoder_init()</TT> íåïîñðåäñòâåííî ïðîèçâîäèò îáðàòíûé âûçîâ äëÿ çàïèñè ñèãíàòóðû &quot;fLaC&quot; è âñåõ îïðåäåëåííûõ íà äàííûé ìîìåíò ìåòàäàííûõ.</P>
564
565 <P>Ïîñëå èíèöèàëèçàöèè ýêçåìïëÿðà ïðîãðàììà ìîæåò ïåðåäàâàòü äàííûå êîäåðó äâóìÿ ñïîñîáàìè:</P>
566
567 <UL>
568     <LI>Ðàçäåëåííûìè ïî êàíàëàì ÷åðåç <B><TT>FLAC__stream_encoder_process()</TT></B>. Â ýòîì ñëó÷àå íóæíî îïðåäåëèòü ìàññèâ óêàçàòåëåé íà áóôôåðû îäèíàêîâîãî ðàçìåðà, ïî îäíîìó íà êàæäûé êàíàë. Âûðàâíèâàòü ñýìïëû íà ãðàíèöó áëîêà íå íóæíî.</LI>
569
570     <LI> ÷åðåäóþùèõñÿ êàíàëàõ ÷åðåç <B><TT>FLAC__stream_encoder_process_interleaved()</TT></B>. Ïðîãðàììà äîëæíà ïåðåäàòü îäèí óêàçàòåëü íà àóäèî äàííûå ñ ÷åðåäóþùèìèñÿ êàíàëàìè (íàïðèìåð, <TT>êàíàë0_ñýìïë0, êàíàë1_ñýìïë0, ... , êàíàëN_ñýìïë0, êàíàë0_ñýìïë1, ...</TT>). Äàííûå ìîãóò áûòü íå âûðîâíåíû íà ãðàíèöó áëîêà, íî äîëæíû áûòü âûðîâíåíû íà ãðàíèöó ñýìïëà, ò.å. ïåðâûì çíà÷åíèåì äîëæíî áûòü <TT>êàíàë0_ñýìïëX</TT>, à ïîñëåäíèì - <TT>êàíàëN_ñýìïëY</TT>.</LI>
571 </UL>
572
573 <P>Äëÿ çàâåðøåíèÿ êîäèðîâàíèÿ äàííûõ ïðîãðàììà âûçûâàåò ôóíêöèþ <TT>FLAC__stream_encoder_finish()</TT>, êîòîðàÿ êîäèðóåò îñòàâøèåñÿ äàííûå èç âõîäíîãî ïîòîêà è äåëàåò îáðàòíûé âûçîâ äëÿ ðàáîòû ñ ìåòàäàííûìè ñ êîððåêòíîé ñòàòèñòèêîé î ïðîöåññå êîäèðîâàíèÿ. Ýêçåìïëÿð ìîæåò áûòü óäàëåí ôóíêöèåé <TT>FLAC__stream_encoder_delete()</TT> èëè èíèöèàëèçèðîâàí ñíîâà äëÿ êîäèðîâàíèÿ íîâîãî ïîòîêà.</P>
574
575
576 <P><B>ÐÀÇÍÎÅ</B></P>
577
578 <P>Íåîáõîäèìî îòìåòèòü, ÷òî êîãäà ïåðåäàþòñÿ óêàçàòåëè íà àóäèî äàííûå, èõ ïîðÿäîê èìååò çíà÷åíèå òîëüêî äëÿ ñòåðåî ïîòîêîâ. Êàíàë <TT>0</TT> ñîîòâåòñòâóåò ëåâîìó êàíàëó, à <TT>1</TT> - ïðàâîìó.</P>
579
580
581 <P><B>ÌÅÒÀÄÀÍÍÛÅ</B></P>
582
583 <P>Ïðîãðàììû, çàïèñûâàþùèå ñâîè áëîêè ìåòàäàííûõ <TT>APPLICATION</TT>, ìîãóò óêàçàòü êîäåðó, ÷òîáû îí çàïèñàë áëîê ìåòàäàííûõ <TT>PADDING</TT> íóæíîãî ðàçìåðà. Â ýòîì ñëó÷àå âìåñòî ïåðåçàïèñè âñåãî ïîòîêà ïîñëå êîäèðîâàíèÿ ïðîãðàììà ñìîæåò ïðîñòî çàìåíèòü áëîê <TT>PADDING</TT> íà ñâîé. Åñëè èçâåñòåí òîëüêî ìàêñèìàëüíûé ðàçìåð áëîêà <TT>APPLICATION</TT>, ïðîãðàììà ìîæåò ñîçäàòü ðåçåðâíûé áëîê ÷óòü áîëüøåãî ðàçìåðà, à ïîñëå êîäèðîâàíèÿ ðàçäåëèòü åãî íà áëîêè <TT>APPLICATION</TT> è <TT>PADDING</TT>.</P>
584
585 <P>Åñëè ðàçìåð áëîêà ìåòàäàííûõ <TT>APPLICATION</TT> èçâåñòåí çàðàíåå, ðàçìåð ðåçåðâèðóåìîé îáëàñòè ìîæåò áûòü ëåãêî âû÷åñëåí. Åñëè ðàçìåð áëîêà <TT>APPLICATION</TT> (íå âêëþ÷àÿ çàãîëîâîê áëîêà) ðàâåí <TT>N</TT> áàéòàì, òî ýêçåìïëÿðó FLAC__StreamEncoder ïåðåä èíèöèàëèçàöèåé íóæíî ïåðåäàòü çíà÷åíèå <TT>N+4</TT>. Ýòî íóæíî, ÷òîáû ó÷åñòü äîïîëíèòåëüíîå ìåñòî íåîáõîäèìîå äëÿ õðàíåíèÿ èäåíòèôèêàòîðà ïðèëîæåíèÿ.</P>
586
587 <P>Êîãäà èçâåñòåí òîëüêî ìàêñèìàëüíûé ðàçìåð, ñêàæåì, <TT>N</TT> áàéò, íóæíî çàðåçåðâèðîâàòü <TT>N+8</TT> áàéò. ×åòûðå äëÿ ID ïðèëîæåíèÿ è ÷åòûðå äëÿ äîïîëíèòåëüíîãî áëîêà <TT>PADDING</TT>, êîòîðûé çàïîëíèò îñòàâøååñÿ ïðîñòðàíñòâî. Ïî îêîí÷àíèè êîäèðîâàíèÿ, êîãäà ðàçìåð áëîêà äàííûõ <TT>APPLICATION</TT> ñòàíîâèòñÿ èçâåñòíîé è ðàâíîé, äîïóñòèì, <TT>M</TT> áàéòàì, íà ìåñòî ïåðâîíà÷àëüíîãî áëîêà <TT>PADDING</TT> áóäåò çàïèñàí áëîê <TT>APPLICATION</TT> è áëîê <TT>PADDING</TT> äëèíîé <TT>N-M</TT> áàéòîâ.</P>
588
589
590 <A NAME="bugs">
591 <H3>Èçâåñòíûå îøèáêè</H3>
592
593 <P>Îòñëåæèâàíèå îøèáîê âåäåòñÿ íà <A HREF="http://sourceforge.net/bugs/?group_id=13478">ýòîé</A> ñòðàíèöå ïðîåêòà, íàõîäÿùåéñÿ íà SourceForge. Åñëè Âû áóäåòå ñîîáùàòü îá îøèáêå, ïîæàëóéñòà, îñòàâüòå e-mail äëÿ êîíòàêòà.</P>
594 \r
595 <A NAME="monkey">
596 <H3>monkey</H3>
597
598 <P>Monkey's Audio ïîñòàâëÿåòñÿ ñ óäîáíûì ïîëüçîâàòåëüñêèì èíòåðôåéñîì. Îí ïîääåðæèâàåò íåñêîëüêî âíåøíèõ êîäåðîâ, â ÷èñëî êîòîðûõ íå âõîäèò FLAC. Îäíàêî äèñòðèáóòèâ FLAC äëÿ Windows ïîñòàâëÿåòñÿ ñ óòèëèòîé, ïîçâîëÿþùåé çàìåíèòü îäèí èç ïîääåðæèâàåìûõ âíåøíèõ êîäåêîâ íà FLAC. Ýòî ìîæíî ñäåëàòü òàê:</P>
599
600 <UL>
601 <LI>Ñêîïèðóéòå <B><TT>flac.exe</TT></B> è <B><TT>flac_ren.exe</TT></B> â êàòàëîã <B><TT>External/</TT></B> óñòàíîâêè Monkey's Audio.</LI>
602
603 <LI>Âûáåðèòå, êàêîé ïîääåðæèâàåìûé êîäåð çàìåíèòü:
604     <UL>
605     <LI>Shorten - ñêîïèðóéòå <B><TT>flac_mac.exe</TT></B> ïîâåðõ <B><TT>External/shortn32.exe</TT></B></LI>
606     <LI>WavPack - ñêîïèðóéòå <B><TT>flac_mac.exe</TT></B> ïîâåðõ <B><TT>External/wavpack.exe</TT></B> è <B><TT>External/wvunpack.exe</TT></B></LI>
607     <LI>RKAU - ñêîïèðóéòå <B><TT>flac_mac.exe</TT></B> ïîâåðõ <B><TT>External/rkau.exe</TT></B></LI>
608     </UL>
609 Åñëè âûáðàòü WavPack, òî äëÿ èçìåíåíèÿ îïöèé FLAC áóäåò äîñòóïíî ìåíþ íàñòðîéêè WavPack Configuration.</LI>
610 <LI>Òåïåðü ìîæíî êîäèðîâàòü â ôîðìàò FLAC. Ïåðåèìåíîâàííûé ôàéë <B><TT>flac_mac.exe</TT></B> âûçûâàåò <B><TT>flac.exe</TT></B>, à çàòåì <B><TT>flac_ren.exe</TT></B> äëÿ ïðèñâîåíèÿ ïîëó÷àåìîìó ôàéëó ðàñøèðåíèÿ .flac.</LI>
611 </UL>
612 </P>
613
614 <P>Åñëè âàì íðàâèòñÿ èñïîëüçîâàòü îáîëî÷êó Monkey's Audio GUI äëÿ ïîëó÷åíèÿ ôàéëîâ FLAC, ïîïðîñèòå <A HREF="mailto:email@monkeysaudio.com">Ìýòà</A> (àâòîðà) äîáàâèòü îôèöèàëüíóþ ïîääåðæêó FLAC! Äðóãèå îáîëî÷êè ìîæíî èñïîëüçîâàòü àíàëîãè÷íûì îáðàçîì. Åñëè âû çàèòåðåñîâàíû â èñïîëüçîâàíèè êàêîé-ëèáî, ïèøèòå â ñïèñîê ðàññûëêè flac-dev.</P>
615
616 <P>&nbsp;Copyright (c) 2000,2001,2002 Josh Coalson</P>
617
618 </BODY>
619 </HTML>