#include <string>
#include "test/video_source.h"
-extern "C" {
#include "./y4minput.h"
-}
namespace libvpx_test {
virtual ~Y4mVideoSource() {
vpx_img_free(img_.get());
- y4m_input_close(&y4m_);
- if (input_file_)
- fclose(input_file_);
+ CloseSource();
}
- virtual void Begin() {
- if (input_file_)
- fclose(input_file_);
+ virtual void OpenSource() {
+ CloseSource();
input_file_ = OpenTestDataFile(file_name_);
ASSERT_TRUE(input_file_ != NULL) << "Input file open failed. Filename: "
- << file_name_;
+ << file_name_;
+ }
- y4m_input_open(&y4m_, input_file_, NULL, 0, 0);
+ virtual void ReadSourceToStart() {
+ ASSERT_TRUE(input_file_ != NULL);
+ ASSERT_FALSE(y4m_input_open(&y4m_, input_file_, NULL, 0, 0));
framerate_numerator_ = y4m_.fps_n;
framerate_denominator_ = y4m_.fps_d;
-
frame_ = 0;
for (unsigned int i = 0; i < start_; i++) {
- Next();
+ Next();
}
-
FillFrame();
}
+ virtual void Begin() {
+ OpenSource();
+ ReadSourceToStart();
+ }
+
virtual void Next() {
++frame_;
FillFrame();
}
protected:
+ void CloseSource() {
+ y4m_input_close(&y4m_);
+ y4m_ = y4m_input();
+ if (input_file_ != NULL) {
+ fclose(input_file_);
+ input_file_ = NULL;
+ }
+ }
+
std::string file_name_;
FILE *input_file_;
testing::internal::scoped_ptr<vpx_image_t> img_;