| // { dg-do compile } |
| |
| typedef struct { |
| } IppLibraryVersion; |
| typedef unsigned char Ipp8u; |
| typedef unsigned int Ipp32u; |
| typedef signed int Ipp32s; |
| typedef enum e_vm_Status { |
| VM_OK = 0, VM_OPERATION_FAILED =-999, VM_NOT_INITIALIZED =-998, VM_TIMEOUT =-987, VM_NOT_ENOUGH_DATA =-996, VM_NULL_PTR =-995, VM_SO_CANT_LOAD =-994, VM_SO_INVALID_HANDLE =-993, VM_SO_CANT_GET_ADDR =-992 } |
| vm_status; |
| typedef Ipp32s Status; |
| class MediaReceiver { |
| }; |
| class MediaBuffer : public MediaReceiver { |
| }; |
| struct TrackInfo { |
| }; |
| struct Mpeg2TrackInfo : public TrackInfo { |
| }; |
| class BitstreamReader { |
| public: BitstreamReader(void); |
| virtual ~BitstreamReader(void) { |
| } |
| Ipp32u GetBits(Ipp32s iNum); |
| void SkipBits(Ipp32s iNum); |
| protected: virtual void Refresh(void); |
| Ipp32s m_iReadyBits; |
| }; |
| class FrameConstructor : public MediaBuffer { |
| }; |
| class VideoFrameConstructor : public FrameConstructor { |
| }; |
| class Mpeg2FrameConstructor : public VideoFrameConstructor { |
| static Status ParsePictureHeader(Ipp8u *buf, Ipp32s iLen, Mpeg2TrackInfo *pInfo); |
| }; |
| Status Mpeg2FrameConstructor::ParsePictureHeader(Ipp8u *buf, Ipp32s iLen, Mpeg2TrackInfo *pInfo) { |
| BitstreamReader bs; |
| bs.SkipBits(32 + 4 + 4 + 4 + 4 + 4 + 2); |
| bs.SkipBits(1 + 1 + 1 + 1 + 1 + 1 + 1); |
| bs.SkipBits(5); |
| bs.SkipBits(3); |
| Ipp8u source_format; |
| bs.SkipBits(22); |
| bs.SkipBits(8); |
| if (7 == source_format) { |
| Ipp8u ufep = (Ipp8u)bs.GetBits(3); |
| if (0x01 == ufep) { |
| bs.SkipBits(10); |
| } |
| } |
| return Status(); |
| } |
| void BitstreamReader::SkipBits(Ipp32s iNum) { |
| if (iNum <= m_iReadyBits) { |
| m_iReadyBits -= iNum; |
| Refresh(); |
| } |
| } |
| void BitstreamReader::Refresh(void) { } |