Lines Matching full:track
53 /* VERY_VERY_VERBOSE_LOGGING will show exactly which process hook and track hook is
110 // AudioMixer is not yet capable of more than 32 active track inputs
171 ALOGV("add track (%d)", n);
172 // assume default parameters for the track, except where noted below
217 // setParameter(name, TRACK, MAIN_BUFFER, mixBuffer) is required before enable(name)
257 // Called when channel masks have changed for a track name
262 track_t &track = mState.tracks[name];
264 if (trackChannelMask == track.channelMask
265 && mixerChannelMask == track.mMixerChannelMask) {
271 const bool mixerChannelCountChanged = track.mMixerChannelCount != mixerChannelCount;
276 track.channelMask = trackChannelMask;
277 track.channelCount = trackChannelCount;
278 track.mMixerChannelMask = mixerChannelMask;
279 track.mMixerChannelCount = mixerChannelCount;
281 // channel masks have changed, does this track need a downmixer?
283 const audio_format_t prevDownmixerFormat = track.mDownmixRequiresFormat;
286 "prepareForDownmix error %d, track channel mask %#x, mixer channel mask %#x",
287 status, track.channelMask, track.mMixerChannelMask);
289 if (prevDownmixerFormat != track.mDownmixRequiresFormat) {
290 track.prepareForReformat(); // because of downmixer, track format may change!
293 if (track.resampler && mixerChannelCountChanged) {
295 const uint32_t resetToSampleRate = track.sampleRate;
296 delete track.resampler;
297 track.resampler = NULL;
298 track.sampleRate = mSampleRate; // without resampler, track rate is device sample rate.
300 track.setResampler(resetToSampleRate /*trackSampleRate*/, mSampleRate /*devSampleRate*/);
310 // this track had previously been configured with a downmixer, delete it
327 // MONO_HACK Only remix (upmix or downmix) if the track and mixer/device channel masks
435 ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
437 track_t& track(mState.tracks[ name ]);
438 if (track.enabled) {
439 track.enabled = false;
443 delete track.resampler;
444 track.resampler = NULL;
450 delete track.mTimestretchBufferProvider;
451 track.mTimestretchBufferProvider = NULL;
458 ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
459 track_t& track = mState.tracks[name];
461 if (!track.enabled) {
462 track.enabled = true;
471 ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
472 track_t& track = mState.tracks[name];
474 if (track.enabled) {
475 track.enabled = false;
609 ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
610 track_t& track = mState.tracks[name];
617 case TRACK:
622 if (setChannelMasks(name, trackChannelMask, track.mMixerChannelMask)) {
623 ALOGV("setParameter(TRACK, CHANNEL_MASK, %x)", trackChannelMask);
628 if (track.mainBuffer != valueBuf) {
629 track.mainBuffer = valueBuf;
630 ALOGV("setParameter(TRACK, MAIN_BUFFER, %p)", valueBuf);
635 if (track.auxBuffer != valueBuf) {
636 track.auxBuffer = valueBuf;
637 ALOGV("setParameter(TRACK, AUX_BUFFER, %p)", valueBuf);
643 if (track.mFormat != format) {
645 track.mFormat = format;
646 ALOGV("setParameter(TRACK, FORMAT, %#x)", format);
647 track.prepareForReformat();
652 // for a specific track? or per mixer?
657 if (track.mMixerFormat != format) {
658 track.mMixerFormat = format;
659 ALOGV("setParameter(TRACK, MIXER_FORMAT, %#x)", format);
665 if (setChannelMasks(name, track.channelMask, mixerChannelMask)) {
666 ALOGV("setParameter(TRACK, MIXER_CHANNEL_MASK, %#x)", mixerChannelMask);
671 LOG_ALWAYS_FATAL("setParameter track: bad param %d", param);
679 if (track.setResampler(uint32_t(valueInt), mSampleRate)) {
686 track.resetResampler();
690 delete track.resampler;
691 track.resampler = NULL;
692 track.sampleRate = mSampleRate;
706 &track.auxLevel, &track.prevAuxLevel, &track.auxInc,
707 &track.mAuxLevel, &track.mPrevAuxLevel, &track.mAuxInc)) {
709 target == VOLUME ? "VOLUME" : "RAMP_VOLUME", track.auxLevel);
717 &track.volume[param - VOLUME0], &track.prevVolume[param - VOLUME0],
718 &track.volumeInc[param - VOLUME0],
719 &track.mVolume[param - VOLUME0], &track.mPrevVolume[param - VOLUME0],
720 &track.mVolumeInc[param - VOLUME0])) {
723 track.volume[param - VOLUME0]);
739 if (track.setPlaybackRate(*playbackRate)) {
765 ALOGV("Creating resampler from track %d Hz to device %d Hz",
889 ALOG_ASSERT(uint32_t(name) < MAX_NUM_TRACKS, "bad track name %d", name);
980 "Track %d needs downmix + resample", i);
995 "Track %d needs downmix", i);
1027 // The check prevents a muted track from acquiring a process hook.
1029 // This is dangerous if the track is MONO as that requires
1048 // track hooks for subsequent mixer process
1422 // acquire each track's buffer
1468 // t.in == NULL can happen if the track was flushed just after having
1513 // release each track's buffer
1575 // t.in == NULL can happen if the track was flushed just after having
1594 // one track, 16 bits stereo without resampling is the most common case
1604 //ALOG_ASSERT((1 << i) == state->enabledTracks, "more than 1 track enabled");
1622 // in == NULL can happen if the track was flushed just after having
1629 " %p track %d, channels %d, needs %08x, volume %08x vfl %f vfr %f",
1651 // we process only one track.
1829 /* This process hook is called when there is a single track without
1844 ALOG_ASSERT((1 << i) == state->enabledTracks, "more than 1 track enabled");
1859 // in == NULL can happen if the track was flushed just after having
1865 "buffer %p track %p, channels %d, needs %#x",
1888 /* This track hook is called to do resampling then mixing,
1889 * pulling from the track's upstream AudioBufferProvider.
1919 /* This track hook is called to mix a track, when no resampling is required.
1984 /* Returns the proper track hook to use for mixing the track into the output buffer.
2055 * PROCESSTYPE_NORESAMPLEONETRACK, a mix involving one track, no resampling.
2058 * a stereo output track, the input track cannot be MONO. This should be