Index: webrtc/video/replay.cc |
diff --git a/webrtc/video/replay.cc b/webrtc/video/replay.cc |
index 736db449cc054fba943e6ae12af22e8dae253700..cdc0f6c854546c98d57737669b4e33050eff7557 100644 |
--- a/webrtc/video/replay.cc |
+++ b/webrtc/video/replay.cc |
@@ -31,6 +31,7 @@ |
#include "webrtc/test/rtp_file_reader.h" |
#include "webrtc/test/run_loop.h" |
#include "webrtc/test/run_test.h" |
+#include "webrtc/test/testsupport/frame_writer.h" |
#include "webrtc/test/video_capturer.h" |
#include "webrtc/test/video_renderer.h" |
#include "webrtc/typedefs.h" |
@@ -136,7 +137,7 @@ static const bool input_file_dummy = |
&ValidateInputFilenameNotEmpty); |
// Flag for raw output files. |
-DEFINE_string(out_base, "", "Basename (excluding .yuv) for raw output"); |
+DEFINE_string(out_base, "", "Basename (excluding .jpg) for raw output"); |
static std::string OutBase() { |
return static_cast<std::string>(FLAGS_out_base); |
} |
@@ -158,12 +159,7 @@ class FileRenderPassthrough : public rtc::VideoSinkInterface<VideoFrame> { |
public: |
FileRenderPassthrough(const std::string& basename, |
rtc::VideoSinkInterface<VideoFrame>* renderer) |
- : basename_(basename), |
- renderer_(renderer), |
- file_(nullptr), |
- count_(0), |
- last_width_(0), |
- last_height_(0) {} |
+ : basename_(basename), renderer_(renderer), file_(nullptr), count_(0) {} |
~FileRenderPassthrough() { |
if (file_) |
@@ -174,38 +170,24 @@ class FileRenderPassthrough : public rtc::VideoSinkInterface<VideoFrame> { |
void OnFrame(const VideoFrame& video_frame) override { |
if (renderer_) |
renderer_->OnFrame(video_frame); |
+ |
if (basename_.empty()) |
return; |
- if (last_width_ != video_frame.width() || |
- last_height_ != video_frame.height()) { |
- if (file_) |
- fclose(file_); |
- std::stringstream filename; |
- filename << basename_; |
- if (++count_ > 1) |
- filename << '-' << count_; |
- filename << '_' << video_frame.width() << 'x' << video_frame.height() |
- << ".yuv"; |
- file_ = fopen(filename.str().c_str(), "wb"); |
- if (!file_) { |
- fprintf(stderr, |
- "Couldn't open file for writing: %s\n", |
- filename.str().c_str()); |
- } |
- } |
- last_width_ = video_frame.width(); |
- last_height_ = video_frame.height(); |
- if (!file_) |
- return; |
- PrintVideoFrame(video_frame, file_); |
+ |
+ std::stringstream filename; |
+ filename << basename_ << count_++ << "_" << video_frame.timestamp() |
+ << ".jpg"; |
+ |
+#if !defined(WEBRTC_IOS) |
+ test::JpegFrameWriter frame_writer(filename.str()); |
+ RTC_CHECK(frame_writer.WriteFrame(video_frame, 100)); |
+#endif |
} |
const std::string basename_; |
rtc::VideoSinkInterface<VideoFrame>* const renderer_; |
FILE* file_; |
size_t count_; |
- int last_width_; |
- int last_height_; |
}; |
class DecoderBitstreamFileWriter : public EncodedFrameObserver { |