+ if(loop_)\r
+ return std::numeric_limits<int>::max();\r
+\r
+ // This function estimates nb_frames until input has read all packets for one loop, at which point the count should be accurate.\r
+\r
+ int64_t nb_frames = input_.nb_frames();\r
+ if(input_.nb_loops() < 1) // input still hasn't counted all frames\r
+ {\r
+ int64_t video_nb_frames = video_decoder_.nb_frames();\r
+ int64_t audio_nb_frames = audio_decoder_.nb_frames();\r
+\r
+ nb_frames = std::min(static_cast<int64_t>(length_), std::max(nb_frames, std::max(video_nb_frames, audio_nb_frames)));\r
+ }\r
+\r
+ nb_frames = muxer_.calc_nb_frames(nb_frames);\r
+\r
+ // TODO: Might need to scale nb_frames av frame_muxer transformations.\r
+\r
+ return nb_frames - start_;\r