реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Кодирование PCM в g711
guram
сообщение Jul 16 2007, 07:21
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 12-05-07
Пользователь №: 27 678



Уважаемые...
Задача следующая:
Есть библиотека Intel IPP 5.1. При её помощи следует реализовать динамическую библиотеку, методы которой будут заниматся кодированием сигнала из формата PCM в формат g711.
Также библиотека должна быть реализована в операционной системе Linux.


Если кто-нибудь занимался подобным помогите пожалуйсто

Спасибо
Go to the top of the page
 
+Quote Post
Mihail Gluhowche...
сообщение Jul 16 2007, 11:47
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 732
Регистрация: 24-01-07
Из: Novosibirsk
Пользователь №: 24 710



однако 125 микросекунд линукс не потянет smile.gif
А еще наверно хочется много потоков smile.gif
Go to the top of the page
 
+Quote Post
guram
сообщение Jul 16 2007, 15:15
Сообщение #3





Группа: Новичок
Сообщений: 8
Регистрация: 12-05-07
Пользователь №: 27 678



Извините за не понимание НО при чем тут 125 микросекунд....
Приложение вызывает метод библиотеки передает ему буфер данных, метод выполняет кодирование и возвращает буфер в главную программу.
Планировалось все делать в одном потоке....
Проблема не с Linux и не с потоками.
Проблема в Intel IPP ибо простиньких примеров в сети найти я не могу
help.gif
Go to the top of the page
 
+Quote Post
Mihail Gluhowche...
сообщение Jul 17 2007, 04:39
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 732
Регистрация: 24-01-07
Из: Novosibirsk
Пользователь №: 24 710



Если не на ходу то есть много вкусных библиотек. google вам поможет.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jul 17 2007, 05:53
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(guram @ Jul 16 2007, 11:21) *
Уважаемые...
Задача следующая:
Есть библиотека Intel IPP 5.1. При её помощи следует реализовать динамическую библиотеку, методы которой будут заниматся кодированием сигнала из формата PCM в формат g711.
Также библиотека должна быть реализована в операционной системе Linux.
Если кто-нибудь занимался подобным помогите пожалуйсто

Спасибо

А в чем проблема собственно говоря? В ipp есть готовые фукции
LinToALaw, ALawToLin это кажись и есть G711. Берешь вызываешь и всего делов. ...


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
guram
сообщение Jul 17 2007, 06:51
Сообщение #6





Группа: Новичок
Сообщений: 8
Регистрация: 12-05-07
Пользователь №: 27 678



Проблема в не знании имен функций и библиотек, в которых они размещены
Go to the top of the page
 
+Quote Post
mikalaha
сообщение Jul 17 2007, 08:30
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 16-05-07
Пользователь №: 27 771



Цитата(guram @ Jul 17 2007, 10:51) *
Проблема в не знании имен функций и библиотек, в которых они размещены



Вот исходники для конвертации в А-закон и Мю-закон, и обратно.
Код
const int G711CMP[2][129]={
     {0,  1,  3,  5,  7,  9,  11, 13, 15, 17, 19, 21, 23, 25, 27, 29,31,
      35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79, 83, 87, 91, 95,
      103,111,119,127,135,143,151,159,167,175,183,191,199,207,215,223,
      239,255,271,287,303,319,335,351,367,383,399,415,431,447,463,479,
      511,543,575,607,639,671,703,735,767,799,831,863,895,927,959,991,
      1055,1119,1183,1247,1311,1375,1439,1503,
      1567,1631,1695,1759,1823,1887,1951,2015,
      2143,2271,2399,2527,2655,2783,2911,3039,
      3167,3295,3423,3551,3679,3807,3935,4063,
      4319,4575,4831,5087,5343,5599,5855,6111,
      6367,6623,6879,7135,7391,7647,7903,10000},
     {0,  2,  4,  6,  8,  10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
      32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64,
      68, 72, 76, 80, 84, 88, 92, 96, 100,104,108,112,116,120,124,128,
      136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,256,
      272,288,304,320,336,352,368,384,400,416,432,448,464,480,496,512,
      544,576,608,640,672,704,736,768,800,832,864,896,928,960,992,1024,
      1088,1152,1216,1280,1344,1408,1472,1536,
      1600,1664,1728,1792,1856,1920,1984,2048,
      2176,2304,2432,2560,2688,2816,2944,3072,
      3200,3328,3456,3584,3712,3840,3968,10000}};

