Home | History | Annotate | Download | only in src
      1 /* ------------------------------------------------------------------
      2  * Copyright (C) 1998-2009 PacketVideo
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13  * express or implied.
     14  * See the License for the specific language governing permissions
     15  * and limitations under the License.
     16  * -------------------------------------------------------------------
     17  */
     18 #include "pvmf_buffer_data_sink.h"
     19 
     20 OSCL_EXPORT_REF PVMFBufferDataSink::PVMFBufferDataSink(int32 aPortTag)
     21         : PvmfPortBaseImpl(aPortTag, this)
     22 {
     23     iNumBytesReceived = 0;
     24     iNumPktsReceived = 0;
     25     iNumPktErrorsReceived = 0;
     26 }
     27 
     28 OSCL_EXPORT_REF PVMFBufferDataSink::~PVMFBufferDataSink()
     29 {
     30 }
     31 
     32 void PVMFBufferDataSink::HandlePortActivity(const PVMFPortActivity &aActivity)
     33 {
     34     if (aActivity.iType != PVMF_PORT_ACTIVITY_INCOMING_MSG)
     35         return;
     36     PVMFSharedMediaMsgPtr aMsg;
     37     PVMFStatus aStatus;
     38     while (IncomingMsgQueueSize())
     39     {
     40         aStatus = DequeueIncomingMsg(aMsg);
     41         PutData(aMsg);
     42     }
     43 }
     44 
     45 // PVMFPortInterface virtuals
     46 
     47 PVMFStatus PVMFBufferDataSink::PutData(PVMFSharedMediaMsgPtr aMsg)
     48 {
     49     OSCL_UNUSED_ARG(aMsg);
     50     iNumPktsReceived++;
     51     PVMFSharedMediaDataPtr mediaData;
     52     convertToPVMFMediaData(mediaData, aMsg);
     53     iNumBytesReceived += (mediaData->getFilledSize());
     54     if (mediaData->getErrorsFlag())
     55         iNumPktErrorsReceived++;
     56     return PVMFSuccess;
     57 }
     58 
     59 PVMFStatus PVMFBufferDataSink::GetData(PVMFSharedMediaMsgPtr aMsg)
     60 {
     61     OSCL_UNUSED_ARG(aMsg);
     62     return PVMFSuccess;
     63 }
     64 
     65 OSCL_EXPORT_REF unsigned PVMFBufferDataSink::GetNumBytesReceived()
     66 {
     67     return iNumBytesReceived;
     68 }
     69 
     70 OSCL_EXPORT_REF unsigned PVMFBufferDataSink::GetNumPktsReceived()
     71 {
     72     return iNumPktsReceived;
     73 }
     74 
     75 OSCL_EXPORT_REF unsigned PVMFBufferDataSink::GetNumPktErrorsReceived()
     76 {
     77     return iNumPktErrorsReceived;
     78 }
     79 
     80 OSCL_EXPORT_REF void PVMFBufferDataSink::setObserver(PvmiConfigAndCapabilityCmdObserver* aObserver)
     81 {
     82     OSCL_UNUSED_ARG(aObserver);
     83 }
     84 
     85 OSCL_EXPORT_REF PVMFStatus PVMFBufferDataSink::getParametersSync(PvmiMIOSession aSession, PvmiKeyType aIdentifier,
     86         PvmiKvp*& aParameters, int& num_parameter_elements,
     87         PvmiCapabilityContext aContext)
     88 {
     89     OSCL_UNUSED_ARG(aSession);
     90     OSCL_UNUSED_ARG(aIdentifier);
     91     OSCL_UNUSED_ARG(aParameters);
     92     OSCL_UNUSED_ARG(num_parameter_elements);
     93     OSCL_UNUSED_ARG(aContext);
     94 
     95     return PVMFSuccess;
     96 }
     97 
     98 OSCL_EXPORT_REF PVMFStatus PVMFBufferDataSink::releaseParameters(PvmiMIOSession aSession, PvmiKvp* aParameters, int num_elements)
     99 {
    100     OSCL_UNUSED_ARG(aSession);
    101     OSCL_UNUSED_ARG(aParameters);
    102     OSCL_UNUSED_ARG(num_elements);
    103 
    104     return PVMFSuccess;
    105 }
    106 
    107 OSCL_EXPORT_REF void PVMFBufferDataSink::createContext(PvmiMIOSession aSession, PvmiCapabilityContext& aContext)
    108 {
    109     OSCL_UNUSED_ARG(aSession);
    110     OSCL_UNUSED_ARG(aContext);
    111 }
    112 
    113 OSCL_EXPORT_REF void PVMFBufferDataSink::setContextParameters(PvmiMIOSession aSession, PvmiCapabilityContext& aContext,
    114         PvmiKvp* aParameters, int num_parameter_elements)
    115 {
    116     OSCL_UNUSED_ARG(aSession);
    117     OSCL_UNUSED_ARG(aContext);
    118     OSCL_UNUSED_ARG(aParameters);
    119     OSCL_UNUSED_ARG(num_parameter_elements);
    120 }
    121 
    122 OSCL_EXPORT_REF void PVMFBufferDataSink::DeleteContext(PvmiMIOSession aSession, PvmiCapabilityContext& aContext)
    123 {
    124     OSCL_UNUSED_ARG(aSession);
    125     OSCL_UNUSED_ARG(aContext);
    126 }
    127 
    128 OSCL_EXPORT_REF void PVMFBufferDataSink::setParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters,
    129         int num_elements, PvmiKvp * & aRet_kvp)
    130 {
    131     OSCL_UNUSED_ARG(aSession);
    132     OSCL_UNUSED_ARG(aParameters);
    133     OSCL_UNUSED_ARG(num_elements);
    134     OSCL_UNUSED_ARG(aRet_kvp);
    135 }
    136 
    137 OSCL_EXPORT_REF PVMFCommandId PVMFBufferDataSink::setParametersAsync(PvmiMIOSession aSession, PvmiKvp* aParameters,
    138         int num_elements, PvmiKvp*& aRet_kvp, OsclAny* context)
    139 {
    140     OSCL_UNUSED_ARG(aSession);
    141     OSCL_UNUSED_ARG(aParameters);
    142     OSCL_UNUSED_ARG(num_elements);
    143     OSCL_UNUSED_ARG(aRet_kvp);
    144     OSCL_UNUSED_ARG(context);
    145 
    146     OSCL_LEAVE(OsclErrNotSupported);
    147     return -1;
    148 }
    149 
    150 OSCL_EXPORT_REF uint32 PVMFBufferDataSink::getCapabilityMetric(PvmiMIOSession aSession)
    151 {
    152     OSCL_UNUSED_ARG(aSession);
    153 
    154     return 1;
    155 }
    156 
    157 OSCL_EXPORT_REF PVMFStatus PVMFBufferDataSink::verifyParametersSync(PvmiMIOSession aSession, PvmiKvp* aParameters, int num_elements)
    158 {
    159     OSCL_UNUSED_ARG(aSession);
    160     OSCL_UNUSED_ARG(aParameters);
    161     OSCL_UNUSED_ARG(num_elements);
    162 
    163     OSCL_LEAVE(OsclErrNotSupported);
    164     return PVMFFailure;
    165 }
    166 
    167 OSCL_EXPORT_REF void PVMFBufferDataSink::QueryInterface(const PVUuid& aUuid, OsclAny*& aPtr)
    168 {
    169     aPtr = NULL;
    170     if (aUuid == PVMI_CAPABILITY_AND_CONFIG_PVUUID)
    171     {
    172         aPtr = (PvmiCapabilityAndConfig*)this;
    173     }
    174     else
    175     {
    176         OSCL_LEAVE(OsclErrNotSupported);
    177     }
    178 }
    179