--- a/multimediacommscontroller/mmccanysourcesink/src/mccanysource.cpp Mon Aug 23 17:50:26 2010 +0300
+++ b/multimediacommscontroller/mmccanysourcesink/src/mccanysource.cpp Mon Sep 06 17:32:13 2010 +0530
@@ -24,6 +24,7 @@
#include "mccanysourcesinklogs.h"
#include "mccinternalevents.h"
#include "mccinternaldef.h"
+#include "mccdatareceiver.h"
// ============================ MEMBER FUNCTIONS ===============================
@@ -48,6 +49,7 @@
void CMccAnySource::ConstructSourceL( const TDesC8& /*aInitData*/ )
{
__ANYSOURCESINK_CONTROLL( "CMccAnySource::ConstructSourceL" )
+ iDataReceiver = CMccDataReceiver::NewL( *this );
}
// -----------------------------------------------------------------------------
@@ -65,6 +67,11 @@
CMccAnySource::~CMccAnySource()
{
__ANYSOURCESINK_CONTROLL( "CMccAnySource::~CMccAnySource" )
+
+ iBufferToBeFilled = NULL;
+ iConsumer = NULL;
+
+ delete iDataReceiver;
}
@@ -213,12 +220,13 @@
// -----------------------------------------------------------------------------
//
void CMccAnySource::FillBufferL(
- CMMFBuffer* /*aBuffer*/,
- MDataSink* /*aConsumer*/,
+ CMMFBuffer* aBuffer,
+ MDataSink* aConsumer,
TMediaId /*aMediaId*/ )
{
__ANYSOURCESINK_CONTROLL( "CMccAnySource::FillBufferL" )
- User::Leave( KErrNotSupported );
+ iBufferToBeFilled = aBuffer;
+ iConsumer = aConsumer;
}
// -----------------------------------------------------------------------------
@@ -259,5 +267,27 @@
}
}
+// -----------------------------------------------------------------------------
+// CMccAnySource::DataReceivedL
+// -----------------------------------------------------------------------------
+//
+void CMccAnySource::DataReceivedL( const TDesC8& aData )
+ {
+ __ANYSOURCESINK_CONTROLL( "CMccAnySource::DataReceivedL, Entry" )
+
+ if ( iBufferToBeFilled && iConsumer )
+ {
+ CMMFDataBuffer* buffer = static_cast<CMMFDataBuffer*>(iBufferToBeFilled);
+
+ if (buffer->Data().MaxLength() >= aData.Length())
+ {
+ buffer->Data().Copy( aData );
+ iConsumer->BufferFilledL( iBufferToBeFilled );
+ iBufferToBeFilled = 0;
+ iConsumer = 0;
+ }
+ }
+ }
+
// End of file