Exemplo n.º 1
0
        public static Bitmap MFrame2Bitmap(ref MFFrame _mFrame, out M_VID_PROPS _vidProps)
        {
            // Clone frame to RGB32
            MFFrame mFrame = _mFrame;

            _mFrame.MFClone(out mFrame, eMFrameClone.eMFC_Reference, eMFCC.eMFCC_ARGB32);

            // FrameVideoGetBytes(out cbPicture, out pbPicture);
            int  cbSize;
            long pbVideo;

            mFrame.MFVideoGetBytes(out cbSize, out pbVideo);

            // Get Props from frame
            int        audioSample;
            M_AV_PROPS avProps;

            mFrame.MFAVPropsGet(out avProps, out audioSample);

            // Create a bitmap from frame
            Bitmap bmpPicture = new Bitmap(avProps.vidProps.nWidth, Math.Abs(avProps.vidProps.nHeight),
                                           avProps.vidProps.nRowBytes,
                                           System.Drawing.Imaging.PixelFormat.Format32bppRgb,
                                           new IntPtr(pbVideo));

            _vidProps = avProps.vidProps;
            _mFrame   = mFrame;

            return(bmpPicture);
        }
Exemplo n.º 2
0
        private void ConfigPlaylist()
        {
            MItem myBack;

            m_objMPLaylist.PlaylistBackgroundSet(null, "", "", out myBack);
            if (myBack != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(myBack);
                GC.Collect();
            }
            // set convert format
            M_VID_PROPS mvid;
            M_AUD_PROPS maud;
            int         fmtind;
            string      fmtname;

            m_objMPLaylist.FormatVideoGet(eMFormatType.eMFT_Output, out mvid, out fmtind, out fmtname);
            m_objMPLaylist.FormatAudioGet(eMFormatType.eMFT_Output, out maud, out fmtind, out fmtname);
            m_objMPLaylist.FormatVideoSet(eMFormatType.eMFT_Convert, ref mvid);
            m_objMPLaylist.FormatAudioSet(eMFormatType.eMFT_Convert, ref maud);

            // set properties
            m_objMPLaylist.PropsSet("loop", "false");
            m_objMPLaylist.PropsSet("active_frc", "false");
            m_objMPLaylist.PropsSet("preview.drop_frames", "true");

            M_VID_PROPS vidProps = new M_VID_PROPS();

            vidProps.eVideoFormat = eMVideoFormat.eMVF_Custom;
            m_objMPLaylist.FormatVideoSet(eMFormatType.eMFT_Convert, ref vidProps);
        }
Exemplo n.º 3
0
        private void comboBoxVF_SelectedIndexChanged(object sender, EventArgs e)
        {
            M_VID_PROPS vidProps = new M_VID_PROPS();
            string      strFormat;

            m_objFile.FormatVideoGetByIndex(eMFormatType.eMFT_Convert, comboBoxVF.SelectedIndex, out vidProps, out strFormat);
            m_objFile.FormatVideoSet(eMFormatType.eMFT_Convert, ref vidProps);
        }
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            M_VID_PROPS vidProps = new M_VID_PROPS();
            string      strFormat;

            myPlaylist.FormatVideoGetByIndex(eMFormatType.eMFT_Convert, comboBox1.SelectedIndex, out vidProps, out strFormat);
            //Set new video format
            myPlaylist.FormatVideoSet(eMFormatType.eMFT_Convert, ref vidProps);
        }
Exemplo n.º 5
0
 private bool isSameVideoProps(M_VID_PROPS vProps1, M_VID_PROPS vProps2)
 {
     if (vProps1.fccType == vProps2.fccType &&
         vProps1.nWidth == vProps2.nWidth &&
         vProps1.nHeight == vProps2.nHeight)
     {
         return(true);
     }
     return(false);
 }
Exemplo n.º 6
0
        private void formatList_SelectedIndexChanged(object sender, EventArgs e)
        {
            ListBox     cbxChanged = (ListBox)sender;
            M_VID_PROPS vidProps   = new M_VID_PROPS();
            string      strFormat;

            m_objLive.FormatVideoGetByIndex(eMFormatType.eMFT_Input, cbxChanged.SelectedIndex, out vidProps, out strFormat);
            //Set new video format
            m_objLive.FormatVideoSet(eMFormatType.eMFT_Input, ref vidProps);
        }
Exemplo n.º 7
0
        private void thread_DoWork(CancellationToken token)
        {
            while (!token.IsCancellationRequested)
            {
                if (encode || live)
                {
                    MFFrame    frameLive = null;
                    MFFrame    frameFile = null;
                    M_AV_PROPS props     = new M_AV_PROPS();
                    if (live)
                    {
                        M_VID_PROPS vidProps = new M_VID_PROPS();
                        vidProps.eVideoFormat = eMVideoFormat.eMVF_HD1080_5994i;
                        m_objLive.FormatVideoSet(eMFormatType.eMFT_Input, ref vidProps);
                        props.vidProps.eVideoFormat = eMVideoFormat.eMVF_Custom;
                        m_objLive.SourceFrameConvertedGet(ref props, -1, out frameLive, "");
                    }
                    if (encode)
                    {
                        props.vidProps.eVideoFormat = eMVideoFormat.eMVF_HD1080_5994i;

                        m_objReader.SourceFrameConvertedGet(ref props, -1, out frameFile, "");
                        if (frameLive != null)
                        {
                            frameLive.MFOverlay(frameFile, null, 0, 0, 0, "audio_gain=0", "ch1");
                        }
                    }

                    if (frameLive != null)
                    {
                        m_objPreview.ReceiverFramePut(frameLive, -1, "");
                    }
                    else
                    {
                        m_objPreview.ReceiverFramePut(frameFile, -1, "");
                    }

                    if (frameLive != null)
                    {
                        Marshal.FinalReleaseComObject(frameLive);
                    }
                    if (frameFile != null)
                    {
                        Marshal.FinalReleaseComObject(frameFile);
                    }
                }
            }
        }
Exemplo n.º 8
0
 /// <summary>
 /// Set video format
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void comboBoxVFOut_SelectedIndexChanged(object sender, EventArgs e)
 {
     try
     {
         if (comboBoxVFOut.SelectedIndex != 0)
         {
             // Set video format
             M_VID_PROPS vidProps = new M_VID_PROPS();
             vidProps.eVideoFormat = (eMVideoFormat)comboBoxVFOut.SelectedItem;
             ((IMFormat)m_objLive).FormatVideoSet(eMFormatType.eMFT_Convert, ref vidProps);
         }
     }
     catch
     {
         throw;
     }
 }
Exemplo n.º 9
0
        public OverlayHTMLWindow(Object _objOverlayHTML, Object _source, M_VID_PROPS _vProps)
        {
            m_bStateOk = false;
            InitializeComponent();

            m_vProps = _vProps;

            try
            {
                m_objOverlayHTML = (MFOverlayHTMLClass)_objOverlayHTML;
                m_object         = _source;
            }
            catch (Exception ex)
            {
                return;
            }

            if (m_vProps.nHeight == 0 || m_vProps.nWidth == 0)
            {
                return;
            }

            m_objPreview = new MFPreviewClass();
            m_objPreview.PreviewWindowSet("", panelPreview.Handle.ToInt32());
            m_objPreview.PreviewEnable("", 0, 1);
            m_objPreview.PropsSet("preview.downscale", "0");
            m_objPreview.PropsSet("deinterlace", "false");

            panelPreview.MouseWheel += new MouseEventHandler(panelPreview_MouseWheel);
            panelPreview.KeyDown    += new KeyEventHandler(panelPreview_KeyDown);
            panelPreview.KeyPress   += new KeyPressEventHandler(panelPreview_KeyPress);
            panelPreview.KeyUp      += new KeyEventHandler(panelPreview_KeyUp);

            mfAttributesList.SetControlledObject((IMProps)m_objOverlayHTML);
            mfAttributesListPresets1.SetControlledObject(m_objOverlayHTML);
            mfAttributesListPresets1.OnPropsUpdated += new EventHandler(mfAttributesListPresets1_OnPropsUpdated);

            m_objOverlayHTML.OnEventSafe += new IMEventsEvent_OnEventSafeEventHandler(m_objOverlayHTML_OnEventSafe);
            string strCurrURL;

            m_objOverlayHTML.PropsGet("current_url", out strCurrURL);

            textBoxPathOrURL.Text = strCurrURL;

            m_bStateOk = true;
        }
Exemplo n.º 10
0
        /// <summary>
        /// Format changed
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void comboBoxAVF_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox cbxChanged = (ComboBox)sender;
            string   strType    = (string)cbxChanged.Tag;

            if (strType == "video")
            {
                M_VID_PROPS vidProps = new M_VID_PROPS();
                string      strFormat;
                ((IMFormat)m_objLive).FormatVideoGetByIndex(eMFormatType.eMFT_Input, cbxChanged.SelectedIndex, out vidProps, out strFormat);
                //Set new video format
                ((IMFormat)m_objLive).FormatVideoSet(0, ref vidProps);
            }
            else if (strType == "ext_audio")
            {
                M_AUD_PROPS audProps = new M_AUD_PROPS();
                string      strFormat;
                ((IMFormat)m_objLive).FormatAudioGetByIndex(eMFormatType.eMFT_Input, cbxChanged.SelectedIndex, out audProps, out strFormat);
                //Set new audio format
                ((IMFormat)m_objLive).FormatAudioSet(0, ref audProps);
            }
        }
Exemplo n.º 11
0
        private void buttonHTMLProps_Click(object sender, EventArgs e)
        {
            M_VID_PROPS vProps = new M_VID_PROPS();
            int         idx;
            string      strName;

            m_objPlaylist.FormatVideoGet(eMFormatType.eMFT_Convert, out vProps, out idx, out strName);
            OverlayHTMLWindow overlayHTMLWind = new OverlayHTMLWindow(m_objOverlayHTML, m_objPlaylist, vProps);

            if (overlayHTMLWind.m_bStateOk)
            {
                overlayHTMLWind.ShowDialog();
            }

            string strCurrURL;

            m_objOverlayHTML.PropsGet("current_url", out strCurrURL);

            if (strCurrURL != null)
            {
                textBoxHTMLURL.Text = strCurrURL.Contains("demo.html") ? "demo" : strCurrURL;
            }
        }
Exemplo n.º 12
0
        void StartBug()
        {
            // playlist initialization

            M_VID_PROPS vidProps = new M_VID_PROPS();

            vidProps.eVideoFormat = eMVideoFormat.eMVF_Custom;
            MPlaylist.FormatVideoSet(eMFormatType.eMFT_Convert, ref vidProps);
            M_AUD_PROPS audioProp = new M_AUD_PROPS();

            audioProp.nChannels = 0;   //because some writer codecs (such as mp3) do not support 16 audio channels.
            MPlaylist.FormatAudioSet(eMFormatType.eMFT_Convert, audioProp);

            // playlist cue
            //set empty background. In this case playlist doesn't output anything until playback isn't started.
            MItem myBack;

            MPlaylist.PlaylistBackgroundSet(null, "", "", out myBack);
            if (myBack != null)
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(myBack);
                GC.Collect();
            }
            // set convert format
            M_VID_PROPS mvid;
            M_AUD_PROPS maud;
            int         fmtind;
            string      fmtname;

            MPlaylist.FormatVideoGet(eMFormatType.eMFT_Output, out mvid, out fmtind, out fmtname);
            MPlaylist.FormatAudioGet(eMFormatType.eMFT_Output, out maud, out fmtind, out fmtname);
            MPlaylist.FormatVideoSet(eMFormatType.eMFT_Convert, ref mvid);
            MPlaylist.FormatAudioSet(eMFormatType.eMFT_Convert, ref maud);
            // set properties
            MPlaylist.PropsSet("loop", "false");
            MPlaylist.PropsSet("active_frc", "false");
            MPlaylist.PropsSet("preview.drop_frames", "true");
            vidProps.eVideoFormat = eMVideoFormat.eMVF_Custom;
            MPlaylist.FormatVideoSet(eMFormatType.eMFT_Convert, ref vidProps);

            int   index = -1;
            MItem item;

            MPlaylist.PlaylistAdd(null, @"\\192.168.0.100\MLFiles\Trash\Roman\WorkFiles\FilesFromCostumer\2019.05.27 Etere31929\kom_mult_kosmik_007sh_s.mpg", "", ref index, out item);

            // writer properties
            MWriter.PropsSet("rate_control", "true");
            MWriter.PropsSet("pull_mode", "false");
            MWriter.PropsSet("external_process", "false");

            //set audio mapping on first 2 channels only
            string       desc;
            IMAudioTrack audioTrack;

            MPlaylist.AudioTrackGetByIndex(0, out desc, out audioTrack);

            int nChIn;
            int nChOutIdx;
            int nChOut;

            audioTrack.TrackChannelsGet(out nChIn, out nChOutIdx, out nChOut);
            for (int i = 0; i < nChOut; i++)
            {
                int mute;
                if (i < 2)
                {
                    // switch on the required audio channels
                    mute = 0;
                }
                else
                {
                    // set mute all other audio channels
                    mute = 1;
                }
                audioTrack.TrackMuteSet(i, mute, 0.0);
            }

            string encodeConfig = @"format='mp4' start_timecode='00:00:00:00' video::codec='q264sw' video::size='640x360' video::b='1M' video::minrate='1M' video::maxrate='1M' video::ar='' video::ref_frames='3' video::profile='Baseline' video::level='4.1' video::rc_type='cbr' audio::codec='aac' audio::ar='48000'";

            MWriter.WriterNameSet(@"\\192.168.0.100\MLFiles\Trash\Roman\WorkFiles\FilesFromCostumer\2019.05.27 Etere31929\test\" + count.ToString() + ".mp4", encodeConfig);
            MWriter.ObjectStart(MPlaylist);
            MPlaylist.FilePlayStart();

            Marshal.ReleaseComObject(item);
            //Marshal.ReleaseComObject(myBack);
            GC.Collect();
        }
Exemplo n.º 13
0
        protected override void OnSelectedFormatChanged()
        {
            M_VID_PROPS vidProps = _vidPropsCache[this.SelectedFormat];

            this.MFormatObject.FormatVideoSet(this.FormatType, ref vidProps);
        }