Merge branch 'master' into gpu-cuda-rename
Conflicts: modules/core/include/opencv2/core/cuda.hpp modules/cudaimgproc/src/gftt.cpp modules/objdetect/include/opencv2/objdetect/erfilter.hpp modules/objdetect/src/erfilter.cpp modules/superres/perf/perf_superres.cpp modules/superres/src/btv_l1_cuda.cpp modules/superres/src/optical_flow.cpp modules/videostab/src/global_motion.cpp modules/videostab/src/inpainting.cpp samples/cpp/stitching_detailed.cpp samples/cpp/videostab.cpp samples/gpu/stereo_multi.cpp
This commit is contained in:
@@ -58,12 +58,14 @@ namespace cv { namespace cuda { namespace device
|
||||
void NV12_to_RGB(const PtrStepb decodedFrame, PtrStepSz<uint> interopFrame, cudaStream_t stream = 0);
|
||||
}}}
|
||||
|
||||
using namespace cv::cudacodec::detail;
|
||||
|
||||
namespace
|
||||
{
|
||||
class VideoReaderImpl : public VideoReader
|
||||
{
|
||||
public:
|
||||
explicit VideoReaderImpl(const Ptr<detail::VideoSource>& source);
|
||||
explicit VideoReaderImpl(const Ptr<VideoSource>& source);
|
||||
~VideoReaderImpl();
|
||||
|
||||
bool nextFrame(OutputArray frame);
|
||||
@@ -71,11 +73,11 @@ namespace
|
||||
FormatInfo format() const;
|
||||
|
||||
private:
|
||||
Ptr<detail::VideoSource> videoSource_;
|
||||
Ptr<VideoSource> videoSource_;
|
||||
|
||||
Ptr<detail::FrameQueue> frameQueue_;
|
||||
Ptr<detail::VideoDecoder> videoDecoder_;
|
||||
Ptr<detail::VideoParser> videoParser_;
|
||||
Ptr<FrameQueue> frameQueue_;
|
||||
Ptr<VideoDecoder> videoDecoder_;
|
||||
Ptr<VideoParser> videoParser_;
|
||||
|
||||
CUvideoctxlock lock_;
|
||||
|
||||
@@ -87,7 +89,7 @@ namespace
|
||||
return videoSource_->format();
|
||||
}
|
||||
|
||||
VideoReaderImpl::VideoReaderImpl(const Ptr<detail::VideoSource>& source) :
|
||||
VideoReaderImpl::VideoReaderImpl(const Ptr<VideoSource>& source) :
|
||||
videoSource_(source),
|
||||
lock_(0)
|
||||
{
|
||||
@@ -99,9 +101,9 @@ namespace
|
||||
cuSafeCall( cuCtxGetCurrent(&ctx) );
|
||||
cuSafeCall( cuvidCtxLockCreate(&lock_, ctx) );
|
||||
|
||||
frameQueue_ = new detail::FrameQueue;
|
||||
videoDecoder_ = new detail::VideoDecoder(videoSource_->format(), lock_);
|
||||
videoParser_ = new detail::VideoParser(videoDecoder_, frameQueue_);
|
||||
frameQueue_.reset(new FrameQueue);
|
||||
videoDecoder_.reset(new VideoDecoder(videoSource_->format(), lock_));
|
||||
videoParser_.reset(new VideoParser(videoDecoder_, frameQueue_));
|
||||
|
||||
videoSource_->setVideoParser(videoParser_);
|
||||
videoSource_->start();
|
||||
@@ -159,7 +161,7 @@ namespace
|
||||
return false;
|
||||
|
||||
// Wait a bit
|
||||
detail::Thread::sleep(1);
|
||||
Thread::sleep(1);
|
||||
}
|
||||
|
||||
bool isProgressive = displayInfo.progressive_frame != 0;
|
||||
@@ -212,25 +214,25 @@ Ptr<VideoReader> cv::cudacodec::createVideoReader(const String& filename)
|
||||
{
|
||||
CV_Assert( !filename.empty() );
|
||||
|
||||
Ptr<detail::VideoSource> videoSource;
|
||||
Ptr<VideoSource> videoSource;
|
||||
|
||||
try
|
||||
{
|
||||
videoSource = new detail::CuvidVideoSource(filename);
|
||||
videoSource.reset(new CuvidVideoSource(filename));
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
Ptr<RawVideoSource> source(new detail::FFmpegVideoSource(filename));
|
||||
videoSource = new detail::RawVideoSourceWrapper(source);
|
||||
Ptr<RawVideoSource> source(new FFmpegVideoSource(filename));
|
||||
videoSource.reset(new RawVideoSourceWrapper(source));
|
||||
}
|
||||
|
||||
return new VideoReaderImpl(videoSource);
|
||||
return makePtr<VideoReaderImpl>(videoSource);
|
||||
}
|
||||
|
||||
Ptr<VideoReader> cv::cudacodec::createVideoReader(const Ptr<RawVideoSource>& source)
|
||||
{
|
||||
Ptr<detail::VideoSource> videoSource(new detail::RawVideoSourceWrapper(source));
|
||||
return new VideoReaderImpl(videoSource);
|
||||
Ptr<VideoSource> videoSource(new RawVideoSourceWrapper(source));
|
||||
return makePtr<VideoReaderImpl>(videoSource);
|
||||
}
|
||||
|
||||
#endif // HAVE_NVCUVID
|
||||
|
@@ -69,7 +69,7 @@ void cv::cudacodec::detail::RawVideoSourceWrapper::start()
|
||||
{
|
||||
stop_ = false;
|
||||
hasError_ = false;
|
||||
thread_ = new Thread(readLoop, this);
|
||||
thread_.reset(new Thread(readLoop, this));
|
||||
}
|
||||
|
||||
void cv::cudacodec::detail::RawVideoSourceWrapper::stop()
|
||||
|
@@ -908,12 +908,12 @@ Ptr<VideoWriter> cv::cudacodec::createVideoWriter(const String& fileName, Size f
|
||||
|
||||
Ptr<VideoWriter> cv::cudacodec::createVideoWriter(const Ptr<EncoderCallBack>& encoderCallback, Size frameSize, double fps, SurfaceFormat format)
|
||||
{
|
||||
return new VideoWriterImpl(encoderCallback, frameSize, fps, format);
|
||||
return makePtr<VideoWriterImpl>(encoderCallback, frameSize, fps, format);
|
||||
}
|
||||
|
||||
Ptr<VideoWriter> cv::cudacodec::createVideoWriter(const Ptr<EncoderCallBack>& encoderCallback, Size frameSize, double fps, const EncoderParams& params, SurfaceFormat format)
|
||||
{
|
||||
return new VideoWriterImpl(encoderCallback, frameSize, fps, params, format);
|
||||
return makePtr<VideoWriterImpl>(encoderCallback, frameSize, fps, params, format);
|
||||
}
|
||||
|
||||
#endif // !defined HAVE_CUDA || !defined WIN32
|
||||
|
Reference in New Issue
Block a user