• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * OMAP3430 support
3  *
4  * Author: Michael Barabanov <michael.barabanov@windriver.com>
5  * Author: Srini Gosangi <srini.gosangi@windriver.com>
6 
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
16  * express or implied.
17  * See the License for the specific language governing permissions
18  */
19 
20 /* ------------------------------------------------------------------
21  * Copyright (C) 2008 PacketVideo
22  *
23  * Licensed under the Apache License, Version 2.0 (the "License");
24  * you may not use this file except in compliance with the License.
25  * You may obtain a copy of the License at
26  *
27  *      http://www.apache.org/licenses/LICENSE-2.0
28  *
29  * Unless required by applicable law or agreed to in writing, software
30  * distributed under the License is distributed on an "AS IS" BASIS,
31  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
32  * express or implied.
33  * See the License for the specific language governing permissions
34  * and limitations under the License.
35  * -------------------------------------------------------------------
36  */
37 
38 #define LOG_NDEBUG 0
39 #define LOG_TAG "BufferAllocOmap34xx"
40 #include <utils/Log.h>
41 
42 #include "buffer_alloc_omap34xx.h"
43 #include "oscl_mem.h" // needed for oscl_malloc / oscl_free
44 
45 /* based on test code in pvmi/media_io/pvmiofileoutput/src/pvmi_media_io_fileoutput.cpp */
46 
BufferAllocOmap34xx()47 BufferAllocOmap34xx::BufferAllocOmap34xx(): refCount(0), bufferSize(0), maxBuffers(4), numAllocated(0)
48 {
49 }
50 
~BufferAllocOmap34xx()51 BufferAllocOmap34xx::~BufferAllocOmap34xx()
52 {
53 
54 }
55 
addRef()56 OSCL_EXPORT_REF void BufferAllocOmap34xx::addRef()
57 {
58     ++refCount;
59 }
60 
removeRef()61 OSCL_EXPORT_REF void BufferAllocOmap34xx::removeRef()
62 {
63     --refCount;
64     if (refCount <= 0)
65     {
66     	LOGV("BufferAllocOmap34xx::removeRef()");
67        // this->~BufferAllocOmap34xx();
68     }
69 }
70 
71 
allocate()72 OSCL_EXPORT_REF OsclAny* BufferAllocOmap34xx::allocate()
73 {
74     if (numAllocated < maxBuffers)
75     {
76         OsclAny* ptr = buffer_address[numAllocated];
77         if (ptr) ++numAllocated;
78         return ptr;
79     }
80     return NULL;
81 }
82 
deallocate(OsclAny * ptr)83 OSCL_EXPORT_REF void BufferAllocOmap34xx::deallocate(OsclAny* ptr)
84 {
85     if (ptr)
86     {
87         --numAllocated;
88     }
89 }
90 
getBufferSize()91 OSCL_EXPORT_REF uint32 BufferAllocOmap34xx::getBufferSize()
92 {
93     return bufferSize;
94 }
95 
getNumBuffers()96 OSCL_EXPORT_REF uint32 BufferAllocOmap34xx::getNumBuffers()
97 {
98     return maxBuffers;
99 }
100 
101 
queryInterface(const PVUuid & uuid,PVInterface * & aInterface)102 OSCL_EXPORT_REF bool BufferAllocOmap34xx::queryInterface(const PVUuid& uuid, PVInterface*& aInterface)
103 {
104     aInterface = NULL; // initialize aInterface to NULL in case uuid is not supported
105 
106     if (PVMFFixedSizeBufferAllocUUID == uuid)
107     {
108         // Send back ptr to the allocator interface object
109         PVMFFixedSizeBufferAlloc* myInterface	= OSCL_STATIC_CAST(PVMFFixedSizeBufferAlloc*, this);
110         refCount++; // increment interface refcount before returning ptr
111         aInterface = OSCL_STATIC_CAST(PVInterface*, myInterface);
112         return true;
113     }
114     return false;
115 }
116