Add runtime dumpsys support for media recorder client
Change-Id: I4c8a81720f3be2db54678a7e84fe12849255046b
This commit is contained in:
@@ -48,6 +48,7 @@ struct MediaRecorderBase {
|
||||
virtual status_t close() = 0;
|
||||
virtual status_t reset() = 0;
|
||||
virtual status_t getMaxAmplitude(int *max) = 0;
|
||||
virtual status_t dump(int fd, const Vector<String16>& args) const = 0;
|
||||
|
||||
private:
|
||||
MediaRecorderBase(const MediaRecorderBase &);
|
||||
|
||||
@@ -52,6 +52,7 @@ public:
|
||||
virtual status_t close();
|
||||
virtual status_t reset();
|
||||
virtual status_t getMaxAmplitude(int *max);
|
||||
virtual status_t dump(int fd, const Vector<String16>& args) const;
|
||||
|
||||
private:
|
||||
status_t doStop();
|
||||
|
||||
@@ -511,11 +511,17 @@ status_t MediaPlayerService::dump(int fd, const Vector<String16>& args)
|
||||
sp<Client> c = mClients[i].promote();
|
||||
if (c != 0) c->dump(fd, args);
|
||||
}
|
||||
for (int i = 0, n = mMediaRecorderClients.size(); i < n; ++i) {
|
||||
result.append(" MediaRecorderClient\n");
|
||||
sp<MediaRecorderClient> c = mMediaRecorderClients[i].promote();
|
||||
snprintf(buffer, 255, " pid(%d)\n\n", c->mPid);
|
||||
result.append(buffer);
|
||||
if (mMediaRecorderClients.size() == 0) {
|
||||
result.append(" No media recorder client\n\n");
|
||||
} else {
|
||||
for (int i = 0, n = mMediaRecorderClients.size(); i < n; ++i) {
|
||||
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");
|
||||
|
||||
@@ -329,5 +329,12 @@ status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listen
|
||||
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
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ class MediaPlayerService;
|
||||
class MediaRecorderClient : public BnMediaRecorder
|
||||
{
|
||||
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 setVideoSource(int vs);
|
||||
virtual status_t setAudioSource(int as);
|
||||
@@ -45,21 +45,22 @@ public:
|
||||
virtual status_t getMaxAmplitude(int* max);
|
||||
virtual status_t start();
|
||||
virtual status_t stop();
|
||||
virtual status_t reset();
|
||||
virtual status_t reset();
|
||||
virtual status_t init();
|
||||
virtual status_t close();
|
||||
virtual status_t release();
|
||||
|
||||
virtual status_t dump(int fd, const Vector<String16>& args) const;
|
||||
private:
|
||||
friend class MediaPlayerService; // for accessing private constructor
|
||||
friend class MediaPlayerService; // for accessing private constructor
|
||||
|
||||
MediaRecorderClient(const sp<MediaPlayerService>& service, pid_t pid);
|
||||
virtual ~MediaRecorderClient();
|
||||
MediaRecorderClient(const sp<MediaPlayerService>& service, pid_t pid);
|
||||
virtual ~MediaRecorderClient();
|
||||
|
||||
pid_t mPid;
|
||||
Mutex mLock;
|
||||
MediaRecorderBase *mRecorder;
|
||||
sp<MediaPlayerService> mMediaPlayerService;
|
||||
pid_t mPid;
|
||||
Mutex mLock;
|
||||
MediaRecorderBase *mRecorder;
|
||||
sp<MediaPlayerService> mMediaPlayerService;
|
||||
};
|
||||
|
||||
}; // namespace android
|
||||
|
||||
@@ -1057,4 +1057,64 @@ status_t StagefrightRecorder::getMaxAmplitude(int *max) {
|
||||
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
|
||||
|
||||
@@ -54,6 +54,7 @@ struct StagefrightRecorder : public MediaRecorderBase {
|
||||
virtual status_t close();
|
||||
virtual status_t reset();
|
||||
virtual status_t getMaxAmplitude(int *max);
|
||||
virtual status_t dump(int fd, const Vector<String16>& args) const;
|
||||
|
||||
private:
|
||||
enum CameraFlags {
|
||||
|
||||
@@ -948,7 +948,7 @@ status_t OMXCodec::getVideoProfileLevel(
|
||||
|
||||
int32_t supportedProfile = static_cast<int32_t>(param.eProfile);
|
||||
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);
|
||||
|
||||
if (profile == supportedProfile &&
|
||||
|
||||
Reference in New Issue
Block a user