[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