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

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.  * The contents of this file are subject to the Mozilla Public
  3.  * License Version 1.1 (the "License"); you may not use this file
  4.  * except in compliance with the License. You may obtain a copy of
  5.  * the License at http://www.mozilla.org/MPL/
  6.  * 
  7.  * Software distributed under the License is distributed on an "AS
  8.  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
  9.  * implied. See the License for the specific language governing
  10.  * rights and limitations under the License.
  11.  * 
  12.  * The Original Code is MPEG4IP.
  13.  * 
  14.  * The Initial Developer of the Original Code is Cisco Systems Inc.
  15.  * Portions created by Cisco Systems Inc. are
  16.  * Copyright (C) Cisco Systems Inc. 2000, 2001.  All Rights Reserved.
  17.  * 
  18.  * Contributor(s): 
  19.  *              Bill May        wmay@cisco.com
  20.  */
  21. /*
  22.  * audio.cpp provides an interface (CAudioSync) between the codec and
  23.  * the SDL audio APIs.
  24.  */
  25. #include <stdlib.h>
  26. #include <string.h>
  27. #include "player_session.h"
  28. #include "audio_dummy.h"
  29. #include "player_util.h"
  30. //#define DEBUG_SYNC 1
  31. //#define DEBUG_AUDIO_FILL 1
  32. //#define DEBUG_DELAY 1
  33. #ifdef _WIN32
  34. DEFINE_MESSAGE_MACRO(audio_message, "audiosync")
  35. #else
  36. #define audio_message(loglevel, fmt...) message(loglevel, "audiosync", fmt)
  37. #endif
  38. void CDummyAudioSync::set_config (int freq, int channels, int format, 
  39.      uint32_t max_buffer_size)
  40. {
  41.   uint32_t max_bytes;
  42.   m_freq = freq;
  43.   m_chans = channels;
  44.   m_format = format;
  45.   m_max_sample_size = max_buffer_size;
  46.   if (m_max_sample_size != 0) {
  47.     max_bytes = m_chans * m_max_sample_size;
  48.     if (m_format == AUDIO_U8 || m_format == AUDIO_S8) {
  49.     } else {
  50.       max_bytes *= 2;
  51.     }
  52.     m_buffer = (uint8_t *)malloc(max_bytes);
  53.   } else {
  54.     m_buffer = NULL;
  55.   }
  56. }
  57.   
  58. uint8_t *CDummyAudioSync::get_audio_buffer (void)
  59. {
  60.   return m_buffer;
  61. }
  62. void CDummyAudioSync::filled_audio_buffer (uint64_t ts, int resync)
  63. {
  64.   audio_message(LOG_DEBUG, "Filled audio buffer "LLU" resync %d", 
  65. ts, resync);
  66. }
  67. uint32_t CDummyAudioSync::load_audio_buffer (uint8_t *from,
  68.      uint32_t bytes, 
  69.      uint64_t ts, 
  70.      int resync)
  71. {
  72.   audio_message(LOG_DEBUG, "Load audio buffer %d bytes at "LLU" resync %d", 
  73. bytes, ts, resync);
  74.   return bytes;
  75. }
  76. static void c_audio_config (void *ifptr, int freq, 
  77.     int chans, int format, uint32_t max_buffer_size)
  78. {
  79.   ((CDummyAudioSync *)ifptr)->set_config(freq,
  80.     chans,
  81.     format,
  82.     max_buffer_size);
  83. }
  84. static uint8_t *c_get_audio_buffer (void *ifptr)
  85. {
  86.   return ((CDummyAudioSync *)ifptr)->get_audio_buffer();
  87. }
  88. static void c_filled_audio_buffer (void *ifptr,
  89.    uint64_t ts,
  90.    int resync_req)
  91. {
  92.   ((CDummyAudioSync *)ifptr)->filled_audio_buffer(ts, 
  93.      resync_req);
  94. }
  95. static uint32_t c_load_audio_buffer (void *ifptr, 
  96.      uint8_t *from, 
  97.      uint32_t bytes, 
  98.      uint64_t ts, 
  99.      int resync)
  100. {
  101.   return ((CDummyAudioSync *)ifptr)->load_audio_buffer(from,
  102.   bytes,
  103.   ts, 
  104.   resync);
  105. }
  106.   
  107. static audio_vft_t audio_vft = {
  108.   message,
  109.   c_audio_config,
  110.   c_get_audio_buffer,
  111.   c_filled_audio_buffer,
  112.   c_load_audio_buffer
  113. };
  114. CAudioSync *create_audio_sync (CPlayerSession *psptr, int volume)
  115. {
  116.   return new CDummyAudioSync(psptr);
  117. }
  118. audio_vft_t *get_audio_vft (void)
  119. {
  120.   return &audio_vft;
  121. }
  122. int do_we_have_audio (void) 
  123. {
  124.   return (1);
  125. }
  126. /* end audio.cpp */