/*
* $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;
}