AudioDecoder.cpp
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:2k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #include "AudioDecoder.h"
  6. MediaAudioDecoder::MediaAudioDecoder()
  7. {
  8. this->acmDecoder = new MediaAudioDecoderACM();
  9. this->mp3Decoder = new MediaAudioDecoderMP3();
  10. this->decoder    = NULL;
  11. }
  12. MediaAudioDecoder::~MediaAudioDecoder()
  13. {
  14. delete this->acmDecoder;
  15. delete this->mp3Decoder;
  16. }
  17. media_type_t  MediaAudioDecoder::GetType()
  18. {
  19. return MEDIA_TYPE_AUDIO_DECODER;
  20. }
  21. char         *MediaAudioDecoder::GetName()
  22. {
  23. if(this->decoder)
  24. return this->decoder->GetName();
  25. return "Audio Decoder Wrapper";
  26. }
  27. MP_RESULT     MediaAudioDecoder::Connect(MediaItem *item)
  28. {
  29. if(this->acmDecoder->Connect(item) == MP_RESULT_OK) {
  30. this->decoder = (MediaItemAudioDecoder *) this->acmDecoder;
  31. return MP_RESULT_OK;
  32. }
  33. if(this->mp3Decoder->Connect(item) == MP_RESULT_OK) {
  34. this->decoder = (MediaItemAudioDecoder *) this->mp3Decoder;
  35. return MP_RESULT_OK;
  36. }
  37. return MP_RESULT_ERROR;
  38. }
  39. MP_RESULT     MediaAudioDecoder::ReleaseConnections()
  40. {
  41. if(this->decoder) {
  42. this->decoder->ReleaseConnections();
  43. }
  44. this->decoder = NULL;
  45. return MP_RESULT_OK;
  46. }
  47. DWORD         MediaAudioDecoder::GetCaps()
  48. {
  49. return 0;
  50. }
  51. MP_RESULT     MediaAudioDecoder::Configure(HINSTANCE hInstance, HWND hwnd)
  52. {
  53. return MP_RESULT_ERROR;
  54. }
  55. WAVEFORMATEX *MediaAudioDecoder::GetAudioFormat()
  56. {
  57. if(this->decoder)
  58. return this->decoder->GetAudioFormat();
  59. return NULL;
  60. }
  61. MP_RESULT     MediaAudioDecoder::EmptyAudioBuffer()
  62. {
  63. if(this->decoder)
  64. return this->decoder->EmptyAudioBuffer();
  65. return MP_RESULT_ERROR;
  66. }
  67. unsigned int  MediaAudioDecoder::Decompress(void *buffer, unsigned int size)
  68. {
  69. if(this->decoder)
  70. return this->decoder->Decompress(buffer, size);
  71. return 0;
  72. }