Loading include/media/IMediaRecorder.h +2 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,8 @@ public: virtual status_t setOutputFormat(int of) = 0; virtual status_t setVideoEncoder(int ve) = 0; virtual status_t setAudioEncoder(int ae) = 0; virtual status_t setOutputFile(int fd, int64_t offset, int64_t length) = 0; virtual status_t setOutputFile(int fd) = 0; virtual status_t setNextOutputFile(int fd) = 0; virtual status_t setVideoSize(int width, int height) = 0; virtual status_t setVideoFrameRate(int frames_per_second) = 0; virtual status_t setParameters(const String8& params) = 0; Loading include/media/MediaRecorderBase.h +2 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,8 @@ struct MediaRecorderBase { virtual status_t setCamera(const sp<hardware::ICamera>& camera, const sp<ICameraRecordingProxy>& proxy) = 0; virtual status_t setPreviewSurface(const sp<IGraphicBufferProducer>& surface) = 0; virtual status_t setOutputFile(int fd, int64_t offset, int64_t length) = 0; virtual status_t setOutputFile(int fd) = 0; virtual status_t setNextOutputFile(int fd) {return INVALID_OPERATION;} virtual status_t setOutputFileAuxiliary(int /*fd*/) {return INVALID_OPERATION;} virtual status_t setParameters(const String8& params) = 0; virtual status_t setListener(const sp<IMediaRecorderClient>& listener) = 0; Loading include/media/mediarecorder.h +4 −1 Original line number Diff line number Diff line Loading @@ -171,6 +171,8 @@ enum media_recorder_info_type { MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800, MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801, MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING = 802, MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED = 803, // All track related informtional events start here MEDIA_RECORDER_TRACK_INFO_LIST_START = 1000, Loading Loading @@ -227,7 +229,8 @@ public: status_t setOutputFormat(int of); status_t setVideoEncoder(int ve); status_t setAudioEncoder(int ae); status_t setOutputFile(int fd, int64_t offset, int64_t length); status_t setOutputFile(int fd); status_t setNextOutputFile(int fd); status_t setVideoSize(int width, int height); status_t setVideoFrameRate(int frames_per_second); status_t setParameters(const String8& params); Loading include/media/stagefright/MPEG4Writer.h +25 −2 Original line number Diff line number Diff line Loading @@ -24,10 +24,12 @@ #include <media/stagefright/MediaWriter.h> #include <utils/List.h> #include <utils/threads.h> #include <media/stagefright/foundation/AHandlerReflector.h> #include <media/stagefright/foundation/ALooper.h> namespace android { struct AMessage; class AMessage; class MediaBuffer; class MetaData; Loading Loading @@ -65,16 +67,25 @@ public: status_t setGeoData(int latitudex10000, int longitudex10000); status_t setCaptureRate(float captureFps); status_t setTemporalLayerCount(uint32_t layerCount); void notifyApproachingLimit(); virtual void setStartTimeOffsetMs(int ms) { mStartTimeOffsetMs = ms; } virtual int32_t getStartTimeOffsetMs() const { return mStartTimeOffsetMs; } virtual status_t setNextFd(int fd); protected: virtual ~MPEG4Writer(); private: class Track; friend struct AHandlerReflector<MPEG4Writer>; enum { kWhatSwitch = 'swch', }; int mFd; int mNextFd; sp<MetaData> mStartMeta; status_t mInitCheck; bool mIsRealTimeRecording; bool mUse4ByteNalLength; Loading @@ -83,6 +94,7 @@ private: bool mPaused; bool mStarted; // Writer thread + track threads started successfully bool mWriterThreadStarted; // Only writer thread started successfully bool mSendNotify; off64_t mOffset; off_t mMdatOffset; uint8_t *mMoovBoxBuffer; Loading @@ -99,6 +111,10 @@ private: int mLongitudex10000; bool mAreGeoTagsAvailable; int32_t mStartTimeOffsetMs; bool mSwitchPending; sp<ALooper> mLooper; sp<AHandlerReflector<MPEG4Writer> > mReflector; Mutex mLock; Loading Loading @@ -184,6 +200,8 @@ private: void lock(); void unlock(); void initInternal(int fd); // Acquire lock before calling these methods off64_t addSample_l(MediaBuffer *buffer); off64_t addLengthPrefixedSample_l(MediaBuffer *buffer); Loading @@ -192,6 +210,7 @@ private: bool exceedsFileSizeLimit(); bool use32BitFileOffset() const; bool exceedsFileDurationLimit(); bool approachingFileSizeLimit(); bool isFileStreamable() const; void trackProgressStatus(size_t trackId, int64_t timeUs, status_t err = OK); void writeCompositionMatrix(int32_t degrees); Loading @@ -202,6 +221,7 @@ private: void writeGeoDataBox(); void writeLatitude(int degreex10000); void writeLongitude(int degreex10000); void finishCurrentSession(); void addDeviceMeta(); void writeHdlr(); Loading @@ -210,10 +230,13 @@ private: void writeMetaBox(); void sendSessionSummary(); void release(); status_t reset(); status_t switchFd(); status_t reset(bool stopSource = true); static uint32_t getMpeg4Time(); void onMessageReceived(const sp<AMessage> &msg); MPEG4Writer(const MPEG4Writer &); MPEG4Writer &operator=(const MPEG4Writer &); }; Loading include/media/stagefright/MediaWriter.h +1 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ struct MediaWriter : public RefBase { virtual void setStartTimeOffsetMs(int /*ms*/) {} virtual int32_t getStartTimeOffsetMs() const { return 0; } virtual status_t setNextFd(int fd) { return INVALID_OPERATION; } protected: virtual ~MediaWriter() {} Loading Loading
include/media/IMediaRecorder.h +2 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,8 @@ public: virtual status_t setOutputFormat(int of) = 0; virtual status_t setVideoEncoder(int ve) = 0; virtual status_t setAudioEncoder(int ae) = 0; virtual status_t setOutputFile(int fd, int64_t offset, int64_t length) = 0; virtual status_t setOutputFile(int fd) = 0; virtual status_t setNextOutputFile(int fd) = 0; virtual status_t setVideoSize(int width, int height) = 0; virtual status_t setVideoFrameRate(int frames_per_second) = 0; virtual status_t setParameters(const String8& params) = 0; Loading
include/media/MediaRecorderBase.h +2 −1 Original line number Diff line number Diff line Loading @@ -44,7 +44,8 @@ struct MediaRecorderBase { virtual status_t setCamera(const sp<hardware::ICamera>& camera, const sp<ICameraRecordingProxy>& proxy) = 0; virtual status_t setPreviewSurface(const sp<IGraphicBufferProducer>& surface) = 0; virtual status_t setOutputFile(int fd, int64_t offset, int64_t length) = 0; virtual status_t setOutputFile(int fd) = 0; virtual status_t setNextOutputFile(int fd) {return INVALID_OPERATION;} virtual status_t setOutputFileAuxiliary(int /*fd*/) {return INVALID_OPERATION;} virtual status_t setParameters(const String8& params) = 0; virtual status_t setListener(const sp<IMediaRecorderClient>& listener) = 0; Loading
include/media/mediarecorder.h +4 −1 Original line number Diff line number Diff line Loading @@ -171,6 +171,8 @@ enum media_recorder_info_type { MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800, MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED = 801, MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING = 802, MEDIA_RECORDER_INFO_NEXT_OUTPUT_FILE_STARTED = 803, // All track related informtional events start here MEDIA_RECORDER_TRACK_INFO_LIST_START = 1000, Loading Loading @@ -227,7 +229,8 @@ public: status_t setOutputFormat(int of); status_t setVideoEncoder(int ve); status_t setAudioEncoder(int ae); status_t setOutputFile(int fd, int64_t offset, int64_t length); status_t setOutputFile(int fd); status_t setNextOutputFile(int fd); status_t setVideoSize(int width, int height); status_t setVideoFrameRate(int frames_per_second); status_t setParameters(const String8& params); Loading
include/media/stagefright/MPEG4Writer.h +25 −2 Original line number Diff line number Diff line Loading @@ -24,10 +24,12 @@ #include <media/stagefright/MediaWriter.h> #include <utils/List.h> #include <utils/threads.h> #include <media/stagefright/foundation/AHandlerReflector.h> #include <media/stagefright/foundation/ALooper.h> namespace android { struct AMessage; class AMessage; class MediaBuffer; class MetaData; Loading Loading @@ -65,16 +67,25 @@ public: status_t setGeoData(int latitudex10000, int longitudex10000); status_t setCaptureRate(float captureFps); status_t setTemporalLayerCount(uint32_t layerCount); void notifyApproachingLimit(); virtual void setStartTimeOffsetMs(int ms) { mStartTimeOffsetMs = ms; } virtual int32_t getStartTimeOffsetMs() const { return mStartTimeOffsetMs; } virtual status_t setNextFd(int fd); protected: virtual ~MPEG4Writer(); private: class Track; friend struct AHandlerReflector<MPEG4Writer>; enum { kWhatSwitch = 'swch', }; int mFd; int mNextFd; sp<MetaData> mStartMeta; status_t mInitCheck; bool mIsRealTimeRecording; bool mUse4ByteNalLength; Loading @@ -83,6 +94,7 @@ private: bool mPaused; bool mStarted; // Writer thread + track threads started successfully bool mWriterThreadStarted; // Only writer thread started successfully bool mSendNotify; off64_t mOffset; off_t mMdatOffset; uint8_t *mMoovBoxBuffer; Loading @@ -99,6 +111,10 @@ private: int mLongitudex10000; bool mAreGeoTagsAvailable; int32_t mStartTimeOffsetMs; bool mSwitchPending; sp<ALooper> mLooper; sp<AHandlerReflector<MPEG4Writer> > mReflector; Mutex mLock; Loading Loading @@ -184,6 +200,8 @@ private: void lock(); void unlock(); void initInternal(int fd); // Acquire lock before calling these methods off64_t addSample_l(MediaBuffer *buffer); off64_t addLengthPrefixedSample_l(MediaBuffer *buffer); Loading @@ -192,6 +210,7 @@ private: bool exceedsFileSizeLimit(); bool use32BitFileOffset() const; bool exceedsFileDurationLimit(); bool approachingFileSizeLimit(); bool isFileStreamable() const; void trackProgressStatus(size_t trackId, int64_t timeUs, status_t err = OK); void writeCompositionMatrix(int32_t degrees); Loading @@ -202,6 +221,7 @@ private: void writeGeoDataBox(); void writeLatitude(int degreex10000); void writeLongitude(int degreex10000); void finishCurrentSession(); void addDeviceMeta(); void writeHdlr(); Loading @@ -210,10 +230,13 @@ private: void writeMetaBox(); void sendSessionSummary(); void release(); status_t reset(); status_t switchFd(); status_t reset(bool stopSource = true); static uint32_t getMpeg4Time(); void onMessageReceived(const sp<AMessage> &msg); MPEG4Writer(const MPEG4Writer &); MPEG4Writer &operator=(const MPEG4Writer &); }; Loading
include/media/stagefright/MediaWriter.h +1 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ struct MediaWriter : public RefBase { virtual void setStartTimeOffsetMs(int /*ms*/) {} virtual int32_t getStartTimeOffsetMs() const { return 0; } virtual status_t setNextFd(int fd) { return INVALID_OPERATION; } protected: virtual ~MediaWriter() {} Loading