SDL_ConvertAudio.3
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. .TH "SDL_ConvertAudio" "3" "Tue 11 Sep 2001, 22:58" "SDL" "SDL API Reference" 
  2. .SH "NAME"
  3. SDL_ConvertAudio- Convert audio data to a desired audio format&.
  4. .SH "SYNOPSIS"
  5. .PP
  6. fB#include "SDL&.h"
  7. .sp
  8. fBint fBSDL_ConvertAudiofPfR(fBSDL_AudioCVT *cvtfR);
  9. .SH "DESCRIPTION"
  10. .PP
  11. fBSDL_ConvertAudiofP takes one parameter, fBcvtfR, which was previously initilized&. Initilizing a fIfBSDL_AudioCVTfRfR is a two step process&. First of all, the structure must be passed to fIfBSDL_BuildAudioCVTfPfR along with source and destination format parameters&. Secondly, the fBcvtfR->fBbuffR and fBcvtfR->fBlenfR fields must be setup&. fBcvtfR->fBbuffR should point to the audio data and fBcvtfR->fBlenfR should be set to the length of the audio data in bytes&. Remember, the length of the buffer pointed to by fBbuffR show be fBlenfR*fBlen_multfR bytes in length&.
  12. .PP
  13. Once the fBSDL_AudioCVTfRstructure is initilized then we can pass it to fBSDL_ConvertAudiofP, which will convert the audio data pointer to by fBcvtfR->fBbuffR&. If fBSDL_ConvertAudiofP returned fB0fR then the conversion was completed successfully, otherwise fB-1fR is returned&.
  14. .PP
  15. If the conversion completed successfully then the converted audio data can be read from fBcvtfR->fBbuffR&. The amount of valid, converted, audio data in the buffer is equal to fBcvtfR->fBlenfR*fBcvtfR->fBlen_ratiofR&.
  16. .SH "EXAMPLES"
  17. .PP
  18. .nf
  19. f(CW/* Converting some WAV data to hardware format */
  20. void my_audio_callback(void *userdata, Uint8 *stream, int len);
  21. SDL_AudioSpec *desired, *obtained;
  22. SDL_AudioSpec wav_spec;
  23. SDL_AudioCVT  wav_cvt;
  24. Uint32 wav_len;
  25. Uint8 *wav_buf;
  26. int ret;
  27. /* Allocated audio specs */
  28. desired=(SDL_AudioSpec *)malloc(sizeof(SDL_AudioSpec));
  29. obtained=(SDL_AudioSpec *)malloc(sizeof(SDL_AudioSpec));
  30. /* Set desired format */
  31. desired->freq=22050;
  32. desired->format=AUDIO_S16LSB;
  33. desired->samples=8192;
  34. desired->callback=my_audio_callback;
  35. desired->userdata=NULL;
  36. /* Open the audio device */
  37. if ( SDL_OpenAudio(desired, obtained) < 0 ){
  38.   fprintf(stderr, "Couldn&'t open audio: %s
  39. ", SDL_GetError());
  40.   exit(-1);
  41. }
  42.         
  43. free(desired);
  44. /* Load the test&.wav */
  45. if( SDL_LoadWAV("test&.wav", &wav_spec, &wav_buf, &wav_len) == NULL ){
  46.   fprintf(stderr, "Could not open test&.wav: %s
  47. ", SDL_GetError());
  48.   SDL_CloseAudio();
  49.   free(obtained);
  50.   exit(-1);
  51. }
  52.                                             
  53. /* Build AudioCVT */
  54. ret = SDL_BuildAudioCVT(&wav_cvt,
  55.                         wav_spec&.format, wav_spec&.channels, wav_spec&.freq,
  56.                         obtained->format, obtained->channels, obtained->freq);
  57. /* Check that the convert was built */
  58. if(ret==-1){
  59.   fprintf(stderr, "Couldn&'t build converter!
  60. ");
  61.   SDL_CloseAudio();
  62.   free(obtained);
  63.   SDL_FreeWAV(wav_buf);
  64. }
  65. /* Setup for conversion */
  66. wav_cvt&.buf=(Uint8 *)malloc(wav_len*wav_cvt&.len_mult);
  67. wav_cvt&.len=wav_len;
  68. memcpy(wav_cvt&.buf, wav_buf, wav_len);
  69. /* We can delete to original WAV data now */
  70. SDL_FreeWAV(wav_buf);
  71. /* And now we&'re ready to convert */
  72. SDL_ConvertAudio(&wav_cvt);
  73. /* do whatever */
  74. &.
  75. &.
  76. &.
  77. &.
  78. fR
  79. .fi
  80. .PP
  81. .SH "SEE ALSO"
  82. .PP
  83. fIfBSDL_BuildAudioCVTfPfR, fIfBSDL_AudioCVTfPfR
  84. ..." created by instant / docbook-to-man, Tue 11 Sep 2001, 22:58