1 /*
2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "testsupport/frame_writer.h"
12 
13 #include <cassert>
14 
15 namespace webrtc {
16 namespace test {
17 
FrameWriterImpl(std::string output_filename,int frame_length_in_bytes)18 FrameWriterImpl::FrameWriterImpl(std::string output_filename,
19                                  int frame_length_in_bytes)
20     : output_filename_(output_filename),
21       frame_length_in_bytes_(frame_length_in_bytes),
22       output_file_(NULL) {
23 }
24 
~FrameWriterImpl()25 FrameWriterImpl::~FrameWriterImpl() {
26   Close();
27 }
28 
Init()29 bool FrameWriterImpl::Init() {
30   if (frame_length_in_bytes_ <= 0) {
31     fprintf(stderr, "Frame length must be >0, was %d\n",
32             frame_length_in_bytes_);
33     return false;
34   }
35   output_file_ = fopen(output_filename_.c_str(), "wb");
36   if (output_file_ == NULL) {
37     fprintf(stderr, "Couldn't open output file for writing: %s\n",
38             output_filename_.c_str());
39     return false;
40   }
41   return true;
42 }
43 
Close()44 void FrameWriterImpl::Close() {
45   if (output_file_ != NULL) {
46     fclose(output_file_);
47     output_file_ = NULL;
48   }
49 }
50 
WriteFrame(WebRtc_UWord8 * frame_buffer)51 bool FrameWriterImpl::WriteFrame(WebRtc_UWord8* frame_buffer) {
52   assert(frame_buffer);
53   if (output_file_ == NULL) {
54     fprintf(stderr, "FrameWriter is not initialized (output file is NULL)\n");
55     return false;
56   }
57   int bytes_written = fwrite(frame_buffer, 1, frame_length_in_bytes_,
58                              output_file_);
59   if (bytes_written != frame_length_in_bytes_) {
60     fprintf(stderr, "Failed to write %d bytes to file %s\n",
61             frame_length_in_bytes_, output_filename_.c_str());
62     return false;
63   }
64   return true;
65 }
66 
67 }  // namespace test
68 }  // namespace webrtc
69