]> rtime.felk.cvut.cz Git - opencv.git/commitdiff
corrected retrieving video stream position (thanks to quadrillion for the patch)
authorvp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Fri, 26 Mar 2010 00:14:48 +0000 (00:14 +0000)
committervp153 <vp153@73c94f0f-984f-4a5f-82bc-2d8db8d8ee08>
Fri, 26 Mar 2010 00:14:48 +0000 (00:14 +0000)
git-svn-id: https://code.ros.org/svn/opencv/trunk@2917 73c94f0f-984f-4a5f-82bc-2d8db8d8ee08

opencv/src/highgui/cvcap_ffmpeg.cpp

index e02e070513bb599314a2212be9424428cdc649e8..13f641327fa3b6dccb67c945fe8f2468be8be829 100644 (file)
@@ -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;