mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
hwaccel: unbreak build
Signed-off-by: Mans Rullgard <mans@mansr.com>
This commit is contained in:
parent
657ccb5ac7
commit
1765aacb17
@ -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);
|
||||
|
@ -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++)
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user