Quantcast
Channel: Media SDK for Windows*
Viewing all 58 articles
Browse latest View live

Тестирование видеокодеков. Эпизод III: Video Pre-Processing

$
0
0

Video Pre Processing

Завершаем цикл статей, посвященный обзору подходов и методов тестирования видеокодеков. На этот раз речь пойдет о компоненте из Intel® Media SDK под названием Video Pre Processing.

Про тестирование декодеров и энкодеров можно почитать тут: декодеры, энкодеры.

Аббревиатура VPP может с равным успехом расшифровываться и как Video Post Processing. Поэтому ответим на вопрос: пре- что или после чего? Под обработкой (processing) здесь понимается обработка сырой видеопоследовательности. Т.е. мы будем говорить о том, что можно делать с данными на выходе декодера или на входе энкодера.

Все операции обработки “сырого” видео принято называть фильтрами. В Media SDK их две группы: обязательные и дополнительные.

Первые есть во всех версиях SDK и поддерживаются в “железе”. Со вторыми сложнее: они могут дополнять обязательные фильтры, но, в зависимости от используемой платформы, могут либо включаться, либо нет

Сегодня мы будем тестировать только первую группу. В нее входят следующие фильтры: преобразование цветовых пространств (RGB <-> YUV), изменение размера, преобразование чересстрочной развертки в прогрессивную (деинтерлейс) и изменение частоты кадров.

Преобразование цветовых пространств

Не секрет, что в кодировании видео RGB модель используются редко. А вот YUV - повсеместно. Но случаи бывают разные, поэтому данное преобразование имеет место быть.

Кстати, вот замечательный сайт по теме fourcc.org

Media SDK поддерживает несколько входных форматов: yv12, nv12, rgb32, yuy2. На выходе два: nv12 и rgb32. Однако, преобразования между RGB и YUV это всегда потери данных. Причем формулы преобразования могут отличаться от одного приложения к другому. Поэтому нужно очень аккуратно подходить к выбору эталонной реализации и к реализации теста.

Рассмотрим пример: необходимо преобразовать rgb32 в nv12, при условии, что исходный клип в формате yuv420 (i420).

Клип в RGB найти сложнее

Поэтому необходимо выполнить предварительное преобразование. Только после этого можно выполнять собственно тестируемое преобразование (rgb32 -> nv12). На выходе имеем те же цветовые компоненты, что и в исходном потоке (Y, U и V). Его, казалось бы, можно сравнить по PSNR с исходным потоком. Но это было бы не верно, ведь первый файл не испытывал на себе ни одного преобразования, а второй прошел все круги ада аж два. Поэтому следует выбрать эталонную реализацию преобразования rgb32 в nv12 и использовать ее для получения эталонного варианта преобразования, которое и следует сравнивать с тем, что получается при использовании Media SDK.

Изменение размера

Это, пожалуй, самый распространенный вид обработки видео. С точки зрения тестирования здесь тоже все довольно просто: вооружаемся эталонным приложением и метриками.

Все просто на поверхности. Чем глубже мы пытаемся вникнуть в суть - тем больше вопросов. Но так везде.

Остается открытым лишь вопрос порогов. Очень неплохо выглядит здесь регрессионный подход: главное, чтобы хуже не становилось. Важно лишь не пропустить момент качественного скачка, а потом резкого падения.

Преобразование чересстрочной развертки в прогрессивную

Кадр видео может быть представлен либо одним целым, либо двумя полукадрами. Второй способ постепенно сходит на нет, но, однако же, до сих пор встречается. Отсюда и появляется задача указанного преобразования.

Подход к тестированию здесь может быть следующим:

      выбираем клип, над которым будем экспериментировать



 

      заменяем нечетные строки четных кадров на соответствующие строки нечетных кадров (перечитываем заново :). Т.е. четные кадры у нас будут составные, а нечетные кадры мы просто выбросим. В итоге количество кадров уменьшится вдвое



 

      преобразуем полученный на предыдущем шаге клип в прогрессивный с помощью Media SDK. На выходе будет будет следующее:



 

 

Осталось только проверить, на сколько все хорошо получилось. Здесь нам снова поможет PSNR. С чем сравнивать? С исходным файлом (исключая выброшенные кадры, конечно)

Изменение частоты кадров

Что вы предпочитаете: 30 fps или 60 fps? Или что-то другое? Но при этом ваш клип имеет другую частоту? Не беда, Media SDK может вам помочь

кто сказал, что это реклама? Ничего подобного, лишь констатация факта :)

О допустимых (с точки зрения MSDK) преобразованиях доступно написано в руководстве, мы же остановимся на тестировании. Нам снова подходит методика “берем эталон и метрику”. Есть, однако, особенность: некоторые такик преобразования должны выполняться разными приложениями абсолютно одинаково. И это логично: удвоим каждый кадр - получим из 30 fps 60, выкинем каждый второй - уменьшим частоту двое. Никаких потерь быть не должно. Более сложные варинты преобразований бинарной точности давать не будут, конечно.

 

