00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #pragma once
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 typedef struct tagDOLBYAC3WAVEFORMAT
00036 {
00037 WAVEFORMATEX wfx;
00038 BYTE bBigEndian;
00039 BYTE bsid;
00040 BYTE lfeon;
00041 BYTE copyrightb;
00042 BYTE nAuxBitsCode;
00043 } DOLBYAC3WAVEFORMAT;
00044
00045
00046
00047
00048
00049 [uuid("93230DD0-7B3C-4efb-AFBB-DC380FEC9E6B")]
00050 class CAVI2AC3Filter : public CTransformFilter
00051 {
00052 bool CheckAC3(const CMediaType* pmt);
00053 bool CheckDTS(const CMediaType* pmt);
00054 bool CheckWAVEAC3(const CMediaType* pmt);
00055 bool CheckWAVEDTS(const CMediaType* pmt);
00056
00057 public:
00058 CAVI2AC3Filter(LPUNKNOWN lpunk, HRESULT* phr);
00059 virtual ~CAVI2AC3Filter();
00060
00061 HRESULT Transform(IMediaSample* pIn, IMediaSample* pOut);
00062 HRESULT CheckInputType(const CMediaType* mtIn);
00063 HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut);
00064 HRESULT DecideBufferSize(IMemAllocator* pAllocator, ALLOCATOR_PROPERTIES* pProperties);
00065 HRESULT GetMediaType(int iPosition, CMediaType* pMediaType);
00066 };