| /* |
| * OMAP3430 support |
| * |
| * Author: Michael Barabanov <michael.barabanov@windriver.com> |
| * Author: Srini Gosangi <srini.gosangi@windriver.com> |
| |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either |
| * express or implied. |
| * See the License for the specific language governing permissions |
| */ |
| |
| /* ------------------------------------------------------------------ |
| * Copyright (C) 2008 PacketVideo |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either |
| * express or implied. |
| * See the License for the specific language governing permissions |
| * and limitations under the License. |
| * ------------------------------------------------------------------- |
| */ |
| |
| #define LOG_NDEBUG 0 |
| #define LOG_TAG "BufferAllocOmap34xx" |
| #include <utils/Log.h> |
| |
| #include "buffer_alloc_omap34xx.h" |
| #include "oscl_mem.h" // needed for oscl_malloc / oscl_free |
| |
| /* based on test code in pvmi/media_io/pvmiofileoutput/src/pvmi_media_io_fileoutput.cpp */ |
| |
| BufferAllocOmap34xx::BufferAllocOmap34xx(): refCount(0), bufferSize(0), maxBuffers(4), numAllocated(0) |
| { |
| } |
| |
| BufferAllocOmap34xx::~BufferAllocOmap34xx() |
| { |
| |
| } |
| |
| OSCL_EXPORT_REF void BufferAllocOmap34xx::addRef() |
| { |
| ++refCount; |
| } |
| |
| OSCL_EXPORT_REF void BufferAllocOmap34xx::removeRef() |
| { |
| --refCount; |
| if (refCount <= 0) |
| { |
| LOGV("BufferAllocOmap34xx::removeRef()"); |
| // this->~BufferAllocOmap34xx(); |
| } |
| } |
| |
| |
| OSCL_EXPORT_REF OsclAny* BufferAllocOmap34xx::allocate() |
| { |
| if (numAllocated < maxBuffers) |
| { |
| OsclAny* ptr = buffer_address[numAllocated]; |
| if (ptr) ++numAllocated; |
| return ptr; |
| } |
| return NULL; |
| } |
| |
| OSCL_EXPORT_REF void BufferAllocOmap34xx::deallocate(OsclAny* ptr) |
| { |
| if (ptr) |
| { |
| --numAllocated; |
| } |
| } |
| |
| OSCL_EXPORT_REF uint32 BufferAllocOmap34xx::getBufferSize() |
| { |
| return bufferSize; |
| } |
| |
| OSCL_EXPORT_REF uint32 BufferAllocOmap34xx::getNumBuffers() |
| { |
| return maxBuffers; |
| } |
| |
| |
| OSCL_EXPORT_REF bool BufferAllocOmap34xx::queryInterface(const PVUuid& uuid, PVInterface*& aInterface) |
| { |
| aInterface = NULL; // initialize aInterface to NULL in case uuid is not supported |
| |
| if (PVMFFixedSizeBufferAllocUUID == uuid) |
| { |
| // Send back ptr to the allocator interface object |
| PVMFFixedSizeBufferAlloc* myInterface = OSCL_STATIC_CAST(PVMFFixedSizeBufferAlloc*, this); |
| refCount++; // increment interface refcount before returning ptr |
| aInterface = OSCL_STATIC_CAST(PVInterface*, myInterface); |
| return true; |
| } |
| return false; |
| } |