wince.net directshow开发

 DS接口代码:

using System;
using System.Runtime.InteropServices;

namespace ImenuPDA
{
    [ComVisible(false)]
    public enum PinDirection  // PIN_DIRECTION
    {
        Input,  // PINDIR_INPUT
        Output  // PINDIR_OUTPUT
    }

    public enum DsEvCode
    {
        None,
        Complete = 0x01,  // EC_COMPLETE
        UserAbort = 0x02,  // EC_USERABORT
        ErrorAbort = 0x03,  // EC_ERRORABORT
        Time = 0x04,  // EC_TIME
        Repaint = 0x05,  // EC_REPAINT
        StErrStopped = 0x06,  // EC_STREAM_ERROR_STOPPED
        StErrStPlaying = 0x07,  // EC_STREAM_ERROR_STILLPLAYING
        ErrorStPlaying = 0x08,  // EC_ERROR_STILLPLAYING
        PaletteChanged = 0x09,  // EC_PALETTE_CHANGED
        VideoSizeChanged = 0x0a,  // EC_VIDEO_SIZE_CHANGED
        QualityChange = 0x0b,  // EC_QUALITY_CHANGE
        ShuttingDown = 0x0c,  // EC_SHUTTING_DOWN
        ClockChanged = 0x0d,  // EC_CLOCK_CHANGED
        Paused = 0x0e,  // EC_PAUSED
        OpeningFile = 0x10,  // EC_OPENING_FILE
        BufferingData = 0x11,  // EC_BUFFERING_DATA
        FullScreenLost = 0x12,  // EC_FULLSCREEN_LOST
        Activate = 0x13,  // EC_ACTIVATE
        NeedRestart = 0x14,  // EC_NEED_RESTART
        WindowDestroyed = 0x15,  // EC_WINDOW_DESTROYED
        DisplayChanged = 0x16,  // EC_DISPLAY_CHANGED
        Starvation = 0x17,  // EC_STARVATION
        OleEvent = 0x18,  // EC_OLE_EVENT
        NotifyWindow = 0x19,  // EC_NOTIFY_WINDOW
        // EC_ ....

        // DVDevCod.h
        DvdDomChange = 0x101, // EC_DVD_DOMAIN_CHANGE
        DvdTitleChange = 0x102, // EC_DVD_TITLE_CHANGE
        DvdChaptStart = 0x103, // EC_DVD_CHAPTER_START
        DvdAudioStChange = 0x104, // EC_DVD_AUDIO_STREAM_CHANGE

        DvdSubPicStChange = 0x105, // EC_DVD_SUBPICTURE_STREAM_CHANGE
        DvdAngleChange = 0x106, // EC_DVD_ANGLE_CHANGE
        DvdButtonChange = 0x107, // EC_DVD_BUTTON_CHANGE
        DvdValidUopsChange = 0x108, // EC_DVD_VALID_UOPS_CHANGE
        DvdStillOn = 0x109, // EC_DVD_STILL_ON
        DvdStillOff = 0x10a, // EC_DVD_STILL_OFF
        DvdCurrentTime = 0x10b, // EC_DVD_CURRENT_TIME
        DvdError = 0x10c, // EC_DVD_ERROR
        DvdWarning = 0x10d, // EC_DVD_WARNING
        DvdChaptAutoStop = 0x10e, // EC_DVD_CHAPTER_AUTOSTOP
        DvdNoFpPgc = 0x10f, // EC_DVD_NO_FP_PGC
        DvdPlaybRateChange = 0x110, // EC_DVD_PLAYBACK_RATE_CHANGE
        DvdParentalLChange = 0x111, // EC_DVD_PARENTAL_LEVEL_CHANGE
        DvdPlaybStopped = 0x112, // EC_DVD_PLAYBACK_STOPPED
        DvdAnglesAvail = 0x113, // EC_DVD_ANGLES_AVAILABLE
        DvdPeriodAStop = 0x114, // EC_DVD_PLAYPERIOD_AUTOSTOP
        DvdButtonAActivated = 0x115, // EC_DVD_BUTTON_AUTO_ACTIVATED
        DvdCmdStart = 0x116, // EC_DVD_CMD_START
        DvdCmdEnd = 0x117, // EC_DVD_CMD_END
        DvdDiscEjected = 0x118, // EC_DVD_DISC_EJECTED
        DvdDiscInserted = 0x119, // EC_DVD_DISC_INSERTED
        DvdCurrentHmsfTime = 0x11a, // EC_DVD_CURRENT_HMSF_TIME
        DvdKaraokeMode = 0x11b  // EC_DVD_KARAOKE_MODE
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode), ComVisible(false)]
    public class FilterInfo  //  FILTER_INFO
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
        public string achName;
        [MarshalAs(UnmanagedType.IUnknown)]
        public object pUnk;
    }

    [StructLayout(LayoutKind.Sequential), ComVisible(false)]
    public class AMMediaType  //  AM_MEDIA_TYPE
    {
        public Guid majorType;
        public Guid subType;
        [MarshalAs(UnmanagedType.Bool)]
        public bool fixedSizeSamples;
        [MarshalAs(UnmanagedType.Bool)]
        public bool temporalCompression;
        public int sampleSize;
        public Guid formatType;
        public IntPtr unkPtr;
        public uint cbFormat;
        public IntPtr formatPtr;
    }


    [ComVisible(true), ComImport,
   Guid("56a86891-0ad4-11ce-b03a-0020af0ba770"),
   InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IPin
    {
        [PreserveSig]
        int Connect(
            [In]           IPin pReceivePin,
            [In, MarshalAs(UnmanagedType.LPStruct)]   AMMediaType pmt);

        [PreserveSig]
        int ReceiveConnection(
            [In]           IPin pReceivePin,
            [In, MarshalAs(UnmanagedType.LPStruct)]   AMMediaType pmt);

        [PreserveSig]
        int Disconnect();

        [PreserveSig]
        int ConnectedTo([Out] out IPin ppPin);

        [PreserveSig]
        int ConnectionMediaType(
            [Out, MarshalAs(UnmanagedType.LPStruct)]  AMMediaType pmt);

        [PreserveSig]
        int QueryPinInfo(IntPtr pInfo);

        [PreserveSig]
        int QueryDirection(out PinDirection pPinDir);

        [PreserveSig]
        int QueryId(
            [Out, MarshalAs(UnmanagedType.LPWStr)]  out string Id);

        [PreserveSig]
        int QueryAccept(
            [In, MarshalAs(UnmanagedType.LPStruct)]   AMMediaType pmt);

        [PreserveSig]
        int EnumMediaTypes(IntPtr ppEnum);

        [PreserveSig]
        int QueryInternalConnections(IntPtr apPin, [In, Out] ref int nPin);

        [PreserveSig]
  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值