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

📄 umc_mp4_spl_int.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                                        &ptr,                                        headerMPEG4.moov.trak[buferVC[0].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                GetBits(&info->m_video_info.clip_info.width,                                        13,                                        &ptr,                                        headerMPEG4.moov.trak[buferVC[0].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                GetBits(&temp,                                        1,                                        &ptr,                                        headerMPEG4.moov.trak[buferVC[0].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                GetBits(&info->m_video_info.clip_info.height,                                        13,                                        &ptr,                                        headerMPEG4.moov.trak[buferVC[0].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                            }// if                            break;                        }// if                    }// if                }// if            }// if        }// for        if ( info->m_video_info.clip_info.width == -1 )        {            info->m_video_info.clip_info.width  =                (int)headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->width;            info->m_video_info.clip_info.height =                (int)headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->height;        }        info->m_video_info.bitrate =            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.avgBitrate;        info->m_video_info.duration =            ((float)(vm_var64s)(headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.mdhd.duration) /            (float)headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.mdhd.time_scale);        info->m_video_info.framerate =            (headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsz.total_entries) /            info->m_video_info.duration;        switch ( headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.objectTypeID )        {            case 0x00:                info->m_video_info.stream_type = UMC::UNDEF_VIDEO;                break;            case 0x6a:                info->m_video_info.stream_type = UMC::MPEG1_VIDEO;                break;            case 0x60:            case 0x61:            case 0x62:                info->m_video_info.stream_type = UMC::MPEG2_VIDEO;                break;            case 0x20:                info->m_video_info.stream_type    = UMC::MPEG4_VIDEO;                info->m_video_info.stream_subtype = UMC::MPEG4_VIDEO_QTIME;                break;            case 0xf1:                info->m_video_info.stream_type = UMC::H264_VIDEO;                break;            case 0xf2:                info->m_video_info.stream_type = UMC::H263_VIDEO;                break;            case 0xf3:                info->m_video_info.stream_type = UMC::H261_VIDEO;                break;            default:                info->m_video_info.stream_type = UMC::UNDEF_VIDEO;                break;        }        //if any additional video track        if ( total_video > 1 )        {            for ( i = 0; i < total_video; i++ )            {                info->m_video_info.clip_info.width = -1;                // find start code VideoObjectLayer and parse width and height                for ( j = 0; j < headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfigLen; j++ )                {                    if ( headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig[j] == 0x00 )                    {                        if ( headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig[j + 1] == 0x00 )                        {                            if ( headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig[j + 2] == 0x01 )                            {                                if ( (headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig[j + 3] >= 0x20)                                    && (headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig[j + 3] <= 0x2f) )                                {                                    ptr = 8 * (j + 4);                                    GetBits(&temp,                                            9,                                                &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    GetBits(&temp,                                            1,                                            &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    if ( temp )                                    {                                        GetBits(&temp,                                                7,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    }                                    GetBits(&temp,                                            4,                                            &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    if ( temp == 15 )                                    {                                        GetBits(&temp,                                                18,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    }                                    GetBits(&temp,                                            1,                                            &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    if ( temp )                                    {                                        GetBits(&temp,                                                3,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                        GetBits(&temp,                                                1,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                        if ( temp )                                        {                                            GetBits(&temp,                                                    79,                                                    &ptr,                                                    headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                        }                                    }                                    GetBits(&video_object_layer_shape,                                            2,                                            &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    if ( temp == 3 )                                    {                                        GetBits(&temp,                                                4,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    }                                    GetBits(&temp,                                            1,                                            &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    GetBits(&temp,                                            16,                                            &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    temp = temp - 1;                                    for ( k = 1; k <= 16; k ++ )                                    {                                        temp >>= 1;                                        if ( temp == 0 )                                        {                                            break;                                        }                                    }                                    GetBits(&temp,                                            1,                                            &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    GetBits(&temp,                                            1,                                            &ptr,                                            headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    if ( temp )                                    {                                        GetBits(&temp,                                                k,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    }                                    if ( video_object_layer_shape == 0 )                                    {                                        GetBits(&temp,                                                1,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                        GetBits(&info->m_video_info_aux[i].clip_info.width,                                                13,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[0].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                        GetBits(&temp,                                                1,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                        GetBits(&info->m_video_info_aux[i].clip_info.height,                                                13,                                                &ptr,                                                headerMPEG4.moov.trak[buferVC[0].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig);                                    }// if                                    break;                                }// if                            }// if                        }// if                    }// if                } // for                if ( info->m_video_info_aux[i].clip_info.width == -1 )                {                    info->m_video_info_aux[i].clip_info.width  =                        (int)headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->width;                    info->m_video_info_aux[i].clip_info.height =                        (int)headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->height;                }                info->m_video_info_aux[i].bitrate =                    headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.avgBitrate;                info->m_video_info_aux[i].duration = ((float)(vm_var64s)(headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.mdhd.duration) /                                 (float)headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.mdhd.time_scale);                info->m_video_info_aux[i].framerate =                    (headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsz.total_entries) /                    info->m_video_info_aux[i].duration;                switch ( headerMPEG4.moov.trak[buferVC[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.objectTypeID )                {                    case 0x00:                        info->m_video_info_aux[i].stream_type = UMC::UNDEF_VIDEO;                    break;                    case 0x6a:                        info->m_video_info_aux[i].stream_type = UMC::MPEG1_VIDEO;                        break;                    case 0x60:                    case 0x61:                    case 0x62:                        info->m_video_info_aux[i].stream_type = UMC::MPEG2_VIDEO;                        break;                    case 0x20:                        info->m_video_info_aux[i].stream_type = UMC::MPEG4_VIDEO;                        info->m_video_info_aux[i].stream_subtype = UMC::MPEG4_VIDEO_QTIME;                      break;                    case 0xf1:                        info->m_video_info_aux[i].stream_type = UMC::H264_VIDEO;                        break;                    case 0xf2:                        info->m_video_info_aux[i].stream_type = UMC::H263_VIDEO;                        break;                    case 0xf3:                        info->m_video_info_aux[i].stream_type = UMC::H261_VIDEO;                        break;                    default:                        info->m_video_info_aux[i].stream_type = UMC::UNDEF_VIDEO;                        break;                }// switch            }// for        }// if    }// if    if ( (total_audio > 0) && (m_splitter_flags & AUDIO_SPLITTER) )    {        info->number_audio_tracks = total_audio;//      info->m_audio_info.stream_type_ex = AAC_FMT_RAW;        if( total_audio > 1 )        {            if( info->m_audio_info_aux )            {                ippsFree(info->m_audio_info_aux);            }            unsigned int buff_size = total_audio * sizeof(sAudioStreamInfo);            info->m_audio_info_aux = (sAudioStreamInfo*)ippsMalloc_8u(buff_size);            memset(info->m_audio_info_aux, 0, buff_size);        }        //zero audio and video track info        ptr = 0; i = 0;        if ( headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfigLen )        {            bs.nBit_offset = 32;            bs.pCurrent_dword = bs.pBuffer = (unsigned int*) headerMPEG4.moov.trak[buferAD[i].buf->idTrak]->mdia.minf.stbl.stsd.table->esds.decoderConfig;            dec_audio_specific_config(&audio_config_data,&bs);            info->m_audio_info.stream_type = ObjectIDType(audio_config_data.audioObjectType);            info->m_audio_info.sample_frequency = get_sampling_frequency(&audio_config_data);            info->m_audio_info.channels = get_channels_number(&audio_config_data);        }/*        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.stream_type = ObjectIDType(temp);            GetBits(&temp,                    4,                    &ptr,

⌨️ 快捷键说明

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