WebmWriter::WebmWriter(int fd) : mFd(dup(fd)), mInitCheck(mFd < 0 ? NO_INIT : OK), mTimeCodeScale(1000000), mStartTimestampUs(0), mStartTimeOffsetMs(0), mSegmentOffset(0), mSegmentDataStart(0), mInfoOffset(0), mInfoSize(0), mTracksOffset(0), mCuesOffset(0), mPaused(false), mStarted(false), mIsFileSizeLimitExplicitlyRequested(false), mIsRealTimeRecording(false), mStreamableFile(true), mEstimatedCuesSize(0) { mStreams[kAudioIndex] = WebmStream(kAudioType, "Audio", &WebmWriter::audioTrack); mStreams[kVideoIndex] = WebmStream(kVideoType, "Video", &WebmWriter::videoTrack); mSinkThread = new WebmFrameSinkThread( mFd, mSegmentDataStart, mStreams[kVideoIndex].mSink, mStreams[kAudioIndex].mSink, mCuePoints); }
WebmWriter::WebmWriter(const char *filename) : mInitCheck(NO_INIT), mTimeCodeScale(1000000), mStartTimestampUs(0), mStartTimeOffsetMs(0), mSegmentOffset(0), mSegmentDataStart(0), mInfoOffset(0), mInfoSize(0), mTracksOffset(0), mCuesOffset(0), mPaused(false), mStarted(false), mIsFileSizeLimitExplicitlyRequested(false), mIsRealTimeRecording(false), mStreamableFile(true), mEstimatedCuesSize(0) { mFd = open(filename, O_CREAT | O_LARGEFILE | O_TRUNC | O_RDWR, S_IRUSR | S_IWUSR); if (mFd >= 0) { ALOGV("fd %d; flags: %o", mFd, fcntl(mFd, F_GETFL, 0)); mInitCheck = OK; } mStreams[kAudioIndex] = WebmStream(kAudioType, "Audio", &WebmWriter::audioTrack); mStreams[kVideoIndex] = WebmStream(kVideoType, "Video", &WebmWriter::videoTrack); mSinkThread = new WebmFrameSinkThread( mFd, mSegmentDataStart, mStreams[kVideoIndex].mSink, mStreams[kAudioIndex].mSink, mCuePoints); }