summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a86cb27)
raw | patch | inline | side by side (parent: a86cb27)
author | Pradeep Venkatasubbarao <pradeepv@ti.com> | |
Thu, 20 Mar 2014 10:19:14 +0000 (15:49 +0530) | ||
committer | Amarinder Bindra <a-bindra@ti.com> | |
Thu, 20 Mar 2014 12:53:16 +0000 (18:23 +0530) |
closed dmabuf handles that were opened by the application.
Used new dsp_dce_alloc and dsp_dce_free functions as per new libdce.
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
Used new dsp_dce_alloc and dsp_dce_free functions as per new libdce.
Signed-off-by: Pradeep Venkatasubbarao <pradeepv@ti.com>
copycodectest.c | patch | blob | history | |
yuvcopytest.c | patch | blob | history |
diff --git a/copycodectest.c b/copycodectest.c
index e842f88652e65910892ba53768f2fc4a050ddfae..757e2a8bba3b215650e9bf1ca8a8ee9b644fada5 100644 (file)
--- a/copycodectest.c
+++ b/copycodectest.c
#define MAX_IO_BUFS 16
-typedef struct MemHeader {
- unsigned int size;
- void *ptr; /* vptr/handle for mpu access */
- unsigned int dma_buf_fd; /* shared dma buf fd */
- unsigned int region; /* mem region the buffer allocated from */
- /* internal meta data for the buffer */
- unsigned int offset; /* offset for the actual data with in the buffer */
- unsigned int map_fd; /* mmapped fd */
- void * handle; /*custom handle for the HLOS memallocator*/
-} MemHeader;
-#define P2H(p) (&(((MemHeader *)(p))[-1]))
/* omap drm device handle */
struct omap_device *dev = NULL;
+extern void *dsp_dce_alloc(int sz);
+extern void dsp_dce_free(void *ptr);
+
struct decoder {
Engine_Handle engine;
VIDDEC2_Handle codec;
static void
decoder_close(struct decoder *decoder)
{
+ if(!decoder) goto bailout;
+ if (decoder->params) dsp_dce_free(decoder->params);
+ if (decoder->dynParams) dsp_dce_free(decoder->dynParams);
+ if (decoder->status) dsp_dce_free(decoder->status);
+ if (decoder->inBufs)
+ {
+ close(decoder->inBufs->descs[0].buf);
+ dsp_dce_free(decoder->inBufs);
+ }
+ if (decoder->outBufs) dsp_dce_free(decoder->outBufs);
+ if (decoder->inArgs) dsp_dce_free(decoder->inArgs);
+ if (decoder->outArgs) dsp_dce_free(decoder->outArgs);
+ if (decoder->input) dsp_dce_free(decoder->input);
+ if (decoder->output) dsp_dce_free(decoder->output);
+ if (decoder->outBuffer)
+ {
+ close(decoder->outBuffer[0]);
+ dsp_dce_free(decoder->outBuffer);
+ }
+ if (decoder->outBufSizes) dsp_dce_free(decoder->outBufSizes);
if (decoder->codec) VIDDEC2_delete(decoder->codec);
if (decoder->engine) Engine_close(decoder->engine);
- if (decoder->params) dce_free(decoder->params);
- if (decoder->dynParams) dce_free(decoder->dynParams);
- if (decoder->status) dce_free(decoder->status);
- if (decoder->inBufs) dce_free(decoder->inBufs);
- if (decoder->outBufs) dce_free(decoder->outBufs);
- if (decoder->inArgs) dce_free(decoder->inArgs);
- if (decoder->outArgs) dce_free(decoder->outArgs);
- if (decoder->input) dce_free(decoder->input);
- if (decoder->output) dce_free(decoder->output);
- if (decoder->outBuffer) dce_free(decoder->outBuffer);
- if (decoder->outBufSizes) dce_free(decoder->outBufSizes);
free(decoder);
-
+bailout:
if (dev) dce_deinit(dev);
}
goto fail;
}
decoder->input_sz = width * height;
- decoder->input = dce_alloc(decoder->input_sz);
+ decoder->input = omap_bo_new(dev, decoder->input_sz, OMAP_BO_WC);
decoder->output_sz = width * height;
- decoder->output = dce_alloc(decoder->output_sz);
+ decoder->output = omap_bo_new(dev, decoder->output_sz, OMAP_BO_WC);
- decoder->params = dce_alloc(sizeof(IVIDDEC2_Params));
+ decoder->params = dsp_dce_alloc(sizeof(IVIDDEC2_Params));
decoder->params->size = sizeof(IVIDDEC2_Params);
decoder->codec = VIDDEC2_create(decoder->engine,
goto fail;
}
MSG("Created dsp_universalCopy \n");
- decoder->dynParams = dce_alloc(sizeof(IVIDDEC2_DynamicParams));
+ decoder->dynParams = dsp_dce_alloc(sizeof(IVIDDEC2_DynamicParams));
decoder->dynParams->size = sizeof(IVIDDEC2_DynamicParams);
- decoder->status = dce_alloc(sizeof(IVIDDEC2_Status));
+ decoder->status = dsp_dce_alloc(sizeof(IVIDDEC2_Status));
decoder->status->size = sizeof(IVIDDEC2_Status);
err = VIDDEC2_control(decoder->codec, XDM_SETPARAMS,
ERROR("%p: fail: %d", decoder, err);
goto fail;
}
-
- decoder->outBuffer = dce_alloc(sizeof(XDAS_Int8*) * MAX_IO_BUFS);
- decoder->outBufSizes = dce_alloc(sizeof(XDAS_Int32)* MAX_IO_BUFS);
-
- decoder->inBufs = dce_alloc(sizeof(XDM1_BufDesc));
- decoder->inBufs->numBufs = 1;
- decoder->inBufs->descs[0].buf = (XDAS_Int8 *)omap_bo_dmabuf((P2H(decoder->input))->ptr);
- decoder->inBufs->descs[0].bufSize = (P2H(decoder->input))->size;
-
- decoder->outBuffer[0] = (XDAS_Int8*)(omap_bo_dmabuf((P2H(decoder->output))->ptr));
- decoder->outBuffer[1] = decoder->outBuffer[0];
- decoder->outBufSizes[0] = (XDAS_Int32)((P2H(decoder->output))->size);
- decoder->outBufSizes[1] = decoder->outBufSizes[0];
-
- decoder->outBufs = dce_alloc(sizeof(XDM_BufDesc));
+ decoder->outBuffer = dsp_dce_alloc(sizeof(XDAS_Int8*) * MAX_IO_BUFS);
+ decoder->outBufSizes = dsp_dce_alloc(sizeof(XDAS_Int32)* MAX_IO_BUFS);
+ decoder->inBufs = dsp_dce_alloc(sizeof(XDM1_BufDesc));
+ decoder->inBufs->numBufs = 1;
+ decoder->inBufs->descs[0].buf = (XDAS_Int8 *)omap_bo_dmabuf((struct omap_bo*) decoder->input);
+ decoder->inBufs->descs[0].bufSize = width * height;
+ decoder->outBuffer[0] = (XDAS_Int8*)omap_bo_dmabuf((struct omap_bo*) decoder->output);
+ decoder->outBuffer[1] = decoder->outBuffer[0];
+ decoder->outBufSizes[0] = width * height;
+ decoder->outBufSizes[1] = decoder->outBufSizes[0];
+ decoder->outBufs = dsp_dce_alloc(sizeof(XDM_BufDesc));
decoder->outBufs->numBufs = 2;
decoder->outBufs->bufs = (XDAS_Int8**)decoder->outBuffer;
- decoder->outBufs->bufSizes = &decoder->outBufSizes[0];
+ decoder->outBufs->bufSizes = &decoder->outBufSizes[0];
- decoder->inArgs = dce_alloc(sizeof(IVIDDEC2_InArgs));
+ decoder->inArgs = dsp_dce_alloc(sizeof(IVIDDEC2_InArgs));
decoder->inArgs->size = sizeof(IVIDDEC2_InArgs);
- decoder->outArgs = dce_alloc(sizeof(IVIDDEC2_OutArgs));
+ decoder->outArgs = dsp_dce_alloc(sizeof(IVIDDEC2_OutArgs));
decoder->outArgs->size = sizeof(IVIDDEC2_OutArgs);
- // Fill input buffer with a pattern for testing */
- MSG("Fill first 10 bytes of input buffer with pattern %d\n", pattern);
- for(i = 0; i < 10 ; i++)
- decoder->input[i] = pattern;
+ // Fill input buffer with a pattern for testing */
+ MSG("Fill first 10 bytes of input buffer with pattern %d\n", pattern);
+ for(i = 0; i < 10 ; i++)
+ decoder->input[i] = pattern;
return decoder;
XDM_BufDesc *outBufs = decoder->outBufs;
VIDDEC2_InArgs *inArgs = decoder->inArgs;
VIDDEC2_OutArgs *outArgs = decoder->outArgs;
- XDAS_Int32 err = XDM_EOK, i,j;
+ XDAS_Int32 err = XDM_EOK, j;
err = VIDDEC2_process(decoder->codec, inBufs, outBufs, inArgs, outArgs);
if (err) {
diff --git a/yuvcopytest.c b/yuvcopytest.c
index 0820accef08762c099c131cbdf44496d9b85476f..c90cabba1dbe735599611ec21fa0df5ba0aef724 100644 (file)
--- a/yuvcopytest.c
+++ b/yuvcopytest.c
static void
decoder_close(struct decoder *decoder)
{
+ if(!decoder) goto bailout;
/* free output buffers allocated by display */
disp_free_buffers(decoder->disp,decoder->num_outBuf);
+ if (decoder->params) dsp_dce_free(decoder->params);
+ if (decoder->dynParams) dsp_dce_free(decoder->dynParams);
+ if (decoder->status) dsp_dce_free(decoder->status);
+ if (decoder->inBufs)
+ {
+ close(decoder->inBufs->descs[0].buf);
+ dsp_dce_free(decoder->inBufs);
+ }
+ if (decoder->outBufs) dsp_dce_free(decoder->outBufs);
+ if (decoder->inArgs) dsp_dce_free(decoder->inArgs);
+ if (decoder->outArgs) dsp_dce_free(decoder->outArgs);
+ if (decoder->outBuffer) dsp_dce_free(decoder->outBuffer);
+ if (decoder->outBufSizes) dsp_dce_free(decoder->outBufSizes);
+ if (decoder->input_bo) omap_bo_del(decoder->input_bo);
if (decoder->codec) VIDDEC2_delete(decoder->codec);
if (decoder->engine) Engine_close(decoder->engine);
- if (dev) dce_deinit(dev);
- if (decoder->params) dce_free(decoder->params);
- if (decoder->dynParams) dce_free(decoder->dynParams);
- if (decoder->status) dce_free(decoder->status);
- if (decoder->inBufs) dce_free(decoder->inBufs);
- if (decoder->outBufs) dce_free(decoder->outBufs);
- if (decoder->inArgs) dce_free(decoder->inArgs);
- if (decoder->outArgs) dce_free(decoder->outArgs);
- if (decoder->outBuffer) dce_free(decoder->outBuffer);
- if (decoder->outBufSizes) dce_free(decoder->outBufSizes);
- if (decoder->input_bo) omap_bo_del(decoder->input_bo);
if (decoder->disp) disp_close(decoder->disp);
-
free(decoder);
+bailout:
+ if (dev) dce_deinit(dev);
+
}
static struct decoder *
goto fail;
}
- decoder->params = dce_alloc(sizeof(IVIDDEC2_Params));
+ decoder->params = dsp_dce_alloc(sizeof(IVIDDEC2_Params));
decoder->params->size = sizeof(IVIDDEC2_Params);
decoder->codec = VIDDEC2_create(decoder->engine,
goto fail;
}
- decoder->dynParams = dce_alloc(sizeof(IVIDDEC2_DynamicParams));
+ decoder->dynParams = dsp_dce_alloc(sizeof(IVIDDEC2_DynamicParams));
decoder->dynParams->size = sizeof(IVIDDEC2_DynamicParams);
- decoder->status = dce_alloc(sizeof(IVIDDEC2_Status));
+ decoder->status = dsp_dce_alloc(sizeof(IVIDDEC2_Status));
decoder->status->size = sizeof(IVIDDEC2_Status);
err = VIDDEC2_control(decoder->codec, XDM_SETPARAMS,
goto fail;
}
- decoder->outBuffer = dce_alloc(sizeof(XDAS_Int8*) * MAX_IO_BUFS);
- decoder->outBufSizes = dce_alloc(sizeof(XDAS_Int32)* MAX_IO_BUFS);
+ decoder->outBuffer = dsp_dce_alloc(sizeof(XDAS_Int8*) * MAX_IO_BUFS);
+ decoder->outBufSizes = dsp_dce_alloc(sizeof(XDAS_Int32)* MAX_IO_BUFS);
- decoder->inBufs = dce_alloc(sizeof(XDM1_BufDesc));
+ decoder->inBufs = dsp_dce_alloc(sizeof(XDM1_BufDesc));
decoder->inBufs->numBufs = 1;
decoder->inBufs->descs[0].buf = (XDAS_Int8 *)omap_bo_dmabuf(decoder->input_bo);
decoder->inBufs->descs[0].bufSize = omap_bo_size(decoder->input_bo);
- decoder->outBufs = dce_alloc(sizeof(XDM_BufDesc));
+ decoder->outBufs = dsp_dce_alloc(sizeof(XDM_BufDesc));
decoder->outBufs->numBufs = 2;
decoder->outBufs->bufs = (XDAS_Int8**)decoder->outBuffer;
decoder->outBufs->bufSizes = &decoder->outBufSizes[0];
- decoder->inArgs = dce_alloc(sizeof(IVIDDEC2_InArgs));
+ decoder->inArgs = dsp_dce_alloc(sizeof(IVIDDEC2_InArgs));
decoder->inArgs->size = sizeof(IVIDDEC2_InArgs);
- decoder->outArgs = dce_alloc(sizeof(IVIDDEC2_OutArgs));
+ decoder->outArgs = dsp_dce_alloc(sizeof(IVIDDEC2_OutArgs));
decoder->outArgs->size = sizeof(IVIDDEC2_OutArgs);
return decoder;