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

多媒体编程

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #include "Input.h"
  6. MediaInput::MediaInput()
  7. {
  8. this->inputInternet = new MediaInputInternet();
  9. this->inputFile     = new MediaInputFile();
  10. this->input = NULL;
  11. }
  12. MediaInput::~MediaInput()
  13. {
  14. delete this->inputFile;
  15. delete this->inputInternet;
  16. }
  17. media_type_t MediaInput::GetType()
  18. {
  19. return MEDIA_TYPE_INPUT;
  20. }
  21. char        *MediaInput::GetName()
  22. {
  23. if(this->input)
  24. return this->input->GetName();
  25. return "Input Wrapper";
  26. }
  27. MP_RESULT MediaInput::Connect(MediaItem *item)
  28. {
  29. return MP_RESULT_ERROR;
  30. }
  31. MP_RESULT MediaInput::ReleaseConnections()
  32. {
  33. return MP_RESULT_ERROR;
  34. }
  35. DWORD         MediaInput::GetCaps()
  36. {
  37. if(this->input)
  38. return this->input->GetCaps();
  39. return 0;
  40. }
  41. MP_RESULT     MediaInput::Configure(HINSTANCE hInstance, HWND hwnd)
  42. {
  43. return MP_RESULT_ERROR;
  44. }
  45. MP_RESULT MediaInput::Open(char *url, media_input_mode_t mode)
  46. {
  47. if(this->input != NULL)
  48. return MP_RESULT_ERROR;
  49. if(url != NULL) {
  50. if(strstr(url, "http://") != NULL || strstr(url, "ftp://") != NULL ||
  51.    strstr(url, "HTTP://") != NULL || strstr(url, "FTP://") != NULL) {
  52. if(this->inputInternet->Open(url, mode) != MP_RESULT_OK)
  53. return MP_RESULT_ERROR;
  54. this->input = this->inputInternet;
  55. return MP_RESULT_OK;
  56. }
  57. else {
  58. if(this->inputFile->Open(url, mode) != MP_RESULT_OK)
  59. return MP_RESULT_ERROR;
  60. this->input = this->inputFile;
  61. return MP_RESULT_OK;
  62. }
  63. }
  64. return MP_RESULT_ERROR;
  65. }
  66. long MediaInput::GetSize()
  67. {
  68. if(this->input != NULL)
  69. return this->input->GetSize();
  70. return MP_RESULT_ERROR;
  71. }
  72. long MediaInput::GetBufferSize()
  73. {
  74. if(this->input != NULL)
  75. return this->input->GetBufferSize();
  76. return MP_RESULT_ERROR;
  77. }
  78. long MediaInput::GetBufferPosition()
  79. {
  80. if(this->input != NULL)
  81. return this->input->GetBufferPosition();
  82. return MP_RESULT_ERROR;
  83. }
  84. long MediaInput::GetBufferingSize()
  85. {
  86. if(this->input != NULL)
  87. return this->input->GetBufferingSize();
  88. return MP_RESULT_ERROR;
  89. }
  90. unsigned int MediaInput::Read(MediaBuffer *mb, unsigned int size)
  91. {
  92. if(this->input != NULL)
  93. return this->input->Read(mb, size);
  94. return MP_RESULT_ERROR;
  95. }
  96. unsigned int MediaInput::Seek(int size, media_input_seek_t method)
  97. {
  98. if(this->input != NULL)
  99. return this->input->Seek(size, method);
  100. return MP_RESULT_ERROR;
  101. }
  102. unsigned int  MediaInput::GetLine(MediaBuffer *mb)
  103. {
  104. if(this->input != NULL)
  105. return this->input->GetLine(mb);
  106. return 0;
  107. }
  108. BOOL MediaInput::EndOfFile()
  109. {
  110. if(this->input != NULL)
  111. return this->input->EndOfFile();
  112. return FALSE;
  113. }
  114. MP_RESULT MediaInput::Close()
  115. {
  116. if(this->input != NULL)
  117. this->input->Close();
  118. this->input = NULL;
  119. return MP_RESULT_ERROR;
  120. }