const int G711EXP[2][128]={
     {0,  2,  4,  6,  8,  10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,33,
      37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 99,
      107,115,123,131,139,147,155,163,171,179,187,195,203,211,219,231,
      247,263,279,295,311,327,343,359,375,391,407,423,439,455,471,495,
      527,559,591,623,655,687,719,751,783,815,847,879,911,943,975,1023,
      1087,1151,1215,1279,1343,1407,1471,1535,
      1599,1663,1727,1791,1855,1919,1983,2079,
      2207,2335,2463,2591,2719,2847,2975,3103,
      3231,3359,3487,3615,3743,3871,3999,4191,
      4447,4703,4959,5215,5471,5727,5983,6239,
      6495,6751,7007,7263,7519,7775,8031},
     {1,  3,  5,  7,  9,  11, 13, 15, 17, 19, 21, 23, 25, 27, 29,
      31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63,
      66, 70, 74, 78, 82, 86, 90, 94, 98,102,106,110,114,118,122,126,
      132,140,148,156,164,172,180,188,196,204,212,220,228,236,244,252,
      264,280,296,312,328,344,360,376,392,408,424,440,456,472,488,504,
      528,560,592,624,656,688,720,752,784,816,848,880,912,944,976,1008,
      1056,1120,1184,1248,1312,1376,1440,1504,
      1568,1632,1696,1760,1824,1888,1952,2016,
      2112,2240,2368,2496,2624,2752,2880,3008,
      3136,3264,3392,3520,3648,3776,3904,4032}};

inline int  _ConvertFromALaw(int SInp)
{
    int SOut;
    SInp ^= 85;
    if (SInp>=128) SOut = G711EXP [1][SInp-128]; else SOut = -G711EXP [1][SInp];
    SOut <<= 3;
    return SOut;
}

inline int _ConvertToALaw(int SInp) {
    int SOut = SInp;
    int i;
    if (SOut < 0) SOut = -SOut; SOut >>= 3;
    if (SOut < 3968) { i=0; while ( SOut > G711CMP[1][i] ) i++; } else i = 127;
    if (i) i --;
    if (SInp>=0) SOut=128+i; else  SOut = i;
    SOut ^= 85;
    return SOut;
}

inline int _ConvertFromMuLaw(int SInp) {
    int SOut;
    if (SInp>=128) SOut = G711EXP [0][255-SInp]; else SOut = -G711EXP [0][127-SInp];
    SOut <<= 2;
    return SOut;
}

inline int _ConvertToMuLaw(int SInp) {
    int SOut = SInp;
    int i;
    if (SOut < 0) SOut = -SOut; SOut >>= 2;
    if (SOut < 7903) { i=0; while ( SOut > G711CMP[0][i] ) i++; } else i = 127;
    if (SInp>=0) SOut=255-i; else  SOut = 127-i;
    return SOut;
}
Go to the top of the page
 
+Quote Post
guram
сообщение Jul 17 2007, 08:57
Сообщение #8





Группа: Новичок
Сообщений: 8
Регистрация: 12-05-07
Пользователь №: 27 678



smile.gif
Спасибо за исходник, НО всеже использовал ли кто нибудь методы библиотеки IPP 5.1
Go to the top of the page
 
+Quote Post
DuHast
сообщение Jul 17 2007, 09:50
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(guram @ Jul 17 2007, 12:57) *
smile.gif
Спасибо за исходник, НО всеже использовал ли кто нибудь методы библиотеки IPP 5.1

Ну я использовал IPP(номер не помню) года 2-3 назад, помню, что по функциям с ней шел отличный help, который появлялся на компе после инсталяции. Была небольшая проблема с подключением библиотеки(статически, динамически, выбор процессора), здесь help не был столь понятен, но повозившись разобрался.
Go to the top of the page
 
+Quote Post
guram
сообщение Jul 17 2007, 11:40
Сообщение #10





Группа: Новичок
Сообщений: 8
Регистрация: 12-05-07
Пользователь №: 27 678



Цитата(DuHast @ Jul 17 2007, 12:50) *
Ну я использовал IPP(номер не помню) года 2-3 назад, помню, что по функциям с ней шел отличный help, который появлялся на компе после инсталяции. Была небольшая проблема с подключением библиотеки(статически, динамически, выбор процессора), здесь help не был столь понятен, но повозившись разобрался.



Поделитесь опытом пожалуйсто
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 07:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01435 секунд с 7
ELECTRONIX ©2004-2016