text: /*  Copyright (c) MediaArea.net SARL. All Rights Reserved.
   *
   *  Use of this source code is governed by a BSD-style license that can
   *  be found in the License.html file in the root of the source tree.
   */
  
  //---------------------------------------------------------------------------
  // Pre-compilation
  #include "MediaInfo/PreComp.h"
  #ifdef __BORLANDC__
      #pragma hdrstop
  #endif
  //---------------------------------------------------------------------------
  
  //---------------------------------------------------------------------------
  #include "MediaInfo/Setup.h"
  //---------------------------------------------------------------------------
  
  //---------------------------------------------------------------------------
  #if defined(MEDIAINFO_AIC_YES)
  //---------------------------------------------------------------------------
  
  //---------------------------------------------------------------------------
  #include "MediaInfo/Video/File_Aic.h"
  //---------------------------------------------------------------------------
  
  namespace MediaInfoLib
  {
  
  //***************************************************************************
  // Streams management
  //***************************************************************************
  
  //---------------------------------------------------------------------------
  void File_Aic::Streams_Fill()
  {
      //Filling
      Stream_Prepare(Stream_Video);
      Fill(Stream_Video, 0, Video_Format, "AIC");
      Fill(Stream_Video, 0, Video_Width, Width);
      Fill(Stream_Video, 0, Video_Height, Height);
      Fill(Stream_Video, 0, Video_BitDepth, 8);
      //Fill(Stream_Video, 0, Video_ColorSpace, "YUV");
      //Fill(Stream_Video, 0, Video_ChromaSubsampling, "4:2:0");
      switch (FieldFrame)
      {
          case 0 : Fill(Stream_Video, 0, Video_ScanType, "Progressive"); break;
          case 3 : Fill(Stream_Video, 0, Video_ScanType, "Interlaced"); break;
          default: ;
      }
  }
  
  //***************************************************************************
  // Buffer - Per element
  //***************************************************************************
  
  //---------------------------------------------------------------------------
  void File_Aic::Header_Parse()
  {
      //Parsing
      int32u Size;
      int16u Sync;
      Get_B2 (Sync,                                               "Sync");
      Get_B4 (Size,                                               "Size");
      if (Sync!=0x0116 || Size<24 || Size!=Buffer_Size)
      {
          Reject("AIC");
          return;
      }
      Get_B2 (Width,                                              "Width");
      Get_B2 (Height,                                             "Height");
      Skip_B2(                                                    "Width again?");
      Skip_B2(                                                    "Height again?");
      Skip_B2(                                                    "Unknown");
      BS_Begin();
      Get_S1 (4, FieldFrame,                                      "field/Frame info?");
      Skip_S1(4,                                                  "Unknown");
      Skip_S1(4,                                                  "Unknown");
      Skip_S1(4,                                                  "Unknown");
      BS_End();
      Skip_B3(                                                    "Unknown");
      Skip_B3(                                                    "Unknown");
  
      Header_Fill_Code(0, "Frame");
      Header_Fill_Size(Size);
  }
  
  //---------------------------------------------------------------------------
  void File_Aic::Data_Parse()
  {
      //Parsing
      Skip_XX(Element_Size,                                       "Data");
  
      FILLING_BEGIN();
          Frame_Count++;
          if (Frame_Count_NotParsedIncluded!=(int64u)-1)
              Frame_Count_NotParsedIncluded++;
          if (!Status[IsFilled])
          {
              Accept("AIC");
              Finish("AIC");
          }
      FILLING_END();
  }
  
  //***************************************************************************
  // C++
  //***************************************************************************
  
  } //NameSpace
  
  #endif //MEDIAINFO_AIC_*
  