unplugged-system/frameworks/av/media/libaudioutilmtk/AudioDumpExt.h

150 lines
5.7 KiB
C++

#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <cutils/log.h>
#include <cutils/properties.h>
#include <utils/Vector.h>
#include <utils/SortedVector.h>
#include <utils/KeyedVector.h>
#include <utils/String8.h>
#include <dirent.h>
#include <ftw.h>
#include <sys/statfs.h>
#include <sys/resource.h>
#include <media/AudioUtilmtk.h>
#include <media/AudioSystem.h>
namespace android {
class DevicesFactoryHalInterface;
class AudioDumpExt {
public:
AudioDumpExt();
~AudioDumpExt();
enum PROP_AUDIO_DUMP {
PROP_AUDIO_DUMP_WRITER = 0,
PROP_AUDIO_DUMP_TRACK,
PROP_AUDIO_DUMP_OFFLOAD,
PROP_AUDIO_DUMP_RESAMPLER,
PROP_AUDIO_DUMP_MIXER,
PROP_AUDIO_DUMP_RECORD,
PROP_AUDIO_DUMP_EFFECT,
PROP_AUDIO_DUMP_DRC,
PROP_AUDIO_DUMP_LOG,
PROP_AUDIO_DUMP_AAUDIO,
PROP_AUDIO_DUMP_MAXNUM
};
static void dump();//test
static void threadDump(const char * path, void * buffer, int count, audio_format_t format,
uint32_t sampleRate, uint32_t channelCount);
static bool getProperty(AudioDumpExt::PROP_AUDIO_DUMP key);
static unsigned long getDumpSize(const char * path);
static String8 getDumpName(const char * path);
static void updateKeys(int key);
static bool checkIfNeedToDump(audio_format_t format);
static int checkDumpVersion();
static int checkVendorVersion();
static void startDumpManagerThread();
static void startAudioDumpEmptyThread();
static const char * const keyAudioDumpWriter;
static const char * const keyAudioDumpTrack;
static const char * const keyAudioDumpOffload;
static const char * const keyAudioDumpResampler;
static const char * const keyAudioDumpMixer;
static const char * const keyAudioDumpRecord;
static const char * const keyAudioDumpEffect;
static const char * const keyAudioDumpDrc;
static const char * const keyAudioDumpLog;
static const char * const keyAudioDumpAAudio;
static const char *audioDumpPropertyStr[];
static const char * const keyAudioDumpLegacyWriter;
static const char * const keyAudioDumpLegacyTrack;
static const char * const keyAudioDumpLegacyOffload;
static const char * const keyAudioDumpLegacyResampler;
static const char * const keyAudioDumpLegacyMixer;
static const char * const keyAudioDumpLegacyRecord;
static const char * const keyAudioDumpLegacyEffect;
static const char * const keyAudioDumpLegacyDrc;
static const char * const keyAudioDumpLegacyLog;
static const char * const keyAudioDumpLegacyAAudio;
static const char *audioDumpLegacyPropertyStr[];
static const char * const af_track;
static const char * const af_resampler;
static const char * const af_drc;
static const char * const af_mixer;
static const char * const af_effect;
static const char * const af_writer;
static const char * const af_record;
static const char * const af_ulconvert;
static const char * const af_reader;
static const char * const aaudio_share_dl;
static const char * const aaudio_share_ul;
static const char * const aaudio_exclusive_dl;
static const char * const aaudio_exclusive_ul;
class AudioDumpClip {
public:
AudioDumpClip();
//TODO:Delete
struct AudioDumpParam{
char name[256];
int size;
int channel;
int samplerate;
int format;
};
static void dump();//test
static void threadDump(const char * path, void * buffer, int count, audio_format_t format,
uint32_t sampleRate, uint32_t channelCount);
static bool getProperty(AudioDumpExt::PROP_AUDIO_DUMP key);
static unsigned long getDumpSize(const char * path);
static String8 getDumpName(const char * path);
static int checkPath(const char * path);
static void updateKeys(int key);
static void startDumpManagerThread();
static int64_t getClipSize() {
return mClipSize;
}
static void setClipSize(int64_t value) {
mClipSize = value;
}
// For audio dump debug
static const char * const keyAudioDumpWriter;
static const char * const keyAudioDumpTrack;
static const char * const keyAudioDumpOffload;
static const char * const keyAudioDumpResampler;
static const char * const keyAudioDumpMixer;
static const char * const keyAudioDumpRecord;
static const char * const keyAudioDumpEffect;
static const char * const keyAudioDumpDrc;
static const char * const keyAudioDumpLog;
static const char * const keyAudioDumpAAudio;
static const char *audioDumpPropertyStr[];
private:
static void pushBufferInfo(const char * path, void * buffer, int count,
audio_format_t format, uint32_t sampleRate, uint32_t channelCount);
static int64_t mClipSize;
};
private:
static int mAPILevel;
static int mDumpVersion; // 0 for invalid; 1 for legacy; 2 for dump2hal
};
void startDumpManagerThreadInt(void);
}