comparison mpegvideo_xvmc.c @ 8889:b4838c71d52a libavcodec

Merge some declarations and initializations.
author diego
date Sat, 14 Feb 2009 22:21:17 +0000
parents 5b7c6ebb4a36
children 649c595b8c2f
comparison
equal deleted inserted replaced
8888:5b7c6ebb4a36 8889:b4838c71d52a
32 #include "xvmc_internal.h" 32 #include "xvmc_internal.h"
33 33
34 //set s->block 34 //set s->block
35 void ff_xvmc_init_block(MpegEncContext *s) 35 void ff_xvmc_init_block(MpegEncContext *s)
36 { 36 {
37 struct xvmc_render_state *render; 37 struct xvmc_render_state *render = (struct xvmc_render_state*)s->current_picture.data[2];
38 render = (struct xvmc_render_state*)s->current_picture.data[2];
39 assert(render); 38 assert(render);
40 if (!render || render->magic != AV_XVMC_RENDER_MAGIC) { 39 if (!render || render->magic != AV_XVMC_RENDER_MAGIC) {
41 assert(0); 40 assert(0);
42 return; // make sure that this is a render packet 41 return; // make sure that this is a render packet
43 } 42 }
44 s->block = (DCTELEM *)(render->data_blocks + render->next_free_data_block_num * 64); 43 s->block = (DCTELEM *)(render->data_blocks + render->next_free_data_block_num * 64);
45 } 44 }
46 45
47 void ff_xvmc_pack_pblocks(MpegEncContext *s, int cbp) 46 void ff_xvmc_pack_pblocks(MpegEncContext *s, int cbp)
48 { 47 {
49 int i, j; 48 int i, j = 0;
50 const int mb_block_count = 4 + (1 << s->chroma_format); 49 const int mb_block_count = 4 + (1 << s->chroma_format);
51 50
52 j = 0;
53 cbp <<= 12-mb_block_count; 51 cbp <<= 12-mb_block_count;
54 for (i = 0; i < mb_block_count; i++) { 52 for (i = 0; i < mb_block_count; i++) {
55 if (cbp & (1 << 11)) 53 if (cbp & (1 << 11))
56 s->pblocks[i] = (short *)(&s->block[j++]); 54 s->pblocks[i] = (short *)(&s->block[j++]);
57 else 55 else
62 60
63 // These functions should be called on every new field and/or frame. 61 // These functions should be called on every new field and/or frame.
64 // They should be safe if they are called a few times for the same field! 62 // They should be safe if they are called a few times for the same field!
65 int ff_xvmc_field_start(MpegEncContext*s, AVCodecContext *avctx) 63 int ff_xvmc_field_start(MpegEncContext*s, AVCodecContext *avctx)
66 { 64 {
67 struct xvmc_render_state *render, *last, *next; 65 struct xvmc_render_state *last, *next, *render = (struct xvmc_render_state*)s->current_picture.data[2];
68 66
69 assert(avctx); 67 assert(avctx);
70
71 render = (struct xvmc_render_state*)s->current_picture.data[2];
72 assert(render); 68 assert(render);
73 if (!render || render->magic != AV_XVMC_RENDER_MAGIC) 69 if (!render || render->magic != AV_XVMC_RENDER_MAGIC)
74 return -1; // make sure that this is a render packet 70 return -1; // make sure that this is a render packet
75 71
76 render->picture_structure = s->picture_structure; 72 render->picture_structure = s->picture_structure;
111 return -1; 107 return -1;
112 } 108 }
113 109
114 void ff_xvmc_field_end(MpegEncContext *s) 110 void ff_xvmc_field_end(MpegEncContext *s)
115 { 111 {
116 struct xvmc_render_state *render; 112 struct xvmc_render_state *render = (struct xvmc_render_state*)s->current_picture.data[2];
117 render = (struct xvmc_render_state*)s->current_picture.data[2];
118 assert(render); 113 assert(render);
119 114
120 if (render->filled_mv_blocks_num > 0) 115 if (render->filled_mv_blocks_num > 0)
121 ff_draw_horiz_band(s, 0, 0); 116 ff_draw_horiz_band(s, 0, 0);
122 } 117 }