rendered paste bodystatic GstFlowReturn
gst_gomx_audio_chain (GstBaseSink *bsink,
GstBuffer *buf)
{
GstGOmxFilter *self;
GOmxCore *gomx;
GstFlowReturn ret = GST_FLOW_OK;
GstBuffer *output_adapter;
self = GST_GOMX_SINK (bsink);
gomx = self->gomx;
if (self->info->id == GST_ELEMENT_AAC_FILTER &&
gomx->ports[0]->buffer_size > GST_BUFFER_SIZE (buf) )
{
GST_DEBUG_OBJECT(self, "AAC filter adapter process");
gst_adapter_push (self->adapter, buf);
GST_DEBUG_OBJECT(self, "adapter availabe data: %d", gst_adapter_available (self->adapter));
while (gst_adapter_available (self->adapter) >= 2000)
{
GST_DEBUG_OBJECT (self, "got enough info: %d", gst_adapter_available (self->adapter));
g_omx_sem_down (self->input_ready);
GST_DEBUG_OBJECT (self, "About to peek from adapter %p", self->adapter);
output_adapter = gst_adapter_take_buffer (self->adapter, 2000);
memcpy (gomx->omx_buffer->pBuffer, GST_BUFFER_DATA (output_adapter), GST_BUFFER_SIZE (output_adapter));
gomx->omx_buffer->nFilledLen = GST_BUFFER_SIZE (output_adapter));
g_omx_sem_up (self->input_filled);
gst_buffer_unref (output_adapter);
GST_DEBUG_OBJECT(self, " Sent data to openmax");
}
GST_DEBUG_OBJECT(self, "AAC sink adapter process exit");
}
[...]