Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
ba0e5165
Commit
ba0e5165
authored
Sep 29, 2016
by
Timo Rothenpieler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avcodec/cuvid: make use of new av_hwdevice_ctx_create api
parent
49511501
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
44 deletions
+11
-44
cuvid.c
libavcodec/cuvid.c
+10
-43
version.h
libavcodec/version.h
+1
-1
No files found.
libavcodec/cuvid.c
View file @
ba0e5165
...
...
@@ -41,6 +41,8 @@ typedef struct CuvidContext
CUvideodecoder
cudecoder
;
CUvideoparser
cuparser
;
char
*
cu_gpu
;
AVBufferRef
*
hwdevice
;
AVBufferRef
*
hwframe
;
...
...
@@ -546,12 +548,6 @@ static av_cold int cuvid_decode_end(AVCodecContext *avctx)
return
0
;
}
static
void
cuvid_ctx_free
(
AVHWDeviceContext
*
ctx
)
{
AVCUDADeviceContext
*
hwctx
=
ctx
->
hwctx
;
cuCtxDestroy
(
hwctx
->
cuda_ctx
);
}
static
int
cuvid_test_dummy_decoder
(
AVCodecContext
*
avctx
,
CUVIDPARSERPARAMS
*
cuparseinfo
)
{
CUVIDDECODECREATEINFO
cuinfo
;
...
...
@@ -599,7 +595,6 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
AVHWDeviceContext
*
device_ctx
;
AVHWFramesContext
*
hwframe_ctx
;
CUVIDSOURCEDATAPACKET
seq_pkt
;
CUdevice
device
;
CUcontext
cuda_ctx
=
NULL
;
CUcontext
dummy
;
const
AVBitStreamFilter
*
bsf
;
...
...
@@ -637,54 +632,25 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
ret
=
AVERROR
(
ENOMEM
);
goto
error
;
}
device_ctx
=
hwframe_ctx
->
device_ctx
;
device_hwctx
=
device_ctx
->
hwctx
;
cuda_ctx
=
device_hwctx
->
cuda_ctx
;
}
else
{
ctx
->
hwdevice
=
av_hwdevice_ctx_alloc
(
AV_HWDEVICE_TYPE_CUDA
);
if
(
!
ctx
->
hwdevice
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Error allocating hwdevice
\n
"
);
ret
=
AVERROR
(
ENOMEM
);
goto
error
;
}
ret
=
CHECK_CU
(
cuInit
(
0
));
ret
=
av_hwdevice_ctx_create
(
&
ctx
->
hwdevice
,
AV_HWDEVICE_TYPE_CUDA
,
ctx
->
cu_gpu
,
NULL
,
0
);
if
(
ret
<
0
)
goto
error
;
ret
=
CHECK_CU
(
cuDeviceGet
(
&
device
,
0
));
if
(
ret
<
0
)
goto
error
;
ret
=
CHECK_CU
(
cuCtxCreate
(
&
cuda_ctx
,
CU_CTX_SCHED_BLOCKING_SYNC
,
device
));
if
(
ret
<
0
)
goto
error
;
device_ctx
=
(
AVHWDeviceContext
*
)
ctx
->
hwdevice
->
data
;
device_ctx
->
free
=
cuvid_ctx_free
;
device_hwctx
=
device_ctx
->
hwctx
;
device_hwctx
->
cuda_ctx
=
cuda_ctx
;
ret
=
CHECK_CU
(
cuCtxPopCurrent
(
&
dummy
));
if
(
ret
<
0
)
goto
error
;
ret
=
av_hwdevice_ctx_init
(
ctx
->
hwdevice
);
if
(
ret
<
0
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"av_hwdevice_ctx_init failed
\n
"
);
goto
error
;
}
ctx
->
hwframe
=
av_hwframe_ctx_alloc
(
ctx
->
hwdevice
);
if
(
!
ctx
->
hwframe
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"av_hwframe_ctx_alloc failed
\n
"
);
ret
=
AVERROR
(
ENOMEM
);
goto
error
;
}
hwframe_ctx
=
(
AVHWFramesContext
*
)
ctx
->
hwframe
->
data
;
}
device_ctx
=
hwframe_ctx
->
device_ctx
;
device_hwctx
=
device_ctx
->
hwctx
;
cuda_ctx
=
device_hwctx
->
cuda_ctx
;
memset
(
&
ctx
->
cuparseinfo
,
0
,
sizeof
(
ctx
->
cuparseinfo
));
memset
(
&
ctx
->
cuparse_ext
,
0
,
sizeof
(
ctx
->
cuparse_ext
));
memset
(
&
seq_pkt
,
0
,
sizeof
(
seq_pkt
));
...
...
@@ -883,6 +849,7 @@ static const AVOption options[] = {
{
"weave"
,
"Weave deinterlacing (do nothing)"
,
0
,
AV_OPT_TYPE_CONST
,
{
.
i64
=
cudaVideoDeinterlaceMode_Weave
},
0
,
0
,
VD
,
"deint"
},
{
"bob"
,
"Bob deinterlacing"
,
0
,
AV_OPT_TYPE_CONST
,
{
.
i64
=
cudaVideoDeinterlaceMode_Bob
},
0
,
0
,
VD
,
"deint"
},
{
"adaptive"
,
"Adaptive deinterlacing"
,
0
,
AV_OPT_TYPE_CONST
,
{
.
i64
=
cudaVideoDeinterlaceMode_Adaptive
},
0
,
0
,
VD
,
"deint"
},
{
"gpu"
,
"GPU to be used for decoding"
,
OFFSET
(
cu_gpu
),
AV_OPT_TYPE_STRING
,
{
.
str
=
NULL
},
0
,
0
,
VD
},
{
NULL
}
};
...
...
libavcodec/version.h
View file @
ba0e5165
...
...
@@ -29,7 +29,7 @@
#define LIBAVCODEC_VERSION_MAJOR 57
#define LIBAVCODEC_VERSION_MINOR 60
#define LIBAVCODEC_VERSION_MICRO 10
0
#define LIBAVCODEC_VERSION_MICRO 10
1
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
LIBAVCODEC_VERSION_MINOR, \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment