public ActionResult CodecTab(int id = 1)
        {
            var viewModel = new RFXPDecodeViewModel(id);

            ViewBag.layer = id;
            return(PartialView("_PDecodeTab", viewModel));
        }
        public ActionResult IndexWithInputs()
        {
            dynamic obj = GetJsonObject(Request.InputStream);

            foreach (var input in obj)
            {
                // TODO: refine this
                if (input != null && input.Inputs != null)
                {
                    int layer = JsonHelper.CastTo <int>(input.Layer);
                    if (layer == 0)
                    {
                        // TODO: refine this
                        // retrieve the quant
                        var quantArray = JsonHelper.RetrieveQuantsArray(input.Params.QuantizationFactorsArray);
                        // retrive the progressive quants
                        var progQuantList = new List <QuantizationFactorsArray>();
                        foreach (var layerQuant in input.Params.ProgQuantizationArray)
                        {
                            var layerQuants = JsonHelper.RetrieveQuantsArray(layerQuant);
                            progQuantList.Add(layerQuants);
                        }
                        var progQuantarray = new ProgressiveQuantizationFactors
                        {
                            ProgQuants = progQuantList
                        };

                        EntropyAlgorithm     algorithm            = JsonHelper.CastTo <EntropyAlgorithm>(input.Params.EntropyAlgorithm);
                        UseDifferenceTile    useDifferenceTile    = JsonHelper.CastTo <UseDifferenceTile>(input.Params.UseDifferenceTile);
                        UseReduceExtrapolate useReduceExtrapolate = JsonHelper.CastTo <UseReduceExtrapolate>(input.Params.UseReduceExtrapolate);

                        _viewModel = new RFXPDecodeViewModel(0);
                        ((RFXPDecodeViewModel)_viewModel).ProvideParam(quantArray, progQuantarray, algorithm, useDifferenceTile, useReduceExtrapolate);
                        ((RFXPDecodeViewModel)_viewModel).ProvidePanelInputs(layer, input.Inputs[0], input.Inputs[1], input.Inputs[2]);

                        Session[ModelKey]        = _viewModel;
                        Session[isPreFrameValid] = true;
                    }
                    Decode(input);
                    // Updates Decode Status
                    UpdateDecodeStatus(layer);
                }
            }
            Session[IsValid] = true;
            return(new HttpStatusCodeResult(HttpStatusCode.OK));
        }
        public override ActionResult Index()
        {
            if (this.HttpContext.Session.Get <bool>(IsValid) == false)
            {
                // Clear Session data if the data is not valid
                this.HttpContext.Session.SetObject(ConstantDAS, null);
                this.HttpContext.Session.SetObject(ConstantCodecActionDic, null);
                this.HttpContext.Session.SetObject(DecodePreviousFrame, null);
                this.HttpContext.Session.SetObject(ConstantDASDic, null);
                this.HttpContext.Session.SetObject(PreviousFrameDic, null);

                var viewModel = new RFXPDecodeViewModel(0);
                this.HttpContext.Session.SetObject(ModelKey, viewModel);
                LoadFromSession();
                return(View(_viewModel));
            }
            else
            {
                this.HttpContext.Session.SetObject(IsValid, false);

                Dictionary <int, ICodecAction> SessionCodecActionDic = this.HttpContext.Session.Get <Dictionary <int, ICodecAction> >(ConstantCodecActionDic);
                if (SessionCodecActionDic != null)
                {
                    // put the inputs in the viewbag
                    var inputList = new List <string[]>();
                    for (int i = 1; i < SessionCodecActionDic.Keys.Count; i++)
                    {
                        Triplet <string> encodedData = SessionCodecActionDic[i].SubActions.FirstOrDefault().Input[0].GetStrings(TileSerializerFactory.GetDefaultSerizlizer());
                        Triplet <string> rawData     = SessionCodecActionDic[i].SubActions.FirstOrDefault().Input[1].GetStrings(TileSerializerFactory.GetDefaultSerizlizer());
                        var components = new List <string>
                        {
                            encodedData.X, rawData.X, encodedData.Y, rawData.Y, encodedData.Z, rawData.Z
                        };
                        inputList.Add(components.ToArray());
                    }
                    if (inputList.Count > 0)
                    {
                        ViewBag.Inputs = inputList;
                    }
                }
                return(View(_viewModel));
            }
        }
 public override ActionResult Index()
 {
     if (Session == null || Session[IsValid] == null || ((bool)Session[IsValid]) == false)
     {
         // Clear Session data if the data is not valid
         Session[ConstantDAS]            = null;
         Session[ConstantCodecActionDic] = null;
         Session[DecodePreviousFrame]    = null;
         Session[ConstantDASDic]         = null;
         Session[PreviousFrameDic]       = null;
         var viewModel = new RFXPDecodeViewModel(0);
         Session[ModelKey] = viewModel;
         LoadFromSession();
         return(View(_viewModel));
     }
     else
     {
         Session[IsValid] = false;
         Dictionary <int, ICodecAction> SessionCodecActionDic = (Dictionary <int, ICodecAction>)Session[ConstantCodecActionDic];
         if (SessionCodecActionDic != null)
         {
             // put the inputs in the viewbag
             var inputList = new List <string[]>();
             for (int i = 1; i < SessionCodecActionDic.Keys.Count; i++)
             {
                 Triplet <string> encodedData = SessionCodecActionDic[i].SubActions.FirstOrDefault().Input[0].GetStrings(TileSerializerFactory.GetDefaultSerizlizer());
                 Triplet <string> rawData     = SessionCodecActionDic[i].SubActions.FirstOrDefault().Input[1].GetStrings(TileSerializerFactory.GetDefaultSerizlizer());
                 var components = new List <string>
                 {
                     encodedData.X, rawData.X, encodedData.Y, rawData.Y, encodedData.Z, rawData.Z
                 };
                 inputList.Add(components.ToArray());
             }
             if (inputList.Count > 0)
             {
                 ViewBag.Inputs = inputList;
             }
         }
         return(View(_viewModel));
     }
 }
        public async Task <IActionResult> IndexWithInputs()
        {
            try
            {
                using (var bodyStream = new StreamReader(Request.Body))
                {
                    var bodyText = await bodyStream.ReadToEndAsync();

                    dynamic obj = JsonConvert.DeserializeObject(bodyText);

                    foreach (var input in obj)
                    {
                        // TODO: refine this
                        if (input != null && input.Inputs != null)
                        {
                            int layer = JsonHelper.CastTo <int>(input.Layer);
                            if (layer == 0)
                            {
                                // TODO: refine this
                                // retrieve the quant
                                var quantArray = JsonHelper.RetrieveQuantsArray(input.Params.QuantizationFactorsArray);
                                // retrive the progressive quants
                                var progQuantList = new List <QuantizationFactorsArray>();
                                foreach (var layerQuant in input.Params.ProgQuantizationArray)
                                {
                                    var layerQuants = JsonHelper.RetrieveQuantsArray(layerQuant);
                                    progQuantList.Add(layerQuants);
                                }
                                var progQuantarray = new ProgressiveQuantizationFactors
                                {
                                    ProgQuants = progQuantList
                                };

                                EntropyAlgorithm     algorithm            = JsonHelper.CastTo <EntropyAlgorithm>(input.Params.EntropyAlgorithm);
                                UseDifferenceTile    useDifferenceTile    = JsonHelper.CastTo <UseDifferenceTile>(input.Params.UseDifferenceTile);
                                UseReduceExtrapolate useReduceExtrapolate = JsonHelper.CastTo <UseReduceExtrapolate>(input.Params.UseReduceExtrapolate);

                                _viewModel = new RFXPDecodeViewModel(0);
                                ((RFXPDecodeViewModel)_viewModel).ProvideParam(quantArray, progQuantarray, algorithm, useDifferenceTile, useReduceExtrapolate);

                                JArray jsonInputs = JArray.Parse(input["Inputs"].ToString());
                                ((RFXPDecodeViewModel)_viewModel).ProvidePanelInputs(layer, jsonInputs[0].TrimEnter(), jsonInputs[1].TrimEnter(), jsonInputs[2].TrimEnter());

                                this.HttpContext.Session.SetObject(ModelKey, _viewModel);
                                this.HttpContext.Session.SetObject(isPreFrameValid, true);
                            }

                            Decode(input);
                            // Updates Decode Status
                            await UpdateDecodeStatus(layer);
                        }
                    }
                }

                this.HttpContext.Session.SetObject(IsValid, true);
                return(Json(ReturnResult <string> .Success("Success")));
            }
            catch (Exception ex)
            {
                return(Json(ReturnResult <string> .Fail(ex.Message)));
            }
        }