/* * $Id$ * * (C) 2006-2010 see AUTHORS * * This file is part of mplayerc. * * Mplayerc is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Mplayerc is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "stdafx.h" #include "H264Nalu.h" void CH264Nalu::SetBuffer(BYTE* pBuffer, int nSize, int nNALSize) { m_pBuffer = pBuffer; m_nSize = nSize; m_nNALSize = nNALSize; m_nCurPos = 0; m_nNextRTP = 0; m_nNALStartPos = 0; m_nNALDataPos = 0; } bool CH264Nalu::MoveToNextStartcode() { int nBuffEnd = (m_nNextRTP > 0) ? min (m_nNextRTP, m_nSize-4) : m_nSize-4; for (int i=m_nCurPos; i= m_nSize) return false; if ((m_nNALSize != 0) && (m_nCurPos == m_nNextRTP)) { // RTP Nalu type : (XX XX) XX XX NAL..., with XX XX XX XX or XX XX equal to NAL size m_nNALStartPos = m_nCurPos; m_nNALDataPos = m_nCurPos + m_nNALSize; int nTemp = 0; for (int i=0; i>7) & 1; nal_reference_idc = (m_pBuffer[m_nNALDataPos]>>5) & 3; nal_unit_type = (NALU_TYPE) (m_pBuffer[m_nNALDataPos] & 0x1f); return true; }