예제 #1
0
파일: QBox.cs 프로젝트: ctapang/GPUCyclops
 /// <summary>
 /// ReadMetaInfo
 /// </summary>
 /// <param name="br"></param>
 /// <param name="sampleStreamType"></param>
 /// <param name="inTotalSize"></param>
 private void ReadMetaInfo(BinaryReader br, uint sampleStreamType, int inTotalSize)
 {
     if (sampleStreamType == QBox.QBOX_SAMPLE_TYPE_H264)
     {
       if (v != null)
     throw new Exception("ReadMetaInfo: QBoxMetaV v already set");
       v = new QBoxMetaV();
       mSampleHeaderSize = v.Read(br);
       if ((inTotalSize - mSampleHeaderSize) != 0)
     throw new Exception("QBoxSample.Read: Video size incorrect.");
     }
     else if ((sampleStreamType == QBox.QBOX_SAMPLE_TYPE_QMA) || (sampleStreamType == QBox.QBOX_SAMPLE_TYPE_AAC))
     {
       if (a != null)
     throw new Exception("There should only be one QBoxMetaA for audio");
       a = new QBoxMetaA();
       mSampleHeaderSize = a.Read(br);
       if ((inTotalSize - mSampleHeaderSize) != 0)
     throw new Exception("QBoxSample.Read: Audio size incorrect.");
     }
     else throw new Exception("QBoxSample.Read: Sample stream type not found.");
 }
예제 #2
0
파일: QBox.cs 프로젝트: ctapang/GPUCyclops
 public QBoxSample(int dataSize, ulong sampleFlags, ushort sampleStreamType)
 {
     if ((sampleFlags & QBox.QBOX_SAMPLE_FLAGS_META_INFO) != 0)
     {
       if (sampleStreamType == QBox.QBOX_SAMPLE_TYPE_H264)
       {
     if (v != null)
       throw new Exception("QBoxSample.constructor: QBoxMetaV v already set");
     v = new QBoxMetaV();
     mSampleHeaderSize = 32;
       }
       else if ((sampleStreamType == QBox.QBOX_SAMPLE_TYPE_QMA) || (sampleStreamType == QBox.QBOX_SAMPLE_TYPE_AAC))
       {
     if (a != null)
       throw new Exception("There should only be one QBoxMetaA for audio");
     a = new QBoxMetaA();
     mSampleHeaderSize = 24;
       }
       else throw new Exception("QBoxSample.Read: Sample stream type not found.");
     }
     else if ((sampleFlags & QBox.QBOX_SAMPLE_FLAGS_QMED_PRESENT) > 0)
     {
       switch ((uint)sampleStreamType)
       {
     case QBOX_SAMPLE_TYPE_AAC:
       QMed.QMedAAC qmedaac = new QMed.QMedAAC();
       qmed = qmedaac;
       break;
     //case QBOX_SAMPLE_TYPE_H264:
     //case QBOX_SAMPLE_TYPE_H264_SLICE:
     //  QMed.QMedH264 qmedh264 = new QMed.QMedH264();
     //  qmed = qmedh264;
     //  break;
     case QBOX_SAMPLE_TYPE_QPCM:
       QMed.QMedPCM qmedpcm = new QMed.QMedPCM();
       qmed = qmedpcm;
       break;
     case QBOX_SAMPLE_TYPE_Q711:
       QMed.QMed711 qmed711 = new QMed.QMed711();
       qmed = qmed711;
       break;
     case QBOX_SAMPLE_TYPE_Q722:
       QMed.QMed722 qmed722 = new QMed.QMed722();
       qmed = qmed722;
       break;
     case QBOX_SAMPLE_TYPE_Q726:
       QMed.QMed726 qmed726 = new QMed.QMed726();
       qmed = qmed726;
       break;
     case QBOX_SAMPLE_TYPE_Q728:
       QMed.QMed728 qmed728 = new QMed.QMed728();
       qmed = qmed728;
       break;
     case QBOX_SAMPLE_TYPE_JPEG:
     case QBOX_SAMPLE_TYPE_MPEG2_ELEMENTARY:
     case QBOX_SAMPLE_TYPE_USER_METADATA:
     case QBOX_SAMPLE_TYPE_QMA:
     case QBOX_SAMPLE_TYPE_DEBUG:
     case QBOX_SAMPLE_TYPE_VIN_STATS_GLOBAL:
     case QBOX_SAMPLE_TYPE_VIN_STATS_MB:
       break;
     default:
       throw new Exception(string.Format("Unknown QMed type: {0}", sampleStreamType));
       }
       mSampleHeaderSize = (int)qmed.boxSize;
     }
     else
     {
       mSampleHeaderSize = 0;
     }
 }