annotate vdpauvideo.c @ 8790:1045a26cb90d libavcodec

Fix crash when encoding using libschroedinger. Currently only pixel and half-pixel motion vector precisions are supported in libschroedinger. Setting the mv_precision field to 2 (i.e. quarter pixel) causes a crash in the libschroedinger encoder calls. By not setting this parameter, we fall back to the default value used in libschroedinger. patch by Anuradha Suraparaju, anuradha rd.bbc.co uk
author diego
date Tue, 10 Feb 2009 14:27:16 +0000
parents 2d7269e13a8d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
1 /*
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
2 * Video Decode and Presentation API for UNIX (VDPAU) is used for
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
3 * HW decode acceleration for MPEG-1/2, H.264 and VC-1.
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
4 *
8629
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 8601
diff changeset
5 * Copyright (c) 2008 NVIDIA
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
6 *
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
7 * This file is part of FFmpeg.
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
8 *
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
9 * FFmpeg is free software; you can redistribute it and/or
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
11 * License as published by the Free Software Foundation; either
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
12 * version 2.1 of the License, or (at your option) any later version.
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
13 *
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
14 * FFmpeg is distributed in the hope that it will be useful,
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
17 * Lesser General Public License for more details.
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
18 *
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
20 * License along with FFmpeg; if not, write to the Free Software
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
22 */
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
23
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
24 #include <limits.h>
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
25 #include "avcodec.h"
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
26 #include "h264.h"
8631
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
27 #include "vc1.h"
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
28
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
29 #undef NDEBUG
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
30 #include <assert.h>
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
31
8532
598a77fbc614 Rename vdpau_render.h as vdpau.h.
cehoyos
parents: 8529
diff changeset
32 #include "vdpau.h"
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
33 #include "vdpau_internal.h"
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
34
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
35 /**
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
36 * \addtogroup VDPAU_Decoding
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
37 *
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
38 * @{
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
39 */
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
40
8565
6687083ec76a Remove H264Context from vdpau_internal.h.
cehoyos
parents: 8563
diff changeset
41 void ff_vdpau_h264_set_reference_frames(MpegEncContext *s)
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
42 {
8565
6687083ec76a Remove H264Context from vdpau_internal.h.
cehoyos
parents: 8563
diff changeset
43 H264Context *h = s->avctx->priv_data;
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
44 struct vdpau_render_state * render, * render_ref;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
45 VdpReferenceFrameH264 * rf, * rf2;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
46 Picture * pic;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
47 int i, list, pic_frame_idx;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
48
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
49 render = (struct vdpau_render_state*)s->current_picture_ptr->data[0];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
50 assert(render);
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
51
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
52 rf = &render->info.h264.referenceFrames[0];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
53 #define H264_RF_COUNT FF_ARRAY_ELEMS(render->info.h264.referenceFrames)
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
54
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
55 for (list = 0; list < 2; ++list) {
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
56 Picture **lp = list ? h->long_ref : h->short_ref;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
57 int ls = list ? h->long_ref_count : h->short_ref_count;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
58
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
59 for (i = 0; i < ls; ++i) {
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
60 pic = lp[i];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
61 if (!pic || !pic->reference)
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
62 continue;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
63 pic_frame_idx = pic->long_ref ? pic->pic_id : pic->frame_num;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
64
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
65 render_ref = (struct vdpau_render_state*)pic->data[0];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
66 assert(render_ref);
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
67
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
68 rf2 = &render->info.h264.referenceFrames[0];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
69 while (rf2 != rf) {
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
70 if (
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
71 (rf2->surface == render_ref->surface)
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
72 && (rf2->is_long_term == pic->long_ref)
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
73 && (rf2->frame_idx == pic_frame_idx)
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
74 )
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
75 break;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
76 ++rf2;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
77 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
78 if (rf2 != rf) {
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
79 rf2->top_is_reference |= (pic->reference & PICT_TOP_FIELD) ? VDP_TRUE : VDP_FALSE;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
80 rf2->bottom_is_reference |= (pic->reference & PICT_BOTTOM_FIELD) ? VDP_TRUE : VDP_FALSE;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
81 continue;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
82 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
83
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
84 if (rf >= &render->info.h264.referenceFrames[H264_RF_COUNT])
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
85 continue;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
86
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
87 rf->surface = render_ref->surface;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
88 rf->is_long_term = pic->long_ref;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
89 rf->top_is_reference = (pic->reference & PICT_TOP_FIELD) ? VDP_TRUE : VDP_FALSE;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
90 rf->bottom_is_reference = (pic->reference & PICT_BOTTOM_FIELD) ? VDP_TRUE : VDP_FALSE;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
91 rf->field_order_cnt[0] = pic->field_poc[0];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
92 rf->field_order_cnt[1] = pic->field_poc[1];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
93 rf->frame_idx = pic_frame_idx;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
94
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
95 ++rf;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
96 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
97 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
98
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
99 for (; rf < &render->info.h264.referenceFrames[H264_RF_COUNT]; ++rf) {
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
100 rf->surface = VDP_INVALID_HANDLE;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
101 rf->is_long_term = 0;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
102 rf->top_is_reference = 0;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
103 rf->bottom_is_reference = 0;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
104 rf->field_order_cnt[0] = 0;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
105 rf->field_order_cnt[1] = 0;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
106 rf->frame_idx = 0;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
107 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
108 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
109
8563
b59279494d84 Cosmetics: Rename ff_vdpau_h264_add_data_chunk as ff_vdpau_add_data_chunk.
cehoyos
parents: 8562
diff changeset
110 void ff_vdpau_add_data_chunk(MpegEncContext *s,
b59279494d84 Cosmetics: Rename ff_vdpau_h264_add_data_chunk as ff_vdpau_add_data_chunk.
cehoyos
parents: 8562
diff changeset
111 const uint8_t *buf, int buf_size)
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
112 {
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
113 struct vdpau_render_state * render;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
114
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
115 render = (struct vdpau_render_state*)s->current_picture_ptr->data[0];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
116 assert(render);
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
117
8553
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
118 render->bitstream_buffers= av_fast_realloc(
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
119 render->bitstream_buffers,
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
120 &render->bitstream_buffers_allocated,
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
121 sizeof(*render->bitstream_buffers)*(render->bitstream_buffers_used + 1)
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
122 );
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
123
8553
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
124 render->bitstream_buffers[render->bitstream_buffers_used].struct_version = VDP_BITSTREAM_BUFFER_VERSION;
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
125 render->bitstream_buffers[render->bitstream_buffers_used].bitstream = buf;
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
126 render->bitstream_buffers[render->bitstream_buffers_used].bitstream_bytes = buf_size;
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
127 render->bitstream_buffers_used++;
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
128 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
129
8565
6687083ec76a Remove H264Context from vdpau_internal.h.
cehoyos
parents: 8563
diff changeset
130 void ff_vdpau_h264_picture_complete(MpegEncContext *s)
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
131 {
8565
6687083ec76a Remove H264Context from vdpau_internal.h.
cehoyos
parents: 8563
diff changeset
132 H264Context *h = s->avctx->priv_data;
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
133 struct vdpau_render_state * render;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
134
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
135 render = (struct vdpau_render_state*)s->current_picture_ptr->data[0];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
136 assert(render);
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
137
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
138 render->info.h264.slice_count = h->slice_num;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
139 if (render->info.h264.slice_count < 1)
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
140 return;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
141
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
142 for (int i = 0; i < 2; ++i) {
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
143 int foc = s->current_picture_ptr->field_poc[i];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
144 if (foc == INT_MAX)
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
145 foc = 0;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
146 render->info.h264.field_order_cnt[i] = foc;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
147 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
148
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
149 render->info.h264.is_reference = s->current_picture_ptr->reference ? VDP_TRUE : VDP_FALSE;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
150 render->info.h264.frame_num = h->frame_num;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
151 render->info.h264.field_pic_flag = s->picture_structure != PICT_FRAME;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
152 render->info.h264.bottom_field_flag = s->picture_structure == PICT_BOTTOM_FIELD;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
153 render->info.h264.num_ref_frames = h->sps.ref_frame_count;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
154 render->info.h264.mb_adaptive_frame_field_flag = h->sps.mb_aff;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
155 render->info.h264.constrained_intra_pred_flag = h->pps.constrained_intra_pred;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
156 render->info.h264.weighted_pred_flag = h->pps.weighted_pred;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
157 render->info.h264.weighted_bipred_idc = h->pps.weighted_bipred_idc;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
158 render->info.h264.frame_mbs_only_flag = h->sps.frame_mbs_only_flag;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
159 render->info.h264.transform_8x8_mode_flag = h->pps.transform_8x8_mode;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
160 render->info.h264.chroma_qp_index_offset = h->pps.chroma_qp_index_offset[0];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
161 render->info.h264.second_chroma_qp_index_offset = h->pps.chroma_qp_index_offset[1];
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
162 render->info.h264.pic_init_qp_minus26 = h->pps.init_qp - 26;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
163 render->info.h264.num_ref_idx_l0_active_minus1 = h->pps.ref_count[0] - 1;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
164 render->info.h264.num_ref_idx_l1_active_minus1 = h->pps.ref_count[1] - 1;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
165 render->info.h264.log2_max_frame_num_minus4 = h->sps.log2_max_frame_num - 4;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
166 render->info.h264.pic_order_cnt_type = h->sps.poc_type;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
167 render->info.h264.log2_max_pic_order_cnt_lsb_minus4 = h->sps.log2_max_poc_lsb - 4;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
168 render->info.h264.delta_pic_order_always_zero_flag = h->sps.delta_pic_order_always_zero_flag;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
169 render->info.h264.direct_8x8_inference_flag = h->sps.direct_8x8_inference_flag;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
170 render->info.h264.entropy_coding_mode_flag = h->pps.cabac;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
171 render->info.h264.pic_order_present_flag = h->pps.pic_order_present;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
172 render->info.h264.deblocking_filter_control_present_flag = h->pps.deblocking_filter_parameters_present;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
173 render->info.h264.redundant_pic_cnt_present_flag = h->pps.redundant_pic_cnt_present;
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
174 memcpy(render->info.h264.scaling_lists_4x4, h->pps.scaling_matrix4, sizeof(render->info.h264.scaling_lists_4x4));
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
175 memcpy(render->info.h264.scaling_lists_8x8, h->pps.scaling_matrix8, sizeof(render->info.h264.scaling_lists_8x8));
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
176
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
177 ff_draw_horiz_band(s, 0, s->avctx->height);
8553
6ce9f5616a57 Rename bitstreamBuffers* as bitstream_buffers*
cehoyos
parents: 8532
diff changeset
178 render->bitstream_buffers_used = 0;
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
179 }
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
180
8601
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
181 void ff_vdpau_mpeg_picture_complete(MpegEncContext *s, const uint8_t *buf,
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
182 int buf_size, int slice_count)
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
183 {
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
184 struct vdpau_render_state * render, * last, * next;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
185 int i;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
186
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
187 render = (struct vdpau_render_state*)s->current_picture_ptr->data[0];
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
188 assert(render);
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
189
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
190 /* fill VdpPictureInfoMPEG1Or2 struct */
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
191 render->info.mpeg.picture_structure = s->picture_structure;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
192 render->info.mpeg.picture_coding_type = s->pict_type;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
193 render->info.mpeg.intra_dc_precision = s->intra_dc_precision;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
194 render->info.mpeg.frame_pred_frame_dct = s->frame_pred_frame_dct;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
195 render->info.mpeg.concealment_motion_vectors = s->concealment_motion_vectors;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
196 render->info.mpeg.intra_vlc_format = s->intra_vlc_format;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
197 render->info.mpeg.alternate_scan = s->alternate_scan;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
198 render->info.mpeg.q_scale_type = s->q_scale_type;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
199 render->info.mpeg.top_field_first = s->top_field_first;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
200 render->info.mpeg.full_pel_forward_vector = s->full_pel[0]; // MPEG-1 only. Set 0 for MPEG-2
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
201 render->info.mpeg.full_pel_backward_vector = s->full_pel[1]; // MPEG-1 only. Set 0 for MPEG-2
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
202 render->info.mpeg.f_code[0][0] = s->mpeg_f_code[0][0]; // For MPEG-1 fill both horiz. & vert.
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
203 render->info.mpeg.f_code[0][1] = s->mpeg_f_code[0][1];
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
204 render->info.mpeg.f_code[1][0] = s->mpeg_f_code[1][0];
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
205 render->info.mpeg.f_code[1][1] = s->mpeg_f_code[1][1];
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
206 for (i = 0; i < 64; ++i) {
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
207 render->info.mpeg.intra_quantizer_matrix[i] = s->intra_matrix[i];
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
208 render->info.mpeg.non_intra_quantizer_matrix[i] = s->inter_matrix[i];
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
209 }
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
210
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
211 render->info.mpeg.forward_reference = VDP_INVALID_HANDLE;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
212 render->info.mpeg.backward_reference = VDP_INVALID_HANDLE;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
213
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
214 switch(s->pict_type){
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
215 case FF_B_TYPE:
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
216 next = (struct vdpau_render_state*)s->next_picture.data[0];
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
217 assert(next);
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
218 render->info.mpeg.backward_reference = next->surface;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
219 // no return here, going to set forward prediction
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
220 case FF_P_TYPE:
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
221 last = (struct vdpau_render_state*)s->last_picture.data[0];
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
222 if (!last) // FIXME: Does this test make sense?
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
223 last = render; // predict second field from the first
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
224 render->info.mpeg.forward_reference = last->surface;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
225 }
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
226
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
227 ff_vdpau_add_data_chunk(s, buf, buf_size);
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
228
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
229 render->info.mpeg.slice_count = slice_count;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
230
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
231 if (slice_count)
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
232 ff_draw_horiz_band(s, 0, s->avctx->height);
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
233 render->bitstream_buffers_used = 0;
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
234 }
8b80f8285b1b Add VDPAU hardware accelerated decoding for MPEG1 and MPEG2 which can
cehoyos
parents: 8565
diff changeset
235
8631
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
236 void ff_vdpau_vc1_decode_picture(MpegEncContext *s, const uint8_t *buf,
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
237 int buf_size)
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
238 {
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
239 VC1Context *v = s->avctx->priv_data;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
240 struct vdpau_render_state * render, * last, * next;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
241
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
242 render = (struct vdpau_render_state*)s->current_picture.data[0];
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
243 assert(render);
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
244
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
245 /* fill LvPictureInfoVC1 struct */
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
246 render->info.vc1.frame_coding_mode = v->fcm;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
247 render->info.vc1.postprocflag = v->postprocflag;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
248 render->info.vc1.pulldown = v->broadcast;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
249 render->info.vc1.interlace = v->interlace;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
250 render->info.vc1.tfcntrflag = v->tfcntrflag;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
251 render->info.vc1.finterpflag = v->finterpflag;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
252 render->info.vc1.psf = v->psf;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
253 render->info.vc1.dquant = v->dquant;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
254 render->info.vc1.panscan_flag = v->panscanflag;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
255 render->info.vc1.refdist_flag = v->refdist_flag;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
256 render->info.vc1.quantizer = v->quantizer_mode;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
257 render->info.vc1.extended_mv = v->extended_mv;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
258 render->info.vc1.extended_dmv = v->extended_dmv;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
259 render->info.vc1.overlap = v->overlap;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
260 render->info.vc1.vstransform = v->vstransform;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
261 render->info.vc1.loopfilter = v->s.loop_filter;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
262 render->info.vc1.fastuvmc = v->fastuvmc;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
263 render->info.vc1.range_mapy_flag = v->range_mapy_flag;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
264 render->info.vc1.range_mapy = v->range_mapy;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
265 render->info.vc1.range_mapuv_flag = v->range_mapuv_flag;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
266 render->info.vc1.range_mapuv = v->range_mapuv;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
267 /* Specific to simple/main profile only */
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
268 render->info.vc1.multires = v->multires;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
269 render->info.vc1.syncmarker = v->s.resync_marker;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
270 render->info.vc1.rangered = v->rangered;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
271 render->info.vc1.maxbframes = v->s.max_b_frames;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
272
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
273 render->info.vc1.deblockEnable = v->postprocflag & 1;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
274 render->info.vc1.pquant = v->pq;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
275
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
276 render->info.vc1.forward_reference = VDP_INVALID_HANDLE;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
277 render->info.vc1.backward_reference = VDP_INVALID_HANDLE;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
278
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
279 if (v->bi_type)
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
280 render->info.vc1.picture_type = 4;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
281 else
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
282 render->info.vc1.picture_type = s->pict_type - 1 + s->pict_type / 3;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
283
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
284 switch(s->pict_type){
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
285 case FF_B_TYPE:
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
286 next = (struct vdpau_render_state*)s->next_picture.data[0];
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
287 assert(next);
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
288 render->info.vc1.backward_reference = next->surface;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
289 // no break here, going to set forward prediction
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
290 case FF_P_TYPE:
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
291 last = (struct vdpau_render_state*)s->last_picture.data[0];
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
292 if (!last) // FIXME: Does this test make sense?
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
293 last = render; // predict second field from the first
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
294 render->info.vc1.forward_reference = last->surface;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
295 }
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
296
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
297 ff_vdpau_add_data_chunk(s, buf, buf_size);
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
298
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
299 render->info.vc1.slice_count = 1;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
300
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
301 ff_draw_horiz_band(s, 0, s->avctx->height);
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
302 render->bitstream_buffers_used = 0;
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
303 }
2d7269e13a8d Add VDPAU hardware accelerated decoding for WMV3 and VC1 which can
cehoyos
parents: 8629
diff changeset
304
8522
f8c091bb5779 Add VDPAU hardware accelerated decoding for H264 which can be used by
cehoyos
parents:
diff changeset
305 /* @}*/