Code Search for Developers
 
 
  

Ap4AsyncReaderStream.cpp from guliverkli at Krugle


Show Ap4AsyncReaderStream.cpp syntax highlighted

#include "StdAfx.h"
#include "Ap4AsyncReaderStream.h"

AP4_AsyncReaderStream::AP4_AsyncReaderStream(CBaseSplitterFile* pFile) 
	: m_refs(1)
	, m_pFile(pFile)
{
	ASSERT(pFile);
}

AP4_AsyncReaderStream::~AP4_AsyncReaderStream()
{
	ASSERT(m_refs == 0);
}

void AP4_AsyncReaderStream::AddReference()
{
	ASSERT(m_refs > 0); 
	++m_refs;
}

void AP4_AsyncReaderStream::Release()
{
	ASSERT(m_refs > 0); 
	if(--m_refs == 0) delete this;
}

AP4_Result AP4_AsyncReaderStream::Read(void* buffer, AP4_Size bytesToRead, AP4_Size* bytesRead)
{
	AP4_Size bytesAvail = (AP4_Size)m_pFile->GetRemaining();

	if(bytesAvail < bytesToRead)
	{
		if(bytesRead) *bytesRead = bytesAvail;
		bytesToRead = bytesAvail;
	}

	if(bytesAvail == 0)
	{
		return AP4_ERROR_EOS;
	}

	if(FAILED(m_pFile->ByteRead((BYTE*)buffer, bytesToRead)))
	{
		if(bytesRead) *bytesRead = 0;
		return AP4_ERROR_READ_FAILED;
	}

	if(bytesRead) *bytesRead = bytesToRead;

	return AP4_SUCCESS;
}

AP4_Result AP4_AsyncReaderStream::Write(const void* buffer, AP4_Size bytesToWrite, AP4_Size* bytesWritten)
{
    return AP4_ERROR_WRITE_FAILED;
}

AP4_Result AP4_AsyncReaderStream::Seek(AP4_Offset offset)
{
	m_pFile->Seek(offset);
	return m_pFile->GetPos() == offset ? AP4_SUCCESS : AP4_FAILURE;
}

AP4_Result AP4_AsyncReaderStream::Tell(AP4_Offset& offset)
{
	offset = (AP4_Offset)m_pFile->GetPos();
	return AP4_SUCCESS;
}

AP4_Result AP4_AsyncReaderStream::GetSize(AP4_Size& size)
{
	size = (AP4_Size)m_pFile->GetLength();
	return AP4_SUCCESS;
}



See more files for this project here

guliverkli

Home of VobSub, Media Player Classic (MPC) and other misc utils.

Project homepage: http://sourceforge.net/projects/guliverkli
Programming language(s): C,C++,PHP
License: other

  AP4/
    Update/
      v0.6.3/
        Source/
          Config/
            Ap4Config.h
          Core/
            Ap4Atom.h
            Ap4AtomFactory.cpp
            Ap4AtomFactory.h
            Ap4AtomSampleTable.cpp
            Ap4AtomSampleTable.h
            Ap4AvcCAtom.cpp
            Ap4AvcCAtom.h
            Ap4ByteStream.cpp
            Ap4ByteStream.h
            Ap4ChplAtom.cpp
            Ap4ChplAtom.h
            Ap4CmvdAtom.cpp
            Ap4CmvdAtom.h
            Ap4Co64Atom.cpp
            Ap4Co64Atom.h
            Ap4ContainerAtom.cpp
            Ap4CttsAtom.cpp
            Ap4CttsAtom.h
            Ap4DataAtom.cpp
            Ap4DataAtom.h
            Ap4DcomAtom.cpp
            Ap4DcomAtom.h
            Ap4DrefAtom.cpp
            Ap4File.cpp
            Ap4FtabAtom.cpp
            Ap4FtabAtom.h
            Ap4HdlrAtom.cpp
            Ap4HdlrAtom.h
            Ap4MdhdAtom.cpp
            Ap4MdhdAtom.h
            Ap4MoovAtom.cpp
            Ap4Movie.cpp
            Ap4Movie.h
            Ap4MvhdAtom.cpp
            Ap4MvhdAtom.h
            Ap4Sample.cpp
            Ap4Sample.h
            Ap4SampleDescription.h
            Ap4SampleEntry.cpp
            Ap4SampleEntry.h
            Ap4StcoAtom.cpp
            Ap4StscAtom.h
            Ap4StsdAtom.cpp
            Ap4StsdAtom.h
            Ap4StssAtom.h
            Ap4StszAtom.cpp
            Ap4StszAtom.h
            Ap4SttsAtom.cpp
            Ap4SttsAtom.h
            Ap4TkhdAtom.cpp
            Ap4TkhdAtom.h
            Ap4Track.cpp
            Ap4Track.h
            Ap4TrakAtom.cpp
            Ap4TrakAtom.h
            Ap4Types.h
            Ap4Utils.cpp
            Ap4Utils.h
          Crypto/
            Ap4AesBlockCipher.cpp
        Bento4_0.6.3-001.7z
  Ap4AsyncReaderStream.cpp
  Ap4AsyncReaderStream.h
  MP4Splitter.cpp
  MP4Splitter.def
  MP4Splitter.h
  MP4Splitter.rc
  MP4SplitterFile.cpp
  MP4SplitterFile.h
  MP4Splitter_vs2005.sln
  MP4Splitter_vs2005.vcproj
  readme.txt
  resource.h
  stdafx.cpp
  stdafx.h