[mythtv] [patch] xvmcvideo.c clean-up 1
Daniel Thor Kristjansson
danielk at cat.nyu.edu
Wed Aug 18 13:23:59 EDT 2004
This is a portion of the efficiency patch. It's just a cleanup patch
that adds a render_state() function, so that XVMC_init_block,
XVMC_field_end, etc. can share some code.
-- Daniel
-------------- next part --------------
Index: libs/libavcodec/xvmcvideo.c
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libavcodec/xvmcvideo.c,v
retrieving revision 1.6
diff -u -r1.6 xvmcvideo.c
--- libs/libavcodec/xvmcvideo.c 28 Mar 2004 17:17:13 -0000 1.6
+++ libs/libavcodec/xvmcvideo.c 18 Aug 2004 17:17:02 -0000
@@ -43,16 +43,14 @@
//#include "xvmc_debug.h"
#undef fprintf
+
+static inline xvmc_render_state_t *render_state(const MpegEncContext *s);
+
//set s->block
-inline void XVMC_init_block(MpegEncContext *s){
-xvmc_render_state_t * render;
- render = (xvmc_render_state_t*)s->current_picture.data[2];
- assert(render != NULL);
- if( (render == NULL) || (render->magic != MP_XVMC_RENDER_MAGIC) ){
- assert(0);
- return;//make sure that this is render packet
- }
- s->block =(DCTELEM *)(render->data_blocks+(render->next_free_data_block_num)*64);
+void XVMC_init_block(MpegEncContext *s)
+{
+ xvmc_render_state_t *render = render_state(s);
+ s->block= (DCTELEM*) (render->data_blocks+(render->next_free_data_block_num)*64);
}
void XVMC_pack_pblocks(MpegEncContext *s, int cbp){
@@ -212,15 +210,10 @@
return -1;
}
-void XVMC_field_end(MpegEncContext *s){
-xvmc_render_state_t * render;
- render = (xvmc_render_state_t*)s->current_picture.data[2];
- assert(render != NULL);
-
- if(render->filled_mv_blocks_num > 0){
-// printf("xvmcvideo.c: rendering %d left blocks after last slice!!!\n",render->filled_mv_blocks_num );
+void XVMC_field_end(MpegEncContext *s)
+{
+ if (render_state(s)->filled_mv_blocks_num > 0)
ff_draw_horiz_band(s,0,0);
- }
}
void XVMC_decode_mb(MpegEncContext *s){
@@ -253,10 +246,7 @@
s->current_picture.qscale_table[mb_xy] = s->qscale;
//START OF XVMC specific code
- render = (xvmc_render_state_t*)s->current_picture.data[2];
- assert(render!=NULL);
- assert(render->magic==MP_XVMC_RENDER_MAGIC);
- assert(render->mv_blocks);
+ render = render_state(s);
//take the next free macroblock
mv_block = &render->mv_blocks[render->start_mv_blocks_num +
@@ -429,4 +419,15 @@
}
+// The remainder of this file is all helper functions
+
+static inline xvmc_render_state_t *render_state(const MpegEncContext *s)
+{
+ xvmc_render_state_t *render = (xvmc_render_state_t*)s->current_picture.data[2];
+ assert(render!=NULL);
+ assert(render->magic==MP_XVMC_RENDER_MAGIC);
+ assert(render->mv_blocks);
+ return render;
+}
+
#endif
More information about the mythtv-dev
mailing list