kb_machblue_core_pcm.c
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:3k
源码类别:

DVD

开发平台:

C/C++

  1. //*****************************************************************************
  2. //File Name: kb_machblue_core_pcm.c
  3. //
  4. //Description: pcm function
  5. //
  6. // used by Machblue to access the platform's pcm engine api
  7. //
  8. //Author: steven
  9. //
  10. //Date:  2006.12.29
  11. //
  12. //Version:  v1.0
  13. //*****************************************************************************
  14. #include "machblue_defines.h"
  15. #include "machblue_customer.h"
  16. #include "machblue_porting_core.h"
  17. #include "kb_machblue_client_define.h"
  18. /**
  19.  * Opens device pcm engine for playback.
  20.  * pcm_engine   < pointer to pcm engine handle to store handle 
  21.                                        of newly opened pcm engine >
  22.  
  23.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  24.  */
  25. mb_error_t mb_pcm_engine_open(mb_pcm_engine_t *pcm_engine)
  26. {
  27. kb_movie_pcm_t *p_pcm_engine;
  28. *pcm_engine=MB_INVALID_PCM_ENGINE;
  29. p_pcm_engine=(kb_movie_pcm_t *)mb_malloc(sizeof(kb_movie_pcm_t)) ;
  30. if(p_pcm_engine==NULL)
  31. {
  32. mb_printf("n[Machblue]:PCM open error.");
  33. return MB_FAILURE ;
  34. }
  35. *pcm_engine=(mb_pcm_engine_t)p_pcm_engine;
  36. return MB_SUCCESS ;
  37. }
  38. /**
  39.  * Closes PCM engine.
  40.  * pcm_engine   < PCM engine to close >
  41.  
  42.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  43.  */
  44. mb_error_t mb_pcm_engine_close(mb_pcm_engine_t pcm_engine)
  45. {
  46. if(pcm_engine==MB_INVALID_PCM_ENGINE)
  47. {
  48. mb_printf("n[Machblue]:PCM close error.");
  49. return MB_FAILURE ;
  50. }
  51. mb_free((kb_movie_pcm_t *)pcm_engine) ;
  52. return MB_SUCCESS ;
  53. }
  54. /**
  55.  * Sets PCM engine format.
  56.  * pcm_engine  < pcm engine to configure > 
  57.  * format  < pcm format requested >
  58.  * sample_rate < pcm sample rate requested in Hz >
  59.  * n_channels     < number of channels requested (1 for mono,2 for stereo, etc.) >
  60.  
  61.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  62.  */
  63. mb_error_t mb_pcm_engine_format_set(mb_pcm_engine_t  pcm_engine, 
  64.     mb_pcm_format_t format,unsigned long sample_rate,int n_channels)
  65. {
  66. kb_movie_pcm_t *p_pcm_engine=(kb_movie_pcm_t *)pcm_engine;
  67. if(p_pcm_engine==NULL)
  68. {
  69. mb_printf("n[Machblue]:PCM format set error.");
  70. return MB_FAILURE ;
  71. }
  72. p_pcm_engine->m_format  = format;
  73. p_pcm_engine->m_sample_rate  = sample_rate;
  74. p_pcm_engine->m_n_channels    = n_channels;
  75. return MB_SUCCESS ;
  76. }
  77. /**
  78.  * Plays a sample buffer on a PCM engine.
  79.  * pcm_engine  < pcm engine to play samples on >
  80.  * sample_buffer  < sample buffer to play >
  81.  * n_samples < number of samples to play >
  82.  * callback_f < callback function to invoke when playback is over >
  83.  * cb_client_data   < callback function client data >
  84.  
  85.  * @return MB_SUCCESS on success, MB_FAILURE on failure.
  86.  */
  87. mb_error_t mb_pcm_engine_play(mb_pcm_engine_t cm_engine,const void *sample_buffer,
  88.     int n_samples,mb_pcm_callback_f *callback_f,void *cb_client_data)
  89. {
  90. mb_printf("n[Machblue]:mb_pcm_engine_play.");
  91. return MB_SUCCESS ;
  92. }