summaryrefslogtreecommitdiff
path: root/va/va_fool.c
diff options
context:
space:
mode:
Diffstat (limited to 'va/va_fool.c')
-rw-r--r--va/va_fool.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/va/va_fool.c b/va/va_fool.c
index 8d4ca48..be2540b 100644
--- a/va/va_fool.c
+++ b/va/va_fool.c
@@ -39,7 +39,6 @@
#include <sys/stat.h>
#include <unistd.h>
#include <time.h>
-#include "va_fool_264.h"
/*
* Do dummy decode/encode, ignore the input data
@@ -64,7 +63,6 @@ int fool_decode = 0;
int fool_encode = 0;
int fool_postp = 0;
-static char *frame_buf;
#define NAL_BUF_SIZE 65536 // maximum NAL unit size
@@ -81,6 +79,7 @@ static struct _fool_context {
VAEntrypoint fool_entrypoint; /* current entrypoint */
FILE *fool_fp_codedclip; /* load a clip from disk for fooling encode*/
+ char *frame_buf;
/* all buffers with same type share one malloc-ed memory
* bufferID = (buffer numbers with the same type << 8) || type
@@ -176,9 +175,17 @@ void va_FoolInit(VADisplay dpy)
if (fool_context[fool_index].fool_fp_codedclip) {
fool_encode = 1;
- va_infoMessage("LIBVA_FOOL_ENCODE is on, dummy encode\n");
} else
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));
+
+ 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)
@@ -198,7 +205,10 @@ int va_FoolEnd(VADisplay dpy)
}
if (fool_context[idx].fool_fp_codedclip)
fclose(fool_context[idx].fool_fp_codedclip);
-
+
+ if (fool_context[idx].frame_buf)
+ free(fool_context[idx].frame_buf);
+
memset(&fool_context[idx], sizeof(struct _fool_context), 0);
return 0;
}
@@ -432,17 +442,10 @@ VAStatus va_FoolMapBuffer (
/* expect APP to MapBuffer when get the the coded data */
if (*pbuf && (buf_idx == VAEncCodedBufferType)) { /* it is coded buffer */
- /* should read from a clip, here we use the hardcoded h264_720p_nal */
-#if 0
- memcpy(*pbuf, &h264_720p_nal[h264_720p_nal_idx], sizeof(VACodedBufferSegment));
- h264_720p_nal_idx++;
- if (h264_720p_nal_idx == H264_720P_NAL_NUMBER)
- h264_720p_nal_idx = 0; /* reset to 0 */
-#endif
- frame_buf = malloc(MAX_FRAME*SLICE_NUM*NAL_BUF_SIZE*sizeof(char));
- memset(frame_buf,0,SLICE_NUM*NAL_BUF_SIZE);
- va_FoolGetFrame(fool_context[idx].fool_fp_codedclip, frame_buf);
- *pbuf=frame_buf;
+ /* read from a clip */
+ va_FoolGetFrame(fool_context[idx].fool_fp_codedclip,
+ fool_context[idx].frame_buf);
+ *pbuf = fool_context[idx].frame_buf;
}
return 1; /* don't call into driver */
}
@@ -533,10 +536,9 @@ VAStatus va_FoolUnmapBuffer(
{
DPY2INDEX(dpy);
- if (FOOL_ENCODE(idx) || FOOL_DECODE(idx)) { /* fool buffer creation */
- free(frame_buf);
- return 1;
- }
+ if (FOOL_ENCODE(idx) || FOOL_DECODE(idx))
+ return 1; /* fool buffer creation */
+
return 0;
}