Esempio n. 1
0
        private bool CheckInit(MediaFrame frame, bool reinit = false)
        {
            if (!_inited)
            {
                if (frame.nIsKeyFrame == 1)
                {
                    Init(frame);
                }
            }

            if (!_inited)
            {
                return(false);
            }
            if (frame.IsCommandMediaFrame() && frame.GetCommandType() == MediaFrameCommandType.ResetCodec)
            {
                _inited = false;
                return(false);
            }
            else if (frame.nIsKeyFrame == 1)
            {
                if (_width != -1 && _height != -1 && (frame.nWidth != _width || frame.nHeight != _height))
                {
                    Init(frame, true);
                }
            }
            return(true);
        }
Esempio n. 2
0
        //System.IO.BinaryWriter bw = new BinaryWriter(new System.IO.FileStream(@"D:\\aac.aac", FileMode.Create));
        protected virtual void _Play(MediaFrame frame)
        {
            if (_isDisoseing || _isDisosed)
            {
                return;
            }

            if (!_inited && frame.IsKeyFrame == 1)
            {
                Init(frame);
            }
            if (!_inited)
            {
                return;
            }
            if (frame.IsCommandMediaFrame() && frame.GetCommandType() == MediaFrameCommandType.ResetCodec)
            {
                //在这里重置解码器,这里因为音频格式一般不会发生变化,所以暂时没有做处理
                return;
            }

            //string b = DateTime.Now.TimeOfDay + " begin  end:";


            byte[] buf = null;
            if (_aac != null)
            {
                buf = DecMultiAAC(frame.GetData());
            }
            if (_speex != null)
            {
                buf = DecSPEX(frame.GetData());
            }
            if (buf != null && buf.Length > 0)
            {
                _Play(buf);
            }
            else
            {
            }

            //Console.WriteLine(b + DateTime.Now.TimeOfDay + " : " + frame.Data.Length + " aac:" + buf.Length);
        }