⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umc_mp4_spl_int.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                    headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);            info->m_audio_info.sample_frequency = GetSamplingFrequency(temp);            if( !info->m_audio_info.sample_frequency )            {                GetBits(&info->m_audio_info.sample_frequency,                    24,                    &ptr,                    headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);            }            GetBits(&info->m_audio_info.channels,                    4,                    &ptr,                    headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);            if ( info->m_audio_info.channels == 0 )            {                GetBits(&temp,                        1,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // frameLengthFlag                GetBits(&temp,                        1,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // dependsOnCoreCoder                if ( temp )                {                    GetBits(&temp,                            14,                            &ptr,                            headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // coreCoderDelay                }                GetBits(&temp,                        1,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // extensionFlag                GetBits(&temp,                        4,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // element_instance_tag                GetBits(&temp,                        2,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // object_type                GetBits(&temp,                        4,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // sampling_frequency_index                GetBits(&temp,                        4,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // num_front_channel_elements                info->m_audio_info.channels += temp;                GetBits(&temp,                        4,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // num_side_channel_elements                info->m_audio_info.channels += temp;                GetBits(&temp,                        4,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // num_back_channel_elements                info->m_audio_info.channels += temp;                GetBits(&temp,                        2,                        &ptr,                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // num_lfe_channel_elements                info->m_audio_info.channels += temp;            }// if ( info->m_audio_info.channels == 0 )        } // if ( headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfigLen )*/        else        {            info->m_audio_info.stream_type =                ObjectIDType(headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.objectTypeID);            info->m_audio_info.channels =                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->channels;            info->m_audio_info.sample_frequency =                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->sample_rate;        }        switch(info->m_audio_info.channels) {            {            case 1:                info->m_audio_info.channel_mask = CHANNEL_FRONT_CENTER;                break;            case 2:                info->m_audio_info.channel_mask = CHANNEL_FRONT_LEFT | CHANNEL_FRONT_RIGHT;                break;            case 3:                info->m_audio_info.channel_mask = CHANNEL_FRONT_LEFT |                                                   CHANNEL_FRONT_RIGHT |                                                   CHANNEL_FRONT_CENTER;                break;            case 4:                info->m_audio_info.channel_mask = CHANNEL_FRONT_LEFT |                                                   CHANNEL_FRONT_RIGHT |                                                   CHANNEL_FRONT_CENTER |                                                   CHANNEL_TOP_CENTER;                break;            case 5:                info->m_audio_info.channel_mask = CHANNEL_FRONT_LEFT |                                                   CHANNEL_FRONT_RIGHT |                                                   CHANNEL_FRONT_CENTER |                                                   CHANNEL_BACK_LEFT |                                                   CHANNEL_BACK_RIGHT;                break;            case 6:                info->m_audio_info.channel_mask = CHANNEL_FRONT_LEFT |                                                   CHANNEL_FRONT_RIGHT |                                                   CHANNEL_FRONT_CENTER |                                                   CHANNEL_BACK_LEFT |                                                   CHANNEL_BACK_RIGHT |                                                   CHANNEL_LOW_FREQUENCY;                break;            case 7:                info->m_audio_info.channel_mask = CHANNEL_FRONT_LEFT |                                                   CHANNEL_FRONT_RIGHT |                                                   CHANNEL_FRONT_CENTER |                                                   CHANNEL_BACK_LEFT |                                                   CHANNEL_BACK_RIGHT |                                                   CHANNEL_LOW_FREQUENCY |                                                   CHANNEL_FRONT_LEFT_OF_CENTER |                                                   CHANNEL_FRONT_RIGHT_OF_CENTER;                break;            default:                m_info.m_audio_info.channels = 0;                break;            }        }        info->m_audio_info.bitrate = headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.avgBitrate;        info->m_audio_info.bitPerSample = 0;        info->m_audio_info.duration = ((float)(vm_var64s)(headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.mdhd.duration) /                         (float)headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.mdhd.time_scale);        //if any additional audio track        if ( total_audio > 1 )        {            for ( i = 0; i < total_audio; i++ )            {                ptr = 0;                if ( headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfigLen )                {                    GetBits(&temp,                            5,                            &ptr,                            headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                    info->m_audio_info_aux[i].stream_type = ObjectIDType(temp);                    GetBits(&temp,                            4,                            &ptr,                            headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                    info->m_audio_info_aux[i].sample_frequency = GetSamplingFrequency(temp);                    if( !info->m_audio_info_aux[i].sample_frequency )                    {                        GetBits(&info->m_audio_info_aux[i].sample_frequency,                                24,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                    }                    GetBits(&info->m_audio_info_aux[i].channels,                            4,                            &ptr,                            headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                    if ( info->m_audio_info_aux[i].channels == 0 )                    {                        GetBits(&temp,                                1,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // frameLengthFlag                        GetBits(&temp,                                1,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // dependsOnCoreCoder                        if ( temp )                        {                            GetBits(&temp, 14, &ptr, headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // coreCoderDelay                        }                        GetBits(&temp,                                1,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // extensionFlag                        GetBits(&temp,                                4,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // element_instance_tag                        GetBits(&temp,                                2,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // object_type                        GetBits(&temp,                                4,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // sampling_frequency_index                        GetBits(&temp,                                4,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // num_front_channel_elements                        info->m_audio_info_aux[i].channels += temp;                        GetBits(&temp,                                4,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // num_side_channel_elements                        info->m_audio_info_aux[i].channels += temp;                        GetBits(&temp,                                4,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // num_back_channel_elements                        info->m_audio_info_aux[i].channels += temp;                        GetBits(&temp,                                2,                                &ptr,                                headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig); // num_lfe_channel_elements                        info->m_audio_info_aux[i].channels += temp;                    }                }                else                {                    info->m_audio_info_aux[i].stream_type =                        ObjectIDType(headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.objectTypeID);                    info->m_audio_info_aux[i].channels =                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->channels;                    info->m_audio_info_aux[i].sample_frequency =                        headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->sample_rate;                }                info->m_audio_info_aux[i].bitrate = headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.avgBitrate;                info->m_audio_info_aux[i].bitPerSample = 0;                info->m_audio_info_aux[i].duration =                    ((float)(vm_var64s)(headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.mdhd.duration) /                    (float)headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.mdhd.time_scale);            } // for ( total_audio )        } // if ( total_audio > 1 )        info->m_audio_info.bitPerSample  = 16;    } // if ( total_audio )    info->m_splitter_flags = m_splitter_flags;    info->m_system_info.stream_type = MP4_ATOM_STREAM;    return UMC_OK;}sInfo_sample SplitterMP4::GetSamplePositionAudio(vm_var32 track_idx, vm_var32 nsample){    sInfo_sample    temp;    if ( (track_idx >= total_audio) ) {        temp.position = -1;        temp.size = -1;    }    int id_trak = buferAD[track_idx].buf->idTrak;    if ( nsample > headerMPEG4.moov.trak[id_trak]->mdia.minf.stbl.stsz.total_entries ) {        temp.position = -1;        temp.size = -1;    }    temp.position = (int)FindPosOfSamples(&headerMPEG4, nsample, id_trak);    if (headerMPEG4.moov.trak[id_trak]->mdia.minf.stbl.stsz.sample_size) {        temp.size = headerMPEG4.moov.trak[id_trak]->mdia.minf.stbl.stsz.sample_size;    } else {        temp.size = headerMPEG4.moov.trak[id_trak]->mdia.minf.stbl.stsz.table[nsample].size;    }    return temp;}sInfo_sample SplitterMP4::GetSamplePositionVideo(vm_var32 track_idx, vm_var32 nsample){    sInfo_sample    temp;    nsample -= 2;    if ( (track_idx >= total_audio) ) {        temp.position = -1;        temp.size = -1;    }    int id_trak = buferVC[track_idx].buf->idTrak;    if ( nsample > headerMPEG4.moov.trak[id_trak]->mdia.minf.stbl.stsz.total_entries ) {        temp.position = -1;        temp.size = -1;    }    temp.position = (int)FindPosOfSamples(&headerMPEG4, nsample, id_trak);   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -