00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef PV_PLUGIN_INTERFACES_H_INCLUDED
00013 #define PV_PLUGIN_INTERFACES_H_INCLUDED
00014
00015
00016
00017 #include "pv_common_symbian_types.h"
00018
00019
00026 const TInt KPVUidDataSrcPrime = 0xFFFFFF08;
00027 const TInt KPVUidDataSrcPlay = 0xFFFFFF09;
00028 const TInt KPVUidDataSrcPause = 0xFFFFFF0A;
00029 const TInt KPVUidDataSrcStop = 0xFFFFFF0B;
00030
00044 const TInt KPVUidDataSinkPrime = 0xFFFFFF0C;
00045 const TInt KPVUidDataSinkPlay = 0xFFFFFF0D;
00046 const TInt KPVUidDataSinkPause = 0xFFFFFF0E;
00047 const TInt KPVUidDataSinkStop = 0xFFFFFF0F;
00048
00049
00060 const TUid KPVUidYUVFrameBuffer = {0xFFFFFF0d};
00061
00062
00063
00067 #define KPVUidAudioInputInterface TPVUuid(0x194e8655,0x944c,0x402c,0xb0,0xc2,0xf7,0xbd,0xd5,0xe5,0x43,0x2f)
00068
00071 #define KPVUidDevSoundAudioInputInterface TPVUuid(0x9e2c416e,0x0299,0x4775,0x88,0xfa,0x42,0x53,0xbc,0xbc,0x58,0xbf)
00072
00075 #define KPVUidAudioOutputInterface TPVUuid(0xf5c5b825,0x90eb,0x4091,0xbe,0xea,0xa0,0xc3,0x9b,0xe2,0x00,0xaf)
00076
00079 #define KPVUidDevSoundAudioOutputInterface TPVUuid(0x48edb46a,0x60e4,0x4e83,0xb1,0xad,0x92,0xa8,0xd4,0x07,0x04,0x7a)
00080
00083 #define KPVUidVideoInputInterface TPVUuid(0xfb320151,0x6d06,0x4bd5,0xa2,0x68,0x61,0x01,0xdb,0x25,0x1c,0x0e)
00084
00087 #define KPVUidVideoOutputInterface TPVUuid(0x0bb9d8a8,0x9623,0x4dec,0x84,0x0b,0xb9,0xf2,0x66,0xf8,0x4e,0x3d)
00088
00091 #define KPVUidProxiedInterface TPVUuid(0xf7076653,0x6088,0x47c6,0x88,0xc1,0xb7,0xed,0x28,0xe7,0x2b,0xea)
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00110 class MPVPluginBase
00111 {
00112 public:
00113 virtual ~MPVPluginBase() {}
00114
00121 IMPORT_C virtual const RArray<TPVMIMEType *>& GetMultimediaTypesL() const = 0;
00122
00136 IMPORT_C virtual void QueryUUID(const TPVMIMEType& aMimeType, RArray<TPVUuid>& aUuids, bool aExactUuidsOnly = false) = 0;
00137
00148 IMPORT_C virtual void QueryInterface(const TPVUuid& aUuid, TPVInterfacePtr& aInterfacePtr) = 0;
00149 };
00150
00151
00152
00153 #if defined USE_MMF_DATA_PATH
00154
00155 #define MPVDataSourceBase MDataSource
00156 #define MPVDataSinkBase MDataSink
00157
00158 #else
00159
00160
00161 class MPVDataSinkBase;
00162
00168 class MPVDataSourceBase
00169 {
00170 public:
00171 MPVDataSourceBase(TUid aType): iDataSourceType(aType) {}
00172 virtual ~MPVDataSourceBase() {}
00173
00194 virtual void FillBufferL(CMMFBuffer* aBuffer, MPVDataSinkBase* aConsumer, TMediaId ) = 0;
00195
00207 virtual void BufferEmptiedL(CMMFBuffer* aBuffer) = 0;
00208
00216 virtual TBool CanCreateSourceBuffer() = 0;
00217
00236 virtual CMMFBuffer* CreateSourceBufferL(TMediaId , TBool &)
00237 {
00238 return NULL;
00239 }
00240
00241
00264 virtual CMMFBuffer* CreateSourceBufferL(TMediaId , CMMFBuffer& , TBool &)
00265 {
00266 return NULL;
00267 }
00268
00269
00290 virtual TInt SourceThreadLogon(MAsyncEventHandler& )
00291 {
00292 return KErrNone;
00293 }
00294
00305 virtual void SourceThreadLogoff() {};
00306
00313 virtual TInt SourcePrimeL()
00314 {
00315 return 0;
00316 }
00317
00324 virtual TInt SourcePlayL()
00325 {
00326 return 0;
00327 };
00328
00335 virtual TInt SourcePauseL()
00336 {
00337 return 0;
00338 };
00339
00346 virtual TInt SourceStopL()
00347 {
00348 return 0;
00349 };
00350 private:
00351 TUid iDataSourceType;
00352 };
00353
00354
00360 class MPVDataSinkBase
00361 {
00362 public:
00363 MPVDataSinkBase(TUid aType): iDataSinkType(aType) {}
00364 virtual ~MPVDataSinkBase() {}
00365
00386 virtual void EmptyBufferL(CMMFBuffer* aBuffer, MPVDataSourceBase* aSupplier, TMediaId ) = 0;
00387
00399 virtual void BufferFilledL(CMMFBuffer* aBuffer) = 0;
00400
00408 virtual TBool CanCreateSinkBuffer() = 0;
00409
00428 virtual CMMFBuffer* CreateSinkBufferL(TMediaId , TBool &)
00429 {
00430 return NULL;
00431 }
00432
00453 virtual TInt SinkThreadLogon(MAsyncEventHandler& )
00454 {
00455 return KErrNone;
00456 };
00457
00468 virtual void SinkThreadLogoff() {};
00469
00476 virtual TInt SinkPrimeL()
00477 {
00478 return 0;
00479 };
00480
00487 virtual TInt SinkPlayL()
00488 {
00489 return 0;
00490 };
00491
00498 virtual TInt SinkPauseL()
00499 {
00500 return 0;
00501 };
00502
00509 virtual TInt SinkStopL()
00510 {
00511 return 0;
00512 };
00513 private:
00514 TUid iDataSinkType;
00515 };
00516
00517 #endif
00518
00519
00520
00527 class MPVDataSource : public MPVPluginBase, public MPVDataSourceBase
00528 {
00529 public:
00530 MPVDataSource(TUid aSourceType) : MPVDataSourceBase(aSourceType) {}
00531 virtual ~MPVDataSource() {}
00532 };
00533
00534
00541 class MPVDataSink : public MPVPluginBase, public MPVDataSinkBase
00542 {
00543 public:
00544 MPVDataSink(TUid aSinkType) : MPVDataSinkBase(aSinkType) {}
00545 virtual ~MPVDataSink() {}
00546 };
00547
00548
00553 class MPVDataSourceAndSink :
00554 public MPVPluginBase,
00555 public MPVDataSourceBase,
00556 public MPVDataSinkBase
00557 {
00558 public:
00559 MPVDataSourceAndSink(TUid aSourceType, TUid aSinkType) :
00560 MPVDataSourceBase(aSourceType),
00561 MPVDataSinkBase(aSinkType)
00562 {}
00563 virtual ~MPVDataSourceAndSink() {}
00564 };
00565
00566
00581 class MPVAudioInput
00582 {
00583 public:
00584
00585 IMPORT_C virtual void SetFormatL(const TDesC8& aFormat, const TDesC8& aFmtSpecific, TInt &aMaxRequestSize) = 0;
00586
00587
00588 IMPORT_C virtual void SetConfigL(const TDesC8& aSampleRate
00589 , const TDesC8& aChannels) = 0;
00590
00591
00592 IMPORT_C virtual void CancelCommand() = 0;
00593
00594
00595 IMPORT_C virtual TInt Reset() = 0;
00596 };
00597
00598
00599
00600 class MPVDevSoundAudioInput
00601 {
00602 public:
00603 IMPORT_C virtual void SetPrioritySettings(const TMMFPrioritySettings &aSettings) = 0;
00604 IMPORT_C virtual void SetInputFormatL(const TDesC8& aFormat, MPVDataSourceBase *) = 0;
00605 IMPORT_C virtual TPVAudioOutputSwitch OutputSwitch() = 0;
00606 IMPORT_C virtual TBool FillAmrBuffersToEnd() = 0;
00607 };
00608
00609
00616 class MPVAudioOutput
00617 {
00618 public:
00619
00620 IMPORT_C virtual void SetFormatL(const TDesC8& aFormat) = 0;
00621
00622 IMPORT_C virtual void SetConfigL(const TDesC8& aSampleRate
00623 , const TDesC8& aChannels) = 0;
00624
00625 IMPORT_C virtual void CancelCommand() = 0;
00626
00627 IMPORT_C virtual TInt Reset() = 0;
00628 };
00629
00630
00631
00632 class MPVDevSoundAudioOutput
00633 {
00634 public:
00635 IMPORT_C virtual void SetPrioritySettings(const TMMFPrioritySettings &aSettings) = 0;
00636 IMPORT_C virtual void ConcealErrorForNextBuffer() = 0;
00637 IMPORT_C virtual void SetOutputFormatL(const TDesC8& aFormat, const TDesC8& aFmtSpecific, MPVDataSinkBase* aConsumer, TInt &aMaxRequestSize) = 0;
00638 IMPORT_C virtual TPVAudioOutputSwitch OutputSwitch() = 0;
00639 IMPORT_C virtual TBool FillAmrBuffersToEnd() = 0;
00640 };
00641
00642
00649 class MPVVideoInput
00650 {
00651 public:
00652
00658 IMPORT_C virtual void SetFormatL(const TDesC8& aFormat) = 0;
00659
00666 IMPORT_C virtual void SetFrameRateL(TReal32 aFrameRate) = 0;
00667
00673 IMPORT_C virtual void SetVideoFrameSizeL(const TSize& aSize) = 0;
00674
00680 IMPORT_C virtual void GetVideoFrameSizeL(TSize& aSize) const = 0;
00681 };
00682
00683
00690 class MPVVideoOutput
00691 {
00692 public:
00698 IMPORT_C virtual void SetFormatL(const TDesC8& aFormat) = 0;
00699
00705 IMPORT_C virtual void SetVideoFrameSizeL(const TSize& aSize) = 0;
00706
00712 IMPORT_C virtual void GetVideoFrameSizeL(TSize& aSize) const = 0;
00713 };
00714
00715
00716 typedef TAny* RPvCommServer;
00717
00725 typedef MPVPluginBase MPVCommServerBase;
00726
00727 class MPVYuvFrameBuffer
00728 {
00729 public:
00730 virtual ~MPVYuvFrameBuffer() {}
00731 virtual TSize GetFrameSize()const = 0;
00732 };
00733
00734
00735 #define PV_YUV_BUFFER_DEF_WIDTH 176
00736 #define PV_YUV_BUFFER_DEF_HEIGHT 144
00737 class CPVMMFPointerBuffer : public CMMFDataBuffer, public MPVYuvFrameBuffer
00738 {
00739 public:
00740 static CPVMMFPointerBuffer* NewL()
00741 {
00742 CPVMMFPointerBuffer* buf = new(ELeave) CPVMMFPointerBuffer();
00743 return buf;
00744 }
00745 ~CPVMMFPointerBuffer()
00746 {
00747 }
00748 virtual TDes8& Data()
00749 {
00750 return iPtr;
00751 }
00752 virtual const TDesC8& Data() const
00753 {
00754 return iPtr;
00755 }
00756 virtual void SetRequestSizeL(TInt aSize)
00757 {
00758 (void)(aSize);
00759 }
00760 virtual TUint BufferSize() const
00761 {
00762 return iPtr.Size();
00763 }
00764 void SetData(TUint8* aData, TInt aLength)
00765 {
00766 iPtr.Set(aData, aLength, aLength);
00767 }
00768
00769 void SetFrameSize(const TSize& size)
00770 {
00771 iFrameSize = size;
00772 }
00773
00774
00775 virtual TSize GetFrameSize()const
00776 {
00777 return iFrameSize;
00778 }
00779 private:
00780 CPVMMFPointerBuffer() : CMMFDataBuffer(KPVUidYUVFrameBuffer),
00781 iPtr(0, 0, 0),
00782 iFrameSize(TSize(PV_YUV_BUFFER_DEF_WIDTH, PV_YUV_BUFFER_DEF_HEIGHT)) {};
00783
00784 private:
00785 TPtr8 iPtr;
00786 TSize iFrameSize;
00787 };
00788 #endif //
00789
00790