VideoEditorAudioPlayer.h revision 00f742c087d92e5452d29be1fb668022b5f8a6c7
19969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang/* 29969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * Copyright (C) 2011 The Android Open Source Project 39969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * 49969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * Licensed under the Apache License, Version 2.0 (the "License"); 59969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * you may not use this file except in compliance with the License. 69969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * You may obtain a copy of the License at 79969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * 89969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * http://www.apache.org/licenses/LICENSE-2.0 99969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * 109969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * Unless required by applicable law or agreed to in writing, software 119969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * distributed under the License is distributed on an "AS IS" BASIS, 129969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * See the License for the specific language governing permissions and 149969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang * limitations under the License. 159969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang */ 169969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 179969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#ifndef VE_AUDIO_PLAYER_H_ 189969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 199969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#define VE_AUDIO_PLAYER_H_ 209969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 219969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include <media/MediaPlayerInterface.h> 229969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include <media/stagefright/MediaBuffer.h> 239969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include <media/stagefright/TimeSource.h> 249969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include <utils/threads.h> 259969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include "M4xVSS_API.h" 269969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include "VideoEditorMain.h" 279969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include "M4OSA_FileReader.h" 289969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include "VideoEditorBGAudioProcessing.h" 299969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#include "AudioPlayerBase.h" 3000f742c087d92e5452d29be1fb668022b5f8a6c7James Dong#include "PreviewPlayer.h" 319969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 329969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changnamespace android { 339969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 349969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changclass MediaSource; 359969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changclass AudioTrack; 369969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changclass PreviewPlayer; 379969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 389969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 399969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changclass VideoEditorAudioPlayer : public AudioPlayerBase { 409969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changpublic: 419969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang enum { 429969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang REACHED_EOS, 439969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang SEEK_COMPLETE 449969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang }; 459969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 469969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang VideoEditorAudioPlayer(const sp<MediaPlayerBase::AudioSink> &audioSink, 4700f742c087d92e5452d29be1fb668022b5f8a6c7James Dong PreviewPlayer *audioObserver = NULL); 489969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 499969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang virtual ~VideoEditorAudioPlayer(); 509969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 519969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang status_t start(bool sourceAlreadyStarted = false); 529969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void resume(); 539969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 549969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void setAudioMixSettings(M4xVSS_AudioMixingSettings* pAudioMixSettings); 559969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void setAudioMixPCMFileHandle(M4OSA_Context pBGAudioPCMFileHandle); 569969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void setAudioMixStoryBoardSkimTimeStamp( 579969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang M4OSA_UInt32 pBGAudioStoryBoardSkimTimeStamp, 589969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang M4OSA_UInt32 pBGAudioCurrentMediaBeginCutTS, 599969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang M4OSA_UInt32 pBGAudioCurrentMediaVolumeVal); 609969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 6100f742c087d92e5452d29be1fb668022b5f8a6c7James Dong void setObserver(PreviewPlayer *observer); 629969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void setSource(const sp<MediaSource> &source); 639969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang sp<MediaSource> getSource(); 649969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 659969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang bool isStarted(); 669969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Changprivate: 679969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 689969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang M4xVSS_AudioMixingSettings *mAudioMixSettings; 699969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang VideoEditorBGAudioProcessing *mAudioProcess; 709969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 719969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang M4OSA_Context mBGAudioPCMFileHandle; 729969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mBGAudioPCMFileLength; 739969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mBGAudioPCMFileTrimmedLength; 749969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mBGAudioPCMFileDuration; 759969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mBGAudioPCMFileSeekPoint; 769969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mBGAudioPCMFileOriginalSeekPoint; 779969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mBGAudioStoryBoardSkimTimeStamp; 789969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mBGAudioStoryBoardCurrentMediaBeginCutTS; 799969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang int64_t mBGAudioStoryBoardCurrentMediaVolumeVal; 809969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 819969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang size_t fillBuffer(void *data, size_t size); 829969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 839969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void reset(); 849969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void setPrimaryTrackVolume(M4OSA_Int16 *data, M4OSA_UInt32 size, M4OSA_Float volLevel); 859969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 869969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang static size_t AudioSinkCallback( 879969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang MediaPlayerBase::AudioSink *audioSink, 889969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang void *data, size_t size, void *me); 899969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 909969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang VideoEditorAudioPlayer(const VideoEditorAudioPlayer &); 919969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang VideoEditorAudioPlayer &operator=(const VideoEditorAudioPlayer &); 929969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang}; 939969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 949969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang} // namespace android 959969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang 969969866cfe5b17c6e481b90d81b011a0cece78a0Chih-Chung Chang#endif // VE_AUDIO_PLAYER_H_ 97