1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-30 15:53:03 +04:00

VideoCapture: remove decoder initialization when CAP_PROP_FORMAT== -1 (rawMode == true)

This commit is contained in:
cudawarped
2023-07-19 07:59:05 +03:00
parent 0883c6a913
commit e4ad7e3778
3 changed files with 102 additions and 35 deletions
+30
View File
@@ -476,6 +476,16 @@ static void ffmpeg_check_read_raw(VideoCapture& cap)
EXPECT_EQ(CV_8UC1, data.type()) << "CV_8UC1 != " << typeToString(data.type());
EXPECT_TRUE(data.rows == 1 || data.cols == 1) << data.size;
EXPECT_EQ((size_t)37118, data.total());
#ifndef WIN32
// 12 is the nearset key frame to frame 18
EXPECT_TRUE(cap.set(CAP_PROP_POS_FRAMES, 18.));
EXPECT_EQ(cap.get(CAP_PROP_POS_FRAMES), 12.);
cap >> data;
EXPECT_EQ(CV_8UC1, data.type()) << "CV_8UC1 != " << typeToString(data.type());
EXPECT_TRUE(data.rows == 1 || data.cols == 1) << data.size;
EXPECT_EQ((size_t)8726, data.total());
#endif
}
TEST(videoio_ffmpeg, ffmpeg_check_extra_data)
@@ -506,6 +516,16 @@ TEST(videoio_ffmpeg, open_with_property)
CAP_PROP_FORMAT, -1 // demux only
}));
// confirm properties are returned without initializing AVCodecContext
EXPECT_EQ(cap.get(CAP_PROP_FORMAT), -1);
EXPECT_EQ(static_cast<int>(cap.get(CAP_PROP_FOURCC)), fourccFromString("FMP4"));
#ifndef WIN32
EXPECT_EQ(cap.get(CAP_PROP_N_THREADS), 0.0);
#endif
EXPECT_EQ(cap.get(CAP_PROP_FRAME_HEIGHT), 384.0);
EXPECT_EQ(cap.get(CAP_PROP_FRAME_WIDTH), 672.0);
EXPECT_EQ(cap.get(CAP_PROP_FRAME_COUNT), 125);
EXPECT_EQ(cap.get(CAP_PROP_FPS), 24.0);
ffmpeg_check_read_raw(cap);
}
@@ -519,6 +539,16 @@ TEST(videoio_ffmpeg, create_with_property)
CAP_PROP_FORMAT, -1 // demux only
});
// confirm properties are returned without initializing AVCodecContext
EXPECT_TRUE(cap.get(CAP_PROP_FORMAT) == -1);
EXPECT_EQ(static_cast<int>(cap.get(CAP_PROP_FOURCC)), fourccFromString("FMP4"));
#ifndef WIN32
EXPECT_EQ(cap.get(CAP_PROP_N_THREADS), 0.0);
#endif
EXPECT_EQ(cap.get(CAP_PROP_FRAME_HEIGHT), 384.0);
EXPECT_EQ(cap.get(CAP_PROP_FRAME_WIDTH), 672.0);
EXPECT_EQ(cap.get(CAP_PROP_FRAME_COUNT), 125);
EXPECT_EQ(cap.get(CAP_PROP_FPS), 24.0);
ffmpeg_check_read_raw(cap);
}