Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Side by Side Diff: webrtc/test/testsupport/frame_reader.h

Issue 2362683002: New helper function test::ReadI420Buffer, refactor FrameReader to use it. (Closed)
Patch Set: Another try to fix the 64-bit windows build. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/test/test.gyp ('k') | webrtc/test/testsupport/frame_reader.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef WEBRTC_TEST_TESTSUPPORT_FRAME_READER_H_ 11 #ifndef WEBRTC_TEST_TESTSUPPORT_FRAME_READER_H_
12 #define WEBRTC_TEST_TESTSUPPORT_FRAME_READER_H_ 12 #define WEBRTC_TEST_TESTSUPPORT_FRAME_READER_H_
13 13
14 #include <stdio.h> 14 #include <stdio.h>
15 15
16 #include <string> 16 #include <string>
17 17
18 #include "webrtc/base/scoped_ref_ptr.h"
18 #include "webrtc/typedefs.h" 19 #include "webrtc/typedefs.h"
19 20
20 namespace webrtc { 21 namespace webrtc {
22 class I420Buffer;
21 namespace test { 23 namespace test {
22 24
23 // Handles reading of frames from video files. 25 // Handles reading of I420 frames from video files.
24 class FrameReader { 26 class FrameReader {
25 public: 27 public:
26 virtual ~FrameReader() {} 28 virtual ~FrameReader() {}
27 29
28 // Initializes the frame reader, i.e. opens the input file. 30 // Initializes the frame reader, i.e. opens the input file.
29 // This must be called before reading of frames has started. 31 // This must be called before reading of frames has started.
30 // Returns false if an error has occurred, in addition to printing to stderr. 32 // Returns false if an error has occurred, in addition to printing to stderr.
31 virtual bool Init() = 0; 33 virtual bool Init() = 0;
32 34
33 // Reads a frame into the supplied buffer, which must contain enough space 35 // Reads a frame from the input file. On success, returns the frame.
34 // for the frame size. 36 // Returns nullptr if encountering end of file or a read error.
35 // Returns true if there are more frames to read, false if we've already 37 virtual rtc::scoped_refptr<I420Buffer> ReadFrame() = 0;
36 // read the last frame (in the previous call).
37 virtual bool ReadFrame(uint8_t* source_buffer) = 0;
38 38
39 // Closes the input file if open. Essentially makes this class impossible 39 // Closes the input file if open. Essentially makes this class impossible
40 // to use anymore. Will also be invoked by the destructor. 40 // to use anymore. Will also be invoked by the destructor.
41 virtual void Close() = 0; 41 virtual void Close() = 0;
42 42
43 // Frame length in bytes of a single frame image. 43 // Frame length in bytes of a single frame image.
44 virtual size_t FrameLength() = 0; 44 virtual size_t FrameLength() = 0;
45 // Total number of frames in the input video source. 45 // Total number of frames in the input video source.
46 virtual int NumberOfFrames() = 0; 46 virtual int NumberOfFrames() = 0;
47 }; 47 };
48 48
49 class FrameReaderImpl : public FrameReader { 49 class FrameReaderImpl : public FrameReader {
50 public: 50 public:
51 // Creates a file handler. The input file is assumed to exist and be readable. 51 // Creates a file handler. The input file is assumed to exist and be readable.
52 // Parameters: 52 // Parameters:
53 // input_filename The file to read from. 53 // input_filename The file to read from.
54 // frame_length_in_bytes The size of each frame. 54 // width, height Size of each frame to read.
55 // For YUV this is 3 * width * height / 2 55 FrameReaderImpl(std::string input_filename, int width, int height);
56 FrameReaderImpl(std::string input_filename, size_t frame_length_in_bytes);
57 ~FrameReaderImpl() override; 56 ~FrameReaderImpl() override;
58 bool Init() override; 57 bool Init() override;
59 bool ReadFrame(uint8_t* source_buffer) override; 58 rtc::scoped_refptr<I420Buffer> ReadFrame() override;
60 void Close() override; 59 void Close() override;
61 size_t FrameLength() override; 60 size_t FrameLength() override;
62 int NumberOfFrames() override; 61 int NumberOfFrames() override;
63 62
64 private: 63 private:
65 std::string input_filename_; 64 std::string input_filename_;
66 size_t frame_length_in_bytes_; 65 size_t frame_length_in_bytes_;
66 int width_;
67 int height_;
67 int number_of_frames_; 68 int number_of_frames_;
68 FILE* input_file_; 69 FILE* input_file_;
69 }; 70 };
70 71
71 } // namespace test 72 } // namespace test
72 } // namespace webrtc 73 } // namespace webrtc
73 74
74 #endif // WEBRTC_TEST_TESTSUPPORT_FRAME_READER_H_ 75 #endif // WEBRTC_TEST_TESTSUPPORT_FRAME_READER_H_
OLDNEW
« no previous file with comments | « webrtc/test/test.gyp ('k') | webrtc/test/testsupport/frame_reader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698