<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Блоги &#187; Slava Korobycin (Intel)</title>
	<atom:link href="http://software.intel.com/ru-ru/blogs/author/slava-korobycin/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/ru-ru/blogs</link>
	<description></description>
	<lastBuildDate>Thu, 24 May 2012 12:16:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Улучшаем качество видео на халяву</title>
		<link>http://software.intel.com/ru-ru/blogs/2010/04/23/2003525/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2010/04/23/2003525/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 09:42:11 +0000</pubDate>
		<dc:creator>Slava Korobycin (Intel)</dc:creator>
				<category><![CDATA[Графика]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2010/04/23/2003525/</guid>
		<description><![CDATA[Рассмотрим обычную ситуацию: у Вас есть коллекция любимых фильмов на Blue Ray и Вы хотите конвертнуть их на нетбук или другое мобильное устройство, чтобы скоротать время в долгой поездке. Казалось бы, нет ничего проще, да? В этом блоге я вкратце расскажу о ключевых моментах и о том, как Intel® Media SDK может помочь Вам с транскодированием видео на платформах с аппаратным ускорением графики.]]></description>
			<content:encoded><![CDATA[<p>Рассмотрим обычную ситуацию: у Вас есть коллекция любимых фильмов на Blue Ray и Вы хотите конвертнуть их на нетбук или другое мобильное устройство, чтобы скоротать время в долгой поездке. Казалось бы, нет ничего проще, да? На самом деле, чтобы найти хорошее решение, нужно понимать какие константы, переменные и связи между ними в нашем преобразовании. В этом блоге я вкратце расскажу о ключевых моментах и о том, как Intel® Media SDK может помочь Вам с транскодированием видео на платформах с аппаратным ускорением графики.</p>
<p>Итак, мы имеем следующие константы:</p>
<ul type="disc">
<li>На входе</li>
<ul type="circle">
<li>High Definition видео, к примеру 1920x1080 30Mbps</li>
</ul>
<p></p>
<li>На выходе:</li>
<ul type="circle">
<li>Экран с низким (по сравнению с HD) разрешением. Чтобы исключить затраты на масштабирование и связанных с ним искажений картинки, рекомендуется использовать «родное» разрешение экрана, скажем 640x480</li>
<li>Энергосберегающая платформа. Скорость декодирования чувствительна к bit rate, поэтому мы не должны задирать этот параметр, чтобы видео игралось гладко без дёрганий (1Mbps или меньше, например)</li>
<li>Ограниченный объём памяти. Мы должны позаботиться, чтобы все выбранные нами фильмы убрались на диск / флэшку</li>
</ul>
</ul>
<p>Переменные:</p>
<ul type="disc">
<li>Параметры энкодера</li>
<ul type="circle">
<li>Процесс преобразования используемый в нашем примере называется транскодированием. Обычно его запускают на мощных компьютерах, и мы можем балансировать длительностью процесса, размером получаемых файлов и качеством видео. Ключевые переменные тут bit rate и target usage. Bit rate задаёт количество бит для одной секунды видео потока, а target usage определяет такие параметры как: количество опорных кадров, метод поиска motion estimation векторов, метод упаковки и так далее</li>
</ul>
</ul>
<p>И основные взаимосвязи:</p>
<ul type="disc">
<li>Чем больше bit rate, тем:</li>
<ul type="circle">
<li>выше качество видео, дольше процесс, больше размер файла</li>
<li>ниже скорость декодирования</li>
</ul>
<p></p>
<li>Чем выше target usage, тем:</li>
<ul type="circle">
<li>выше качество видео, дольше процесс, а размер файла такой же</li>
<li>ниже скорость декодирования</li>
</ul>
</ul>
<p>Используя асинхронную модель, предлагаемую Intel® Media SDK, операции Decode, Video Pre Processing (VPP) и Encode в приложениях выполняется параллельно. Это позволяет хорошо использовать вычислительные ресурсы для заданных параметров кодирования. К сожалению, не существует автоматического способа подбора оптимальных параметров для конкретной платформы и пользователя. Поэтому я часто наблюдаю, что процессор простаивает при транскодировании High Definition в Low Resolution с параметрами по умолчанию (Диаграмма 1)</p>
<div id="attachment_2003521" class="wp-caption aligncenter" style="width: 680px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Encode1.jpg"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Encode1.jpg" alt="" width="670" height="202" class="size-full wp-image-2003521" /></a><p class="wp-caption-text">Диаграмма 1: Транскодирование High Definition в Low Resolution видео с параметрами по умолчанию может терять значительную часть вычислительных ресурсов</p></div>
<p>В этом выдуманном примере Encode обрабатывает данные быстрее, чем Decode и VPP. Поэтому простаивают ресурсы CPU. В результате качество картинки может быть далеко от совершенства (Рисунок 1).</p>
<div id="attachment_2003522" class="wp-caption aligncenter" style="width: 680px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Encode2.jpg"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Encode2.jpg" alt="" width="670" height="309" class="size-full wp-image-2003522" /></a><p class="wp-caption-text">Рисунок 1: При транскодировании с параметрами по умолчанию качество картинки может быть низким</p></div>
<p>Как Вы видите, в нашем примере процесс работает со скоростью самой медленной компоненты Decode. Воспользуемся же этим и подкрутим параметры Encode, чтобы получить более качественную картинку при той же скорости просто нагружая незадействованные ресурсы. Это означает, что в нашем случае более сложные алгоритмы кодирования могут быть использованы для улучшения результата на халяву <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (Рисунок 2). Настройка проводится подбором значений переменных bit rate и target usage, помня, что они оба нагружают декодер, улучшая качество; а размер файла линейно зависит от bit rate и практически не зависит от target usage. Я советую произвести несколько пристрелочных запусков транскодирования небольшого отрывка в несколько секунд с различными настройками, чтобы выбрать подходящие. Для оценки загрузки CPU можно воспользоваться приложением Windows Task Manager и убедиться, что процессор загружен полезной работой. (Диаграмма 2). Как только соотношение качества видео / размера файла / продолжительности процесса Вас устраивают можно запускать транскодирование в пакетном режиме и заняться другими делами (например, позвонить родителям).</p>
<div id="attachment_2003523" class="wp-caption aligncenter" style="width: 680px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Encode3.jpg"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Encode3.jpg" alt="" width="670" height="204" class="size-full wp-image-2003523" /></a><p class="wp-caption-text">Диаграмма 2: Транскодироавание с оптимальными настройками загружает теряемые ранее ресурсы полезной работой</p></div>
<div id="attachment_2003524" class="wp-caption aligncenter" style="width: 680px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Encode4.jpg"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Encode4.jpg" alt="" width="670" height="309" class="size-full wp-image-2003524" /></a><p class="wp-caption-text">Рисунок 2: При транскодировании с оптимальными настройками получаем значительно лучшее качество, не теряя в скорости</p></div>
<p>В заключение отмечу, что используя Intel® Media SDK и простые приёмы, достаточно легко получить великолепное качество видео при решении Ваших задач транскодирования.</p>
<p>Слава</p>
<p>P.S. Ни одна рыбка не пострадала при съёмках материалов для этого блога.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2010/04/23/2003525/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как написать быстрый видео транскодер на Intel® Media SDK. Эпизод 3</title>
		<link>http://software.intel.com/ru-ru/blogs/2010/03/31/intel-media-sdk-3/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2010/03/31/intel-media-sdk-3/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 13:08:30 +0000</pubDate>
		<dc:creator>Slava Korobycin (Intel)</dc:creator>
				<category><![CDATA[Графика]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2010/03/31/intel-media-sdk-3/</guid>
		<description><![CDATA[Это третья публикация из серии. Вы можете ознакомиться с предыдущими частями тут: <a href="http://software.intel.com/ru-ru/blogs/2010/03/19/intel-media-sdk-1">Эпизод 1</a> и <a href="http://software.intel.com/ru-ru/blogs/2010/03/25/intel-media-sdk-2">Эпизод 2</a>. В этой части я расскажу, как с использованием Intel® Media SDK достичь высокой производительности видео транскодирования на платформах с аппаратным ускорением графики.]]></description>
			<content:encoded><![CDATA[<p><strong>Intel® Media SDK асинхронная модель. Быстро и просто</strong></p>
<p>Это третья публикация из серии. Вы можете ознакомиться с предыдущими частями тут: <a href="http://software.intel.com/ru-ru/blogs/2010/03/19/intel-media-sdk-1">Эпизод 1</a> и <a href="http://software.intel.com/ru-ru/blogs/2010/03/25/intel-media-sdk-2">Эпизод 2</a>. В этой части я расскажу, как с использованием Intel® Media SDK достичь высокой производительности видео транскодирования на платформах с аппаратным ускорением графики.</p>
<p>Чтобы объединить сильные стороны ранее рассмотренных моделей: простоту реализации однопотоковой модели и высокую производительность многопотоковой, Intel® Media SDK предлагает асинхронную модель. Рассмотрим подробнее, как это работает: последовательность кадров посылается в асинхронную цепочку на обработку, а синхронизация происходит в самом конце на выходе после Encode. При этом Intel® Media SDK полностью контролирует поток данных и зависимости между компонентами. В дополнение к оптимальному распараллеливанию, Intel® Media SDK предоставляет приложениям лёгкий способ воспользоваться ресурсами платформы при помощи аппаратно ускоренных (если это поддерживается оборудованием) и программно оптимизированных компонент Decode, VPP и Encode.</p>
<div id="attachment_2003452" class="wp-caption aligncenter" style="width: 680px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep3F1.jpg"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep3F1.jpg" alt="" width="670" height="129" class="size-full wp-image-2003452" /></a><p class="wp-caption-text">Диаграмма 1: Intel® Media SDK асинхронная обработка кадров</p></div>
<p>Диаграмма загрузки ресурсов аналогична синхронной многопоточной модели.</p>
<div id="attachment_2003450" class="wp-caption aligncenter" style="width: 678px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep2F21.jpg"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep2F21.jpg" alt="" width="668" height="208" class="size-full wp-image-2003450" /></a><p class="wp-caption-text">Диаграмма 2: Асинхронная модель теряет незначительную часть ресурсов</p></div>
<p>Ниже приведён псевдо-код, чтобы показать, как просто реализовать асинхронную модель в приложениях. Достаточно организовать один поток, который содержит 4 стадии обработки. Первые три стадии используют логику “for each frame ready for ...”. “ready” здесь означает, что доступно достаточное количество данных и не возникало ошибок на предыдущих стадиях.</p>
<ol>
<li>Первый цикл получает входные данные и ставит их в очередь Decode, пока имеются свободные входные буфера. Информация об успешно принятых кадрах сохраняется в специальном массиве. Этот массив содержит указатели на 3 буфера (surfaces) и 3 точки синхронизации (sync points) для каждого кадра. Указатели на буфера требуются для передачи кадра следующим по цепочке компонентам, а точки синхронизации нужны для обработки ошибок.</li>
<li>Второй цикл использует информационный массив, чтобы поставить кадры в очередь VPP и сохранить информацию об этом в случае успеха.</li>
<li>Третий цикл поступает аналогично с Encode.</li>
<li>Последний цикл перебирает все точки синхронизации, полученные от Encode, и проверяет кадры на готовность. Все успешно обработанные кадры сбрасываются в выходной поток, а информация о них удаляется из информационного массива. Если при транскодировании произошла ошибка, приложение должно определить место, где это случилось, устранить проблему и, в случае успеха, послать данные на обработку повторно. Это возможно только при хранении всех точек синхронизации возвращённых асинхронными функциями. Например, если VPP вернул ошибку, приложение должно её устранить и послать соответствующий кадр (и все последующие) на обработку VPP и Encode повторно.</li>
</ol>
<pre name="code" class="cpp">
while (there are frames to process)
{
    // Submit multiple frames to a Decode queue
    for each frame ready for Decode
    {
        if (there is no free Decode buffer) break;

        status = DecodeFrameAsync(); // submit a frame to Decode

        // Save a surface and sync info into the info array on success
        if (status ==       Success) SaveFrameInfo();
        if (status ==    FatalError) return Error;
        if (status == NonFatalError) FixDecodeError();
    }

    // Submit multiple frames to a VPP queue
    for each frame ready for VPP
    {
        if (there is no free output buffer) break;

        status = RunFrameVPPAsync(); // submit a frame to VPP

        // Save a surface and sync info into the info array on success
        if (status ==       Success) SaveFrameInfo();
        if (status ==    FatalError) return Error;
        if (status == NonFatalError) FixVPPError();
    }

    // Submit multiple frames to a Encode queue
    for each frame ready for Encode
    {
        if (there is no free output buffer) break;

        status = EncodeFrameAsync(); // submit a frame to Encode

        // Save a sync info into the info array on success
        if (status ==        Success) SaveFrameInfo();
        if (status ==     FatalError) return Error;
        if (status ==  NonFatalError) FixEncodeError();
    }

    // Multiple Syncs &amp; Error handling
    for each Sync point received from Encode
    {
        status = SyncOperation(no_wait);

        // Write output bitstream and remove the info array record on success
        if (status ==       Success) { WriteFrame(); RemoveFrameInfo(); }
        if (status ==    FatalError) return Error;
        if (status == NonFatalError) DetectAndFixTranscodeError(); // Error handling
    }

    Sleep();
}

return Success;
</pre>
<p></p>
<p>Как Вы видите, Intel® Media SDK значительно облегчает жизнь разработчикам видео транскодеров. Давайте потратим сэкономленное время с пользой и подумаем, как ещё уменьшить простой ресурсов или избавиться от него полностью? <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Слава.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2010/03/31/intel-media-sdk-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как написать быстрый видео транскодер на Intel® Media SDK. Эпизод 2</title>
		<link>http://software.intel.com/ru-ru/blogs/2010/03/25/intel-media-sdk-2/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2010/03/25/intel-media-sdk-2/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 13:52:26 +0000</pubDate>
		<dc:creator>Slava Korobycin (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2010/03/25/intel-media-sdk-2/</guid>
		<description><![CDATA[Это вторая публикация из серии (с первой частью можно ознакомиться тут: <a href="http://software.intel.com/ru-ru/blogs/2010/03/19/intel-media-sdk-1">Эпизод 1</a>). Здесь я опишу некоторые советы по оптимизации однопотоковой модели видео транскодирования и проиллюстрирую почему с их применением на платформах с аппаратным ускорением графики значительно повышается производительность.]]></description>
			<content:encoded><![CDATA[<p><strong>Синхронная многопотоковая модель. Быстро, но сложно</strong></p>
<p>Это вторая публикация из серии (с первой частью можно ознакомиться тут: <a href="http://software.intel.com/ru-ru/blogs/2010/03/19/intel-media-sdk-1">Эпизод 1</a>). Здесь я опишу некоторые советы по оптимизации однопотоковой модели видео транскодирования и проиллюстрирую почему с их применением на платформах с аппаратным ускорением графики значительно повышается производительность.</p>
<p>Многопотоковость – основной путь к оптимальному использованию вычислительных ресурсов. Приложение выполняет Decode, VPP и Encode в отдельных потоках позволяя им работать параллельно и начинать обработку кадра немедленно, как только данные готовы и ресурс свободен. Диаграмма 1 иллюстрирует, чем данная модель отличается от однопотоковой.</p>
<div id="attachment_2003438" class="wp-caption aligncenter" style="width: 675px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep2F1.jpg"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep2F1.jpg" alt="" width="665" height="141" class="size-full wp-image-2003438" /></a><p class="wp-caption-text">Диаграмма 1: Многопотоковая обработка кадров</p></div>
<p>Параллельное выполнение в этой модели значительно улучшает загрузку ресурсов. Decode завершив обработку кадра передаёт его VPP и немедленно начинает декодирование следующего. Тоже самое происходит на связке VPP и Encode. Ниже приведён пример параллельной работы компонент транскодирующей цепочки.</p>
<div id="attachment_2003439" class="wp-caption aligncenter" style="width: 678px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep2F2.jpg"><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep2F2.jpg" alt="" width="668" height="208" class="size-full wp-image-2003439" /></a><p class="wp-caption-text">Диаграмма 2: Многопотоковая модель теряет гораздо меньше вычислительных ресурсов</p></div>
<p>В этом вымышленном примере Encode обрабатывает данные несколько быстрее, чем Decode и VPP вместе, поэтому мы наблюдаем короткие простои CPU. В другом примере возможна обратная ситуация: Encode будет требовать больше времени, чем Decode и VPP, и будут наблюдаться уже простои GPU. </p>
<p>Но за всё приходится платить, и в нашем случае, для повышения производительности приходится значительно усложнять само приложение. Для реализации многопотоковой модели разработчику необходимо позаботится о следующих нетривиальных вещах:</p>
<ul>
<li>синхронизация потоков для своевременной передачи готовой порции данных следующим по цепочке компонентам</li>
<li>организация буферов между компонентами, которые позволяют продолжить работу, пока следующие по цепочке компоненты заняты</li>
<li>поддержка перемещения данных между памятью CPU и GPU, чтобы аппаратный Decode мог работать с программным Encode в единой цепочке</li>
<li>корректная обработка ошибок, при которых нужно останавливать весь процесс, корректировать его и возобновлять с того места, где произошла ошибка</li>
</ul>
<p>Ни для кого не секрет, что трудно заставить правильно работать сложное приложение и требуется достаточно много ресурсов на его разработку и поддержку (поэтому тут я не привожу псевдо-код). И, конечно же, существуют способы избежать подобного дискомфорта. Ваши идеи? <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Опять же, я планирую в следующей публикации предложить свой способ, «не переключайтесь» <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Спасибо за внимание!</p>
<p>Слава.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2010/03/25/intel-media-sdk-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как написать быстрый видео транскодер на Intel® Media SDK. Эпизод 1</title>
		<link>http://software.intel.com/ru-ru/blogs/2010/03/19/intel-media-sdk-1/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2010/03/19/intel-media-sdk-1/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 11:37:58 +0000</pubDate>
		<dc:creator>Slava Korobycin (Intel)</dc:creator>
				<category><![CDATA[Графика]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2010/03/19/intel-media-sdk-1/</guid>
		<description><![CDATA[Я планирую описать и сравнить несколько моделей транскодирования видео, чтобы выявить их сильные и слабые стороны. Надеюсь, это поможет Вам в разработке оптимальной реализации для решения Ваших задач. Это первая часть из серии публикаций. Речь в ней пойдёт о самой простой модели, которая поможет новичкам разобраться, как работает транскодирование на платформах с аппаратным ускорением графики.]]></description>
			<content:encoded><![CDATA[<p><strong>Синхронная однопотоковая модель. Просто и медленно</strong></p>
<p>Я планирую описать и сравнить несколько моделей транскодирования видео, чтобы выявить их сильные и слабые стороны. Надеюсь, это поможет Вам в разработке оптимальной реализации для решения Ваших задач. Это первая часть из серии публикаций. Речь в ней пойдёт о самой простой модели, которая поможет новичкам разобраться, как работает транскодирование на платформах с аппаратным ускорением графики.</p>
<p>Синхронная однопотоковая модель хорошо подходит для начального исследования процесса транскодирования. Её реализация предельно проста и наглядна для демонстрации обрабатывающих элементов и организации потока данных. Платой за простоту является низкое быстродействие, потому что кадры обрабатываются последовательно Decode, Video Preprocessing (VPP) и Encode. Каждый кадр проходит все три стадии от входного потока до выходного и только после этого начинается обработка следующего кадра как показано на Диаграмме 1.</p>
<div id="attachment_2003387" class="wp-caption aligncenter" style="width: 673px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep1F11.jpg"><img class="size-full wp-image-2003387" src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep1F11.jpg" alt="" width="663" height="134" /></a><p class="wp-caption-text">Диаграмма 1: Однопотоковая обработка кадров</p></div>
<p>Приведённый ниже псевдо-код иллюстрирует реализацию рассматриваемой модели. Заметьте, каждая стадия обработки может быть хорошо оптимизирована, чтобы получить выигрыш от multi-core оборудования. Поэтому около каждого вызова организован цикл, который ждёт завершения операции, это называется синхронизацией (Sync)</p>
<pre name="code" class="cpp">while (there is data to process)
{
    do
    {   status = DecodeFrame();
        if (status ==    FatalError) return Error;
        if (status == NonFatalError) FixDecodeError(); // Error handling
    } while(status != Success); // Sync

    do
    {   status = VPPFrame();
        if (status ==    FatalError) return Error;
        if (status == NonFatalError) FixVPPError(); // Error handling
    } while(status != Success); // Sync

    do
    {   status = EncodeFrame();
        if (status ==    FatalError) return Error;
        if (status == NonFatalError) FixEncodeError(); // Error handling
    } while(status != Success); // Sync

    WriteFrame();
}

return Success;</pre>
<p>Мы предполагаем, что платформа поддерживает аппаратное ускорение Decode и VPP, а Encode выполняется на CPU. Эта модель транскодирования теряет много вычислительных ресурсов как CPU, так и GPU, потому что Encode вынужден ждать завершения работы Decode и VPP, а Decode вынужден ждать, когда Encode завершит обработку предыдущего кадра. В лучшем случае теряется половина ресурсов как это показано на Диаграмме 2.</p>
<div id="attachment_2003388" class="wp-caption aligncenter" style="width: 731px"><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep1F2.jpg"><img class="size-full wp-image-2003388" src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/Ep1F2.jpg" alt="" width="721" height="196" /></a><p class="wp-caption-text">Диаграмма 2: Однопотоковая модель теряет значительную часть вычислительных ресурсов</p></div>
<p>Разумеется, существует множество способов, как улучшить быстродействие. Можете ли Вы предложить некоторые из них?</p>
<p>Со своей стороны я планирую позже опубликовать другую модель, в которой проблема быстродействия в значительной степени решена.</p>
<p>Спасибо за внимание!</p>
<p>Слава.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2010/03/19/intel-media-sdk-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3D видео на коленке</title>
		<link>http://software.intel.com/ru-ru/blogs/2010/03/17/3d-2/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2010/03/17/3d-2/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 08:14:25 +0000</pubDate>
		<dc:creator>Slava Korobycin (Intel)</dc:creator>
				<category><![CDATA[Графика]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2010/03/17/3d-2/</guid>
		<description><![CDATA[Можно ли своими руками снять в 3D формате на бытовую видеокамеру или фотоаппарат то, что нас окружает? А затем получить объёмное изображение на домашнем телевизоре или экране компьютера? Оказывается, можно. :)]]></description>
			<content:encoded><![CDATA[<p>Сейчас бурно развиваются технологии связанные с 3D видео. Снять 3D технически гораздо легче, чем его показать. Существует множество способов воспроизведения 3D, но мы не будем их рассматривать, а используем простейший, лишь для демонстрации результата съёмки.<br />
Формат 3D основан на обработке изображений предмета полученных с разных точек, которые разнесены примерно на 6см., что соответствует расстоянию между глазами человека. Киностудии используют для этого дорогостоящее профессиональное оборудование, которое недоступно любителям 3D.<br />
Однако в домашних условиях можно сконструировать 3D объектив из системы зеркал и получить объёмное изображение хорошего качества. Как показано на рисунке, зеркала такого объектива делят кадр пополам и строят в каждой половине изображение, снятое под своим углом.<br />
<a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/mirrors1.jpg"><img class="aligncenter size-full wp-image-2003363" src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/mirrors1.jpg" alt="" width="596" height="248" /></a><br />
В итоге каждый кадр содержит два изображения снятых в один момент времени под разными углами. Кто узнает место? <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/pair.jpg"><img class="aligncenter size-full wp-image-2003350" src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/pair.jpg" alt="" width="410" height="194" /></a></p>
<p>Дальнейшая обработка зависит от способа воспроизведения 3D видео. Я в своём эксперименте использовал доступные мне red-cyan цветные очки: один глаз смотрит сквозь красный светофильтр «R», другой сквозь циан «G+B». Поэтому в графическом редакторе для формирования результирующего изображения я взял «R» компоненту с одной половины кадра, а «G» и «B» с другой. Полученный кадр в два раза уже двойного исходного, не требует специальных устройств для отображения и при просмотре через соответствующие цветные очки выглядит объёмным. Аналогичным способом можно получить 3D видео при автоматической покадровой цветовой обработке.<br />
Если в вашем распоряжении есть red-cyan очки, то можете оценить результат моих 3D фото экспериментов с <a href="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/orange.jpg">домашним натюрмортом</a> (250Kb 1457x1195 jpeg image)</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2010/03/17/3d-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

