2014-03-12 1 views
2

Я столкнулся с проблемой во время декодирования потока RTP/MJPEG с ip-камеры.Что такое таблицы квантования по умолчанию для потока RTP/MJPEG?

Как rfc2435 состояний, таблицы квантования (для Q значения 1 < = Q < = 99) должны быть вычислены из этих таблиц по умолчанию:

/* 
* Table K.1 from JPEG spec. 
*/ 
static const int jpeg_luma_quantizer[64] = { 
    16, 11, 10, 16, 24, 40, 51, 61, 
    12, 12, 14, 19, 26, 58, 60, 55, 
    14, 13, 16, 24, 40, 57, 69, 56, 
    14, 17, 22, 29, 51, 87, 80, 62, 
    18, 22, 37, 56, 68, 109, 103, 77, 
    24, 35, 55, 64, 81, 104, 113, 92, 
    49, 64, 78, 87, 103, 121, 120, 101, 
    72, 92, 95, 98, 112, 100, 103, 99 
}; 

/* 
* Table K.2 from JPEG spec. 
*/ 
static const int jpeg_chroma_quantizer[64] = { 
    17, 18, 24, 47, 99, 99, 99, 99, 
    18, 21, 26, 66, 99, 99, 99, 99, 
    24, 26, 56, 99, 99, 99, 99, 99, 
    47, 66, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99 
}; 

Этот алгоритм приводит к ухудшению качества изображения (VLC показывает лучше). Я просмотрел FFmpeg источников, и нашел подобный алгоритм, но с разными таблицами:

static const uint8_t default_quantizers[128] = { 
    /* luma table */ 
    16, 11, 12, 14, 12, 10, 16, 14, 
    13, 14, 18, 17, 16, 19, 24, 40, 
    26, 24, 22, 22, 24, 49, 35, 37, 
    29, 40, 58, 51, 61, 60, 57, 51, 
    56, 55, 64, 72, 92, 78, 64, 68, 
    87, 69, 55, 56, 80, 109, 81, 87, 
    95, 98, 103, 104, 103, 62, 77, 113, 
    121, 112, 100, 120, 92, 101, 103, 99, 

    /* chroma table */ 
    17, 18, 18, 24, 21, 24, 47, 26, 
    26, 47, 99, 66, 56, 66, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99, 
    99, 99, 99, 99, 99, 99, 99, 99 
}; 

Я изменил таблицы для FFmpeg таблиц и картина выглядит идеально. Итак, почему эти таблицы отличаются от rfc2435? Что мне не хватает?

+1

Rfc2435 теперь опечатки обвинения аналогичных таблиц для использования при д <= 50 – Jay

ответ

0

Различные таблицы работают лучше для разных материалов. С течением времени также появляются лучшие таблицы. Поиск лучшей таблицы - это действительно пробная версия и ошибка с использованием человеческих судей по качеству, а затем создание компромиссов для того, для какого типа контента вы хотите оптимизировать. ffmpeg также может создавать более крупные файлы. И более крупные файлы могут быть неприемлемыми, если спецификация jpeg была первоначально написана.

+0

Проблемы заключается в том, что в потоке RTP/MJPEG (для значений Q 1 <= Q <= 99) нет таблиц. Они предопределены стандартом полезной нагрузки RTP rfc2435. Если они предопределены, должен быть только один способ их расчета. Я не могу понять, какой путь прав. – stakasha

+0

Я не уверен, почему это так. Я уже на грани моих знаний для JPEG. Извините, удачи! - – szatmary

Смежные вопросы