Mercurial > libavcodec.hg
comparison xvmcvideo.c @ 8509:5dffd656f606 libavcodec
Avoid POSIX-reserved _t namespace.
author | diego |
---|---|
date | Fri, 02 Jan 2009 16:21:22 +0000 |
parents | ca55b7b133c7 |
children |
comparison
equal
deleted
inserted
replaced
8508:8bb3aa9813b5 | 8509:5dffd656f606 |
---|---|
37 | 37 |
38 //#include "xvmc_debug.h" | 38 //#include "xvmc_debug.h" |
39 | 39 |
40 //set s->block | 40 //set s->block |
41 void XVMC_init_block(MpegEncContext *s){ | 41 void XVMC_init_block(MpegEncContext *s){ |
42 xvmc_render_state_t * render; | 42 struct xvmc_render_state * render; |
43 render = (xvmc_render_state_t*)s->current_picture.data[2]; | 43 render = (struct xvmc_render_state*)s->current_picture.data[2]; |
44 assert(render != NULL); | 44 assert(render != NULL); |
45 if( (render == NULL) || (render->magic != MP_XVMC_RENDER_MAGIC) ){ | 45 if( (render == NULL) || (render->magic != MP_XVMC_RENDER_MAGIC) ){ |
46 assert(0); | 46 assert(0); |
47 return;//make sure that this is a render packet | 47 return;//make sure that this is a render packet |
48 } | 48 } |
67 } | 67 } |
68 | 68 |
69 //These functions should be called on every new field and/or frame. | 69 //These functions should be called on every new field and/or frame. |
70 //They should be safe if they are called a few times for the same field! | 70 //They should be safe if they are called a few times for the same field! |
71 int XVMC_field_start(MpegEncContext*s, AVCodecContext *avctx){ | 71 int XVMC_field_start(MpegEncContext*s, AVCodecContext *avctx){ |
72 xvmc_render_state_t * render,* last, * next; | 72 struct xvmc_render_state * render, * last, * next; |
73 | 73 |
74 assert(avctx != NULL); | 74 assert(avctx != NULL); |
75 | 75 |
76 render = (xvmc_render_state_t*)s->current_picture.data[2]; | 76 render = (struct xvmc_render_state*)s->current_picture.data[2]; |
77 assert(render != NULL); | 77 assert(render != NULL); |
78 if( (render == NULL) || (render->magic != MP_XVMC_RENDER_MAGIC) ) | 78 if( (render == NULL) || (render->magic != MP_XVMC_RENDER_MAGIC) ) |
79 return -1;//make sure that this is render packet | 79 return -1;//make sure that this is render packet |
80 | 80 |
81 render->picture_structure = s->picture_structure; | 81 render->picture_structure = s->picture_structure; |
89 | 89 |
90 switch(s->pict_type){ | 90 switch(s->pict_type){ |
91 case FF_I_TYPE: | 91 case FF_I_TYPE: |
92 return 0;// no prediction from other frames | 92 return 0;// no prediction from other frames |
93 case FF_B_TYPE: | 93 case FF_B_TYPE: |
94 next = (xvmc_render_state_t*)s->next_picture.data[2]; | 94 next = (struct xvmc_render_state*)s->next_picture.data[2]; |
95 assert(next!=NULL); | 95 assert(next!=NULL); |
96 assert(next->state & MP_XVMC_STATE_PREDICTION); | 96 assert(next->state & MP_XVMC_STATE_PREDICTION); |
97 if(next == NULL) return -1; | 97 if(next == NULL) return -1; |
98 if(next->magic != MP_XVMC_RENDER_MAGIC) return -1; | 98 if(next->magic != MP_XVMC_RENDER_MAGIC) return -1; |
99 render->p_future_surface = next->p_surface; | 99 render->p_future_surface = next->p_surface; |
100 //no return here, going to set forward prediction | 100 //no return here, going to set forward prediction |
101 case FF_P_TYPE: | 101 case FF_P_TYPE: |
102 last = (xvmc_render_state_t*)s->last_picture.data[2]; | 102 last = (struct xvmc_render_state*)s->last_picture.data[2]; |
103 if(last == NULL)// && !s->first_field) | 103 if(last == NULL)// && !s->first_field) |
104 last = render;//predict second field from the first | 104 last = render;//predict second field from the first |
105 if(last->magic != MP_XVMC_RENDER_MAGIC) return -1; | 105 if(last->magic != MP_XVMC_RENDER_MAGIC) return -1; |
106 assert(last->state & MP_XVMC_STATE_PREDICTION); | 106 assert(last->state & MP_XVMC_STATE_PREDICTION); |
107 render->p_past_surface = last->p_surface; | 107 render->p_past_surface = last->p_surface; |
110 | 110 |
111 return -1; | 111 return -1; |
112 } | 112 } |
113 | 113 |
114 void XVMC_field_end(MpegEncContext *s){ | 114 void XVMC_field_end(MpegEncContext *s){ |
115 xvmc_render_state_t * render; | 115 struct xvmc_render_state * render; |
116 render = (xvmc_render_state_t*)s->current_picture.data[2]; | 116 render = (struct xvmc_render_state*)s->current_picture.data[2]; |
117 assert(render != NULL); | 117 assert(render != NULL); |
118 | 118 |
119 if(render->filled_mv_blocks_num > 0){ | 119 if(render->filled_mv_blocks_num > 0){ |
120 // printf("xvmcvideo.c: rendering %d left blocks after last slice!!!\n",render->filled_mv_blocks_num ); | 120 // printf("xvmcvideo.c: rendering %d left blocks after last slice!!!\n",render->filled_mv_blocks_num ); |
121 ff_draw_horiz_band(s,0,0); | 121 ff_draw_horiz_band(s,0,0); |
122 } | 122 } |
123 } | 123 } |
124 | 124 |
125 void XVMC_decode_mb(MpegEncContext *s){ | 125 void XVMC_decode_mb(MpegEncContext *s){ |
126 XvMCMacroBlock * mv_block; | 126 XvMCMacroBlock * mv_block; |
127 xvmc_render_state_t * render; | 127 struct xvmc_render_state * render; |
128 int i,cbp,blocks_per_mb; | 128 int i,cbp,blocks_per_mb; |
129 | 129 |
130 const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; | 130 const int mb_xy = s->mb_y * s->mb_stride + s->mb_x; |
131 | 131 |
132 | 132 |
150 // Do I need to export quant when I could not perform postprocessing? | 150 // Do I need to export quant when I could not perform postprocessing? |
151 // Anyway, it doesn't hurt. | 151 // Anyway, it doesn't hurt. |
152 s->current_picture.qscale_table[mb_xy] = s->qscale; | 152 s->current_picture.qscale_table[mb_xy] = s->qscale; |
153 | 153 |
154 //START OF XVMC specific code | 154 //START OF XVMC specific code |
155 render = (xvmc_render_state_t*)s->current_picture.data[2]; | 155 render = (struct xvmc_render_state*)s->current_picture.data[2]; |
156 assert(render!=NULL); | 156 assert(render!=NULL); |
157 assert(render->magic==MP_XVMC_RENDER_MAGIC); | 157 assert(render->magic==MP_XVMC_RENDER_MAGIC); |
158 assert(render->mv_blocks); | 158 assert(render->mv_blocks); |
159 | 159 |
160 //take the next free macroblock | 160 //take the next free macroblock |