Loading include/media/stagefright/ACodec.h +3 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,9 @@ protected: status_t setOperatingRate(float rateFloat, bool isVideo); status_t getIntraRefreshPeriod(uint32_t *intraRefreshPeriod); status_t setIntraRefreshPeriod(uint32_t intraRefreshPeriod, bool inConfigure); status_t configureTemporalLayers( uint32_t numLayers, uint32_t numBLayers, bool inConfigure, sp<AMessage> &outputFormat); status_t setMinBufferSize(OMX_U32 portIndex, size_t size); Loading include/media/stagefright/MPEG4Writer.h +2 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public: status_t setGeoData(int latitudex10000, int longitudex10000); status_t setCaptureRate(float captureFps); status_t setTemporalLayerCount(uint32_t layerCount); virtual void setStartTimeOffsetMs(int ms) { mStartTimeOffsetMs = ms; } virtual int32_t getStartTimeOffsetMs() const { return mStartTimeOffsetMs; } Loading Loading @@ -196,6 +197,7 @@ private: protected: static void StripStartcode(MediaBuffer *buffer); virtual off64_t addLengthPrefixedSample_l(MediaBuffer *buffer); off64_t addMultipleLengthPrefixedSamples_l(MediaBuffer *buffer); private: bool exceedsFileSizeLimit(); Loading include/media/stagefright/MetaData.h +2 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,8 @@ enum { // transfer Function, value defined by ColorAspects.Transfer. kKeyColorMatrix = 'cMtx', // int32_t, // color Matrix, value defined by ColorAspects.MatrixCoeffs. kKeyTemporalLayerId = 'iLyr', // int32_t, temporal layer-id. 0-based (0 => base layer) kKeyTemporalLayerCount = 'cLyr', // int32_t, number of temporal layers encoded }; enum { Loading media/libmediaplayerservice/MediaRecorderClient.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -371,11 +371,21 @@ status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listen sp<IServiceManager> sm = defaultServiceManager(); sp<IBinder> binder = sm->getService(String16("media.camera")); if (binder == NULL) { ALOGE("Unable to connect to camera service"); return NO_INIT; } mCameraDeathListener = new ServiceDeathNotifier(binder, listener, MediaPlayerService::CAMERA_PROCESS_DEATH); binder->linkToDeath(mCameraDeathListener); binder = sm->getService(String16("media.codec")); if (binder == NULL) { ALOGE("Unable to connect to media codec service"); return NO_INIT; } mCodecDeathListener = new ServiceDeathNotifier(binder, listener, MediaPlayerService::MEDIACODEC_PROCESS_DEATH); binder->linkToDeath(mCodecDeathListener); Loading media/libmediaplayerservice/StagefrightRecorder.cpp +13 −2 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ #include <sys/types.h> #include <ctype.h> #include <unistd.h> #include <math.h> #include <system/audio.h> Loading Loading @@ -588,7 +589,7 @@ status_t StagefrightRecorder::setParamCaptureFpsEnable(int32_t captureFpsEnable) status_t StagefrightRecorder::setParamCaptureFps(float fps) { ALOGV("setParamCaptureFps: %.2f", fps); int64_t timeUs = (int64_t) (1000000.0 / fps + 0.5f); int64_t timeUs = (int64_t) (1000000.0f / fps + 0.5f); // Not allowing time more than a day if (timeUs <= 0 || timeUs > 86400*1E6) { Loading Loading @@ -1586,6 +1587,16 @@ status_t StagefrightRecorder::setupVideoEncoder( format->setInt32("priority", 0 /* realtime */); if (mCaptureFpsEnable) { format->setFloat("operating-rate", mCaptureFps); // Enable layers if capture-rate > 60 // Number of layers will be based on the ratio wrt 30fps float speed = mCaptureFps / mFrameRate; if (mCaptureFps > 60.0 && speed > 2.0) { int32_t numLayers = (int32_t)log2f(speed) + 1; ALOGI("Enabling %d layers for capture-rate(%f) / fps(%u)", numLayers, mCaptureFps, mFrameRate); format->setInt32("num-temporal-layers", numLayers); } } if (mMetaDataStoredInVideoBuffers != kMetadataBufferTypeInvalid) { Loading Loading @@ -1663,7 +1674,7 @@ status_t StagefrightRecorder::setupMPEG4orWEBMRecording() { if (mOutputFormat == OUTPUT_FORMAT_WEBM) { writer = new WebmWriter(mOutputFd); } else { writer = mp4writer = AVFactory::get()->CreateMPEG4Writer(mOutputFd); writer = mp4writer = new MPEG4Writer(mOutputFd); } if (mVideoSource < VIDEO_SOURCE_LIST_END) { Loading Loading
include/media/stagefright/ACodec.h +3 −0 Original line number Diff line number Diff line Loading @@ -481,6 +481,9 @@ protected: status_t setOperatingRate(float rateFloat, bool isVideo); status_t getIntraRefreshPeriod(uint32_t *intraRefreshPeriod); status_t setIntraRefreshPeriod(uint32_t intraRefreshPeriod, bool inConfigure); status_t configureTemporalLayers( uint32_t numLayers, uint32_t numBLayers, bool inConfigure, sp<AMessage> &outputFormat); status_t setMinBufferSize(OMX_U32 portIndex, size_t size); Loading
include/media/stagefright/MPEG4Writer.h +2 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ public: status_t setGeoData(int latitudex10000, int longitudex10000); status_t setCaptureRate(float captureFps); status_t setTemporalLayerCount(uint32_t layerCount); virtual void setStartTimeOffsetMs(int ms) { mStartTimeOffsetMs = ms; } virtual int32_t getStartTimeOffsetMs() const { return mStartTimeOffsetMs; } Loading Loading @@ -196,6 +197,7 @@ private: protected: static void StripStartcode(MediaBuffer *buffer); virtual off64_t addLengthPrefixedSample_l(MediaBuffer *buffer); off64_t addMultipleLengthPrefixedSamples_l(MediaBuffer *buffer); private: bool exceedsFileSizeLimit(); Loading
include/media/stagefright/MetaData.h +2 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,8 @@ enum { // transfer Function, value defined by ColorAspects.Transfer. kKeyColorMatrix = 'cMtx', // int32_t, // color Matrix, value defined by ColorAspects.MatrixCoeffs. kKeyTemporalLayerId = 'iLyr', // int32_t, temporal layer-id. 0-based (0 => base layer) kKeyTemporalLayerCount = 'cLyr', // int32_t, number of temporal layers encoded }; enum { Loading
media/libmediaplayerservice/MediaRecorderClient.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -371,11 +371,21 @@ status_t MediaRecorderClient::setListener(const sp<IMediaRecorderClient>& listen sp<IServiceManager> sm = defaultServiceManager(); sp<IBinder> binder = sm->getService(String16("media.camera")); if (binder == NULL) { ALOGE("Unable to connect to camera service"); return NO_INIT; } mCameraDeathListener = new ServiceDeathNotifier(binder, listener, MediaPlayerService::CAMERA_PROCESS_DEATH); binder->linkToDeath(mCameraDeathListener); binder = sm->getService(String16("media.codec")); if (binder == NULL) { ALOGE("Unable to connect to media codec service"); return NO_INIT; } mCodecDeathListener = new ServiceDeathNotifier(binder, listener, MediaPlayerService::MEDIACODEC_PROCESS_DEATH); binder->linkToDeath(mCodecDeathListener); Loading
media/libmediaplayerservice/StagefrightRecorder.cpp +13 −2 Original line number Diff line number Diff line Loading @@ -51,6 +51,7 @@ #include <sys/types.h> #include <ctype.h> #include <unistd.h> #include <math.h> #include <system/audio.h> Loading Loading @@ -588,7 +589,7 @@ status_t StagefrightRecorder::setParamCaptureFpsEnable(int32_t captureFpsEnable) status_t StagefrightRecorder::setParamCaptureFps(float fps) { ALOGV("setParamCaptureFps: %.2f", fps); int64_t timeUs = (int64_t) (1000000.0 / fps + 0.5f); int64_t timeUs = (int64_t) (1000000.0f / fps + 0.5f); // Not allowing time more than a day if (timeUs <= 0 || timeUs > 86400*1E6) { Loading Loading @@ -1586,6 +1587,16 @@ status_t StagefrightRecorder::setupVideoEncoder( format->setInt32("priority", 0 /* realtime */); if (mCaptureFpsEnable) { format->setFloat("operating-rate", mCaptureFps); // Enable layers if capture-rate > 60 // Number of layers will be based on the ratio wrt 30fps float speed = mCaptureFps / mFrameRate; if (mCaptureFps > 60.0 && speed > 2.0) { int32_t numLayers = (int32_t)log2f(speed) + 1; ALOGI("Enabling %d layers for capture-rate(%f) / fps(%u)", numLayers, mCaptureFps, mFrameRate); format->setInt32("num-temporal-layers", numLayers); } } if (mMetaDataStoredInVideoBuffers != kMetadataBufferTypeInvalid) { Loading Loading @@ -1663,7 +1674,7 @@ status_t StagefrightRecorder::setupMPEG4orWEBMRecording() { if (mOutputFormat == OUTPUT_FORMAT_WEBM) { writer = new WebmWriter(mOutputFd); } else { writer = mp4writer = AVFactory::get()->CreateMPEG4Writer(mOutputFd); writer = mp4writer = new MPEG4Writer(mOutputFd); } if (mVideoSource < VIDEO_SOURCE_LIST_END) { Loading