На этом обзор подходов к тестированию видеокодеков можно считать закрытым. Следующие статьи будут посвящаться более конкретным случаям из данной области (если статьи будут, конечно :) ). Спасибо за внимание и до новых встреч!

 

  • тестирование
  • видеокодеки
  • Immagine icona: 

  • Grafica
  • Intel® Media SDK

  • Intel® Media SDK 2013

    $
    0
    0
    Intel® Media SDK 2013

    What is the Intel Media SDK?

    The Intel® Media Software Development Kit (Intel Media SDK) is a cross-platform application programming interface (API) for developing consumer and professional media applications, including video editing and processing, media conversion, streaming and playback, and video conferencing. The SDK makes it easy for developers to optimize applications for Intel HD Graphics’ fixed-function hardware acceleration, currently part of the 2nd and 3rd generation Intel® Core™ processors.

    What is new in Intel Media SDK 2013?

    The SDK is optimized to utilize the power of upcoming 4th generation Intel Core processors, codenamed “Haswell,” and now, Intel Atom® processor-based tablets for a consistently high-quality media experience. In addition to supporting accelerated H.264 encode and decode and video processing filters, the new SDK includes enhanced support for Windows 8, Microsoft DirectX 11, fully accelerated MPEG2 encode and MPEG/JPEG decode, and a Windows Store development sample. Use of Intel Media SDK 2013 also includes free licensing and source for integration with Open Source projects and Open CL* video workloads. The SDK is available as a free download here.

    Looking for an Intel® Media SDK for Linux* Servers? Learn more here.

    Check out the brand new features available with Intel's Media SDK 2013.

    Learn how Movavi optimizes performance with Intel Media SDK.

    It Adds Up! Sorenson Squeeze 8.5 + Intel Media SDK = Breakthrough Video Transcoding Speed.

    Related

    This software is subject to the U.S. Export Administration Regulations and other U.S. law, and may not be exported or re-exported to certain countries (Burma, Cuba, Iran, Libya, North Korea, Sudan, and Syria) or to persons or entities prohibited from receiving U.S. exports (including Denied Parties, Specially Designated Nationals, and entities on the Bureau of Export Administration Entity List or involved with missile technology or nuclear, chemical or biological weapons).

    Download Started

    Thank you for downloading Intel® Media SDK.

    Register today to receive email notifications on future updates to this product.

  • video acceleration
  • media sdk
  • vcsource_domain_media
  • vcsource_os_windows
  • vcsource_platform_desktoplaptop
  • Video Codecs
  • vcsource_type_product
  • vcsource_producttype_sdk
  • vcsource_productinterop_oclsdk
  • vcsource_productinterop_gpa
  • vcsource_productinterop_mesn
  • vcsource_index
  • Sviluppatori
  • Intel® Media SDK
  • Grafica
  • Laptop
  • Desktop
  • URL
  • Intel® Media SDK 2013

    $
    0
    0
    all

    What is the Intel Media SDK?

    The Intel® Media Software Development Kit (Intel Media SDK) is a cross-platform application programming interface (API) for developing consumer and professional media applications, including video editing and processing, media conversion, streaming and playback, and video conferencing. The SDK makes it easy for developers to optimize applications for Intel HD Graphics’ fixed-function hardware acceleration, currently part of the 2nd and 3rd generation Intel® Core™ processors.

    What is new in Intel Media SDK 2013?

    The SDK is optimized to utilize the power of upcoming 4th generation Intel Core processors, codenamed “Haswell,” and now, Intel Atom® processor-based tablets for a consistently high-quality media experience. In addition to supporting accelerated H.264 encode and decode and video processing filters, the new SDK includes enhanced support for Windows 8, Microsoft DirectX 11, fully accelerated MPEG2 encode and MPEG/JPEG decode, and a Windows Store development sample. Use of Intel Media SDK 2013 also includes free licensing and source for integration with Open Source projects and Open CL* video workloads. The SDK is available as a free download here.

    Looking for an Intel® Media SDK for Linux* Servers? Learn more here.

    all
    Light

    A cross-platform API for developing consumer and professional media applications.

    • Intel Quick Sync Video: Hardware-accelerated video encoding, decoding, and transcoding.
    • Development Efficiency: Code once now and see it work on tomorrow’s platforms.
    • Innovation: Efficiency gains give developers the time to innovate more new, exciting media features.

    Contenuto barra laterale: 

    By downloading this package, you accept the End User License Agreement

    Video Conferencing using Intel® Media SDK

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Video Conferencing Sample demonstrates how to use Intel® Media SDK API features, intended for generic video conferencing tasks.

    • How to configure Intel® Media SDK Encode for generating low latency bit stream
    • How to recover from situation when receiving part couldn’t decode some frame due to network packets loss
    • How to change target bitrate of Intel® Media SDK Encode dynamically
    • How to force Intel® Media SDK Encode to insert a key frame at particular position out of predefined GOP structure
    • How to force Intel® Media SDK Encode to create long term reference from particular frame
    • How to use per frame mode QP (quantization parameter)
    • How to enable Microsoft* Lync* Features (temporal scalability)
    • How to enable Reference Picture Marking Repetition SEI
    • How to change encoding resolution dynamically

    The Intel® Media SDK Video Conferencing Sample supports the following video formats:

    input (uncompressed)YUV420*
    output (compressed)H.264 (AVC)

    Note: For format YUV420, the Intel® Media SDK Video Conferencing Sample assumes the order Y, U, V in the input file.

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1 or more recent version of this tool
  • visual computing
  • Intel® Media SDK
  • URL
  • Video Encoder using Intel® Media SDK

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Encoding Sample demonstrates two usage models of the Intel® Media SDK API:

    The Intel® Media SDK Encoding Sample supports the following video formats:

    input (uncompressed)YUV420*, NV12*
    output (compressed)H.264 (AVC, MVC – Multi-View Coding), MPEG-2 video

    Note: For format YUV420, the SDK Encoding Sample assumes the order Y, U, V in the input file.

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1 or more recent version of this tool
  • visual computing
  • Intel® Media SDK
  • URL
  • Video Decoder using Intel® Media SDK

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Decoding Sample demonstrates how to use the Intel® Media SDK API to create a simple console application that performs decoding of various video compression formats.

    The Intel® Media SDK Decoding Sample supports the following video formats:

    input (compressed)H.264 (AVC, MVC – Multi-View Coding), MPEG-2 video, VC-1
    output (uncompressed)YUV420

    The Intel® Media SDK Decoding Sample renders the decoded video stream to a file in YUV 4:2:0 sampling format, with the parameters Y, U and V in that order.

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1 or more recent version of this tool
  • visual computing
  • Intel® Media SDK
  • URL
  • Video Pre-Processing using Intel® Media SDK

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Video Processing (VPP) Sample demonstrates how to use the Intel® Media SDK API to create a simple console application that performs video processing for raw video sequences.

    The Intel® Media SDK VPP Sample supports the following video formats:

    input (uncompressed)YV12*, NV12*, YUY2*, RGB3 (RGB 24-bit), RGB4 (RGB 32-bit)
    output (compressed)NV12

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1 or more recent version of this tool
  • visual computing
  • Intel® Media SDK
  • URL
  • Microsoft DirectShow* filters

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Plug-ins Sample using Microsoft* DirectShow* demonstrates how to use the Intel® Media SDK Library with DirectShow filters to compress and decompress video files (streams).

    This sample supports the following input/output formats for compressing/decompressing:

    • H.264 (AVC)
    • VC-1 (WMV)—decoding only
    • MPEG-2 Video
    • MVC—decoding only

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1
    • For the Microsoft* DirectShow* samples: Microsoft Windows SDK 6.1 or greater
  • visual computing
  • Intel® Media SDK
  • URL

  • Application Sample using Microsoft* DirectShow

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Application Sample using Microsoft* DirectShow* demonstrates how to use the Sample DirectShow filters to play and transcode media files (streams).

    The Intel® Media SDK Application Sample using Microsoft DirectShow supports the following input formats:

    Input System Stream FormatMPEG-2 Program StreamMPEG-2 Transport StreamMP4WMV
    Compressed videoMPEG-2H.264, MPEG-2H.264, MVCVC-1
    Compressed audioMP3AAC, MP3AAC, MP4WMA

    The Intel® Media SDK Microsoft DirectShow Application Sample supports the following output formats for transcoding:

    Output System Stream FormatMPEG-2 Transport StreamMPEG-2 Transport StreamMP4
    Compressed videoMPEG-2H.264H.264
    Compressed audioMP3AACAAC, MP3

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    For S3D playback the following hardware configuration is required:

    • 2nd Generation Intel® Core™ Processors with Intel® HD Graphics 3000/2000
    • HDMI 1.4, eDP 1.1 or similar based monitor/TV
    • Active shutter glasses

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1
    • For the Microsoft* DirectShow* samples: Microsoft Windows SDK 6.1 or greater
  • visual computing
  • Intel® Media SDK
  • URL
  • Video Transcoder using Intel® Media SDK

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Multi-Transcoding Sample demonstrates how to use the Intel® Media SDK API to create a console application that performs the transcoding (decoding and encoding) of a video stream from one compressed video format to another, with optional video processing (resizing) of uncompressed video prior to encoding. The application supports multiple input and output streams meaning it can execute multiple transcoding sessions concurrently.

    The main goal of this sample is to demonstrate CPU/GPU balancing in order to get maximum throughput on Intel hardware-accelerated platforms (with encoding support). This is achieved by running several transcoding pipelines in parallel and fully loading both CPU and GPU.

    This sample also demonstrates integration of user-defined functions for video processing (picture rotation plug-in) into the Intel Media® SDK transcoding pipeline.

    This version of sample also demonstrates surface type neutral transcoding (opaque memory usage).

    The Intel® Media SDK Multi-Transcoding Sample supports the following video formats:

    input (compressed)H.264 (AVC, MVC – Multi-View Coding), MPEG-2 video, VC-1
    output (uncompressed)H.264 (AVC, MVC – Multi-View Coding), MPEG-2 video

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1 or more recent version of this tool
  • visual computing
  • Intel® Media SDK
  • URL
  • Application Sample using Microsoft* Multimedia Framework Plug-ins

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Application Sample using Microsoft* Multimedia Framework Plug-ins demonstrates how to use the Sample Media Foundation* plug-ins and the Sample DirectShow* plug-ins to play and/or transcode media files (streams).

    The Intel® Media SDK Application Sample using Microsoft Multimedia Framework Plug-ins supports only Microsoft DirectShow* plug-ins when executed within the Windows Vista* Operating System. When using Microsoft Windows 7 Operating System, Intel® Media SDK supports both DirectShow and Media Foundation plug-ins.

    The Intel® Media SDK Application Sample using Microsoft* Multimedia Framework Plug-ins supports the following input formats:

    Input System Stream FormatMPEG-2 Program StreamMPEG-2 Transport StreamMP4WMV
    Compressed videoMPEG-2H.264, MPEG-2H.264VC-1
    Compressed audioMP3AAC, MP3AAC, MP3

    The Intel® Media SDK Application Sample using Microsoft* Multimedia Framework Plug-ins supports the following output formats for transcoding:

    Output System Stream FormatMP4
    Compressed videoH.264 (AVC)
    Compressed audioAAC

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

  • visual computing
  • Intel® Media SDK
  • URL
  • Microsoft Media Foundation Transforms (MFT)

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Plug-ins Sample using Microsoft* Media Foundation* demonstrates how to use the Intel Media SDK Library with Media Foundation plug-ins to compress and decompress video files (streams).

    This sample supports the following input/output formats for compressing/decompressing:

    • H.264 (AVC)
    • VC-1 (WMV)—decoding only
    • MPEG-2 Video—decoding only

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1
    • For the Microsoft* Media Foundation* samples: Microsoft Windows SDK for Windows 7
  • visual computing
  • Intel® Media SDK
  • URL
  • Intel® Media SDK 2013 for Servers

    $
    0
    0
    all

    Intel® Media SDK 2013 for Servers is an SDK for optimizing datacenter and embedded media applications for Linux and Windows server operating systems to utilize Intel Iris™ Pro and Intel HD Graphics hardware acceleration capabilities. Now, quickly and easily develop optimized media applications for Linux and Windows server operating systems such as encode, decode, and transcode for real-time streaming, teleconferencing, and video analytics.

    Features:

    • For Intel Xeon® processor E3-1200 v3 product family and 4th Generation Intel Core™ Processor-based Platforms with Intel Iris™ Pro and Intel HD Graphics
    • Encode, decode, and transcode for server-based streaming
    • Supports Ubuntu*, SUSE* Linux Enterprise, Windows Server 2012* operating systems
    • Supports H.264, MPEG-2, VC-1 formats
    Light

    A cross-platform API for developing server media solutions.

    • Streaming Density: Hardware accelerated video server workloads
    • Future Proof: Develop now for today and tomorrow's server platforms
    • Save Time and Money: Spend more time delivering content and solutions

    Contenuto barra laterale: 

    Buy Now

    Single Developer License is $499

    ooVoo Intel Enabling – HD Video Conferencing

    $
    0
    0

    Downloads


    Download ooVoo Intel Enabling – HD Video Conferencing [PDF 754KB]

    Throughout Q1/Q2 of 2013 Intel and ooVoo collaborated to enable multiple hardware accelerated video conferencing use cases. These include standard person-to-person video conferencing at 720p, multi-party video conferencing (up to 12 participants), and media sharing. To enable this, ooVoo collaborated with Intel to make the most of the wide range of performance options available on systems running both Intel® Atom™ and 4th generation Intel® Core™ processors.

    Materials presented within this paper target Microsoft Windows* 8.x operating systems. Key resources / technologies leveraged during the optimization process include:

    To provide a complete picture of the optimization process, this paper discusses the overall analysis and testing approach, specific optimizations made, and illustrates before and after quality improvements.

    Overall, focus was placed on ensuring video quality first and foremost. No significant emphasis was placed on power-efficiency optimization at this time. The quality improvements enabled by leveraging Intel hardware offloading capabilities are impressive and can be enjoyed in either person-to-person conferencing or in multi-party conferences for primary speakers.

    Primary Challenge


    Eliminating sporadic corruption occurring during network spikes and on bandwidth-limited connections was by far the biggest challenge faced during the optimization process. Initially, all HD calls experienced persistent constant corruption.

    Analysis & Testing Approach


    Before pursuing optimization efforts, a test plan and analysis approach was defined to ensure repeatability of results. Several key learnings were observed during our initial testing cycles. These included:

    • Establish performance baseline– Before beginning to optimize our application, we made sure we had eliminated network inconsistencies, unnecessary traffic / noise, adequate lighting, and adequate cameras. With the major variables under control we were able to confirm that our testing approach and results were repeatable. From this baseline, we could begin the optimization process.
    • Establish minimum network bandwidth (BW) requirements– Poor quality networks lead to poor quality video conferencing. A minimum of 1-1.5 MBits available for uplink / downlink was required to realize a full HD conference.
    • Camera quality is important– Poor quality cameras lead to poor quality video conferencing. As camera quality degrades, the amount of noise, blocking, and other artifacts increases. This also tends to increase the overall BW required to drive the call as well.
    • Define, test, and validate the network– To be certain you are not reporting issues created by BW issues present on your network, testing is required to determine the amount of packet loss, jitter, etc. present on the network before testing can begin.

    The following data was collected during each testing cycle to enable triage / investigation of corruption issues affecting video quality. Initial data collected at the beginning of the optimization process showed that even reliable Ethernet connections experience corruption problems despite very low packet loss and jitter on a ~17 MBit connection.

    TestIntvlTx SizeBWJitterLost/Total
    Datagrams
    Out of
    order
    enc fpsdec fpsQuality
    Ethernet
    VGA
    10
    sec
    20.2
    MBytes
    17.0
    Mbits/sec
    1.04
    2 ms
    0.00%11515Some corruption
    and coarse image
    10
    sec
    20.2
    MBytes
    16.2
    Mbits/sec
    1.01
    6 ms
    0.00%11515
    Ethernet
    720p
    10
    sec
    20.2
    MBytes
    16.2
    Mbits/sec
    1.01
    6 ms
    0.00%115.4114.47Frequent
    corruption
    10
    sec
    20.2
    MBytes
    16.2
    Mbits/sec
    1.01
    6 ms
    0.00%115.2215.01


    Key Optimizations


    The three major optimization phases are: phase 1 focused on quality of service (QoS), phase 2 examined the user interface behavior, and phase 3 took a hard look at the rendering pipeline itself.

    • Phase 1 - QoS approach optimization – Resulting in a switch from 1% to 5% acceptable packet loss.
    • Phase 2 – User interface optimization – Resulting in I/O pattern set to output to system memory versus video memory due to the use of CPU-centric rendering APIs and reduction in GDI workload.
    • Phase 3 - Rendering pipeline optimization – Resulting in the elimination of per pixel copies, use of Intel IPP for memory copies where possible, and update to Intel IPP v7.1.

    Phase 1 – QoS Approach Optimization
    Quality of service algorithms seek to ensure that a consistent level of service is provided to end users. During our initial evaluation of the software, it was unclear if the QoS solution within ooVoo was too aggressive or if our network environment was too unstable. Initial measurements of network integrity indicated that it was unlikely that the network conditions were causing our issues. Jitter was measured at around 1.0-1.8 ms, packet loss was at or near 0%, and very few (if any packets) were being received out of order. All in all this indicated a potential issue on the QoS side of the application.

    To find the root cause of the issue, it was necessary to perform a low-level analysis on the actual bitstream data being sent / received by the ooVoo application. Our configuration for this process was as follows:

    Direct analysis of the bitstream being encoded on the transmit side and the bitstream reconstructed on the receiver side indicated that frames were clearly being lost somewhere. Further analysis of the encode bitstream showed that all frames could be accounted for on the transmit side of the call; however, the receive side of the call was not seeing the entire bitstream encoded on the transmit side.

    As can be seen from the diagram above, the receiver (decoder) stream is missing frames throughout the entire call. After working closely with the ooVoo development team, it was found that relaxing the QoS to accommodate up to 5% packet loss improved things significantly during point-to-point 720p video calls.

    Phase 2 – User Interface Optimizations
    Today, graphics and media developers have a wide variety of APIs to select from to meet engineering needs. Some APIs offer richer feature sets targeting newer hardware while others offer backwards compatibility. Since backwards compatibility was a key requirement for the ooVoo application, legacy APIs developed by Microsoft Corporation such as GDI and DirectShow* are necessary.

    The following simplified pipeline illustrates the key area (“Draw UI” in green) where optimizations took place during this phase.

    Before diving in to the details, a quick word regarding video and system memory is in order. In simple terms, video memory is typically accessible to the GPU while system memory is typically accessible to the CPU. Memory can be copied between video / system memory; however, this comes at a significant performance cost. When working with graphics APIs, it is important to know whether the API you are using is CPU-centric. If it is, then it is critical to set the MSDK I/O PATTERN to output to system memory. Failure to do this when using a CPU-centric rendering API may lead to very poor performance. In cases where APIs such as GDI are used to operate on the surface data provided by the MSDK, operations that require surface locking will (in particular) be the most costly.

    In the case of the ooVoo client application, it was observed that fullscreen rendering required significantly more processing power than when running in windowed mode. This puts us squarely in the case of needing to account for a CPU-centric API in our rendering pipeline.

    A detailed look at the overall workload when in fullscreen mode illustrates the following GDI activity (see yellow). Measurements below were made on an Ivy Bridge platform with a total of 4 cores yielding 400% total processing power.

    Continuing the investigation, it became clear that there was a significant difference in how the ooVoo application handled window versus fullscreen display modes. Note GDI workload virtually disappears in window mode.

    The Intel Vtune analyzer was used to identify the area of code where the GDI workload was being introduced. After discussing the issue with the ooVoo team, it became clear that this was unexpected behavior, and the ooVoo team found that the application was using GDI too frequently during fullscreen rendering. The solution was to limit the number of GDI calls made during each frame when in fullscreen mode. Despite the simple nature of this change, significant improvements were observed across the board:

    GDI workload reduction impact and observations:

    • Limited rendering via legacy APIs such as GDI+ is possible for video conferencing applications if resources are already available in system memory and very limited calls are made to GDI+ during each frame.
    • Reduction of GDI+ call frequency within ooVoo application virtually eliminated all GDI overhead.
    • Broad overall application CPU utilization for ooVoo went down by ~4-5%. Within the app the percent of time spent on GDI+ work is down from 10% to 0.2.
    • Overall workload associated with the ooVoo application is more organized and predictable with less CPU spikes due to less surface locking by GDI.
    • System wide reduction in CPU of ~20%.

    The following diagram illustrates the ooVoo application workload and related GDI effort after our optimizations:

    Final measurements post optimization follow:

    MetricPrevious BuildLatest BuildDelta / Improvement
    System CPU Peaks~200%~175%Reduced ~25%
    ooVoo.exe CPU Peaks~40%~37%Reduced 3%
    GDI+ Workload10% of ooVoo.exe0.12% of ooVoo.exeReduced 10%
    Total System CPU159% of 400%137% of 400%Reduced ~22%
    ooVoo Total CPU114% of 400%110% of 400%Reduced ~4-5%


    Phase 3 – Rendering Pipeline Optimizations
    Our final step in the optimization process was to take a hard look at the backend rendering pipeline for any un-optimized copies or pixel format conversions that might be affecting performance. Three key things to watch out for include:

    • Per pixel copies – A copy operation executed serially for each pixel. For this type of operation it is always best to leverage Intel IPP. Our Intel IPP package comes with copy operations optimized for Intel HW.
    • Copies across video / system memory boundaries – Instead of copying MSDK frame data from video to system memory yourself, it is more effective to allow the MSDK to steam to system memory for you.
    • Fourcc conversions – Fourcc color conversions are always expensive. If possible, try to get your data in the format you need and stay there. If converting between YUV / RGB colorspace, you can use either Intel IPP or pixel shaders to expedite.

    Early on in the process of profiling the ooVoo application, it was clear that memory copies were affecting performance; however, it was not clear what opportunities existed to address the issue. The ooVoo team performed a detailed code review and found cases where Intel IPP copy operations were not being used, places where per pixel copies were used, and ultimately upgraded to Intel IPP v7.1 to benefit from the latest updates.

    The results were impressive, giving us our first look at video conferencing at 720 on both Intel Core and Intel Atom platforms. The following before/after shots illustrate the improvements.

    Point-to-Point
    Note the elimination of blocky corruption in the facial area:

    Configuration: Point to point, 720p, 15 fps, 1-1.5 MBits/sec, IVB:IVB, 4G network

    Multi-Party
    Note the level of detail enabled for primary speaker during multi-party conference.

    Configuration: Muti-Party via ooVoo Server, 4 callers + YouTube, 15 fps, IVB


    Intel, the Intel logo, Atom, Core, and VTune are trademarks of Intel Corporation in the U.S. and/or other countries.
    Copyright © 2013 Intel Corporation. All rights reserved.
    *Other names and brands may be claimed as the property of others.

  • ULTRABOOK™
  • rendering
  • vtune
  • Performance analysis
  • Video Conferencing
  • Sviluppatori
  • Microsoft Windows* 8
  • Windows*
  • Intermedio
  • Intel® Integrated Performance Primitives
  • Intel® Media SDK
  • Intel® VTune™ Performance Analyzer
  • Grafica
  • Elaborazione multimediale
  • Ottimizzazione
  • Laptop
  • PDF
  • OpenCL* and Intel® Media SDK Interoperability

    $
    0
    0

    Features / Description

    The Intel® Media SDK Interoperability sample demonstrates how to use Intel® Media SDK and Intel® SDK for OpenCL* Applications together for efficient video decoding and fast post-processing.

    The sample demonstrates the Intel® Media SDK pipeline combined with post-processing filters in OpenCL*, showing how to:

    • Integrate processing with Intel® SDK for OpenCL* Applications into Intel® Media SDK pipeline and get benefit from hardware-accelerated (if available) video decoding with Intel® Media SDK pipeline
    • Organize efficient sharing between Intel® Media SDK frames and OpenCL* images by use of cl_khr_dx9_media_sharing extension
    • Implement simple video effects in OpenCL*

    Supported Devices: Intel® Processor Graphics
    Supported OS: Windows* OS
    Complexity Level: Advanced

    Refer to the sample release notes for information on system requirements.
    For more information about the sample refer to the sample User's Guide inside the sample package.

    * OpenCL and the OpenCL logo are trademarks of Apple Inc. used by permission by Khronos.

  • visual computing
  • Sviluppatori
  • Microsoft Windows* (XP, Vista, 7)
  • Microsoft Windows* 8
  • C/C++
  • Avanzato
  • Intel® Media SDK
  • OpenCL*
  • Laptop
  • Desktop
  • URL
  • Esempio di codice

  • Тестирование видеокодеков. Эпизод III: Video Pre-Processing

    $
    0
    0

    Video Pre Processing

    Завершаем цикл статей, посвященный обзору подходов и методов тестирования видеокодеков. На этот раз речь пойдет о компоненте из Intel® Media SDK под названием Video Pre Processing.

    Про тестирование декодеров и энкодеров можно почитать тут: декодеры, энкодеры.

    Аббревиатура VPP может с равным успехом расшифровываться и как Video Post Processing. Поэтому ответим на вопрос: пре- что или после чего? Под обработкой (processing) здесь понимается обработка сырой видеопоследовательности. Т.е. мы будем говорить о том, что можно делать с данными на выходе декодера или на входе энкодера.

    Все операции обработки “сырого” видео принято называть фильтрами. В Media SDK их две группы: обязательные и дополнительные.

    Первые есть во всех версиях SDK и поддерживаются в “железе”. Со вторыми сложнее: они могут дополнять обязательные фильтры, но, в зависимости от используемой платформы, могут либо включаться, либо нет

    Сегодня мы будем тестировать только первую группу. В нее входят следующие фильтры: преобразование цветовых пространств (RGB <-> YUV), изменение размера, преобразование чересстрочной развертки в прогрессивную (деинтерлейс) и изменение частоты кадров.

    Преобразование цветовых пространств

    Не секрет, что в кодировании видео RGB модель используются редко. А вот YUV - повсеместно. Но случаи бывают разные, поэтому данное преобразование имеет место быть.

    Кстати, вот замечательный сайт по теме fourcc.org

    Media SDK поддерживает несколько входных форматов: yv12, nv12, rgb32, yuy2. На выходе два: nv12 и rgb32. Однако, преобразования между RGB и YUV это всегда потери данных. Причем формулы преобразования могут отличаться от одного приложения к другому. Поэтому нужно очень аккуратно подходить к выбору эталонной реализации и к реализации теста.

    Рассмотрим пример: необходимо преобразовать rgb32 в nv12, при условии, что исходный клип в формате yuv420 (i420).

    Клип в RGB найти сложнее

    Поэтому необходимо выполнить предварительное преобразование. Только после этого можно выполнять собственно тестируемое преобразование (rgb32 -> nv12). На выходе имеем те же цветовые компоненты, что и в исходном потоке (Y, U и V). Его, казалось бы, можно сравнить по PSNR с исходным потоком. Но это было бы не верно, ведь первый файл не испытывал на себе ни одного преобразования, а второй прошел все круги ада аж два. Поэтому следует выбрать эталонную реализацию преобразования rgb32 в nv12 и использовать ее для получения эталонного варианта преобразования, которое и следует сравнивать с тем, что получается при использовании Media SDK.

    Изменение размера

    Это, пожалуй, самый распространенный вид обработки видео. С точки зрения тестирования здесь тоже все довольно просто: вооружаемся эталонным приложением и метриками.

    Все просто на поверхности. Чем глубже мы пытаемся вникнуть в суть - тем больше вопросов. Но так везде.

    Остается открытым лишь вопрос порогов. Очень неплохо выглядит здесь регрессионный подход: главное, чтобы хуже не становилось. Важно лишь не пропустить момент качественного скачка, а потом резкого падения.

    Преобразование чересстрочной развертки в прогрессивную

    Кадр видео может быть представлен либо одним целым, либо двумя полукадрами. Второй способ постепенно сходит на нет, но, однако же, до сих пор встречается. Отсюда и появляется задача указанного преобразования.

    Подход к тестированию здесь может быть следующим:

          выбираем клип, над которым будем экспериментировать



     

          заменяем нечетные строки четных кадров на соответствующие строки нечетных кадров (перечитываем заново :). Т.е. четные кадры у нас будут составные, а нечетные кадры мы просто выбросим. В итоге количество кадров уменьшится вдвое



     

          преобразуем полученный на предыдущем шаге клип в прогрессивный с помощью Media SDK. На выходе будет будет следующее:



     

     

    Осталось только проверить, на сколько все хорошо получилось. Здесь нам снова поможет PSNR. С чем сравнивать? С исходным файлом (исключая выброшенные кадры, конечно)

    Изменение частоты кадров

    Что вы предпочитаете: 30 fps или 60 fps? Или что-то другое? Но при этом ваш клип имеет другую частоту? Не беда, Media SDK может вам помочь

    кто сказал, что это реклама? Ничего подобного, лишь констатация факта :)

    О допустимых (с точки зрения MSDK) преобразованиях доступно написано в руководстве, мы же остановимся на тестировании. Нам снова подходит методика “берем эталон и метрику”. Есть, однако, особенность: некоторые такик преобразования должны выполняться разными приложениями абсолютно одинаково. И это логично: удвоим каждый кадр - получим из 30 fps 60, выкинем каждый второй - уменьшим частоту двое. Никаких потерь быть не должно. Более сложные варинты преобразований бинарной точности давать не будут, конечно.

     

    На этом обзор подходов к тестированию видеокодеков можно считать закрытым. Следующие статьи будут посвящаться более конкретным случаям из данной области (если статьи будут, конечно :) ). Спасибо за внимание и до новых встреч!

     

  • тестирование
  • видеокодеки
  • Immagine icona: 

  • Grafica
  • Intel® Media SDK
  • Intel® Media SDK 2014 for Clients

    $
    0
    0
    all

    What is the Intel Media SDK?

    The Intel® Media Software Development Kit (Intel® Media SDK) is a cross-platform application programming interface (API) for developing consumer and professional media applications, including video editing and processing, media conversion, streaming and playback, and video conferencing. The SDK makes it easy for developers to optimize applications for Intel® HD Graphics' fixed-function hardware acceleration, currently part of the 2nd, 3rd and 4th generation Intel® Core™ and new Intel® Atom™ processors.

    What is new in Intel® Media SDK 2014 for Clients?

    The SDK is optimized to utilize the power of 4th generation Intel® Core™ processors, codenamed "Haswell," and Intel® Atom™ processor-based tablets for a consistently high-quality media experience. In addition to supporting accelerated H.264 encode and decode and video processing filters, the new SDK includes access to the Media Solutions Portal where developers can access new tools and products to make developing media applications easier and faster. Use of Intel Media SDK 2014 for Clients also includes free licensing and source for integration with Open Source projects and OpenCL* video workloads. The SDK is available as a free download here.

    New media products area available from the Media Solutions Portal.

     Intel® Media SDK 2014 Professional Camera Pack beta

    The Intel® Media SDK Professional Camera Pack beta is a software development plug-in library that exposes GPU-accelerated RAW image processing capabilities of Intel® platforms. It targets RAW photo application developers as well as emerging 4K RAW video application developers. A public beta will be available soon. To be notified when the beta is available, submit your email address.

    Intel® Media Software Development Kit 2014 HEVC Software Pack

    The Intel® Media Software Development Kit (Intel Media SDK) HEVC Software Pack is a set of software development libraries (plug-ins) and tools that expose the HEVC (ISO*/IEC* 23008-2 MPEG-H Part 2 or ITU-T* H.265 standard) decode and encode acceleration capabilities of Intel® platforms. Try the HEVC Software Pack on us for 30 days, or purchase the full product for $999.00.

    Intel® Video Pro Analyzer 2014

    Intel® Video Pro Analyzer is a comprehensive suite of video analysis tools for the HEVC and VP9 video coding standards. It allows for visual inspection of the complete decoding process, statistics extraction, debug tools and more. Support is available for Microsoft Windows*, Linux* and OS X* systems. Try a limited version of the Video Pro Analyzer for free or purchase the full unlocked product for $4999.

    Intel® Media SDK Audio library

    The Intel® Media Software Development Kit (Intel® Media SDK) Audio Library is a dedicated library for audio codec software processing. The Intel® Media SDK Audio Library targets general application developers who want to integrate audio encoding and decoding into their applications. Purchase price: $99.00.

    Looking for an Intel® Media SDK for Servers? Learn more here.

    all

    Looking for the Intel® Media SDK 2013 for Linux* Servers? Look no further...

    Light

    A cross-platform API for developing consumer and professional media applications.

    • Intel Quick Sync Video: Hardware-accelerated video encoding, decoding, and transcoding.
    • Development Efficiency: Code once now and see it work on tomorrow’s platforms.
    • Innovation: Efficiency gains give developers the time to innovate more new, exciting media features.

    Contenuto barra laterale: 

    Download

    By downloading this package, you accept the End User License Agreement

    Video Conferencing using Intel® Media SDK

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Video Conferencing Sample demonstrates how to use Intel® Media SDK API features, intended for generic video conferencing tasks.

    • How to configure Intel® Media SDK Encode for generating low latency bit stream
    • How to recover from situation when receiving part couldn’t decode some frame due to network packets loss
    • How to change target bitrate of Intel® Media SDK Encode dynamically
    • How to force Intel® Media SDK Encode to insert a key frame at particular position out of predefined GOP structure
    • How to force Intel® Media SDK Encode to create long term reference from particular frame
    • How to use per frame mode QP (quantization parameter)
    • How to enable Microsoft* Lync* Features (temporal scalability)
    • How to enable Reference Picture Marking Repetition SEI
    • How to change encoding resolution dynamically

    The Intel® Media SDK Video Conferencing Sample supports the following video formats:

    input (uncompressed)YUV420*
    output (compressed)H.264 (AVC)

    Note: For format YUV420, the Intel® Media SDK Video Conferencing Sample assumes the order Y, U, V in the input file.

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1 or more recent version of this tool
  • visual computing
  • Intel® Media SDK
  • URL
  • Video Encoder using Intel® Media SDK

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Encoding Sample demonstrates two usage models of the Intel® Media SDK API:

    The Intel® Media SDK Encoding Sample supports the following video formats:

    input (uncompressed)YUV420*, NV12*
    output (compressed)H.264 (AVC, MVC – Multi-View Coding), MPEG-2 video

    Note: For format YUV420, the SDK Encoding Sample assumes the order Y, U, V in the input file.

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1 or more recent version of this tool
  • visual computing
  • Intel® Media SDK
  • URL
  • Video Decoder using Intel® Media SDK

    $
    0
    0

    Features / Description

    The Intel® Media Software Development Kit (Intel® Media SDK) Decoding Sample demonstrates how to use the Intel® Media SDK API to create a simple console application that performs decoding of various video compression formats.

    The Intel® Media SDK Decoding Sample supports the following video formats:

    input (compressed)H.264 (AVC, MVC – Multi-View Coding), MPEG-2 video, VC-1
    output (uncompressed)YUV420

    The Intel® Media SDK Decoding Sample renders the decoded video stream to a file in YUV 4:2:0 sampling format, with the parameters Y, U and V in that order.

    System Requirements

    Hardware:

    • IA-32 or Intel® 64 architecture processors with the Intel® Core™ processor or later is required for this Developer’s release.
    • 200 MB free hard disk space for this release.
    • The software implementation DLLs, libmfxsw32.dll and libmfxsw64.dll, requires compatible IA-32 or Intel® 64 architecture processor with support for Intel® Streaming SIMD Extensions 2 instructions.

    Software:

    • Microsoft* Windows* Vista* with Service Pack 2, or Microsoft* Windows* 7 Operating System
    • Microsoft* Visual* C++ 2005 with Service Pack 1 or more recent version of this tool
  • visual computing
  • Intel® Media SDK
  • URL
  • Viewing all 58 articles
    Browse latest View live


    Latest Images

    <script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>