Улучшение отношения сигнал/шум при микшировании видео изображения, сжатого по стандарту MPEG2, страница 19

Elecard StreamEye Tools представляет собой набор инструментальных средств созданных специально для медиа-профессионалов и любителей, который позволяет анализировать качество видео, устранять проблемы в кодированном потоке для дальнейшей оптимизации видео компрессии, гарантируя соответствие видео стандартам.

Рис. 2.6.1 Результат микширования.

Рис. 2.6.2 Изменения на кадре.

На рисунке 2.6.2 показана разница между кадром на входе кодера микшера и кадром на выходе кодера. Синие точки означают, что данные пиксели были изменены (потеря качества). Как видно, потери в основном сконцентрированы в правом нижнем углу – месте, где было наложено новое изображение. Остальная область кадра имеет намного меньше искажений, что позволяет судить о качественной кодировке неизмененных участков кадра. Наличие редкие синих точек вызвано на неизмененной области тем, что дискретное косинусное преобразование вносит некоторое искажение.

3.  Заключение

По результатам тестирования оптимизированной системы микширования можно сделать вывод об успешности оптимизации. Удалось заметно уменьшить требования к аппаратуре, предъявляемые системой, что позволило запускать ее на более дешевых аппаратных платформах. Были заметно снижены добавляемые шумы при повторном кодировании, что положительно сказалось на качестве выходного изображения. Повсеместный переход на цифровое телевидение может вызвать спрос на подобные системы в ближайшем будущем. bcредъявляемые системой, что позволило запускать ее на более дешевых аппаратны

4.  Список используемой литературы

  1. International Standard 13818-2
  2. Latha Pillai – MPEG2 Quantization (June 25 2003)
  3. Intel - Документация по 32 разрядной архитектуре (Intel.com)
  4. Intel – Технический обзор процессора Intel Pentium IV
  5. Клюшин – Полный Курс C++
  6. Н. Г. Голубь – Исскуство программирования на ассемблере
  7. Крис Касперски – Техника оптимизации программ. Эффективное использование памяти.

5.  Приложение А

В связи с большим объемом исходного кода (декодер 10 000 строк кода, кодер 13 000 строк кода) приводятся только заголовочные файлы библиотек декодера и кодера, а также тестовое консольное приложение, реализующее быстрое микширование.

1.  vsm2_stypes.h – Переопределение стандартных типов для упрощения портации кода на другие системы.

/**

* @file vsm2_stypes.h

* Standart types redefinition for simple code porting.

*

* - Copyright (c) 2002-2006, Vanguard Software Solutions, Inc.

* - Project: MPEG2 video codecs

**/

#ifndef _VSM2_STYPES_H

#define _VSM2_STYPES_H

typedef unsigned char t_ui8;

typedef signed char t_si8;

typedef unsigned short t_ui16;

typedef signed short t_si16;

typedef unsigned int t_ui32;

typedef signed int t_si32;

typedef unsigned int t_bool;

#endif // !_VSM2_STYPES_H

2.  vsm2.h – Определение структур MPEG2 стандарта (заголовки, расширения)

/**

* @file vsm2.h

* Standart MPEG2 data structures and definitions.

*

* - Copyright (c) 2002-2006, Vanguard Software Solutions, Inc.

* - Project: MPEG2 video codecs

**/

#ifndef _VSM2_VSM2_H

#define _VSM2_VSM2_H

#include "vsm2_stypes.h"

////////////////////////////// MPEG2 Video Define section //////////////////////////////

/// START CODES

#define PICTURE_START_CODE                    0x00  /// Picture start code

#define SLICE_START_CODE_MIN                  0x01  /// [001, 175] - slice start codes

#define SLICE_START_CODE_MAX                  0xAF 

#define NONE_START_CODE                       0xB0  /// NONE_START_CODE determines absent of start codes

#define USER_DATA_START_CODE                  0xB2  /// [178, 184] - headers, user data, extensions

#define SEQUENCE_HEADER_CODE                  0xB3

#define SEQUENCE_ERROR_CODE                   0xB4

#define EXTENSION_START_CODE                  0xB5

#define SEQUENCE_END_CODE                     0xB7

#define GROUP_START_CODE                      0xB8

#define SYSTEM_START_CODE_MIN                 0xB9  /// [185, 255] - system start codes

#define ISO_END_CODE                          0xB9

#define PACK_START_CODE                       0xBA