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
1765aacb
Commit
1765aacb
authored
Jul 10, 2011
by
Mans Rullgard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
hwaccel: unbreak build
Signed-off-by:
Mans Rullgard
<
mans@mansr.com
>
parent
657ccb5a
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
34 additions
and
34 deletions
+34
-34
mpegvideo_xvmc.c
libavcodec/mpegvideo_xvmc.c
+7
-7
vaapi_h264.c
libavcodec/vaapi_h264.c
+5
-5
vaapi_internal.h
libavcodec/vaapi_internal.h
+1
-1
vaapi_mpeg4.c
libavcodec/vaapi_mpeg4.c
+1
-1
vdpau.c
libavcodec/vdpau.c
+20
-20
No files found.
libavcodec/mpegvideo_xvmc.c
View file @
1765aacb
...
...
@@ -41,7 +41,7 @@
*/
void
ff_xvmc_init_block
(
MpegEncContext
*
s
)
{
struct
xvmc_pix_fmt
*
render
=
(
struct
xvmc_pix_fmt
*
)
s
->
current_picture
.
data
[
2
];
struct
xvmc_pix_fmt
*
render
=
(
struct
xvmc_pix_fmt
*
)
s
->
current_picture
.
f
.
data
[
2
];
assert
(
render
&&
render
->
xvmc_id
==
AV_XVMC_ID
);
s
->
block
=
(
DCTELEM
(
*
)[
64
])(
render
->
data_blocks
+
render
->
next_free_data_block_num
*
64
);
...
...
@@ -73,7 +73,7 @@ void ff_xvmc_pack_pblocks(MpegEncContext *s, int cbp)
*/
int
ff_xvmc_field_start
(
MpegEncContext
*
s
,
AVCodecContext
*
avctx
)
{
struct
xvmc_pix_fmt
*
last
,
*
next
,
*
render
=
(
struct
xvmc_pix_fmt
*
)
s
->
current_picture
.
data
[
2
];
struct
xvmc_pix_fmt
*
last
,
*
next
,
*
render
=
(
struct
xvmc_pix_fmt
*
)
s
->
current_picture
.
f
.
data
[
2
];
const
int
mb_block_count
=
4
+
(
1
<<
s
->
chroma_format
);
assert
(
avctx
);
...
...
@@ -113,7 +113,7 @@ int ff_xvmc_field_start(MpegEncContext *s, AVCodecContext *avctx)
case
AV_PICTURE_TYPE_I
:
return
0
;
// no prediction from other frames
case
AV_PICTURE_TYPE_B
:
next
=
(
struct
xvmc_pix_fmt
*
)
s
->
next_picture
.
data
[
2
];
next
=
(
struct
xvmc_pix_fmt
*
)
s
->
next_picture
.
f
.
data
[
2
];
if
(
!
next
)
return
-
1
;
if
(
next
->
xvmc_id
!=
AV_XVMC_ID
)
...
...
@@ -121,7 +121,7 @@ int ff_xvmc_field_start(MpegEncContext *s, AVCodecContext *avctx)
render
->
p_future_surface
=
next
->
p_surface
;
// no return here, going to set forward prediction
case
AV_PICTURE_TYPE_P
:
last
=
(
struct
xvmc_pix_fmt
*
)
s
->
last_picture
.
data
[
2
];
last
=
(
struct
xvmc_pix_fmt
*
)
s
->
last_picture
.
f
.
data
[
2
];
if
(
!
last
)
last
=
render
;
// predict second field from the first
if
(
last
->
xvmc_id
!=
AV_XVMC_ID
)
...
...
@@ -141,7 +141,7 @@ return -1;
*/
void
ff_xvmc_field_end
(
MpegEncContext
*
s
)
{
struct
xvmc_pix_fmt
*
render
=
(
struct
xvmc_pix_fmt
*
)
s
->
current_picture
.
data
[
2
];
struct
xvmc_pix_fmt
*
render
=
(
struct
xvmc_pix_fmt
*
)
s
->
current_picture
.
f
.
data
[
2
];
assert
(
render
);
if
(
render
->
filled_mv_blocks_num
>
0
)
...
...
@@ -179,10 +179,10 @@ void ff_xvmc_decode_mb(MpegEncContext *s)
// Do I need to export quant when I could not perform postprocessing?
// Anyway, it doesn't hurt.
s
->
current_picture
.
qscale_table
[
mb_xy
]
=
s
->
qscale
;
s
->
current_picture
.
f
.
qscale_table
[
mb_xy
]
=
s
->
qscale
;
// start of XVMC-specific code
render
=
(
struct
xvmc_pix_fmt
*
)
s
->
current_picture
.
data
[
2
];
render
=
(
struct
xvmc_pix_fmt
*
)
s
->
current_picture
.
f
.
data
[
2
];
assert
(
render
);
assert
(
render
->
xvmc_id
==
AV_XVMC_ID
);
assert
(
render
->
mv_blocks
);
...
...
libavcodec/vaapi_h264.c
View file @
1765aacb
...
...
@@ -54,7 +54,7 @@ static void fill_vaapi_pic(VAPictureH264 *va_pic,
int
pic_structure
)
{
if
(
pic_structure
==
0
)
pic_structure
=
pic
->
reference
;
pic_structure
=
pic
->
f
.
reference
;
pic_structure
&=
PICT_FRAME
;
/* PICT_TOP_FIELD|PICT_BOTTOM_FIELD */
va_pic
->
picture_id
=
ff_vaapi_get_surface_id
(
pic
);
...
...
@@ -63,7 +63,7 @@ static void fill_vaapi_pic(VAPictureH264 *va_pic,
va_pic
->
flags
=
0
;
if
(
pic_structure
!=
PICT_FRAME
)
va_pic
->
flags
|=
(
pic_structure
&
PICT_TOP_FIELD
)
?
VA_PICTURE_H264_TOP_FIELD
:
VA_PICTURE_H264_BOTTOM_FIELD
;
if
(
pic
->
reference
)
if
(
pic
->
f
.
reference
)
va_pic
->
flags
|=
pic
->
long_ref
?
VA_PICTURE_H264_LONG_TERM_REFERENCE
:
VA_PICTURE_H264_SHORT_TERM_REFERENCE
;
va_pic
->
TopFieldOrderCnt
=
0
;
...
...
@@ -133,13 +133,13 @@ static int fill_vaapi_ReferenceFrames(VAPictureParameterBufferH264 *pic_param,
for
(
i
=
0
;
i
<
h
->
short_ref_count
;
i
++
)
{
Picture
*
const
pic
=
h
->
short_ref
[
i
];
if
(
pic
&&
pic
->
reference
&&
dpb_add
(
&
dpb
,
pic
)
<
0
)
if
(
pic
&&
pic
->
f
.
reference
&&
dpb_add
(
&
dpb
,
pic
)
<
0
)
return
-
1
;
}
for
(
i
=
0
;
i
<
16
;
i
++
)
{
Picture
*
const
pic
=
h
->
long_ref
[
i
];
if
(
pic
&&
pic
->
reference
&&
dpb_add
(
&
dpb
,
pic
)
<
0
)
if
(
pic
&&
pic
->
f
.
reference
&&
dpb_add
(
&
dpb
,
pic
)
<
0
)
return
-
1
;
}
return
0
;
...
...
@@ -159,7 +159,7 @@ static void fill_vaapi_RefPicList(VAPictureH264 RefPicList[32],
{
unsigned
int
i
,
n
=
0
;
for
(
i
=
0
;
i
<
ref_count
;
i
++
)
if
(
ref_list
[
i
].
reference
)
if
(
ref_list
[
i
].
f
.
reference
)
fill_vaapi_pic
(
&
RefPicList
[
n
++
],
&
ref_list
[
i
],
0
);
for
(;
n
<
32
;
n
++
)
...
...
libavcodec/vaapi_internal.h
View file @
1765aacb
...
...
@@ -38,7 +38,7 @@
/** Extract VASurfaceID from a Picture */
static
inline
VASurfaceID
ff_vaapi_get_surface_id
(
Picture
*
pic
)
{
return
(
uintptr_t
)
pic
->
data
[
3
];
return
(
uintptr_t
)
pic
->
f
.
data
[
3
];
}
/** Common AVHWAccel.end_frame() implementation */
...
...
libavcodec/vaapi_mpeg4.c
View file @
1765aacb
...
...
@@ -79,7 +79,7 @@ static int vaapi_mpeg4_start_frame(AVCodecContext *avctx, av_unused const uint8_
pic_param
->
quant_precision
=
s
->
quant_precision
;
pic_param
->
vop_fields
.
value
=
0
;
/* reset all bits */
pic_param
->
vop_fields
.
bits
.
vop_coding_type
=
s
->
pict_type
-
AV_PICTURE_TYPE_I
;
pic_param
->
vop_fields
.
bits
.
backward_reference_vop_coding_type
=
s
->
pict_type
==
AV_PICTURE_TYPE_B
?
s
->
next_picture
.
pict_type
-
AV_PICTURE_TYPE_I
:
0
;
pic_param
->
vop_fields
.
bits
.
backward_reference_vop_coding_type
=
s
->
pict_type
==
AV_PICTURE_TYPE_B
?
s
->
next_picture
.
f
.
pict_type
-
AV_PICTURE_TYPE_I
:
0
;
pic_param
->
vop_fields
.
bits
.
vop_rounding_type
=
s
->
no_rounding
;
pic_param
->
vop_fields
.
bits
.
intra_dc_vlc_thr
=
mpeg4_get_intra_dc_vlc_thr
(
s
);
pic_param
->
vop_fields
.
bits
.
top_field_first
=
s
->
top_field_first
;
...
...
libavcodec/vdpau.c
View file @
1765aacb
...
...
@@ -46,7 +46,7 @@ void ff_vdpau_h264_set_reference_frames(MpegEncContext *s)
Picture
*
pic
;
int
i
,
list
,
pic_frame_idx
;
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
data
[
0
];
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
f
.
data
[
0
];
assert
(
render
);
rf
=
&
render
->
info
.
h264
.
referenceFrames
[
0
];
...
...
@@ -58,11 +58,11 @@ void ff_vdpau_h264_set_reference_frames(MpegEncContext *s)
for
(
i
=
0
;
i
<
ls
;
++
i
)
{
pic
=
lp
[
i
];
if
(
!
pic
||
!
pic
->
reference
)
if
(
!
pic
||
!
pic
->
f
.
reference
)
continue
;
pic_frame_idx
=
pic
->
long_ref
?
pic
->
pic_id
:
pic
->
frame_num
;
render_ref
=
(
struct
vdpau_render_state
*
)
pic
->
data
[
0
];
render_ref
=
(
struct
vdpau_render_state
*
)
pic
->
f
.
data
[
0
];
assert
(
render_ref
);
rf2
=
&
render
->
info
.
h264
.
referenceFrames
[
0
];
...
...
@@ -76,8 +76,8 @@ void ff_vdpau_h264_set_reference_frames(MpegEncContext *s)
++
rf2
;
}
if
(
rf2
!=
rf
)
{
rf2
->
top_is_reference
|=
(
pic
->
reference
&
PICT_TOP_FIELD
)
?
VDP_TRUE
:
VDP_FALSE
;
rf2
->
bottom_is_reference
|=
(
pic
->
reference
&
PICT_BOTTOM_FIELD
)
?
VDP_TRUE
:
VDP_FALSE
;
rf2
->
top_is_reference
|=
(
pic
->
f
.
reference
&
PICT_TOP_FIELD
)
?
VDP_TRUE
:
VDP_FALSE
;
rf2
->
bottom_is_reference
|=
(
pic
->
f
.
reference
&
PICT_BOTTOM_FIELD
)
?
VDP_TRUE
:
VDP_FALSE
;
continue
;
}
...
...
@@ -86,8 +86,8 @@ void ff_vdpau_h264_set_reference_frames(MpegEncContext *s)
rf
->
surface
=
render_ref
->
surface
;
rf
->
is_long_term
=
pic
->
long_ref
;
rf
->
top_is_reference
=
(
pic
->
reference
&
PICT_TOP_FIELD
)
?
VDP_TRUE
:
VDP_FALSE
;
rf
->
bottom_is_reference
=
(
pic
->
reference
&
PICT_BOTTOM_FIELD
)
?
VDP_TRUE
:
VDP_FALSE
;
rf
->
top_is_reference
=
(
pic
->
f
.
reference
&
PICT_TOP_FIELD
)
?
VDP_TRUE
:
VDP_FALSE
;
rf
->
bottom_is_reference
=
(
pic
->
f
.
reference
&
PICT_BOTTOM_FIELD
)
?
VDP_TRUE
:
VDP_FALSE
;
rf
->
field_order_cnt
[
0
]
=
pic
->
field_poc
[
0
];
rf
->
field_order_cnt
[
1
]
=
pic
->
field_poc
[
1
];
rf
->
frame_idx
=
pic_frame_idx
;
...
...
@@ -112,7 +112,7 @@ void ff_vdpau_add_data_chunk(MpegEncContext *s,
{
struct
vdpau_render_state
*
render
;
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
data
[
0
];
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
f
.
data
[
0
];
assert
(
render
);
render
->
bitstream_buffers
=
av_fast_realloc
(
...
...
@@ -133,7 +133,7 @@ void ff_vdpau_h264_picture_start(MpegEncContext *s)
struct
vdpau_render_state
*
render
;
int
i
;
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
data
[
0
];
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
f
.
data
[
0
];
assert
(
render
);
for
(
i
=
0
;
i
<
2
;
++
i
)
{
...
...
@@ -151,14 +151,14 @@ void ff_vdpau_h264_picture_complete(MpegEncContext *s)
H264Context
*
h
=
s
->
avctx
->
priv_data
;
struct
vdpau_render_state
*
render
;
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
data
[
0
];
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
f
.
data
[
0
];
assert
(
render
);
render
->
info
.
h264
.
slice_count
=
h
->
slice_num
;
if
(
render
->
info
.
h264
.
slice_count
<
1
)
return
;
render
->
info
.
h264
.
is_reference
=
(
s
->
current_picture_ptr
->
reference
&
3
)
?
VDP_TRUE
:
VDP_FALSE
;
render
->
info
.
h264
.
is_reference
=
(
s
->
current_picture_ptr
->
f
.
reference
&
3
)
?
VDP_TRUE
:
VDP_FALSE
;
render
->
info
.
h264
.
field_pic_flag
=
s
->
picture_structure
!=
PICT_FRAME
;
render
->
info
.
h264
.
bottom_field_flag
=
s
->
picture_structure
==
PICT_BOTTOM_FIELD
;
render
->
info
.
h264
.
num_ref_frames
=
h
->
sps
.
ref_frame_count
;
...
...
@@ -198,7 +198,7 @@ void ff_vdpau_mpeg_picture_complete(MpegEncContext *s, const uint8_t *buf,
if
(
!
s
->
current_picture_ptr
)
return
;
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
data
[
0
];
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
f
.
data
[
0
];
assert
(
render
);
/* fill VdpPictureInfoMPEG1Or2 struct */
...
...
@@ -227,12 +227,12 @@ void ff_vdpau_mpeg_picture_complete(MpegEncContext *s, const uint8_t *buf,
switch
(
s
->
pict_type
){
case
AV_PICTURE_TYPE_B
:
next
=
(
struct
vdpau_render_state
*
)
s
->
next_picture
.
data
[
0
];
next
=
(
struct
vdpau_render_state
*
)
s
->
next_picture
.
f
.
data
[
0
];
assert
(
next
);
render
->
info
.
mpeg
.
backward_reference
=
next
->
surface
;
// no return here, going to set forward prediction
case
AV_PICTURE_TYPE_P
:
last
=
(
struct
vdpau_render_state
*
)
s
->
last_picture
.
data
[
0
];
last
=
(
struct
vdpau_render_state
*
)
s
->
last_picture
.
f
.
data
[
0
];
if
(
!
last
)
// FIXME: Does this test make sense?
last
=
render
;
// predict second field from the first
render
->
info
.
mpeg
.
forward_reference
=
last
->
surface
;
...
...
@@ -253,7 +253,7 @@ void ff_vdpau_vc1_decode_picture(MpegEncContext *s, const uint8_t *buf,
VC1Context
*
v
=
s
->
avctx
->
priv_data
;
struct
vdpau_render_state
*
render
,
*
last
,
*
next
;
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture
.
data
[
0
];
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture
.
f
.
data
[
0
];
assert
(
render
);
/* fill LvPictureInfoVC1 struct */
...
...
@@ -297,12 +297,12 @@ void ff_vdpau_vc1_decode_picture(MpegEncContext *s, const uint8_t *buf,
switch
(
s
->
pict_type
){
case
AV_PICTURE_TYPE_B
:
next
=
(
struct
vdpau_render_state
*
)
s
->
next_picture
.
data
[
0
];
next
=
(
struct
vdpau_render_state
*
)
s
->
next_picture
.
f
.
data
[
0
];
assert
(
next
);
render
->
info
.
vc1
.
backward_reference
=
next
->
surface
;
// no break here, going to set forward prediction
case
AV_PICTURE_TYPE_P
:
last
=
(
struct
vdpau_render_state
*
)
s
->
last_picture
.
data
[
0
];
last
=
(
struct
vdpau_render_state
*
)
s
->
last_picture
.
f
.
data
[
0
];
if
(
!
last
)
// FIXME: Does this test make sense?
last
=
render
;
// predict second field from the first
render
->
info
.
vc1
.
forward_reference
=
last
->
surface
;
...
...
@@ -324,7 +324,7 @@ void ff_vdpau_mpeg4_decode_picture(MpegEncContext *s, const uint8_t *buf,
if
(
!
s
->
current_picture_ptr
)
return
;
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
data
[
0
];
render
=
(
struct
vdpau_render_state
*
)
s
->
current_picture_ptr
->
f
.
data
[
0
];
assert
(
render
);
/* fill VdpPictureInfoMPEG4Part2 struct */
...
...
@@ -353,13 +353,13 @@ void ff_vdpau_mpeg4_decode_picture(MpegEncContext *s, const uint8_t *buf,
switch
(
s
->
pict_type
)
{
case
AV_PICTURE_TYPE_B
:
next
=
(
struct
vdpau_render_state
*
)
s
->
next_picture
.
data
[
0
];
next
=
(
struct
vdpau_render_state
*
)
s
->
next_picture
.
f
.
data
[
0
];
assert
(
next
);
render
->
info
.
mpeg4
.
backward_reference
=
next
->
surface
;
render
->
info
.
mpeg4
.
vop_coding_type
=
2
;
// no break here, going to set forward prediction
case
AV_PICTURE_TYPE_P
:
last
=
(
struct
vdpau_render_state
*
)
s
->
last_picture
.
data
[
0
];
last
=
(
struct
vdpau_render_state
*
)
s
->
last_picture
.
f
.
data
[
0
];
assert
(
last
);
render
->
info
.
mpeg4
.
forward_reference
=
last
->
surface
;
}
...
...
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