From 984e7c785b0c2b54601356902595fcfa13b5545a Mon Sep 17 00:00:00 2001 From: vp153 Date: Fri, 26 Mar 2010 00:14:48 +0000 Subject: [PATCH] corrected retrieving video stream position (thanks to quadrillion for the patch) git-svn-id: https://code.ros.org/svn/opencv/trunk@2917 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08 --- opencv/src/highgui/cvcap_ffmpeg.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/opencv/src/highgui/cvcap_ffmpeg.cpp b/opencv/src/highgui/cvcap_ffmpeg.cpp index e02e0705..13f64132 100644 --- a/opencv/src/highgui/cvcap_ffmpeg.cpp +++ b/opencv/src/highgui/cvcap_ffmpeg.cpp @@ -620,15 +620,21 @@ double CvCapture_FFMPEG::getProperty( int property_id ) switch( property_id ) { case CV_CAP_PROP_POS_MSEC: + if(video_st->parser && video_st->parser->dts != AV_NOPTS_VALUE_) + return (((double)video_st->parser->dts-1) *1000.0f) * av_q2d (video_st->time_base); if(video_st->cur_dts != AV_NOPTS_VALUE_) return (((double)video_st->cur_dts-1) *1000.0f * av_q2d (video_st->time_base)); // return (((double)video_st->cur_dts-1) *1000) / av_q2d (video_st->r_frame_rate); break; case CV_CAP_PROP_POS_FRAMES: + if(video_st->parser && video_st->parser->dts != AV_NOPTS_VALUE_) + return (double)video_st->parser->dts-1; if(video_st->cur_dts != AV_NOPTS_VALUE_) return (double)video_st->cur_dts-1; break; case CV_CAP_PROP_POS_AVI_RATIO: + if(video_st->parser && video_st->parser->dts != AV_NOPTS_VALUE_) + return (double)(video_st->parser->dts-1)/(double)video_st->duration; if(video_st->cur_dts != AV_NOPTS_VALUE_ && video_st->duration != AV_NOPTS_VALUE_) return (double)(video_st->cur_dts-1)/(double)video_st->duration; break; -- 2.39.2