Decaps.cpp
上传用户:hxb_1234
上传日期:2010-03-30
资源大小:8328k
文件大小:6k
源码类别:

VC书籍

开发平台:

Visual C++

  1. /**************************************************************************************
  2.  *                                                                                    *
  3.  *                                                                                    *
  4.  **************************************************************************************/
  5. #include "Decaps.h"
  6. MediaDecaps::MediaDecaps()
  7. {
  8. this->decaps    = NULL;
  9. this->decapsAVI = new MediaDecapsAVI();
  10. }
  11. MediaDecaps::~MediaDecaps()
  12. {
  13. }
  14. media_type_t  MediaDecaps::GetType()
  15. {
  16. return MEDIA_TYPE_DECAPS;
  17. }
  18. char         *MediaDecaps::GetName()
  19. {
  20. if(this->decaps)
  21. return this->decaps->GetName();
  22. return "AVI Wrapper";
  23. }
  24. MP_RESULT     MediaDecaps::Connect(MediaItem *item)
  25. {
  26. if(this->decapsAVI->Connect(item) == MP_RESULT_OK) {
  27. this->decaps = this->decapsAVI;
  28. return MP_RESULT_OK;
  29. }
  30. return MP_RESULT_ERROR;
  31. }
  32. MP_RESULT     MediaDecaps::ReleaseConnections()
  33. {
  34. if(this->decaps != NULL) {
  35. this->decaps->ReleaseConnections();
  36. this->decaps = NULL;
  37. }
  38. return MP_RESULT_OK;
  39. }
  40. DWORD         MediaDecaps::GetCaps()
  41. {
  42. return 0;
  43. }
  44. MP_RESULT     MediaDecaps::Configure(HINSTANCE hInstance, HWND hwnd)
  45. {
  46. return MP_RESULT_ERROR;
  47. }
  48. unsigned int  MediaDecaps::GetNumberOfVideoStreams()
  49. {
  50. if(this->decaps) {
  51. return this->decaps->GetNumberOfVideoStreams();
  52. }
  53. return MP_RESULT_ERROR;
  54. }
  55. unsigned int  MediaDecaps::GetNumberOfAudioStreams()
  56. {
  57. if(this->decaps) {
  58. return this->decaps->GetNumberOfAudioStreams();
  59. }
  60. return MP_RESULT_ERROR;
  61. }
  62. unsigned int  MediaDecaps::GetVideoWidth(unsigned int StreamId)
  63. {
  64. if(this->decaps) {
  65. return this->decaps->GetVideoWidth(StreamId);
  66. }
  67. return MP_RESULT_ERROR;
  68. }
  69. unsigned int  MediaDecaps::GetVideoHeight(unsigned int StreamId)
  70. {
  71. if(this->decaps) {
  72. return this->decaps->GetVideoHeight(StreamId);
  73. }
  74. return MP_RESULT_ERROR;
  75. }
  76. double        MediaDecaps::GetVideoFrameRate(unsigned int StreamId)
  77. {
  78. if(this->decaps) {
  79. return this->decaps->GetVideoFrameRate(StreamId);
  80. }
  81. return MP_RESULT_ERROR;
  82. }
  83. char  *MediaDecaps::GetVideoCompression(unsigned int StreamId)
  84. {
  85. if(this->decaps) {
  86. return this->decaps->GetVideoCompression(StreamId);
  87. }
  88. return "NULL";
  89. }
  90. BITMAPINFOHEADER *MediaDecaps::GetVideoHeader(unsigned int StreamId)
  91. {
  92. if(this->decaps) {
  93. return this->decaps->GetVideoHeader(StreamId);
  94. }
  95. return NULL;
  96. }
  97. unsigned long MediaDecaps::GetCurrentVideoFrame(unsigned int StreamId)
  98. {
  99. if(this->decaps) {
  100. return this->decaps->GetCurrentVideoFrame(StreamId);
  101. }
  102. return 0;
  103. }
  104. unsigned long MediaDecaps::GetTotalVideoFrames(unsigned int StreamId)
  105. {
  106. if(this->decaps) {
  107. return this->decaps->GetTotalVideoFrames(StreamId);
  108. }
  109. return 0;
  110. }
  111. unsigned long MediaDecaps::GetTotalVideoTime(unsigned int StreamId)
  112. {
  113. if(this->decaps) {
  114. return this->decaps->GetTotalVideoTime(StreamId);
  115. }
  116. return 0;
  117. }
  118. unsigned int  MediaDecaps::GetAudioBits(unsigned int StreamId)
  119. {
  120. if(this->decaps) {
  121. return this->decaps->GetAudioBits(StreamId);
  122. }
  123. return 0;
  124. }
  125. unsigned int  MediaDecaps::GetAudioChannels(unsigned int StreamId)
  126. {
  127. if(this->decaps) {
  128. return this->decaps->GetAudioChannels(StreamId);
  129. }
  130. return 0;
  131. }
  132. unsigned int  MediaDecaps::GetAudioFrequency(unsigned int StreamId)
  133. {
  134. if(this->decaps) {
  135. return this->decaps->GetAudioFrequency(StreamId);
  136. }
  137. return 0;
  138. }
  139. WAVEFORMATEX *MediaDecaps::GetAudioFormat(unsigned int StreamId) 
  140. {
  141. if(this->decaps) {
  142. return this->decaps->GetAudioFormat(StreamId);
  143. }
  144. return NULL;
  145. }
  146. unsigned int  MediaDecaps::GetNextVideoFrameSize(unsigned int StreamId)
  147. {
  148. if(this->decaps) {
  149. return this->decaps->GetNextVideoFrameSize(StreamId);
  150. }
  151. return 0;
  152. }
  153. unsigned int  MediaDecaps::ReadVideoFrame(unsigned int StreamId, MediaBuffer *mb)
  154. {
  155. if(this->decaps) {
  156. return this->decaps->ReadVideoFrame(StreamId, mb);
  157. }
  158. return MP_RESULT_ERROR;
  159. }
  160. unsigned int  MediaDecaps::ReadAudioData(unsigned int StreamId, char *buffer, unsigned int bytes)
  161. {
  162. if(this->decaps) {
  163. return this->decaps->ReadAudioData(StreamId, buffer, bytes);
  164. }
  165. return MP_RESULT_ERROR;
  166. }
  167. MP_RESULT MediaDecaps::UpdateForSize()
  168. {
  169. if(this->decaps)
  170. return this->decaps->UpdateForSize();
  171. return MP_RESULT_ERROR;
  172. }
  173. MP_RESULT     MediaDecaps::SeekAudio(unsigned int StreamId, long bytes)
  174. {
  175. if(this->decaps) {
  176. return this->decaps->SeekAudio(StreamId, bytes);
  177. }
  178. return MP_RESULT_ERROR;
  179. }
  180. MP_RESULT     MediaDecaps::SeekVideo(unsigned int StreamId, long frame)
  181. {
  182. if(this->decaps) {
  183. return this->decaps->SeekVideo(StreamId, frame);
  184. }
  185. return MP_RESULT_ERROR;
  186. }
  187. MP_RESULT     MediaDecaps::ReSeekAudio(unsigned int StreamId)
  188. {
  189. if(this->decaps) {
  190. return this->decaps->ReSeekAudio(StreamId);
  191. }
  192. return MP_RESULT_ERROR;
  193. }
  194. MP_RESULT     MediaDecaps::Seek(unsigned int videoStreamId, unsigned int audioStreamId, int percent)
  195. {
  196. if(this->decaps) {
  197. return this->decaps->Seek(videoStreamId, audioStreamId, percent);
  198. }
  199. return MP_RESULT_ERROR;
  200. }
  201. MP_RESULT     MediaDecaps::Rewind(unsigned int videoStreamId, unsigned int audioStreamId)
  202. {
  203. if(this->decaps) {
  204. return this->decaps->Rewind(videoStreamId, audioStreamId);
  205. }
  206. return MP_RESULT_ERROR;
  207. }
  208. MP_RESULT     MediaDecaps::SeekNextKeyFrame(unsigned int StreamId)
  209. {
  210. if(this->decaps) {
  211. return this->decaps->SeekNextKeyFrame(StreamId);
  212. }
  213. return MP_RESULT_ERROR;
  214. }
  215. MP_RESULT     MediaDecaps::SeekPreviousKeyFrame(unsigned int StreamId)
  216. {
  217. if(this->decaps) {
  218. return this->decaps->SeekPreviousKeyFrame(StreamId);
  219. }
  220. return MP_RESULT_ERROR;
  221. }