add the media service

Signed-off-by: sharpshooter_t <taojun13@huawei.com>
Change-Id: I2632711ea9ae63e3123989052b10afd0a32ae7ac
This commit is contained in:
sharpshooter_t
2021-07-16 19:42:49 +08:00
parent a3b78c21bb
commit 5356ca538d
3 changed files with 49 additions and 60 deletions
+3 -2
View File
@@ -26,7 +26,8 @@ config("standard_camera_config") {
"//foundation/multimedia/camera_standard/frameworks/include",
"//foundation/multimedia/camera_standard/frameworks/innerkitsimpl/camera/include",
"//foundation/multimedia/camera_standard/interfaces/innerkits/native/include",
"//foundation/multimedia/media_standard/interfaces/kits/native/include",
"//foundation/multimedia/media_standard/interfaces/innerkits/native/media/include",
"//utils/native/base/include",
]
}
@@ -50,7 +51,7 @@ build_component("camera") {
external_deps = [
"ipc:ipc_core",
"multimedia_media_standard:recorder",
"multimedia_media_standard:media_client",
]
}
}
+43 -56
View File
@@ -197,87 +197,75 @@ void CameraCallback::OnCreateFailed(const std::string cameraId, int32_t errorCod
LOGE("CameraCallback: OnCreate Failed!");
}
Media::Recorder *CameraCallback::CreateRecorder()
std::shared_ptr<Media::Recorder> CameraCallback::CreateRecorder()
{
LOGI("Camera CreateRecorder start.");
int ret = 0;
int32_t channelCount = 1;
AudioCodecFormat audioFormat = AAC_LC;
AudioSourceType inputSource = AUDIO_MIC;
Media::AudioCodecFormat audioFormat = Media::AAC_LC;
Media::AudioSourceType inputSource = Media::AUDIO_MIC;
int32_t audioEncodingBitRate = SAMPLE_RATE;
Media::VideoSourceType source = Media::VIDEO_SOURCE_SURFACE_ES;
int32_t sourceId = 0;
int32_t audioSourceId = 0;
int32_t width = DEFAULT_WIDTH;
int32_t height = DEFAULT_HEIGHT;
VideoCodecFormat encoder = HEVC;
Media::VideoCodecFormat encoder = Media::HEVC;
Media::Recorder *recorder = new Media::Recorder();
if ((ret = recorder->SetVideoSource(source, sourceId)) != Media::SUCCESS) {
std::shared_ptr<Media::Recorder> recorder = Media::RecorderFactory::CreateRecorder();
if ((ret = recorder->SetVideoSource(source, sourceId)) != ERR_OK) {
LOGE("SetVideoSource failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetVideoEncoder(sourceId, encoder)) != Media::SUCCESS) {
LOGE("SetVideoEncoder failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetOutputFormat(Media::FORMAT_MPEG_4)) != Media::SUCCESS) {
LOGE("SetOutputFormat failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetVideoSize(sourceId, width, height)) != Media::SUCCESS) {
LOGE("SetVideoSize failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetVideoFrameRate(sourceId, FRAME_RATE)) != Media::SUCCESS) {
LOGE("SetVideoFrameRate failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetVideoEncodingBitRate(sourceId, RATE)) != Media::SUCCESS) {
LOGE("SetVideoEncodingBitRate failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetCaptureRate(sourceId, FPS)) != Media::SUCCESS) {
LOGE("SetCaptureRate failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetAudioSource(inputSource, audioSourceId)) != Media::SUCCESS) {
if ((ret = recorder->SetAudioSource(inputSource, audioSourceId)) != ERR_OK) {
LOGE("SetAudioSource failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetAudioEncoder(audioSourceId, audioFormat)) != Media::SUCCESS) {
if ((ret = recorder->SetOutputFormat(Media::FORMAT_MPEG_4)) != ERR_OK) {
LOGE("SetOutputFormat failed. ret= %{private}d.", ret);
return nullptr;
}
if ((ret = recorder->SetVideoEncoder(sourceId, encoder)) != ERR_OK) {
LOGE("SetVideoEncoder failed. ret= %{private}d.", ret);
return nullptr;
}
if ((ret = recorder->SetVideoSize(sourceId, width, height)) != ERR_OK) {
LOGE("SetVideoSize failed. ret= %{private}d.", ret);
return nullptr;
}
if ((ret = recorder->SetVideoFrameRate(sourceId, FRAME_RATE)) != ERR_OK) {
LOGE("SetVideoFrameRate failed. ret= %{private}d.", ret);
return nullptr;
}
if ((ret = recorder->SetVideoEncodingBitRate(sourceId, RATE)) != ERR_OK) {
LOGE("SetVideoEncodingBitRate failed. ret= %{private}d.", ret);
return nullptr;
}
if ((ret = recorder->SetCaptureRate(sourceId, FPS)) != ERR_OK) {
LOGE("SetCaptureRate failed. ret= %{private}d.", ret);
return nullptr;
}
if ((ret = recorder->SetAudioEncoder(audioSourceId, audioFormat)) != ERR_OK) {
LOGE("SetAudioEncoder failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetAudioSampleRate(audioSourceId, SAMPLE_RATE)) != Media::SUCCESS) {
if ((ret = recorder->SetAudioSampleRate(audioSourceId, SAMPLE_RATE)) != ERR_OK) {
LOGE("SetAudioSampleRate failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetAudioChannels(audioSourceId, channelCount)) != Media::SUCCESS) {
if ((ret = recorder->SetAudioChannels(audioSourceId, channelCount)) != ERR_OK) {
LOGE("SetAudioChannels failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetAudioEncodingBitRate(audioSourceId, audioEncodingBitRate)) != Media::SUCCESS) {
if ((ret = recorder->SetAudioEncodingBitRate(audioSourceId, audioEncodingBitRate)) != ERR_OK) {
LOGE("SetAudioEncodingBitRate failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
if ((ret = recorder->SetMaxDuration(MAX_DURATION)) != Media::SUCCESS) { // 36000s=10h
if ((ret = recorder->SetMaxDuration(MAX_DURATION)) != ERR_OK) { // 36000s=10h
LOGE("SetAudioEncodingBitRate failed. ret= %{private}d.", ret);
delete recorder;
return nullptr;
}
videoSourceId_ = sourceId;
LOGI("Camera CreateRecorder success.");
return recorder;
}
@@ -303,7 +291,7 @@ int CameraCallback::PrepareRecorder()
LOGE("Camera: Create fd failed.");
return -1;
}
return Media::SUCCESS;
return ERR_OK;
}
void CameraCallback::CloseRecorder()
@@ -311,7 +299,6 @@ void CameraCallback::CloseRecorder()
if (recordState_ == State::STATE_RUNNING) {
if (recorder_ != nullptr) {
recorder_->Stop(true);
delete recorder_;
recorder_ = nullptr;
}
@@ -396,34 +383,34 @@ void CameraCallback::StartRecord()
return;
}
int ret = PrepareRecorder();
if (ret != Media::SUCCESS) {
if (ret != ERR_OK) {
LOGE("Camera PrepareRecorder failed.");
CloseRecorder();
onRecord(false, NULL_STRING);
return;
}
ret = recorder_->SetOutputFile(recordFileId_);
if (ret != Media::SUCCESS) {
if (ret != ERR_OK) {
LOGE("Camera SetOutputPath failed. ret= %{private}d", ret);
CloseRecorder();
onRecord(false, NULL_STRING);
return;
}
ret = recorder_->Prepare();
if (ret != Media::SUCCESS) {
if (ret != ERR_OK) {
LOGE("Prepare failed. ret= %{private}d", ret);
CloseRecorder();
onRecord(false, NULL_STRING);
return;
}
ret = recorder_->Start();
if (ret != Media::SUCCESS) {
if (ret != ERR_OK) {
LOGE("recorder start failed. ret= %{private}d", ret);
CloseRecorder();
onRecord(false, NULL_STRING);
return;
}
Surface *recorderSurface = (recorder_->GetSurface(0)).get();
Surface *recorderSurface = (recorder_->GetSurface(videoSourceId_)).GetRefPtr();
int queueSize = 10;
int oneKilobytes = 1024;
+3 -2
View File
@@ -113,12 +113,13 @@ protected:
private:
int PrepareRecorder();
Media::Recorder *CreateRecorder();
std::shared_ptr<Media::Recorder> CreateRecorder();
void onError();
void onRecord(bool isSucces, std::string info);
Media::Camera *camera_ = nullptr;
Media::Recorder *recorder_ = nullptr;
std::shared_ptr<Media::Recorder> recorder_ = nullptr;
int32_t videoSourceId_ = -1;
sptr<Surface> previewSurface_;
Media::EventHandler& eventHandler_;