![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Audio
文章平均质量分 74
Vincent_ywj
这个作者很懒,什么都没留下…
展开
-
Audio笔记之EffectChain::process_l
void AudioFlinger::EffectModule::process(){ Mutex::Autolock _l(mLock); if (mState == DESTROYED || mEffectInterface == NULL || mConfig.inputCfg.buffer.raw == NULL || m原创 2014-10-31 21:18:13 · 1678 阅读 · 0 评论 -
Audio笔记之AudioFlinger::AsyncCallbackThread
AudioFlinger::AsyncCallbackThread::AsyncCallbackThread( const wp& playbackThread) : Thread(false /*canCallJava*/), mPlaybackThread(playbackThread), mWriteAckSequence(0),原创 2014-10-28 15:26:39 · 1305 阅读 · 0 评论 -
Audio笔记之耳机插拔检测
System Server是Android系统的核心,他在Dalvik虚拟机启动后立即开始初始化和运行。其它的系统服务在System Server进程的环境中运行。在main函数中,首先检查系统时间设置和SamplingProfiler。然后加载一个叫android_servers的本地库,他提供本地方法的接口(源程序在framework/base/services/jni/目录中)。然后调用原创 2014-12-07 01:40:50 · 5668 阅读 · 0 评论 -
Audio笔记之AudioTrack::write
public int write(byte[] audioData, int offsetInBytes, int sizeInBytes) { if (mState == STATE_UNINITIALIZED) { return ERROR_INVALID_OPERATION; } if ( (audioData ==原创 2014-10-27 17:08:15 · 6644 阅读 · 0 评论 -
Audio笔记之Track::attachAuxEffect
status_t AudioTrack::createTrack_l( audio_stream_type_t streamType, uint32_t sampleRate, audio_format_t format, size_t frameCount, audio_output_flags_t flags,原创 2014-10-22 18:04:14 · 2416 阅读 · 1 评论 -
Audio笔记之SoftAAC2
SoftAAC2::SoftAAC2( const char *name, const OMX_CALLBACKTYPE *callbacks, OMX_PTR appData, OMX_COMPONENTTYPE **component) : SimpleSoftOMXComponent(name, callbacks, a原创 2014-11-05 10:34:19 · 4130 阅读 · 0 评论 -
Audio笔记之PlaybackThread::threadLoop
bool AudioFlinger::PlaybackThread::threadLoop(){ Vector > tracksToRemove; standbyTime = systemTime(); // MIXER nsecs_t lastWarning = 0; // DUPLICATING // FIXME could this b原创 2014-10-27 17:32:54 · 6444 阅读 · 0 评论 -
Audio笔记之MediaPlayerService:setDataSource
MediaPlayer mp = new MediaPlayer();mp.setDataSource(PATH_TO_FILE); ...... (1)mp.prepare(); ........................ (2)、(3)mp.start(); .......................... (4)原创 2014-11-15 22:00:30 · 1773 阅读 · 0 评论 -
Audio笔记之AudioEffect
public AudioEffect(UUID type, UUID uuid, int priority, int audioSession) throws IllegalArgumentException, UnsupportedOperationException, RuntimeException { int[] id = n原创 2014-11-01 22:55:36 · 2938 阅读 · 0 评论 -
Audio笔记之AudioTrack::play
public void play() throws IllegalStateException { if (mState != STATE_INITIALIZED) { throw new IllegalStateException("play() called on uninitialized AudioTrack."); }原创 2014-10-27 17:19:29 · 3891 阅读 · 0 评论 -
Audio笔记之FastMixer
// FastMixer线程,负责进行mix fast track,从MonoPipe中获取数据,经过mix运算,输出到AudioStreamOutSink中 bool FastMixer::threadLoop() { static const FastMixerState initial; const FastMixerState *previous = &in原创 2014-10-20 17:11:53 · 5792 阅读 · 0 评论 -
Audio笔记之MixerThread::prepareTracks_l
// prepareTracks_l() must be called with ThreadBase::mLock heldAudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTracks_l( Vector > *tracksToRemove){ mixe原创 2014-10-20 23:58:05 · 3477 阅读 · 0 评论 -
Audio笔记之ServiceManager
我们知道,Service Manager在Binder机制中既充当守护进程的角色,同时它也充当着Server角色,然而它又与一般的Server不一样。对于普通的Server来说,Client如果想要获得Server的远程接口,那么必须通过Service Manager远程接口提供的getService接口来获得,这本身就是一个使用Binder机制来进行进程间通信的过程。而对于Service Man原创 2014-11-16 13:44:38 · 656 阅读 · 0 评论 -
Audio笔记之MixerThread
AudioFlinger::PlaybackThread::PlaybackThread(const sp& audioFlinger, AudioStreamOut* output, audio_io_handle_t原创 2014-10-19 17:09:45 · 2453 阅读 · 0 评论 -
Audio笔记之AudioFlinger::createTrack
static volatile int32_t nextTrackId = 55;// TrackBase constructor must be called with AudioFlinger::mLock heldAudioFlinger::ThreadBase::TrackBase::TrackBase( ThreadBase *thread,原创 2014-10-20 11:32:02 · 5700 阅读 · 0 评论 -
Audio笔记之AudioMixer
// Ensure mConfiguredNames bitmask is initialized properly on all architectures.// The value of 1 = 32.AudioMixer::AudioMixer(size_t frameCount, uint32_t sampleRate, uint32_t maxNumTracks)原创 2014-10-19 15:52:33 · 2486 阅读 · 0 评论 -
Audio笔记之AudioPlayer流程
status_t AwesomePlayer::play_l() { modifyFlags(SEEK_PREVIEW, CLEAR); if (mFlags & PLAYING) { return OK; } if (!(mFlags & PREPARED)) { status_t err = prepare_l();原创 2015-02-01 15:46:38 · 5543 阅读 · 1 评论 -
Audio笔记之AudioSystem::getOutput
audio_io_handle_t AudioSystem::getOutput(audio_stream_type_t stream, uint32_t samplingRate, audio_format_t format,原创 2014-12-07 02:11:58 · 3067 阅读 · 0 评论 -
Audio笔记之MixerThread::threadLoop_mix
void AudioMixer::process(int64_t pts){ mState.hook(&mState, pts);}原创 2014-10-28 11:17:55 · 2223 阅读 · 0 评论 -
Audio笔记之AudioTrackThread
{ // initialize the native AudioTrack object switch (memoryMode) { case MODE_STREAM: //STREAM模式,现在没有申请共享内存,后续Track对象通过 //AudioFlinger中的Client对象申请heap空间给mCblk进行数据传输原创 2014-10-22 09:09:56 · 10204 阅读 · 0 评论 -
Audio笔记之AudioTrack
/*cts/tests/tests/media/src/android/media/cts*/ public voidtestSetStereoVolumeMax() throwsException { final String TEST_NAME= "testSetStereoVolumeMax"; final int TEST_SR =22050原创 2014-10-21 20:55:13 · 7864 阅读 · 0 评论 -
Audio笔记之MediaPlayerService启动
int main(int argc, char** argv){ signal(SIGPIPE, SIG_IGN); char value[PROPERTY_VALUE_MAX]; bool doLog = (property_get("ro.test_harness", value, "0") > 0) && (atoi(value) == 1); pid_t原创 2014-11-16 15:10:01 · 1471 阅读 · 0 评论 -
Audio笔记之MediaPlayerService:prepare
status_t MediaPlayer::prepare(){ ALOGV("prepare"); Mutex::Autolock _l(mLock); mLockThreadId = getThreadId(); if (mPrepareSync) { mLockThreadId = 0; return -EALREADY;原创 2014-12-01 00:04:11 · 917 阅读 · 0 评论 -
Audio笔记之重采样
AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTracks_l( Vector > *tracksToRemove){ mAudioMixer->setParameter( name, Audi原创 2016-01-24 20:04:54 · 3144 阅读 · 0 评论