*
* Copyright (c) 2008 NVIDIA
*
- * This file is part of FFmpeg.
+ * This file is part of Libav.
*
- * FFmpeg is free software; you can redistribute it and/or
+ * Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
- * FFmpeg is distributed in the hope that it will be useful,
+ * Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with FFmpeg; if not, write to the Free Software
+ * License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
render->bitstream_buffers_used++;
}
-void ff_vdpau_h264_picture_complete(MpegEncContext *s)
+void ff_vdpau_h264_picture_start(MpegEncContext *s)
{
H264Context *h = s->avctx->priv_data;
struct vdpau_render_state *render;
render = (struct vdpau_render_state *)s->current_picture_ptr->data[0];
assert(render);
- render->info.h264.slice_count = h->slice_num;
- if (render->info.h264.slice_count < 1)
- return;
-
for (i = 0; i < 2; ++i) {
int foc = s->current_picture_ptr->field_poc[i];
if (foc == INT_MAX)
render->info.h264.field_order_cnt[i] = foc;
}
+ render->info.h264.frame_num = h->frame_num;
+}
+
+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];
+ 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.frame_num = h->frame_num;
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;
render->info.mpeg.backward_reference = VDP_INVALID_HANDLE;
switch(s->pict_type){
- case FF_B_TYPE:
+ case AV_PICTURE_TYPE_B:
next = (struct vdpau_render_state *)s->next_picture.data[0];
assert(next);
render->info.mpeg.backward_reference = next->surface;
// no return here, going to set forward prediction
- case FF_P_TYPE:
+ case AV_PICTURE_TYPE_P:
last = (struct vdpau_render_state *)s->last_picture.data[0];
if (!last) // FIXME: Does this test make sense?
last = render; // predict second field from the first
render->info.vc1.picture_type = s->pict_type - 1 + s->pict_type / 3;
switch(s->pict_type){
- case FF_B_TYPE:
+ case AV_PICTURE_TYPE_B:
next = (struct vdpau_render_state *)s->next_picture.data[0];
assert(next);
render->info.vc1.backward_reference = next->surface;
// no break here, going to set forward prediction
- case FF_P_TYPE:
+ case AV_PICTURE_TYPE_P:
last = (struct vdpau_render_state *)s->last_picture.data[0];
if (!last) // FIXME: Does this test make sense?
last = render; // predict second field from the first
render->info.mpeg4.backward_reference = VDP_INVALID_HANDLE;
switch (s->pict_type) {
- case FF_B_TYPE:
+ case AV_PICTURE_TYPE_B:
next = (struct vdpau_render_state *)s->next_picture.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 FF_P_TYPE:
+ case AV_PICTURE_TYPE_P:
last = (struct vdpau_render_state *)s->last_picture.data[0];
assert(last);
render->info.mpeg4.forward_reference = last->surface;