From 45987380ec7868529b9db77d646429fe873e605e Mon Sep 17 00:00:00 2001 From: Austin Yuan Date: Tue, 8 Feb 2011 22:44:43 -0800 Subject: 1) cleanup for VA_FOOL 2) initial EGL support 3) libva.spec update for RPM build Signed-off-by: Guoliang Ji Signed-off-by: Jason Hu Signed-off-by: Stephen Ware Signed-off-by: Austin Yuan --- va/va_fool.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'va/va_fool.c') diff --git a/va/va_fool.c b/va/va_fool.c index be2540b..b2d7449 100644 --- a/va/va_fool.c +++ b/va/va_fool.c @@ -80,6 +80,7 @@ static struct _fool_context { FILE *fool_fp_codedclip; /* load a clip from disk for fooling encode*/ char *frame_buf; + VACodedBufferSegment *codebuf; /* all buffers with same type share one malloc-ed memory * bufferID = (buffer numbers with the same type << 8) || type @@ -179,13 +180,17 @@ void va_FoolInit(VADisplay dpy) fool_encode = 0; if (fool_encode) /* malloc the buffer for fake clip */ + { fool_context[fool_index].frame_buf = malloc(MAX_FRAME*SLICE_NUM*NAL_BUF_SIZE*sizeof(char)); + fool_context[fool_index].codebuf = malloc(sizeof(VACodedBufferSegment)); + } if (fool_context[fool_index].frame_buf == NULL) fool_encode = 0; if (fool_encode) va_infoMessage("LIBVA_FOOL_ENCODE is on, dummy encode\n"); + } if (fool_encode || fool_decode) @@ -209,6 +214,9 @@ int va_FoolEnd(VADisplay dpy) if (fool_context[idx].frame_buf) free(fool_context[idx].frame_buf); + if (fool_context[idx].codebuf) + free(fool_context[idx].codebuf); + memset(&fool_context[idx], sizeof(struct _fool_context), 0); return 0; } @@ -422,7 +430,7 @@ VAStatus va_FoolMapBuffer ( ) { VABufferType type; - unsigned int size; + unsigned int size,frame_size = 0; unsigned int num_elements; DPY2INDEX(dpy); @@ -443,9 +451,17 @@ VAStatus va_FoolMapBuffer ( /* expect APP to MapBuffer when get the the coded data */ if (*pbuf && (buf_idx == VAEncCodedBufferType)) { /* it is coded buffer */ /* read from a clip */ - va_FoolGetFrame(fool_context[idx].fool_fp_codedclip, - fool_context[idx].frame_buf); - *pbuf = fool_context[idx].frame_buf; + frame_size = va_FoolGetFrame(fool_context[idx].fool_fp_codedclip, + fool_context[idx].frame_buf); + + memset(fool_context[idx].codebuf,0,sizeof(VACodedBufferSegment)); + fool_context[idx].codebuf->size = frame_size; + fool_context[idx].codebuf->bit_offset = 0; + fool_context[idx].codebuf->status = 0; + fool_context[idx].codebuf->reserved = 0; + fool_context[idx].codebuf->buf = fool_context[idx].frame_buf; + fool_context[idx].codebuf->next = NULL; + *pbuf = fool_context[idx].codebuf; } return 1; /* don't call into driver */ } -- cgit v1.2.1