📄 umc_mpeg2ts_spl.h
字号:
/*////////////////////////////////////////////////////////////////////////////////// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright(c) 2003-2005 Intel Corporation. All Rights Reserved.//*/#ifndef __UMC_MPEG2TS_SPL_H__#define __UMC_MPEG2TS_SPL_H__#include "umc_mpeg2pes_spl.h"//MPEG2 Transport stream splitter//"0x47..PMT.."..."0x47..PAT.."...//"0x47..PES..video data.."..."0x47..video data.."...//"0x47..PES..audio data.."..."0x47..audio data.."...namespace UMC{ class MPEG2TSSplitter : public MPEG2PESSplitter { public: MPEG2TSSplitter():MPEG2PESSplitter() { m_pTmpDataBuffAct = NULL; m_uiChoosedProgram = 0; m_bFistAudioFrame[0] = true; m_bFistAudioFrame[1] = true; m_bFirstValidAPTS = false; m_uiNextSyncBytePos = 188; } ~MPEG2TSSplitter() { } protected: //here must be implemented real packet processing, //it is specific for each format //this function witll return control if reading error //or end of stream happen Status virtual ProcessPackets(int count = -1); //read one packet (or size bytes of pure stream) and //return control, for PS, TS streams size parameter must be 0 //returned UMC_OK means next frame was formed and ready //to output //UMC_NOT_ENOUGH_DATA means packed was processed but frame //is not ready //all other is errors Status virtual ProcessOnePacket(int size = 0); //initialization of subprocessing, call before ProcessOnePacket Status virtual InitProcessing(); //de-initialization of subprocessing, call after ProcessOnePacket Status virtual CloseProcessing(); //here must be implemented pointer positioning to first //valid start code after repositioning Status virtual MoveToNextSyncWord(); int virtual CheckIfNewES(bool isAudio, int streamID, int index = -1); /*Functions for backward motion*/ Status virtual GetPrevGop( unsigned int pid, vm_sizet p_start,vm_sizet &posIFrame,vm_sizet &posPackege); Status virtual ProcessPackets_back(unsigned int pid, vm_sizet p_packege_start, vm_sizet p_start, vm_sizet p_end); protected: Status MPEG2TSPack(); int TSProgramMapSection(int payload_indicator, int index); int ProgramAssociationSection(int payload_indicator); Status CheckTSSyncByte(unsigned char &byteCode); protected: unsigned int m_uiRegularPackSize; //it can be 188 or 192 unsigned int m_uiNextSyncBytePos; unsigned int m_uiCurrentPackSize; //it is equal regular packet size //plus error bytes unsigned int m_uiChoosedProgram; private: //transport stream specific functionality //different descriptors Status AdaptationField (int adaptation_field_control); int GetDescriptor (int index); int AC3AudioStreamDescriptor (int& gotBytes, int index); int RegistrationDescriptor (int dscrLen, unsigned int& format_identifier); int CADescriptor (int dscrLen); int CopyrightDescriptor (int dscrLen); int ISO639LanguageDescriptor (int dscrLen); int VideoStreamDescriptor (); int AudioStreamDescriptor (); int HierarchyDescriptor (); int DataStreamAlignmentDescriptor (); int TargetBackgroundGridDescriptor (); int VideoWindowDescriptor (); int SystemClockDescriptor (); int MultiplexBufferUtilizationDescriptor(); int MaximumBitrateDescriptor (); int PrivateDataIndicatorDescriptor (); int SmoothingBufferDescriptor (); int STDDescriptor (); int IBPDescriptor (); };} // namespace UMC#endif /* __UMC_MPEG2TS_SPL_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -