summaryrefslogtreecommitdiffstats
path: root/tde-i18n-ru/docs/tdemultimedia/artsbuilder/future.docbook
diff options
context:
space:
mode:
Diffstat (limited to 'tde-i18n-ru/docs/tdemultimedia/artsbuilder/future.docbook')
-rw-r--r--tde-i18n-ru/docs/tdemultimedia/artsbuilder/future.docbook318
1 files changed, 78 insertions, 240 deletions
diff --git a/tde-i18n-ru/docs/tdemultimedia/artsbuilder/future.docbook b/tde-i18n-ru/docs/tdemultimedia/artsbuilder/future.docbook
index 8aea719faa4..a8234105237 100644
--- a/tde-i18n-ru/docs/tdemultimedia/artsbuilder/future.docbook
+++ b/tde-i18n-ru/docs/tdemultimedia/artsbuilder/future.docbook
@@ -5,392 +5,230 @@ To validate or process this file as a standalone document, uncomment
this prolog. Be sure to comment it out again when you are done -->
<chapter id="future-work">
-<title
->Дальнейшая работа</title>
+<title>Дальнейшая работа</title>
-<para
->В этом разделе описывается то, над чем мы сейчас работаем. А так как разработка ведётся быстро, информация может быть устаревшей. Чтобы узнать о последних планах, проверяйте список файла TODO и <link linkend="mailing-lists"
->список рассылки</link
->. Не забывайте о том, что вы тоже можете принять участие в разработке. </para>
+<para>В этом разделе описывается то, над чем мы сейчас работаем. А так как разработка ведётся быстро, информация может быть устаревшей. Чтобы узнать о последних планах, проверяйте список файла TODO и <link linkend="mailing-lists">список рассылки</link>. Не забывайте о том, что вы тоже можете принять участие в разработке. </para>
-<para
->Это черновик, в котором описано, как новые технологии внедряются в &arts;. Вот какие темы здесь упомянуты: </para>
+<para>Это черновик, в котором описано, как новые технологии внедряются в &arts;. Вот какие темы здесь упомянуты: </para>
<itemizedlist>
-<listitem
-><para
->Как работает интерфейс.</para
-></listitem>
-<listitem
-><para
->Кодеки - декодирование потоков mp3 или wav для того, чтобы использовать их как данные.</para
-></listitem>
-<listitem
-><para
->Видео.</para
-></listitem>
-<listitem
-><para
->Многопоточность.</para
-></listitem>
-<listitem
-><para
->Синхронизация.</para
-></listitem>
-<listitem
-><para
->Динамическое расширение.</para
-></listitem>
-<listitem
-><para
->Динамическое построение.</para
-></listitem>
-<listitem
-><para
->&GUI;</para
-></listitem>
-<listitem
-><para
->&MIDI;</para
-></listitem>
+<listitem><para>Как работает интерфейс.</para></listitem>
+<listitem><para>Кодеки - декодирование потоков mp3 или wav для того, чтобы использовать их как данные.</para></listitem>
+<listitem><para>Видео.</para></listitem>
+<listitem><para>Многопоточность.</para></listitem>
+<listitem><para>Синхронизация.</para></listitem>
+<listitem><para>Динамическое расширение.</para></listitem>
+<listitem><para>Динамическое построение.</para></listitem>
+<listitem><para>&GUI;</para></listitem>
+<listitem><para>&MIDI;</para></listitem>
</itemizedlist>
-<para
->Над этим мы сейчас работаем. Если вы хотите увидеть технологию в &arts;, начните с этого. Вы получите общее представление о решающихся проблемах. Вы можете и исправить эту информацию. </para>
+<para>Над этим мы сейчас работаем. Если вы хотите увидеть технологию в &arts;, начните с этого. Вы получите общее представление о решающихся проблемах. Вы можете и исправить эту информацию. </para>
-<para
->То, что будет использоваться совместно с &arts; (поэтому координируйте свои действия, пожалуйста): </para>
+<para>То, что будет использоваться совместно с &arts; (поэтому координируйте свои действия, пожалуйста): </para>
<itemizedlist>
<listitem>
-<para
-><application
->KPhone</application
-> (передача речи по протоколу <acronym
->IP</acronym
->) </para>
+<para><application>KPhone</application> (передача речи по протоколу <acronym>IP</acronym>) </para>
</listitem>
<listitem>
-<para
->&noatun; (видео- и аудиопроигрыватель) </para>
+<para>&noatun; (видео- и аудиопроигрыватель) </para>
</listitem>
<listitem>
-<para
->&artscontrol; (программа управления звуковым сервером, для осциллографов) </para>
+<para>&artscontrol; (программа управления звуковым сервером, для осциллографов) </para>
</listitem>
<listitem>
-<para
-><application
->Brahms</application
-> (музыкальный синтезатор) </para>
+<para><application>Brahms</application> (музыкальный синтезатор) </para>
</listitem>
<listitem>
-<para
-><application
->Kaiman</application
-> (&kde;2 медиа-проигрыватель, совместим с kmedia2) </para>
+<para><application>Kaiman</application> (&kde;2 медиа-проигрыватель, совместим с kmedia2) </para>
</listitem>
<listitem>
-<para
-><application
->mpglib</application
->/<application
->kmpg</application
-> (<acronym
->mpg</acronym
-> - технология воспроизведения аудио и видео) </para>
+<para><application>mpglib</application>/<application>kmpg</application> (<acronym>mpg</acronym> - технология воспроизведения аудио и видео) </para>
</listitem>
<listitem>
-<para
-><application
->SDL</application
-> (обращение к мульитмедиа-данным напрямую, для игр, ещё не реализовано) </para>
+<para><application>SDL</application> (обращение к мульитмедиа-данным напрямую, для игр, ещё не реализовано) </para>
</listitem>
<listitem>
-<para
-><application
->electric ears</application
-> (автор со мной связался - статус неизвестен) </para>
+<para><application>electric ears</application> (автор со мной связался - статус неизвестен) </para>
</listitem>
</itemizedlist>
<sect1 id="interfaces-how">
-<title
->Как работает интерфейс</title>
+<title>Как работает интерфейс</title>
<!-- I think this is now obsolete and documented elsewhere ? -->
-<para
->Интерфейсы &MCOP; - основа идеи &arts;. Они эквивалентны классам в C++. Когда возможно, ориентируйтесь на интерфейсы. Они состоят из четырёх частей: </para>
+<para>Интерфейсы &MCOP; - основа идеи &arts;. Они эквивалентны классам в C++. Когда возможно, ориентируйтесь на интерфейсы. Они состоят из четырёх частей: </para>
<itemizedlist>
-<listitem
-><para
->Синхронные потоки</para
-></listitem>
-<listitem
-><para
->Асинхронные потоки</para
-></listitem>
-<listitem
-><para
->Методы</para
-></listitem>
-<listitem
-><para
->Атрибуты</para
-></listitem>
+<listitem><para>Синхронные потоки</para></listitem>
+<listitem><para>Асинхронные потоки</para></listitem>
+<listitem><para>Методы</para></listitem>
+<listitem><para>Атрибуты</para></listitem>
</itemizedlist>
-<para
->Их можно смешивать как угодно. Новые технологии должны быть определены в терминах интерфейсов. Прочитайте разделы о синхронных и асинхронных потоках, а также об интерфейсах KMedia2, которые являются замечательными примерами работы интерфейсов. </para>
-
-<para
->Интерфейсы определены в коде <literal role="extension"
->.idl</literal
-> и компилируются <command
->mcopidl</command
->. Вы создаёте производный класс <classname
-><replaceable
->Interfacename</replaceable
->_impl</classname
-> и используете функцию <function
->REGISTER_IMPLEMENTATION(Interfacename_impl)</function
->, чтобы встроить ваши объктные реализации в систему объектов &MCOP;. </para>
+<para>Их можно смешивать как угодно. Новые технологии должны быть определены в терминах интерфейсов. Прочитайте разделы о синхронных и асинхронных потоках, а также об интерфейсах KMedia2, которые являются замечательными примерами работы интерфейсов. </para>
+
+<para>Интерфейсы определены в коде <literal role="extension">.idl</literal> и компилируются <command>mcopidl</command>. Вы создаёте производный класс <classname><replaceable>Interfacename</replaceable>_impl</classname> и используете функцию <function>REGISTER_IMPLEMENTATION(Interfacename_impl)</function>, чтобы встроить ваши объктные реализации в систему объектов &MCOP;. </para>
</sect1>
<sect1 id="codecs">
-<title
->Кодеки - Декодирование данных</title>
+<title>Кодеки - Декодирование данных</title>
-<para
->Интерфейсы kmedia2 позволяют игнорировать файлы wav, mp3 и всё, что состоит из потоков данных. Вместо этого вы описываете методы их воспроизведения. </para>
+<para>Интерфейсы kmedia2 позволяют игнорировать файлы wav, mp3 и всё, что состоит из потоков данных. Вместо этого вы описываете методы их воспроизведения. </para>
-<para
->Поэтому вы можете написать программу загрузки файлов wave таким образом, чтобы она пригрывала их (как PlayObject), но никто другой, кроме вас, не сможет использовать код. </para>
+<para>Поэтому вы можете написать программу загрузки файлов wave таким образом, чтобы она пригрывала их (как PlayObject), но никто другой, кроме вас, не сможет использовать код. </para>
-<para
->Альтернативой являются асинхронные потоки. Вы определяете интерфейс, который позволяет передавать блоки данных. В &MCOP; это выглядит так: </para>
+<para>Альтернативой являются асинхронные потоки. Вы определяете интерфейс, который позволяет передавать блоки данных. В &MCOP; это выглядит так: </para>
-<programlisting
->interface Codec {
+<programlisting>interface Codec {
in async byte stream indata;
out async byte stream outdata;
};
</programlisting>
-<para
->Конечно, кодеки могут снабжаться атрибутами для получения дополнительной информации, к примеру, о формате. </para>
+<para>Конечно, кодеки могут снабжаться атрибутами для получения дополнительной информации, к примеру, о формате. </para>
-<programlisting
->interface ByteAudioCodec {
+<programlisting>interface ByteAudioCodec {
in async byte stream indata;
out async byte stream outdata;
readonly attribute samplingRate, bits, channels;
};
</programlisting>
-<para
->Этот <interfacename
->ByteAudioCodec</interfacename
->, например, может быть подключен к объекту <interfacename
->ByteStreamToAudio</interfacename
-> для создания настоящего аудио потока. </para>
+<para>Этот <interfacename>ByteAudioCodec</interfacename>, например, может быть подключен к объекту <interfacename>ByteStreamToAudio</interfacename> для создания настоящего аудио потока. </para>
-<para
->Конечно, в других типах кодеков видео воспроизводится напрямую, например </para>
+<para>Конечно, в других типах кодеков видео воспроизводится напрямую, например </para>
-<programlisting
->interface VideoCodec {
+<programlisting>interface VideoCodec {
in async byte stream indata;
out video stream outdata; /* note: видеопотоки ещё не используются */
};
</programlisting>
-<para
->Кодек не должен разрабатываться по принципу <quote
->вы знаете, как воспроизводить, а я - нет</quote
->, как, например, <interfacename
->WavPlayObject</interfacename
->. И всё же кто-то должен сидеть и тестировать его до завершения <acronym
->API</acronym
->. </para>
+<para>Кодек не должен разрабатываться по принципу <quote>вы знаете, как воспроизводить, а я - нет</quote>, как, например, <interfacename>WavPlayObject</interfacename>. И всё же кто-то должен сидеть и тестировать его до завершения <acronym>API</acronym>. </para>
</sect1>
<sect1 id="video">
-<title
->Видео</title>
+<title>Видео</title>
-<para
->Я хочу сделать видео асинхронными потоками некоторых встроенных типов данных &MCOP;, содержащих изображения. Сейчас идёт работа над этим типом данных. Тогдга модули, работающие с видео изображениями могут быть подключены так же, как и модули, работающие со звуком. </para>
+<para>Я хочу сделать видео асинхронными потоками некоторых встроенных типов данных &MCOP;, содержащих изображения. Сейчас идёт работа над этим типом данных. Тогдга модули, работающие с видео изображениями могут быть подключены так же, как и модули, работающие со звуком. </para>
-<para
->Есть ещё несколько вещей, которые обязательно нужно иметь в виду: </para>
+<para>Есть ещё несколько вещей, которые обязательно нужно иметь в виду: </para>
<itemizedlist>
<listitem>
-<para
->Цветовые пространства <acronym
->RGB</acronym
-> и <acronym
->YUV</acronym
-> </para>
+<para>Цветовые пространства <acronym>RGB</acronym> и <acronym>YUV</acronym> </para>
</listitem>
<listitem>
-<para
->Формат должен каким-то образом добавляться к потоку. </para>
+<para>Формат должен каким-то образом добавляться к потоку. </para>
</listitem>
<listitem>
-<para
->Очень важна синхронизация. </para>
+<para>Очень важна синхронизация. </para>
</listitem>
</itemizedlist>
-<para
->Также я хочу оставить возможность переопределить класс <classname
->VideoFrame</classname
->, чтобы он мог хранить данные в разделённой памяти. Тогда будут возможны видео потоки между различными процессами без особых проблем. </para>
+<para>Также я хочу оставить возможность переопределить класс <classname>VideoFrame</classname>, чтобы он мог хранить данные в разделённой памяти. Тогда будут возможны видео потоки между различными процессами без особых проблем. </para>
-<para
->Как обычно, вся обработка видео, от декодирования до отображения на экране, должна производиться в одном процессе. </para>
+<para>Как обычно, вся обработка видео, от декодирования до отображения на экране, должна производиться в одном процессе. </para>
-<para
->Я сделал прототип реализации видеопотоков, который вы можете скачать <ulink url="http://space.twc.de/~stefan/kde/download/video-quickdraw.tar.gz"
->отсюда</ulink
->. Его нужно будет интегрировать в &MCOP; после тестирования. </para>
+<para>Я сделал прототип реализации видеопотоков, который вы можете скачать <ulink url="http://space.twc.de/~stefan/kde/download/video-quickdraw.tar.gz">отсюда</ulink>. Его нужно будет интегрировать в &MCOP; после тестирования. </para>
-<para
->Компонент визуализации должен поддерживать XMITSHM (с <acronym
->RGB</acronym
-> и <acronym
->YUV</acronym
->), Мартин Вогт (Martin Vogt) сказал, что работает над этим. </para>
+<para>Компонент визуализации должен поддерживать XMITSHM (с <acronym>RGB</acronym> и <acronym>YUV</acronym>), Мартин Вогт (Martin Vogt) сказал, что работает над этим. </para>
</sect1>
<sect1 id="threading">
-<title
->Многопоточность</title>
+<title>Многопоточность</title>
-<para
->Сейчас &MCOP; не поддерживает работу с несколькими потоками обработки данных. Возможно, мы не сможем избежать многопоточности при работе с видео. Но есть вещи, с которыми нужно обращаться аккуратно: </para>
+<para>Сейчас &MCOP; не поддерживает работу с несколькими потоками обработки данных. Возможно, мы не сможем избежать многопоточности при работе с видео. Но есть вещи, с которыми нужно обращаться аккуратно: </para>
<itemizedlist>
-<listitem
-><para
->SmartWrappers - их использование с многопоточностью небезопасно из-за незащищенного механизма подсчета ссылок и т. д. </para>
+<listitem><para>SmartWrappers - их использование с многопоточностью небезопасно из-за незащищенного механизма подсчета ссылок и т. д. </para>
</listitem>
<listitem>
-<para
->Диспетчер ввода-вывода тоже небезопасен. </para>
+<para>Диспетчер ввода-вывода тоже небезопасен. </para>
</listitem>
</itemizedlist>
-<para
->Однако я мечтаю сделать эти модули безопасными для синхронных и асинхронных потоков. Тогда можно будет посылать сигнал на несколько процессоров. Кроме того, это можно использовать при воспроизведении аудио на многопроцессорных системах. </para>
+<para>Однако я мечтаю сделать эти модули безопасными для синхронных и асинхронных потоков. Тогда можно будет посылать сигнал на несколько процессоров. Кроме того, это можно использовать при воспроизведении аудио на многопроцессорных системах. </para>
-<para
->Как это будет работать: </para>
+<para>Как это будет работать: </para>
<itemizedlist>
<listitem>
-<para
->Система управления потоками решает, что должны обрабатывать модули (и какие), т. е.: </para>
+<para>Система управления потоками решает, что должны обрабатывать модули (и какие), т. е.: </para>
<itemizedlist>
- <listitem
-><para
->видеокадры (метод process_indata)</para
-></listitem>
- <listitem
-><para
->синхронные аудиопотоки (calculateBlock)</para
-></listitem>
- <listitem
-><para
->другие асинхронные потоки, в основном байтовые</para
-></listitem>
+ <listitem><para>видеокадры (метод process_indata)</para></listitem>
+ <listitem><para>синхронные аудиопотоки (calculateBlock)</para></listitem>
+ <listitem><para>другие асинхронные потоки, в основном байтовые</para></listitem>
</itemizedlist>
</listitem>
<listitem>
-<para
->Модули могут обрабатывать эти вещи и в собственных потоках. В аудио можно использовать потоки повторно (т. е. использование 4 потоков на 4 процессорах, даже если запущено 100 модулей). Для видео и декомпрессии будет удобно использование блокирующего средства во внутреннем потоке, которое синхронизировано с остальной частью &MCOP; системой управления потоками. </para>
+<para>Модули могут обрабатывать эти вещи и в собственных потоках. В аудио можно использовать потоки повторно (т. е. использование 4 потоков на 4 процессорах, даже если запущено 100 модулей). Для видео и декомпрессии будет удобно использование блокирующего средства во внутреннем потоке, которое синхронизировано с остальной частью &MCOP; системой управления потоками. </para>
</listitem>
<listitem>
-<para
->Модули могут не использовать средства &MCOP; (такие, как удалённый вызов) во время работы в потоке. </para>
+<para>Модули могут не использовать средства &MCOP; (такие, как удалённый вызов) во время работы в потоке. </para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="synchronization">
-<title
->Синхронизация</title>
+<title>Синхронизация</title>
-<para
->Видео и &MIDI; (и аудио) могут требовать синхронизации. Это могут быть маркеры времени. Я хочу использовать их в асинхронным потокам, добавляя эти маркеры к каждому пакету. Если вы посылаете два видеокадра, сделайте их пвкетами (всё равно они большие), чтобы у вас были два разных маркера. </para>
+<para>Видео и &MIDI; (и аудио) могут требовать синхронизации. Это могут быть маркеры времени. Я хочу использовать их в асинхронным потокам, добавляя эти маркеры к каждому пакету. Если вы посылаете два видеокадра, сделайте их пвкетами (всё равно они большие), чтобы у вас были два разных маркера. </para>
-<para
->Т. к. аудио - синхронный поток, временные метки здесь тоже подразумеваются. </para>
+<para>Т. к. аудио - синхронный поток, временные метки здесь тоже подразумеваются. </para>
</sect1>
<sect1 id="dynamic-composition">
-<title
->Динамическое построение</title>
+<title>Динамическое построение</title>
-<para
->Нужно сделать так, чтобы можно было сказать: эффект FX состоит из этих простых модулей. FX должен выглядеть как обычный модуль &MCOP;, но состоять из других модулей. </para>
+<para>Нужно сделать так, чтобы можно было сказать: эффект FX состоит из этих простых модулей. FX должен выглядеть как обычный модуль &MCOP;, но состоять из других модулей. </para>
-<para
->Это необходимо для &arts-builder;. </para>
+<para>Это необходимо для &arts-builder;. </para>
</sect1>
<sect1 id="gui">
-<title
->&GUI;</title>
+<title>&GUI;</title>
-<para
->Все компоненты &GUI; будут модулями &MCOP;. У них должны быть такие атрибуты, как размер, метка, цвет, ... &arts-builder; должен уметь составлять их визуально. </para>
+<para>Все компоненты &GUI; будут модулями &MCOP;. У них должны быть такие атрибуты, как размер, метка, цвет, ... &arts-builder; должен уметь составлять их визуально. </para>
-<para
->Должна быть возможность сохранять графический интерфейс, сохраняя атрибуты. </para>
+<para>Должна быть возможность сохранять графический интерфейс, сохраняя атрибуты. </para>
</sect1>
<sect1 id="midi-stuff">
-<title
->&MIDI;</title>
+<title>&MIDI;</title>
-<para
->&MIDI; будет реализован с помощью асинхронных потоков. Есть два варианта: использовать обычные структуры &MCOP; для описания типа или вводить новые стандартные типы. </para>
+<para>&MIDI; будет реализован с помощью асинхронных потоков. Есть два варианта: использовать обычные структуры &MCOP; для описания типа или вводить новые стандартные типы. </para>
-<para
->Думаю, обычных структур будет достаточно: </para>
+<para>Думаю, обычных структур будет достаточно: </para>
-<programlisting
->struct MidiEvent {
+<programlisting>struct MidiEvent {
byte b1,b2,b3;
sequence&lt;byte&gt; sysex;
}
</programlisting>
-<para
->Асинхронные потоки должны поддерживать обычные типы потоков. </para>
+<para>Асинхронные потоки должны поддерживать обычные типы потоков. </para>
</sect1>