Ejemplo n.º 1
0
        public IDataBlock DetectData(IDataReader dataReader, IDataBlockBuilder dataBlockBuilder, IScanContext context)
        {
            bool isFragmented = context.IsFragmented;

            if (ReferenceHeaders != null)
            {
                var referenceHeaders = new Dictionary <IDataPacket, ISequenceState>();
                foreach (IReferenceHeader header in ReferenceHeaders)
                {
                    IInputFile headerFile = context.CreateReferenceHeaderFile(header);
                    using (var reader = headerFile.CreateDataReader())
                    {
                        var headerDataBlock = _carver.Carve(new BitStreamDataReader(reader), dataBlockBuilder, context);
                        if (headerDataBlock != null)
                        {
                            referenceHeaders[headerFile.CreateDataPacket()] = context.ReferenceHeader as ISequenceState;
                        }
                    }
                }

                context.ReferenceHeader = referenceHeaders;
            }

            // Restore scan context
            context.Results      = null;
            context.IsFragmented = isFragmented;
            // context.ReferenceHeader

            return(_carver.Carve(new BitStreamDataReader(dataReader), dataBlockBuilder, context));
        }
Ejemplo n.º 2
0
 /// <summary>
 /// This method looks for the beginning of an NAL unit and if one is found it will parse it
 /// by calling Parser.Parse().
 /// </summary>
 public IDataBlock DetectData(IDataReader dataReader, IDataBlockBuilder dataBlockBuilder, IScanContext context)
 {
     if (ReferenceHeaders != null)
     {
         BuildReferenceHeaders(context, dataBlockBuilder);
     }
     return(_carver.Carve(new BitStreamDataReader(dataReader), dataBlockBuilder, context));
 }