mikrocontroller.net

Forum: PC-Programmierung Intel IPP + GSM


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Vielleicht kann mir ja jemand von euch helfen. Ich will mit Hilfe der 
Intel IPP einen Alaw stream in einen GSMFR umwandeln. Das decoden geht 
bereits aber beim encoden macht er probleme. Er codiert nicht richtig 
zumindest höre ich am Telefon nichts und ich weiß das er aber ein wave 
File vorspielt. Selbst wenn ich immer den selben Buffer zum encoden gebe 
kommt immer was anderes raus.
  LoadedCodec gsm_codec;
  gsm_codec.lIsVad = 0;
  int gsm_available = 1;
  
  // Load the used codec
  codec_status = LoadUSCCodecByNumber(&gsm_codec, 3);
  if(codec_status < 0)
  {
    T.Trace(TraceInfo, __FUNCTION__"++. GSM: Unable to load codec\n");
    gsm_available = -1;
  }
  // Allocate memory for the codec
  codec_status = USCCodecAllocInfo(&gsm_codec.uscParams);
  if(codec_status < 0)
  {
    T.Trace(TraceInfo, __FUNCTION__"++. GSM: Could not allocate CodecInfo\n");
    gsm_available = -1;
  }
  // Get CodecInfo
  codec_status = USCCodecGetInfo(&gsm_codec.uscParams);
  if(codec_status < 0)
  {  
    T.Trace(TraceInfo, __FUNCTION__"++. GSM: Could not get CodecInfo\n");
    gsm_available = -1;
  }
  // Get Params by format
  codec_status = GetUSCCodecParamsByFormat(&gsm_codec,BY_NAME);
  if(codec_status < 0)
  {
    T.Trace(TraceInfo, __FUNCTION__"++. GSM: CodecInfoByFormat got successful\n");
    gsm_available = -1;
  }
  SetUSCEncoderParams(&gsm_codec.uscParams);
  gsm_codec.uscParams.nChannels = 1;
  // allocate memory for the codec
  codec_status = USCCodecAlloc(&gsm_codec.uscParams);
  if(codec_status < 0)
  {
    T.Trace(TraceInfo, __FUNCTION__"++. GSM: USCCodecAlloc() failed\n");
    gsm_available = -1;
  }
  // init the Encoder
  codec_status = USCEncoderInit(&gsm_codec.uscParams);
  if(codec_status < 0)
  {
    T.Trace(TraceInfo, __FUNCTION__"++. GSM: EncoderInit not successful\n");
    gsm_available = -1;
  }

  char outbuffer_lin[1000];
  char outbuffer[1000];
  char* p_out = outbuffer_lin;
  char* p_in = (char*)(datalist->item[tmp_session->data_index].data);
  int cvtLen = 160;//RTP_PACKETSIZE * tmp_session->packetsize;
  int outlen = 0;
        
  codec_status = USC_CvtToLiniar(&gsm_codec.uscParams, 6, &p_in, &cvtLen, &p_out, &outlen);
  if(codec_status < 0)
    T.Trace(TraceInfo, __FUNCTION__"++. GSM: USC_CvtToLinear was not successful\n");
  
  outlen = encode(&gsm_codec.uscParams, (char*)(outbuffer_lin), outbuffer, outlen, 500);

Danke im vorhinein!

MFG Gast

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.