am 929642ee: Add runtime dumpsys support for media recorder client

Merge commit '929642ee003895b6e4e85ad7e43c7c6f01b29020' into gingerbread-plus-aosp

* commit '929642ee003895b6e4e85ad7e43c7c6f01b29020':
  Add runtime dumpsys support for media recorder client
This commit is contained in:
James Dong
2010-07-08 21:37:43 -07:00
committed by Android Git Automerger
8 changed files with 92 additions and 15 deletions

View File

@@ -48,6 +48,7 @@ struct MediaRecorderBase {
virtual status_t close() = 0; virtual status_t close() = 0;
virtual status_t reset() = 0; virtual status_t reset() = 0;
virtual status_t getMaxAmplitude(int *max) = 0; virtual status_t getMaxAmplitude(int *max) = 0;
virtual status_t dump(int fd, const Vector<String16>& args) const = 0;
private: private:
MediaRecorderBase(const MediaRecorderBase &); MediaRecorderBase(const MediaRecorderBase &);

View File

@@ -52,6 +52,7 @@ public:
virtual status_t close(); virtual status_t close();
virtual status_t reset(); virtual status_t reset();
virtual status_t getMaxAmplitude(int *max); virtual status_t getMaxAmplitude(int *max);
virtual status_t dump(int fd, const Vector<String16>& args) const;
private: private:
status_t doStop(); status_t doStop();

View File

@@ -511,11 +511,17 @@ status_t MediaPlayerService::dump(int fd, const Vector<String16>& args)
sp<Client> c = mClients[i].promote(); sp<Client> c = mClients[i].promote();
if (c != 0) c->dump(fd, args); if (c != 0) c->dump(fd, args);
} }
for (int i = 0, n = mMediaRecorderClients.size(); i < n; ++i) { if (mMediaRecorderClients.size() == 0) {
result.append(" MediaRecorderClient\n"); result.append(" No media recorder client\n\n");
sp<MediaRecorderClient> c = mMediaRecorderClients[i].promote(); } else {
snprintf(buffer, 255, " pid(%d)\n\n", c->mPid); for (int i = 0, n = mMediaRecorderClients.size(); i < n; ++i) {
result.append(buffer); sp<MediaRecorderClient> c = mMediaRecorderClients[i].promote();
snprintf(buffer, 255, " MediaRecorderClient pid(%d)\n", c->mPid);
result.append(buffer);
write(fd, result.string(), result.size());
result = "\n";
c->dump(fd, args);
}
} }
result.append(" Files opened and/or mapped:\n"); result.append(" Files opened and/or mapped:\n");

View File

@@ -329,5 +329,12 @@ status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listen
return mRecorder->setListener(listener); return mRecorder->setListener(listener);
} }
status_t MediaRecorderClient::dump(int fd, const Vector<String16>& args) const {
if (mRecorder != NULL) {
return mRecorder->dump(fd, args);
}
return OK;
}
}; // namespace android }; // namespace android

View File

@@ -28,7 +28,7 @@ class MediaPlayerService;
class MediaRecorderClient : public BnMediaRecorder class MediaRecorderClient : public BnMediaRecorder
{ {
public: public:
virtual status_t setCamera(const sp<ICamera>& camera); virtual status_t setCamera(const sp<ICamera>& camera);
virtual status_t setPreviewSurface(const sp<ISurface>& surface); virtual status_t setPreviewSurface(const sp<ISurface>& surface);
virtual status_t setVideoSource(int vs); virtual status_t setVideoSource(int vs);
virtual status_t setAudioSource(int as); virtual status_t setAudioSource(int as);
@@ -45,21 +45,22 @@ public:
virtual status_t getMaxAmplitude(int* max); virtual status_t getMaxAmplitude(int* max);
virtual status_t start(); virtual status_t start();
virtual status_t stop(); virtual status_t stop();
virtual status_t reset(); virtual status_t reset();
virtual status_t init(); virtual status_t init();
virtual status_t close(); virtual status_t close();
virtual status_t release(); virtual status_t release();
virtual status_t dump(int fd, const Vector<String16>& args) const;
private: private:
friend class MediaPlayerService; // for accessing private constructor friend class MediaPlayerService; // for accessing private constructor
MediaRecorderClient(const sp<MediaPlayerService>& service, pid_t pid); MediaRecorderClient(const sp<MediaPlayerService>& service, pid_t pid);
virtual ~MediaRecorderClient(); virtual ~MediaRecorderClient();
pid_t mPid; pid_t mPid;
Mutex mLock; Mutex mLock;
MediaRecorderBase *mRecorder; MediaRecorderBase *mRecorder;
sp<MediaPlayerService> mMediaPlayerService; sp<MediaPlayerService> mMediaPlayerService;
}; };
}; // namespace android }; // namespace android

