OMX_ERRORTYPE WmaDec::AudioFilterReset() { return AudioFilterCodecInit(); }
OMX_ERRORTYPE AudioFilter::ProcessDataBuffer() { OMX_ERRORTYPE ret = OMX_ErrorNone; LOG_LOG("Audio filter In: %d, Out: %d\n", ports[AUDIO_FILTER_INPUT_PORT]->BufferNum(), ports[AUDIO_FILTER_OUTPUT_PORT]->BufferNum()); if(((ports[AUDIO_FILTER_INPUT_PORT]->BufferNum() == 0 && pInBufferHdr == NULL ) || pInBufferHdr != NULL) /**< Ring buffer full */ && (ports[AUDIO_FILTER_OUTPUT_PORT]->BufferNum() == 0 && pOutBufferHdr == NULL)) return OMX_ErrorNoMore; if(pOutBufferHdr == NULL && ports[AUDIO_FILTER_OUTPUT_PORT]->BufferNum() > 0) { ports[AUDIO_FILTER_OUTPUT_PORT]->GetBuffer(&pOutBufferHdr); pOutBufferHdr->nFlags = 0; } if(pInBufferHdr == NULL && ports[AUDIO_FILTER_INPUT_PORT]->BufferNum() > 0) { ports[AUDIO_FILTER_INPUT_PORT]->GetBuffer(&pInBufferHdr); if(pInBufferHdr != NULL) { ret = ProcessInputBufferFlag(); if (ret != OMX_ErrorNone) { LOG_ERROR("Process input buffer flag fail.\n"); return ret; } } } if(pInBufferHdr != NULL) { ret = ProcessInputDataBuffer(); if (ret != OMX_ErrorNone) { LOG_ERROR("Process input data buffer fail.\n"); return ret; } } if (bInstanceReset == OMX_TRUE) { bInstanceReset = OMX_FALSE; ret = AudioFilterInstanceReset(); if (ret != OMX_ErrorNone) { LOG_ERROR("Audio filter instance reset fail.\n"); bDecoderEOS = OMX_TRUE; SendEvent(OMX_EventError, ret, 0, NULL); return ret; } } if (bFirstFrame == OMX_TRUE) { ret = AudioFilterCheckFrameHeader(); if (ret != OMX_ErrorNone) { LOG_ERROR("AudioFilterCheckFrameHeader fail.\n"); } } LOG_LOG("Audio Filter Ringbuffer data len: %d\n", AudioRingBuffer.AudioDataLen()); if ((AudioRingBuffer.AudioDataLen() < nPushModeInputLen && bReceivedEOS == OMX_FALSE) || bDecoderEOS == OMX_TRUE) { LOG_DEBUG("Input buffer is not enough for filter.\n"); if(ports[AUDIO_FILTER_INPUT_PORT]->BufferNum() > 0) return OMX_ErrorNone; else return OMX_ErrorNoMore; } if (bCodecInit == OMX_FALSE) { bCodecInit = OMX_TRUE; ret = AudioFilterCodecInit(); if (ret != OMX_ErrorNone) { LOG_ERROR("Audio decoder codec init fail.\n"); bDecoderInitFail = OMX_TRUE; } } if(pOutBufferHdr != NULL) { ret = ProcessOutputDataBuffer(); if (ret != OMX_ErrorNone) LOG_ERROR("Process Output data buffer fail.\n"); } return OMX_ErrorNone; }