您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ AP4_DYNAMIC_CAST函数代码示例

51自学网 2021-06-01 19:35:15
  C++
这篇教程C++ AP4_DYNAMIC_CAST函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中AP4_DYNAMIC_CAST函数的典型用法代码示例。如果您正苦于以下问题:C++ AP4_DYNAMIC_CAST函数的具体用法?C++ AP4_DYNAMIC_CAST怎么用?C++ AP4_DYNAMIC_CAST使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了AP4_DYNAMIC_CAST函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: m_Movie

/*----------------------------------------------------------------------|   AP4_File::AP4_File+---------------------------------------------------------------------*/AP4_File::AP4_File(AP4_ByteStream&  stream,                    AP4_AtomFactory& atom_factory,                   bool             moov_only) :    m_Movie(NULL),    m_FileType(NULL),    m_MetaData(NULL),    m_MoovIsBeforeMdat(true){    // parse top-level atoms    AP4_Atom*    atom;    AP4_Position stream_position;    bool         keep_parsing = true;    while (keep_parsing &&           AP4_SUCCEEDED(stream.Tell(stream_position)) &&            AP4_SUCCEEDED(atom_factory.CreateAtomFromStream(stream, atom))) {        AddChild(atom);        switch (atom->GetType()) {            case AP4_ATOM_TYPE_MOOV:                m_Movie = new AP4_Movie(AP4_DYNAMIC_CAST(AP4_MoovAtom, atom), stream, false);                if (moov_only) keep_parsing = false;                break;            case AP4_ATOM_TYPE_FTYP:                m_FileType = AP4_DYNAMIC_CAST(AP4_FtypAtom, atom);                break;            case AP4_ATOM_TYPE_MDAT:                // see if we are before the moov atom                if (m_Movie == NULL) m_MoovIsBeforeMdat = false;                break;        }    }}
开发者ID:huangyt,项目名称:MyProjects,代码行数:36,


示例2: AP4_DYNAMIC_CAST

/*----------------------------------------------------------------------|   AP4_TrakAtom::GetChunkOffsets+---------------------------------------------------------------------*/AP4_ResultAP4_TrakAtom::GetChunkOffsets(AP4_Array<AP4_UI64>& chunk_offsets){    AP4_Atom* atom;    if ((atom = FindChild("mdia/minf/stbl/stco"))) {        AP4_StcoAtom* stco = AP4_DYNAMIC_CAST(AP4_StcoAtom, atom);        if (stco == NULL) return AP4_ERROR_INTERNAL;        AP4_Cardinal    stco_chunk_count   = stco->GetChunkCount();        const AP4_UI32* stco_chunk_offsets = stco->GetChunkOffsets();        chunk_offsets.SetItemCount(stco_chunk_count);        for (unsigned int i=0; i<stco_chunk_count; i++) {            chunk_offsets[i] = stco_chunk_offsets[i];        }        return AP4_SUCCESS;    } else if ((atom = FindChild("mdia/minf/stbl/co64"))) {        AP4_Co64Atom* co64 = AP4_DYNAMIC_CAST(AP4_Co64Atom, atom);        if (co64 == NULL) return AP4_ERROR_INTERNAL;        AP4_Cardinal    co64_chunk_count   = co64->GetChunkCount();        const AP4_UI64* co64_chunk_offsets = co64->GetChunkOffsets();        chunk_offsets.SetItemCount(co64_chunk_count);        for (unsigned int i=0; i<co64_chunk_count; i++) {            chunk_offsets[i] = co64_chunk_offsets[i];        }        return AP4_SUCCESS;    } else {        return AP4_ERROR_INVALID_STATE;    }}
开发者ID:olegloa,项目名称:wkrj,代码行数:31,


示例3: CreateTrackHandler

    virtual TrackHandler* CreateTrackHandler(AP4_TrakAtom* trak) {        // find the stsd atom        AP4_StsdAtom* stsd = AP4_DYNAMIC_CAST(AP4_StsdAtom, trak->FindChild("mdia/minf/stbl/stsd"));        // avoid tracks with no stsd atom (should not happen)        if (stsd == NULL) return NULL;        // we only look at the first sample description        AP4_SampleDescription* desc = stsd->GetSampleDescription(0);        AP4_MpegAudioSampleDescription* audio_desc =             AP4_DYNAMIC_CAST(AP4_MpegAudioSampleDescription, desc);        if (audio_desc && audio_desc->GetObjectTypeId()==AP4_OTI_MPEG2_AAC_AUDIO_LC) {            // patch the stsd            AP4_MpegAudioSampleDescription new_audio_desc(AP4_OTI_MPEG4_AUDIO,                                                          audio_desc->GetSampleRate(),                                                           audio_desc->GetSampleSize(),                                                          audio_desc->GetChannelCount(),                                                          &audio_desc->GetDecoderInfo(),                                                          audio_desc->GetBufferSize(),                                                          audio_desc->GetMaxBitrate(),                                                          audio_desc->GetAvgBitrate());            stsd->RemoveChild(stsd->GetChild(AP4_ATOM_TYPE_MP4A));            stsd->AddChild(new_audio_desc.ToAtom());            printf("audio sample description patched/n");        }        return NULL;    }
开发者ID:9aa5,项目名称:Bento4,代码行数:27,


示例4: AP4_ContainerAtom

/*----------------------------------------------------------------------|   AP4_TrakAtom::AP4_TrakAtom+---------------------------------------------------------------------*/AP4_TrakAtom::AP4_TrakAtom(AP4_UI32         size,                           AP4_ByteStream&  stream,                           AP4_AtomFactory& atom_factory) :    AP4_ContainerAtom(AP4_ATOM_TYPE_TRAK, size, false, stream, atom_factory){    m_TkhdAtom = AP4_DYNAMIC_CAST(AP4_TkhdAtom, FindChild("tkhd"));    m_MdhdAtom = AP4_DYNAMIC_CAST(AP4_MdhdAtom, FindChild("mdia/mdhd"));}
开发者ID:olegloa,项目名称:wkrj,代码行数:11,


示例5: AP4_DYNAMIC_CAST

/*----------------------------------------------------------------------|   AP4_OmaDcfAtomDecrypter::DecryptAtoms+---------------------------------------------------------------------*/AP4_ResultAP4_OmaDcfAtomDecrypter::DecryptAtoms(AP4_AtomParent&                  atoms,                                      AP4_Processor::ProgressListener* /*listener*/,                                      AP4_BlockCipherFactory*          block_cipher_factory,                                      AP4_ProtectionKeyMap&            key_map){    // default factory    if (block_cipher_factory == NULL) {        block_cipher_factory = &AP4_DefaultBlockCipherFactory::Instance;    }    unsigned int index = 1;    for (AP4_List<AP4_Atom>::Item* item = atoms.GetChildren().FirstItem();            item;            item = item->GetNext()) {        AP4_Atom* atom = item->GetData();        if (atom->GetType() != AP4_ATOM_TYPE_ODRM) continue;        // check that we have the key        const AP4_DataBuffer* key = key_map.GetKey(index++);        if (key == NULL) return AP4_ERROR_INVALID_PARAMETERS;        // check that we have all the atoms we need        AP4_ContainerAtom* odrm = AP4_DYNAMIC_CAST(AP4_ContainerAtom, atom);        if (odrm == NULL) continue; // not enough info        AP4_OdheAtom* odhe = AP4_DYNAMIC_CAST(AP4_OdheAtom, odrm->GetChild(AP4_ATOM_TYPE_ODHE));        if (odhe == NULL) continue; // not enough info        AP4_OddaAtom* odda = AP4_DYNAMIC_CAST(AP4_OddaAtom, odrm->GetChild(AP4_ATOM_TYPE_ODDA));;        if (odda == NULL) continue; // not enough info        AP4_OhdrAtom* ohdr = AP4_DYNAMIC_CAST(AP4_OhdrAtom, odhe->GetChild(AP4_ATOM_TYPE_OHDR));        if (ohdr == NULL) continue; // not enough info        // do nothing if the atom is not encrypted        if (ohdr->GetEncryptionMethod() == AP4_OMA_DCF_ENCRYPTION_METHOD_NULL) {            continue;        }        // create the byte stream        AP4_ByteStream* cipher_stream = NULL;        AP4_Result result = CreateDecryptingStream(*odrm,                            key->GetData(),                            key->GetDataSize(),                            block_cipher_factory,                            cipher_stream);        if (AP4_SUCCEEDED(result)) {            // replace the odda atom's payload with the decrypted stream            odda->SetEncryptedPayload(*cipher_stream, ohdr->GetPlaintextLength());            cipher_stream->Release();            // the atom will now be in the clear            ohdr->SetEncryptionMethod(AP4_OMA_DCF_ENCRYPTION_METHOD_NULL);            ohdr->SetPaddingScheme(AP4_OMA_DCF_PADDING_SCHEME_NONE);        }    }    return AP4_SUCCESS;}
开发者ID:satram,项目名称:Bento4,代码行数:60,


示例6: AP4_DYNAMIC_CAST

/*----------------------------------------------------------------------|   AP4_CompactingProcessor::TrackHandler::ProcessTrack+---------------------------------------------------------------------*/AP4_ResultAP4_CompactingProcessor::TrackHandler::ProcessTrack(){    // find the stsz atom    AP4_ContainerAtom* stbl = AP4_DYNAMIC_CAST(AP4_ContainerAtom, m_TrakAtom->FindChild("mdia/minf/stbl"));    if (stbl == NULL) return AP4_SUCCESS;    AP4_StszAtom* stsz = AP4_DYNAMIC_CAST(AP4_StszAtom, stbl->GetChild(AP4_ATOM_TYPE_STSZ));    if (stsz == NULL) return AP4_SUCCESS;        // check if we can reduce the size of stsz by changing it to stz2    AP4_UI32 max_size = 0;    for (unsigned int i=1; i<=stsz->GetSampleCount(); i++) {        AP4_Size sample_size;        stsz->GetSampleSize(i, sample_size);        if (sample_size > max_size) {            max_size = sample_size;        }    }    AP4_UI08 field_size = 0;    if (max_size <= 0xFF) {        field_size = 1;    } else if (max_size <= 0xFFFF) {        field_size = 2;    }    if (m_Outer.m_Verbose) printf("Track %d: ", m_TrakAtom->GetId());    if (field_size == 0) {        if (m_Outer.m_Verbose) {            printf("no stz2 reduction possible/n");        }        return AP4_SUCCESS;    } else {        if (m_Outer.m_Verbose) {            unsigned int reduction = (4-field_size)*stsz->GetSampleCount();            printf("stz2 reduction = %d bytes/n", reduction);            m_Outer.m_SizeReduction += reduction;        }    }        // detach the original stsz atom so we can destroy it later    m_StszAtom = stsz;    stsz->Detach();        // create an stz2 atom and populate its entries    AP4_Stz2Atom* stz2 = new AP4_Stz2Atom(field_size);    for (unsigned int i=1; i<=m_StszAtom->GetSampleCount(); i++) {        AP4_Size sample_size;        m_StszAtom->GetSampleSize(i, sample_size);        stz2->AddEntry(sample_size);    }    stbl->AddChild(stz2);        return AP4_SUCCESS;}
开发者ID:garybruckheimer,项目名称:raypackSuite,代码行数:56,


示例7: AutoDetectAudioFragmentDuration

/*----------------------------------------------------------------------|   AutoDetectAudioFragmentDuration+---------------------------------------------------------------------*/static unsigned int AutoDetectAudioFragmentDuration(AP4_ByteStream& stream, TrackCursor* cursor){    // remember where we are in the stream    AP4_Position where = 0;    stream.Tell(where);    AP4_LargeSize stream_size = 0;    stream.GetSize(stream_size);    AP4_LargeSize bytes_available = stream_size-where;        AP4_UI64  fragment_count = 0;    AP4_UI32  last_fragment_size = 0;    AP4_Atom* atom = NULL;    while (AP4_SUCCEEDED(AP4_DefaultAtomFactory::Instance.CreateAtomFromStream(stream, bytes_available, atom))) {        if (atom && atom->GetType() == AP4_ATOM_TYPE_MOOF) {            AP4_ContainerAtom* moof = AP4_DYNAMIC_CAST(AP4_ContainerAtom, atom);            AP4_TfhdAtom* tfhd = AP4_DYNAMIC_CAST(AP4_TfhdAtom, moof->FindChild("traf/tfhd"));            if (tfhd && tfhd->GetTrackId() == cursor->m_Track->GetId()) {                ++fragment_count;                AP4_TrunAtom* trun = AP4_DYNAMIC_CAST(AP4_TrunAtom, moof->FindChild("traf/trun"));                if (trun) {                    last_fragment_size = trun->GetEntries().ItemCount();                }            }        }        delete atom;        atom = NULL;    }        // restore the stream to its original position    stream.Seek(where);        // decide if we can infer an fragment size    if (fragment_count == 0 || cursor->m_Samples->GetSampleCount() == 0) {        return 0;    }    // don't count the last fragment if we have more than one    if (fragment_count > 1 && last_fragment_size) {        --fragment_count;    }    if (fragment_count <= 1 || cursor->m_Samples->GetSampleCount() < last_fragment_size) {        last_fragment_size = 0;    }    AP4_Sample sample;    AP4_UI64 total_duration = 0;    for (unsigned int i=0; i<cursor->m_Samples->GetSampleCount()-last_fragment_size; i++) {        cursor->m_Samples->GetSample(i, sample);        total_duration += sample.GetDuration();    }    return (unsigned int)AP4_ConvertTime(total_duration/fragment_count, cursor->m_Track->GetMediaTimeScale(), 1000);}
开发者ID:garybruckheimer,项目名称:raypackSuite,代码行数:54,


示例8: AP4_DYNAMIC_CAST

/*----------------------------------------------------------------------|   AP4_FragmentSampleTable::AP4_FragmentSampleTable+---------------------------------------------------------------------*/AP4_FragmentSampleTable::AP4_FragmentSampleTable(AP4_ContainerAtom* traf,        AP4_TrexAtom*      trex,        AP4_Cardinal       internal_track_id,        AP4_ByteStream*    sample_stream,        AP4_Position       moof_offset,        AP4_Position       mdat_payload_offset,        AP4_UI64           dts_origin)    :m_InternalTrackId(internal_track_id){    AP4_TfhdAtom* tfhd = AP4_DYNAMIC_CAST(AP4_TfhdAtom, traf->GetChild(AP4_ATOM_TYPE_TFHD));    if (tfhd == NULL) return;    // count all the samples and reserve space for them    unsigned int sample_count = 0;    for (AP4_List<AP4_Atom>::Item* item = traf->GetChildren().FirstItem();            item;            item = item->GetNext()) {        AP4_Atom* atom = item->GetData();        if (atom->GetType() == AP4_ATOM_TYPE_TRUN) {            AP4_TrunAtom* trun = AP4_DYNAMIC_CAST(AP4_TrunAtom, atom);            if (trun) sample_count += trun->GetEntries().ItemCount();        }    }    m_Samples.EnsureCapacity(sample_count);    // check if we have a timecode base    AP4_TfdtAtom* tfdt = AP4_DYNAMIC_CAST(AP4_TfdtAtom, traf->GetChild(AP4_ATOM_TYPE_TFDT));    if (tfdt) {        dts_origin = tfdt->GetBaseMediaDecodeTime();    }    // process all the trun atoms    for (AP4_List<AP4_Atom>::Item* item = traf->GetChildren().FirstItem();            item;            item = item->GetNext()) {        AP4_Atom* atom = item->GetData();        if (atom->GetType() == AP4_ATOM_TYPE_TRUN) {            AP4_TrunAtom* trun = AP4_DYNAMIC_CAST(AP4_TrunAtom, atom);            if (trun) {                AP4_Result result = AddTrun(trun,                                            tfhd,                                            trex,                                            sample_stream,                                            moof_offset,                                            mdat_payload_offset,                                            dts_origin);                if (AP4_FAILED(result)) return;            }        }    }}
开发者ID:notspiff,项目名称:inputstream.mpd,代码行数:54,


示例9: AP4_DYNAMIC_CAST

AP4_ResultAP4_Processor::NormalizeTRAF(AP4_ContainerAtom *atom, AP4_UI32 start, AP4_UI32 end, AP4_UI32 &index){	for (; AP4_Atom* child = atom->GetChild(AP4_ATOM_TYPE_TRAF, index);) {		AP4_TrafAtom* traf = AP4_DYNAMIC_CAST(AP4_TrafAtom, child);		AP4_TfhdAtom* tfhd = AP4_DYNAMIC_CAST(AP4_TfhdAtom, traf->GetChild(AP4_ATOM_TYPE_TFHD));		while (start < end && m_TrackData[start].original_id != tfhd->GetTrackId())			;		tfhd->SetTrackId(m_TrackData[start].new_id);		traf->SetInternalTrackId(start);		++index;	}	return AP4_SUCCESS;}
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:14,


示例10: m_HintTrack

/*----------------------------------------------------------------------|   AP4_HintTrackReader::AP4_HintTrackReader+---------------------------------------------------------------------*/AP4_HintTrackReader::AP4_HintTrackReader(AP4_Track& hint_track,                                          AP4_Movie& movie,                                         AP4_UI32   ssrc) :    m_HintTrack(hint_track),    m_MediaTrack(NULL),    m_MediaTimeScale(0),    m_RtpSampleData(NULL),    m_Ssrc(ssrc),    m_SampleIndex(0),    m_PacketIndex(0),    m_RtpSequenceStart(0),    m_RtpTimeStampStart(0),    m_RtpTimeScale(0){    // get the media track    AP4_TrakAtom* hint_trak_atom = hint_track.UseTrakAtom();    AP4_Atom* atom = hint_trak_atom->FindChild("tref/hint");    if (atom != NULL) {        AP4_UI32 media_track_id = AP4_DYNAMIC_CAST(AP4_TrefTypeAtom, atom)->GetTrackIds()[0];        m_MediaTrack = movie.GetTrack(media_track_id);        // get the media time scale        m_MediaTimeScale = m_MediaTrack->GetMediaTimeScale();    }    // initiate random generator    srand((int)time(NULL));    // rtp sequence start init TODO!!    m_RtpSequenceStart = (AP4_UI16)(rand()&0xFFFF);    // rtp timestamp start init TODO!!    m_RtpTimeStampStart = rand();    // rtp time scale    atom = hint_trak_atom->FindChild("mdia/minf/stbl/rtp /tims");    if (atom) {        AP4_TimsAtom* tims = AP4_DYNAMIC_CAST(AP4_TimsAtom, atom);        m_RtpTimeScale = tims->GetTimeScale();    }    // generate a random ssrc if = 0    if (m_Ssrc == 0) {        m_Ssrc = rand();    }    // get the first sample    GetRtpSample(0);}
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:52,


示例11: ProcessMoof

  virtual AP4_Result ProcessMoof(AP4_ContainerAtom* moof,    AP4_Position       moof_offset,    AP4_Position       mdat_payload_offset)  {    if (m_Protected_desc)    {      //Setup the decryption      AP4_Result result;      AP4_CencSampleInfoTable *sample_table;      AP4_UI32 algorithm_id = 0;      delete m_Decrypter;      m_Decrypter = 0;      AP4_ContainerAtom *traf = AP4_DYNAMIC_CAST(AP4_ContainerAtom, moof->GetChild(AP4_ATOM_TYPE_TRAF, 0));      if (!m_Protected_desc || !traf)        return AP4_ERROR_INVALID_FORMAT;      if (AP4_FAILED(result = AP4_CencSampleInfoTable::Create(m_Protected_desc, traf, algorithm_id, *m_FragmentStream, moof_offset, sample_table)))        return result;      if (AP4_FAILED(result = AP4_CencSampleDecrypter::Create(sample_table, algorithm_id, 0, 0, 0, m_SingleSampleDecryptor, m_Decrypter)))        return result;    }    return AP4_LinearReader::ProcessMoof(moof, moof_offset, mdat_payload_offset);  }
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:27,


示例12: m_Movie

/*----------------------------------------------------------------------|       AP4_File::AP4_File+---------------------------------------------------------------------*/AP4_File::AP4_File(AP4_ByteStream& stream, AP4_AtomFactory& atom_factory) :    m_Movie(NULL){    // get all atoms    AP4_Atom* atom;    while (AP4_SUCCEEDED(atom_factory.CreateAtomFromStream(stream, atom))) {        switch (atom->GetType()) {        case AP4_ATOM_TYPE_MOOV:            m_Movie = new AP4_Movie(dynamic_cast<AP4_MoovAtom*>(atom),                                    stream);            break;        case AP4_ATOM_TYPE_MOOF:            if (m_Movie) {                m_Movie->ProcessMoof(AP4_DYNAMIC_CAST(AP4_ContainerAtom, atom),                                     stream);            }            delete atom;            break;        case AP4_ATOM_TYPE_FTYP:            //m_Movie = new AP4_Movie(dynamic_cast<AP4_FtypAtom*>(atom),  stream);            m_FileType = dynamic_cast<AP4_FtypAtom*>(atom);        default:            m_OtherAtoms.Add(atom);        }    }}
开发者ID:Tphive,项目名称:mpc-be,代码行数:29,


示例13: GetVideoInformation

  virtual bool GetVideoInformation(unsigned int &width, unsigned int &height) override  {    if (pictureId == pictureIdPrev)      return false;    pictureIdPrev = pictureId;    if (AP4_AvcSampleDescription *avc = AP4_DYNAMIC_CAST(AP4_AvcSampleDescription, sample_description))    {      AP4_Array<AP4_DataBuffer>& buffer = avc->GetPictureParameters();      AP4_AvcPictureParameterSet pps;      for (unsigned int i(0); i < buffer.ItemCount(); ++i)      {        if (AP4_SUCCEEDED(AP4_AvcFrameParser::ParsePPS(buffer[i].GetData(), buffer[i].GetDataSize(), pps)) && pps.pic_parameter_set_id == pictureId)        {          buffer = avc->GetSequenceParameters();          AP4_AvcSequenceParameterSet sps;          for (unsigned int i(0); i < buffer.ItemCount(); ++i)          {            if (AP4_SUCCEEDED(AP4_AvcFrameParser::ParseSPS(buffer[i].GetData(), buffer[i].GetDataSize(), sps)) && sps.seq_parameter_set_id == pps.seq_parameter_set_id)            {              sps.GetInfo(width, height);              return true;            }          }          break;        }      }    }    return false;  };
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:30,


示例14: AP4_MpegSystemSampleDescription

/*----------------------------------------------------------------------|   AP4_Mp4sSampleEntry::ToSampleDescription+---------------------------------------------------------------------*/AP4_SampleDescription*AP4_Mp4sSampleEntry::ToSampleDescription(){    // create a sample description    return new AP4_MpegSystemSampleDescription(        AP4_DYNAMIC_CAST(AP4_EsdsAtom, GetChild(AP4_ATOM_TYPE_ESDS)));}
开发者ID:qmwd2006,项目名称:bento4,代码行数:10,


示例15:

/*----------------------------------------------------------------------|   AP4_Track::GetTrackLanguage+---------------------------------------------------------------------*/const char*AP4_Track::GetTrackLanguage(){    if (AP4_MdhdAtom* mdhd = AP4_DYNAMIC_CAST(AP4_MdhdAtom, m_TrakAtom->FindChild("mdia/mdhd"))) {        return mdhd->GetLanguage().GetChars();    }    return NULL;}
开发者ID:danelledeano,项目名称:VTech-InnoTab,代码行数:11,


示例16: MPEGCodecHandler

 MPEGCodecHandler(AP4_SampleDescription *sd)   :CodecHandler(sd) {   if (AP4_MpegSampleDescription *aac = AP4_DYNAMIC_CAST(AP4_MpegSampleDescription, sample_description))   {     extra_data_size = aac->GetDecoderInfo().GetDataSize();     extra_data = aac->GetDecoderInfo().GetData();   } }
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:9,


示例17: AP4_DYNAMIC_CAST

/*----------------------------------------------------------------------|   AP4_MpegAudioSampleEntry::ToSampleDescription+---------------------------------------------------------------------*/AP4_SampleDescription*AP4_MpegAudioSampleEntry::ToSampleDescription(){    // find the esds atom    AP4_EsdsAtom* esds = AP4_DYNAMIC_CAST(AP4_EsdsAtom, GetChild(AP4_ATOM_TYPE_ESDS));    if (esds == NULL) {        // check if this is a quicktime style sample description        if (m_QtVersion > 0) {            esds = AP4_DYNAMIC_CAST(AP4_EsdsAtom, FindChild("wave/esds"));        }    }        // create a sample description    return new AP4_MpegAudioSampleDescription(GetSampleRate(),                                              GetSampleSize(),                                              GetChannelCount(),                                              esds);}
开发者ID:qmwd2006,项目名称:bento4,代码行数:21,


示例18: assert

/*----------------------------------------------------------------------|   AP4_LinearReader::AdvanceFragment+---------------------------------------------------------------------*/AP4_ResultAP4_LinearReader::AdvanceFragment(){    AP4_Result result;         // go the the start of the next fragment    result = m_FragmentStream->Seek(m_NextFragmentPosition);    if (AP4_FAILED(result)) return result;    // read atoms until we find a moof    assert(m_HasFragments);    if (!m_FragmentStream) return AP4_ERROR_INVALID_STATE;    do {        AP4_Atom* atom = NULL;        result = AP4_DefaultAtomFactory::Instance.CreateAtomFromStream(*m_FragmentStream, atom);        if (AP4_SUCCEEDED(result)) {            if (atom->GetType() == AP4_ATOM_TYPE_MOOF) {                AP4_ContainerAtom* moof = AP4_DYNAMIC_CAST(AP4_ContainerAtom, atom);                if (moof) {                    // remember where we are in the stream                    AP4_Position position = 0;                    m_FragmentStream->Tell(position);                            // process the movie fragment                    result = ProcessMoof(moof, position-atom->GetSize(), position+8);                    if (AP4_FAILED(result)) return result;                    // compute where the next fragment will be                    AP4_UI32 size;                    AP4_UI32 type;                    m_FragmentStream->Tell(position);                    result = m_FragmentStream->ReadUI32(size);                    if (AP4_FAILED(result)) return AP4_SUCCESS; // can't read more                    result = m_FragmentStream->ReadUI32(type);                    if (AP4_FAILED(result)) return AP4_SUCCESS; // can't read more                    if (size == 0) {                        m_NextFragmentPosition = 0;                    } else if (size == 1) {                        AP4_UI64 size_64 = 0;                        result = m_FragmentStream->ReadUI64(size_64);                        if (AP4_FAILED(result)) return AP4_SUCCESS; // can't read more                        m_NextFragmentPosition = position+size_64;                    } else {                        m_NextFragmentPosition = position+size;                    }                    return AP4_SUCCESS;                } else {                    delete atom;                }            } else {                delete atom;            }                    }    } while (AP4_SUCCEEDED(result));            return AP4_ERROR_EOS;}
开发者ID:olegloa,项目名称:wkrj,代码行数:60,


示例19: HEVCCodecHandler

 HEVCCodecHandler(AP4_SampleDescription *sd)   :CodecHandler(sd) {   if (AP4_HevcSampleDescription *hevc = AP4_DYNAMIC_CAST(AP4_HevcSampleDescription, sample_description))   {     extra_data_size = hevc->GetRawBytes().GetDataSize();     extra_data = hevc->GetRawBytes().GetData();     naluLengthSize = hevc->GetNaluLengthSize();   } }
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:10,


示例20: AVCCodecHandler

 AVCCodecHandler(AP4_SampleDescription *sd)   : CodecHandler(sd)   , countPictureSetIds(0) {   unsigned int width(0), height(0);   if (AP4_VideoSampleDescription *video_sample_description = AP4_DYNAMIC_CAST(AP4_VideoSampleDescription, sample_description))   {     width = video_sample_description->GetWidth();     height = video_sample_description->GetHeight();   }   if (AP4_AvcSampleDescription *avc = AP4_DYNAMIC_CAST(AP4_AvcSampleDescription, sample_description))   {     extra_data_size = avc->GetRawBytes().GetDataSize();     extra_data = avc->GetRawBytes().GetData();     countPictureSetIds = avc->GetPictureParameters().ItemCount();     if (countPictureSetIds > 1 || !width || !height)       naluLengthSize = avc->GetNaluLengthSize();   } }
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:19,


示例21: AP4_DYNAMIC_CAST

/*----------------------------------------------------------------------|   AP4_HintTrackReader::GetSdpText+---------------------------------------------------------------------*/AP4_ResultAP4_HintTrackReader::GetSdpText(AP4_String& sdp_text){    AP4_Atom* sdp_atom = m_HintTrack.UseTrakAtom()->FindChild("udta/hnti/sdp ");    if (sdp_atom == NULL) return AP4_FAILURE;    // C cast is OK because we know the type of the atom    sdp_text = AP4_DYNAMIC_CAST(AP4_SdpAtom, sdp_atom)->GetSdpText();     return AP4_SUCCESS;}
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:13,


示例22: GetAudioInformation

 virtual bool GetAudioInformation(unsigned int &channels) {   AP4_AudioSampleDescription *mpeg = AP4_DYNAMIC_CAST(AP4_AudioSampleDescription, sample_description);   if (mpeg != nullptr && mpeg->GetChannelCount() != channels)   {     channels = mpeg->GetChannelCount();     return true;   }   return false; }
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:10,


示例23: AP4_AvcSampleDescription

/*----------------------------------------------------------------------|   AP4_Avc1SampleEntry::ToSampleDescription+---------------------------------------------------------------------*/AP4_SampleDescription*AP4_Avc1SampleEntry::ToSampleDescription(){    return new AP4_AvcSampleDescription(        m_Width,        m_Height,        m_Depth,        m_CompressorName.GetChars(),        AP4_DYNAMIC_CAST(AP4_AvccAtom, GetChild(AP4_ATOM_TYPE_AVCC)));}
开发者ID:danelledeano,项目名称:VTech-InnoTab,代码行数:13,


示例24: m_TrakAtom

/*----------------------------------------------------------------------|   AP4_Track::AP4_Track+---------------------------------------------------------------------*/AP4_Track::AP4_Track(AP4_TrakAtom&   atom,                      AP4_ByteStream& sample_stream,                      AP4_UI32        movie_time_scale) :    m_TrakAtom(&atom),    m_TrakAtomIsOwned(false),    m_Type(TYPE_UNKNOWN),    m_SampleTable(NULL),    m_SampleTableIsOwned(true),    m_MovieTimeScale(movie_time_scale){    // find the handler type    AP4_Atom* sub = atom.FindChild("mdia/hdlr");    if (sub) {        AP4_HdlrAtom* hdlr = AP4_DYNAMIC_CAST(AP4_HdlrAtom, sub);        if (hdlr) {            AP4_UI32 type = hdlr->GetHandlerType();            if (type == AP4_HANDLER_TYPE_SOUN) {                m_Type = TYPE_AUDIO;            } else if (type == AP4_HANDLER_TYPE_VIDE) {                m_Type = TYPE_VIDEO;            } else if (type == AP4_HANDLER_TYPE_HINT) {                m_Type = TYPE_HINT;            } else if (type == AP4_HANDLER_TYPE_ODSM ||                       type == AP4_HANDLER_TYPE_SDSM) {                m_Type = TYPE_SYSTEM;            } else if (type == AP4_HANDLER_TYPE_TEXT ||                       type == AP4_HANDLER_TYPE_TX3G) {                m_Type = TYPE_TEXT;            } else if (type == AP4_HANDLER_TYPE_JPEG) {                m_Type = TYPE_JPEG;            } else if (type == AP4_HANDLER_TYPE_SUBT) {                m_Type = TYPE_SUBTITLES;            }        }    }    // create a facade for the stbl atom    AP4_ContainerAtom* stbl = AP4_DYNAMIC_CAST(AP4_ContainerAtom, atom.FindChild("mdia/minf/stbl"));    if (stbl) {        m_SampleTable = new AP4_AtomSampleTable(stbl, sample_stream);    }}
开发者ID:9aa5,项目名称:Bento4,代码行数:45,


示例25: AP4_MpegVideoSampleDescription

/*----------------------------------------------------------------------|   AP4_MpegVideoSampleEntry::ToSampleDescription+---------------------------------------------------------------------*/AP4_SampleDescription*AP4_MpegVideoSampleEntry::ToSampleDescription(){    // create a sample description    return new AP4_MpegVideoSampleDescription(        m_Width,        m_Height,        m_Depth,        m_CompressorName.GetChars(),        AP4_DYNAMIC_CAST(AP4_EsdsAtom, GetChild(AP4_ATOM_TYPE_ESDS)));}
开发者ID:qmwd2006,项目名称:bento4,代码行数:14,


示例26: AP4_DYNAMIC_CAST

/*----------------------------------------------------------------------|   AP4_Track::GetFlags+---------------------------------------------------------------------*/AP4_UI32AP4_Track::GetFlags(){    if (m_TrakAtom) {        AP4_TkhdAtom* tkhd = AP4_DYNAMIC_CAST(AP4_TkhdAtom, m_TrakAtom->FindChild("tkhd"));        if (tkhd) {            return tkhd->GetFlags();        }    }    return 0;}
开发者ID:danelledeano,项目名称:VTech-InnoTab,代码行数:14,


示例27: AP4_DYNAMIC_CAST

/*----------------------------------------------------------------------|   AP4_StsdAtom::GetSampleEntry+---------------------------------------------------------------------*/AP4_SampleEntry*AP4_StsdAtom::GetSampleEntry(AP4_Ordinal index){    // check index    if (index >= m_Children.ItemCount()) return NULL;    // return the sample entry    AP4_Atom* entry;    m_Children.Get(index, entry);    return AP4_DYNAMIC_CAST(AP4_SampleEntry, entry);}
开发者ID:AchimTuran,项目名称:inputstream.mpd,代码行数:14,



注:本文中的AP4_DYNAMIC_CAST函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ AP4_FAILED函数代码示例
C++ AP函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。