View File

@@ -1057,4 +1057,64 @@ status_t StagefrightRecorder::getMaxAmplitude(int *max) {
return OK; return OK;
} }
status_t StagefrightRecorder::dump(int fd, const Vector<String16>& args) const {
const size_t SIZE = 256;
char buffer[SIZE];
String8 result;
snprintf(buffer, SIZE, " Recorder: %p", this);
snprintf(buffer, SIZE, " Output file (fd %d):\n", mOutputFd);
result.append(buffer);
snprintf(buffer, SIZE, " File format: %d\n", mOutputFormat);
result.append(buffer);
snprintf(buffer, SIZE, " Max file size (bytes): %lld\n", mMaxFileSizeBytes);
result.append(buffer);
snprintf(buffer, SIZE, " Max file duration (us): %lld\n", mMaxFileDurationUs);
result.append(buffer);
snprintf(buffer, SIZE, " File offset length (bits): %d\n", mUse64BitFileOffset? 64: 32);
result.append(buffer);
snprintf(buffer, SIZE, " Interleave duration (us): %d\n", mInterleaveDurationUs);
result.append(buffer);
snprintf(buffer, SIZE, " Progress notification: %d frames\n", mTrackEveryNumberOfFrames);
result.append(buffer);
snprintf(buffer, SIZE, " Progress notification: %lld us\n", mTrackEveryTimeDurationUs);
result.append(buffer);
snprintf(buffer, SIZE, " Audio\n");
result.append(buffer);
snprintf(buffer, SIZE, " Source: %d\n", mAudioSource);
result.append(buffer);
snprintf(buffer, SIZE, " Encoder: %d\n", mAudioEncoder);
result.append(buffer);
snprintf(buffer, SIZE, " Bit rate (bps): %d\n", mAudioBitRate);
result.append(buffer);
snprintf(buffer, SIZE, " Sampling rate (hz): %d\n", mSampleRate);
result.append(buffer);
snprintf(buffer, SIZE, " Number of channels: %d\n", mAudioChannels);
result.append(buffer);
snprintf(buffer, SIZE, " Max amplitude: %d\n", mAudioSourceNode == 0? 0: mAudioSourceNode->getMaxAmplitude());
result.append(buffer);
snprintf(buffer, SIZE, " Video\n");
result.append(buffer);
snprintf(buffer, SIZE, " Source: %d\n", mVideoSource);
result.append(buffer);
snprintf(buffer, SIZE, " Camera Id: %d\n", mCameraId);
result.append(buffer);
snprintf(buffer, SIZE, " Camera flags: %d\n", mFlags);
result.append(buffer);
snprintf(buffer, SIZE, " Encoder: %d\n", mVideoEncoder);
result.append(buffer);
snprintf(buffer, SIZE, " Encoder profile: %d\n", mVideoEncoderProfile);
result.append(buffer);
snprintf(buffer, SIZE, " Encoder level: %d\n", mVideoEncoderLevel);
result.append(buffer);
snprintf(buffer, SIZE, " I frames interval (s): %d\n", mIFramesInterval);
result.append(buffer);
snprintf(buffer, SIZE, " Frame size (pixels): %dx%d\n", mVideoWidth, mVideoHeight);
result.append(buffer);
snprintf(buffer, SIZE, " Frame rate (fps): %d\n", mFrameRate);
result.append(buffer);
snprintf(buffer, SIZE, " Bit rate (bps): %d\n", mVideoBitRate);
result.append(buffer);
::write(fd, result.string(), result.size());
return OK;
}
} // namespace android } // namespace android

View File

@@ -54,6 +54,7 @@ struct StagefrightRecorder : public MediaRecorderBase {
virtual status_t close(); virtual status_t close();
virtual status_t reset(); virtual status_t reset();
virtual status_t getMaxAmplitude(int *max); virtual status_t getMaxAmplitude(int *max);
virtual status_t dump(int fd, const Vector<String16>& args) const;
private: private:
enum CameraFlags { enum CameraFlags {

View File

@@ -948,7 +948,7 @@ status_t OMXCodec::getVideoProfileLevel(
int32_t supportedProfile = static_cast<int32_t>(param.eProfile); int32_t supportedProfile = static_cast<int32_t>(param.eProfile);
int32_t supportedLevel = static_cast<int32_t>(param.eLevel); int32_t supportedLevel = static_cast<int32_t>(param.eLevel);
CODEC_LOGV("Supported profile: %ld, level %ld", CODEC_LOGV("Supported profile: %d, level %d",
supportedProfile, supportedLevel); supportedProfile, supportedLevel);
if (profile == supportedProfile && if (profile == supportedProfile &&