Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
77a2529e
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
77a2529e
编写于
9月 09, 2013
作者:
R
Roman Donchenko
提交者:
OpenCV Buildbot
9月 09, 2013
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1408 from jet47:new-ptr-fixes
上级
74578f56
6ad72bfc
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
38 addition
and
32 deletion
+38
-32
modules/core/doc/opengl_interop.rst
modules/core/doc/opengl_interop.rst
+4
-0
modules/core/src/opengl.cpp
modules/core/src/opengl.cpp
+12
-12
modules/gpucodec/src/video_reader.cpp
modules/gpucodec/src/video_reader.cpp
+19
-17
modules/gpucodec/src/video_source.cpp
modules/gpucodec/src/video_source.cpp
+1
-1
modules/gpucodec/src/video_writer.cpp
modules/gpucodec/src/video_writer.cpp
+2
-2
未找到文件。
modules/core/doc/opengl_interop.rst
浏览文件 @
77a2529e
...
...
@@ -122,6 +122,8 @@ Decrements the reference counter and destroys the buffer object if needed.
.. ocv:function:: void ogl::Buffer::release()
The function will call `setAutoRelease(true)` .
ogl::Buffer::setAutoRelease
...
...
@@ -323,6 +325,8 @@ Decrements the reference counter and destroys the texture object if needed.
.. ocv:function:: void ogl::Texture2D::release()
The function will call `setAutoRelease(true)` .
ogl::Texture2D::setAutoRelease
...
...
modules/core/src/opengl.cpp
浏览文件 @
77a2529e
...
...
@@ -484,7 +484,7 @@ cv::ogl::Buffer::Buffer(int arows, int acols, int atype, unsigned int abufId, bo
(
void
)
autoRelease
;
throw_no_ogl
();
#else
impl_
=
new
Impl
(
abufId
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
abufId
,
autoRelease
)
);
rows_
=
arows
;
cols_
=
acols
;
type_
=
atype
;
...
...
@@ -500,7 +500,7 @@ cv::ogl::Buffer::Buffer(Size asize, int atype, unsigned int abufId, bool autoRel
(
void
)
autoRelease
;
throw_no_ogl
();
#else
impl_
=
new
Impl
(
abufId
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
abufId
,
autoRelease
)
);
rows_
=
asize
.
height
;
cols_
=
asize
.
width
;
type_
=
atype
;
...
...
@@ -529,7 +529,7 @@ cv::ogl::Buffer::Buffer(InputArray arr, Target target, bool autoRelease) : rows_
Mat
mat
=
arr
.
getMat
();
CV_Assert
(
mat
.
isContinuous
()
);
const
GLsizeiptr
asize
=
mat
.
rows
*
mat
.
cols
*
mat
.
elemSize
();
impl_
=
new
Impl
(
asize
,
mat
.
data
,
target
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
asize
,
mat
.
data
,
target
,
autoRelease
)
);
rows_
=
mat
.
rows
;
cols_
=
mat
.
cols
;
type_
=
mat
.
type
();
...
...
@@ -552,7 +552,7 @@ void cv::ogl::Buffer::create(int arows, int acols, int atype, Target target, boo
if
(
rows_
!=
arows
||
cols_
!=
acols
||
type_
!=
atype
)
{
const
GLsizeiptr
asize
=
arows
*
acols
*
CV_ELEM_SIZE
(
atype
);
impl_
=
new
Impl
(
asize
,
0
,
target
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
asize
,
0
,
target
,
autoRelease
)
);
rows_
=
arows
;
cols_
=
acols
;
type_
=
atype
;
...
...
@@ -563,7 +563,7 @@ void cv::ogl::Buffer::create(int arows, int acols, int atype, Target target, boo
void
cv
::
ogl
::
Buffer
::
release
()
{
#ifdef HAVE_OPENGL
if
(
*
impl_
.
refcount
==
1
)
if
(
impl_
)
impl_
->
setAutoRelease
(
true
);
impl_
=
Impl
::
empty
();
rows_
=
0
;
...
...
@@ -968,7 +968,7 @@ cv::ogl::Texture2D::Texture2D(int arows, int acols, Format aformat, unsigned int
(
void
)
autoRelease
;
throw_no_ogl
();
#else
impl_
=
new
Impl
(
atexId
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
atexId
,
autoRelease
)
);
rows_
=
arows
;
cols_
=
acols
;
format_
=
aformat
;
...
...
@@ -984,7 +984,7 @@ cv::ogl::Texture2D::Texture2D(Size asize, Format aformat, unsigned int atexId, b
(
void
)
autoRelease
;
throw_no_ogl
();
#else
impl_
=
new
Impl
(
atexId
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
atexId
,
autoRelease
)
);
rows_
=
asize
.
height
;
cols_
=
asize
.
width
;
format_
=
aformat
;
...
...
@@ -1024,7 +1024,7 @@ cv::ogl::Texture2D::Texture2D(InputArray arr, bool autoRelease) : rows_(0), cols
{
ogl
::
Buffer
buf
=
arr
.
getOGlBuffer
();
buf
.
bind
(
ogl
::
Buffer
::
PIXEL_UNPACK_BUFFER
);
impl_
=
new
Impl
(
internalFormats
[
cn
],
asize
.
width
,
asize
.
height
,
srcFormats
[
cn
],
gl_types
[
depth
],
0
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
internalFormats
[
cn
],
asize
.
width
,
asize
.
height
,
srcFormats
[
cn
],
gl_types
[
depth
],
0
,
autoRelease
)
);
ogl
::
Buffer
::
unbind
(
ogl
::
Buffer
::
PIXEL_UNPACK_BUFFER
);
break
;
}
...
...
@@ -1037,7 +1037,7 @@ cv::ogl::Texture2D::Texture2D(InputArray arr, bool autoRelease) : rows_(0), cols
GpuMat
dmat
=
arr
.
getGpuMat
();
ogl
::
Buffer
buf
(
dmat
,
ogl
::
Buffer
::
PIXEL_UNPACK_BUFFER
);
buf
.
bind
(
ogl
::
Buffer
::
PIXEL_UNPACK_BUFFER
);
impl_
=
new
Impl
(
internalFormats
[
cn
],
asize
.
width
,
asize
.
height
,
srcFormats
[
cn
],
gl_types
[
depth
],
0
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
internalFormats
[
cn
],
asize
.
width
,
asize
.
height
,
srcFormats
[
cn
],
gl_types
[
depth
],
0
,
autoRelease
)
);
ogl
::
Buffer
::
unbind
(
ogl
::
Buffer
::
PIXEL_UNPACK_BUFFER
);
#endif
...
...
@@ -1049,7 +1049,7 @@ cv::ogl::Texture2D::Texture2D(InputArray arr, bool autoRelease) : rows_(0), cols
Mat
mat
=
arr
.
getMat
();
CV_Assert
(
mat
.
isContinuous
()
);
ogl
::
Buffer
::
unbind
(
ogl
::
Buffer
::
PIXEL_UNPACK_BUFFER
);
impl_
=
new
Impl
(
internalFormats
[
cn
],
asize
.
width
,
asize
.
height
,
srcFormats
[
cn
],
gl_types
[
depth
],
mat
.
data
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
internalFormats
[
cn
],
asize
.
width
,
asize
.
height
,
srcFormats
[
cn
],
gl_types
[
depth
],
mat
.
data
,
autoRelease
)
);
break
;
}
}
...
...
@@ -1072,7 +1072,7 @@ void cv::ogl::Texture2D::create(int arows, int acols, Format aformat, bool autoR
if
(
rows_
!=
arows
||
cols_
!=
acols
||
format_
!=
aformat
)
{
ogl
::
Buffer
::
unbind
(
ogl
::
Buffer
::
PIXEL_UNPACK_BUFFER
);
impl_
=
new
Impl
(
aformat
,
acols
,
arows
,
aformat
,
gl
::
FLOAT
,
0
,
autoRelease
);
impl_
.
reset
(
new
Impl
(
aformat
,
acols
,
arows
,
aformat
,
gl
::
FLOAT
,
0
,
autoRelease
)
);
rows_
=
arows
;
cols_
=
acols
;
format_
=
aformat
;
...
...
@@ -1083,7 +1083,7 @@ void cv::ogl::Texture2D::create(int arows, int acols, Format aformat, bool autoR
void
cv
::
ogl
::
Texture2D
::
release
()
{
#ifdef HAVE_OPENGL
if
(
*
impl_
.
refcount
==
1
)
if
(
impl_
)
impl_
->
setAutoRelease
(
true
);
impl_
=
Impl
::
empty
();
rows_
=
0
;
...
...
modules/gpucodec/src/video_reader.cpp
浏览文件 @
77a2529e
...
...
@@ -58,12 +58,14 @@ namespace cv { namespace gpu { namespace cudev
void
NV12_to_RGB
(
const
PtrStepb
decodedFrame
,
PtrStepSz
<
uint
>
interopFrame
,
cudaStream_t
stream
=
0
);
}}}
using
namespace
cv
::
gpucodec
::
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::gpucodec::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
::
gpucodec
::
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
modules/gpucodec/src/video_source.cpp
浏览文件 @
77a2529e
...
...
@@ -69,7 +69,7 @@ void cv::gpucodec::detail::RawVideoSourceWrapper::start()
{
stop_
=
false
;
hasError_
=
false
;
thread_
=
new
Thread
(
readLoop
,
this
);
thread_
.
reset
(
new
Thread
(
readLoop
,
this
)
);
}
void
cv
::
gpucodec
::
detail
::
RawVideoSourceWrapper
::
stop
()
...
...
modules/gpucodec/src/video_writer.cpp
浏览文件 @
77a2529e
...
...
@@ -908,12 +908,12 @@ Ptr<VideoWriter> cv::gpucodec::createVideoWriter(const String& fileName, Size fr
Ptr
<
VideoWriter
>
cv
::
gpucodec
::
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
::
gpucodec
::
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
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录