Mercurial > libavcodec.hg
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 } |