summaryrefslogtreecommitdiffstats
path: root/cmds/screenrecord/FrameOutput.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cmds/screenrecord/FrameOutput.cpp')
-rw-r--r--cmds/screenrecord/FrameOutput.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/cmds/screenrecord/FrameOutput.cpp b/cmds/screenrecord/FrameOutput.cpp
index 06b1f70..4da16bc 100644
--- a/cmds/screenrecord/FrameOutput.cpp
+++ b/cmds/screenrecord/FrameOutput.cpp
@@ -87,7 +87,7 @@ status_t FrameOutput::createInputSurface(int width, int height,
return NO_ERROR;
}
-status_t FrameOutput::copyFrame(FILE* fp, long timeoutUsec) {
+status_t FrameOutput::copyFrame(FILE* fp, long timeoutUsec, bool rawFrames) {
Mutex::Autolock _l(mMutex);
ALOGV("copyFrame %ld\n", timeoutUsec);
@@ -152,16 +152,20 @@ status_t FrameOutput::copyFrame(FILE* fp, long timeoutUsec) {
(endWhenNsec - pixWhenNsec) / 1000000.0);
}
- // Fill out the header.
- size_t headerLen = sizeof(uint32_t) * 5;
size_t rgbDataLen = width * height * kOutBytesPerPixel;
- size_t packetLen = headerLen - sizeof(uint32_t) + rgbDataLen;
- uint8_t header[headerLen];
- setValueLE(&header[0], packetLen);
- setValueLE(&header[4], width);
- setValueLE(&header[8], height);
- setValueLE(&header[12], width * kOutBytesPerPixel);
- setValueLE(&header[16], HAL_PIXEL_FORMAT_RGB_888);
+
+ if (!rawFrames) {
+ // Fill out the header.
+ size_t headerLen = sizeof(uint32_t) * 5;
+ size_t packetLen = headerLen - sizeof(uint32_t) + rgbDataLen;
+ uint8_t header[headerLen];
+ setValueLE(&header[0], packetLen);
+ setValueLE(&header[4], width);
+ setValueLE(&header[8], height);
+ setValueLE(&header[12], width * kOutBytesPerPixel);
+ setValueLE(&header[16], HAL_PIXEL_FORMAT_RGB_888);
+ fwrite(header, 1, headerLen, fp);
+ }
// Currently using buffered I/O rather than writev(). Not expecting it
// to make much of a difference, but it might be worth a test for larger
@@ -169,7 +173,6 @@ status_t FrameOutput::copyFrame(FILE* fp, long timeoutUsec) {
if (kShowTiming) {
startWhenNsec = systemTime(CLOCK_MONOTONIC);
}
- fwrite(header, 1, headerLen, fp);
fwrite(mPixelBuf, 1, rgbDataLen, fp);
fflush(fp);
if (kShowTiming) {