[prev in list] [next in list] [prev in thread] [next in thread]
List: helix-datatype-cvs
Subject: [Datatype-cvs] mp4/audio/aacdepacketizer Umakefil, NONE, 1.1 aacdepack.cpp, NONE, 1.1 aacdepack.ver,
From: yuxinliu () helixcommunity ! org
Date: 2012-07-23 7:46:44
[Download RAW message or body]
Update of /cvsroot/datatype/mp4/audio/aacdepacketizer
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv6760
Added Files:
Umakefil aacdepack.cpp aacdepack.ver aacdepackdll.cpp
aacdlliids.cpp win32.pcf
Log Message:
Synopsis
========
This CR implement Pass through feature for producer.
Branch : PRODUCER_14_0_RN
Suggested by Sujeet
Description:
==========
The most of IP camera support H.264 video encoding from the camera. In this case, HMP \
doesn't need to transcode it again. It saves system resource and content quality. \
If RTSP stream source has H.264/AAC codec, HMP pass through encoded data.
This CR support pass through all input stream at the same time. This CR never support \
pass through one stream and encoder another stream.
My solution:
1 Add two option in input: "PassThroughVideo" and "PassThroughAudio", their default \
value are false. Customer can set PassThroughVideo=true and PassThroughAudio=true to \
enable pass through. If the input video stream is h.264 and audio stream is AAC, and \
the PassThroughVideo and PassThroughAudio are true, HMP will pass through the input \
stream.
2 If pass through is enable, HMP will create a pass through pipeline, like the \
following:
Input filter(Dtdriver-> depacketizer->dtdrreader) ==>packetizer filter==> packetizer \
asm mux filter ==> destination filter(rbs)
Input filter(Dtdriver-> depacketizer->dtdrreader) ==>unpacketizer asm mux filter ==> \
destination filter(file write)
3 Implement audio depacketizer and video depacketizer plug-in so that Dtdriver \
plug-in can depacketizer H264 and AAC stream. 264depacketizer.rar and \
aacdepacketizer.rar are source code of the new depacketizer plug-in. Path of the two \
plug-in are: datatype\mp4\audio\aacdepacketizer.
datatype\mp4\video\264depacketizer.
4 Implement new class CAudioSourceDepacketizer in source file adepacker.cpp and \
adepacker.h. Dtdriver plug-in will through class CAudioSourceDepacketizer to search \
audio depacketizer plug-in, and depacketize input stream.
5 I add a new macro HELIX_FEATURE_PASS_THROUGH into source file h264pyld.cpp and \
mp4apyld.cpp so that Passthrough feature can share source file with other feature. I \
define macro HELIX_FEATURE_PASS_THROUGH at Umakefil of 264depacketizer folder and \
aacdepacketizer folder.
Files affected:
=========
datatype/mp4/payload/h264pyld.cpp
datatype/mp4/payload/mp4apyld.cpp
client_rn/encodesvc/plugins/input/dtdrreader/hxdtdrreader.cpp
client_rn/encodesvc/plugins/input/dtdrreader/hxdtdrreader.h
client_rn/encodesvc/plugins/input/dtdrreader/hxdtdrservice.cpp
client/encodesvc/include/ihxtconstants.h
producerapps/installer/root/xmlschemas/job.3.0.xsd
datatype/tools/dtdriver/decoder/audio/Umakefil
datatype/tools/dtdriver/decoder/common/decslcfn.cpp
datatype/tools/dtdriver/decoder/common/pub/decslcfn.h
datatype/tools/dtdriver/decoder/video/vdepacker.cpp
client/encodesvc/engine/encpipeline/inputpipeline.cpp
client/encodesvc/engine/encpipeline/outputpipeline.cpp
client/encodesvc/engine/encpipeline/outputpipeline.h
client/encodesvc/engine/encsession/inputsource.cpp
client/build/BIF/PRODUCER_14.bif
producerapps_rn/installer/producer/make_tempdir
Testing Performed:
================
Unit Tests:
1. enable pass through by set PassThroughVideo="true", PassThroughVideo="true"
Input: only one audio stream, type is AAC.
Output: save as a MP4 file.
Expected: HMP never decode and encode the input stream, just pass through it.
Real result: Yes
2. enable pass through by set PassThroughVideo="true", PassThroughVideo="true"
Input: only one video stream, type is H264.
Output: save as a MP4 file.
Expected: HMP never decode and encode the input stream, just pass through it.
Real result: Yes
3. enable pass through by set PassThroughVideo="true", PassThroughVideo="true"
Input: two input stream, video is H264, audio is AAC
Output: save as a MP4 file.
Expected: HMP never decode and encode the input stream, just pass through it.
Real result: Yes
4. enable pass through by set PassThroughVideo="true", PassThroughVideo="true"
Input: two input stream, video is H264, audio is AAC
Output: RBS.
Expected: HMP never decode and encode the input stream, just pass through it to \
server. Real result: Yes. But there are some warning message.
5. disable pass through by set PassThroughVideo="false", PassThroughVideo="false"
Input: two input stream, video is H264, audio is AAC
Output: save as a MP4 file.
Expected: HMP will decode and encode the input stream.
Real result: Yes
Unit Tests: None
Leak Tests: None
Performance Tests: N/A
Platforms Tested: win32-i386-vc9
Builds Verified: win32-i386-vc9
QA Hints
no
--- NEW FILE: aacdepack.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file,
* are subject to the current version of the RealNetworks Public
* Source License (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the current version of the RealNetworks Community
* Source License (the "RCSL") available at
* http://www.helixcommunity.org/content/rcsl, in which case the RCSL
* will apply. You may also obtain the license terms directly from
* RealNetworks. You may not use this file except in compliance with
* the RPSL or, if you have a valid RCSL with RealNetworks applicable
* to this file, the RCSL. Please see the applicable RPSL or RCSL for
* the rights, obligations and limitations governing use of the
* contents of the file.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the
* portions it created.
*
* This file, and the files included with this file, is distributed
* and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
* ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
/****************************************************************************
* Defines
*/
#define UNINITIALIZED_SEQ_NUMBER 0xFFFFFFFF
// Lowest acceptable version numbers
#define STREAM_MAJOR_VERSION 0
#define STREAM_MINOR_VERSION 0
#define CONTENT_MAJOR_VERSION 0
#define CONTENT_MINOR_VERSION 0
/****************************************************************************
* Includes
*/
#include "hxver.h"
#include "aacdepack.ver"
#include "hxtypes.h"
#include "hxresult.h"
#include "hxcom.h"
#include "hxcomm.h"
#include "hxmime.h"
#include "netbyte.h"
#include "ihxpckts.h"
#include "pckunpck.h" // SetCStringProperty
#include "aacdepack.h"
#include "mp4apyld.h"
/****************************************************************************
* Constants
*/
const char* CAACDepacker::zm_pDescription = "RealNetworks RealVideo 264 Depacker \
Plugin"; const char* CAACDepacker::zm_pCopyright = HXVER_COPYRIGHT;
const char* CAACDepacker::zm_pMoreInfoURL = HXVER_MOREINFO;
const char* CAACDepacker::zm_pSupportedMimeTypes[] = {"audio/MP4A-LATM", NULL};
const char* CAACDepacker::zm_pSupportedCodecs = "audio/MP4A-LATM";
const char* CAACDepacker::zm_pMimeType = "audio/MP4A-LATM";
/****************************************************************************
* CAACDepacker class
*/
/****************************************************************************
* Constructor/Destructor
*/
CAACDepacker::CAACDepacker(void)
: m_pDepacker(NULL)
, m_pHeader(NULL)
, m_pCCF(NULL)
, m_lRefCount(0)
{
;
}
CAACDepacker::~CAACDepacker(void)
{
HX_RELEASE(m_pCCF);
HX_DELETE(m_pDepacker);
}
HX_RESULT STDAPICALLTYPE CAACDepacker::HXCreateInstance(IUnknown** ppIUnknown)
{
*ppIUnknown = (IUnknown*)(IHXPlugin*) new CAACDepacker();
if (*ppIUnknown)
{
(*ppIUnknown)->AddRef();
return HXR_OK;
}
return HXR_OUTOFMEMORY;
}
HX_RESULT STDAPICALLTYPE CAACDepacker::CanUnload(void)
{
return CanUnload2();
}
HX_RESULT STDAPICALLTYPE CAACDepacker::CanUnload2(void)
{
return ((CHXBaseCountingObject::ObjectsActive() > 0) ? HXR_FAIL : HXR_OK);
}
/************************************************************************
* IHXPlugin methods
*/
/************************************************************************
* Method:
* IHXPlugin::InitPlugin
* Purpose:
* Initializes the plugin for use. This interface must always be
* called before any other method is called. This is primarily needed
* so that the plugin can have access to the context for creation of
* IHXBuffers and IMalloc.
*/
STDMETHODIMP CAACDepacker::InitPlugin(IUnknown* /*IN*/ pContext)
{
HX_RESULT retVal = HXR_OK;
HX_ASSERT(pContext);
m_pContext = pContext;
m_pContext->AddRef();
retVal = m_pContext->QueryInterface(IID_IHXCommonClassFactory,
(void**) &m_pCCF);
return retVal;
}
/************************************************************************
* Method:
* IHXPlugin::GetPluginInfo
* Purpose:
* Returns the basic information about this plugin. Including:
*
* bLoadMultiple whether or not this plugin DLL can be loaded
* multiple times. All File Formats must set
* this value to TRUE.
* pDescription which is used in about UIs (can be NULL)
* pCopyright which is used in about UIs (can be NULL)
* pMoreInfoURL which is used in about UIs (can be NULL)
*/
STDMETHODIMP CAACDepacker::GetPluginInfo
(
REF(HXBOOL) bLoadMultiple,
REF(const char*) pDescription,
REF(const char*) pCopyright,
REF(const char*) pMoreInfoURL,
REF(ULONG32) ulVersionNumber
)
{
bLoadMultiple = TRUE; // Must be true for file formats.
pDescription = zm_pDescription;
pCopyright = zm_pCopyright;
pMoreInfoURL = zm_pMoreInfoURL;
ulVersionNumber = TARVER_ULONG32_VERSION;
return HXR_OK;
}
/************************************************************************
* Method:
* IHXPluginProperties::GetProperties
*/
STDMETHODIMP
CAACDepacker::GetProperties(REF(IHXValues*) pIHXValuesProperties)
{
IHXBuffer* pBuffer = NULL;
HX_ASSERT(m_pCCF);
m_pCCF->CreateInstance(IID_IHXValues, (void**)&pIHXValuesProperties);
if (pIHXValuesProperties)
{
//plugin class
m_pCCF->CreateInstance(IID_IHXBuffer, (void**)&pBuffer);
pBuffer->Set((const unsigned char*)PLUGIN_DEPACKER_TYPE, \
strlen(PLUGIN_DEPACKER_TYPE)+1); \
pIHXValuesProperties->SetPropertyCString(PLUGIN_CLASS, pBuffer); \
HX_RELEASE(pBuffer);
//mime type
m_pCCF->CreateInstance(IID_IHXBuffer, (void**)&pBuffer);
pBuffer->Set((const unsigned char*)zm_pMimeType, strlen(zm_pMimeType)+1);
pIHXValuesProperties->SetPropertyCString(PLUGIN_DEPACKER_MIME, pBuffer);
HX_RELEASE(pBuffer);
}
else
{
return HXR_OUTOFMEMORY;
}
return HXR_OK;
}
/****************************************************************************
* IUnknown methods
*/
/****************************************************************************
* IUnknown::AddRef ref: hxcom.h
*
* This routine increases the object reference count in a thread safe
* manner. The reference count is used to manage the lifetime of an object.
* This method must be explicitly called by the user whenever a new
* reference to an object is used.
*/
STDMETHODIMP_(ULONG32) CAACDepacker::AddRef()
{
return InterlockedIncrement(&m_lRefCount);
}
/****************************************************************************
* IUnknown::Release ref: hxcom.h
*
* This routine decreases the object reference count in a thread safe
* manner, and deletes the object if no more references to it exist. It must
* be called explicitly by the user whenever an object is no longer needed.
*/
STDMETHODIMP_(ULONG32) CAACDepacker::Release()
{
if (InterlockedDecrement(&m_lRefCount) > 0)
{
return m_lRefCount;
}
delete this;
return 0;
}
/****************************************************************************
* IUnknown::QueryInterface ref: hxcom.h
*
* This routine indicates which interfaces this object supports. If a given
* interface is supported, the object's reference count is incremented, and
* a reference to that interface is returned. Otherwise a NULL object and
* error code are returned. This method is called by other objects to
* discover the functionality of this object.
*/
STDMETHODIMP CAACDepacker::QueryInterface(REFIID riid, void** ppvObj)
{
QInterfaceList qiList[] =
{
{ GET_IIDHANDLE(IID_IUnknown), (IUnknown*)(IHXPlugin*) this},
{ GET_IIDHANDLE(IID_IHXPlugin), (IHXPlugin*) this},
{ GET_IIDHANDLE(IID_IHXPluginProperties), (IHXPluginProperties*) this},
{ GET_IIDHANDLE(IID_IHXPayloadFormatObject), (IHXPayloadFormatObject*) this}
};
return ::QIFind(qiList, QILISTSIZE(qiList), riid, ppvObj);
}
/************************************************************************
* IHXPayloadFormatObject Methods
*/
/****************************************************************************
* Init
*/
STDMETHODIMP CAACDepacker::Init(IUnknown* pContext, HXBOOL bPacketize)
{
HX_RESULT retVal;
retVal = m_pDepacker->Init(pContext, bPacketize);
return retVal;
}
/****************************************************************************
* Close
*/
STDMETHODIMP CAACDepacker::Close()
{
HX_RESULT retVal;
retVal = m_pDepacker->Close();
return retVal;
}
/****************************************************************************
* Reset
*/
STDMETHODIMP CAACDepacker::Reset()
{
HX_RESULT retVal;
retVal = m_pDepacker->Reset();
return retVal;
}
/****************************************************************************
* SetStreamHeader
*/
STDMETHODIMP CAACDepacker::SetStreamHeader(IHXValues* pHeader)
{
HX_RESULT retVal = HXR_OK;
// Create Payload Formatter
retVal = HXR_OUTOFMEMORY;
m_pDepacker = new MP4APayloadFormat();
if (m_pDepacker)
{
m_pDepacker->AddRef();
retVal = HXR_OK;
}
// Initialize Payload Formatter
if (SUCCEEDED(retVal) && m_pDepacker)
{
retVal = m_pDepacker->Init(m_pContext, FALSE);
}
if (SUCCEEDED(retVal) && m_pDepacker)
{
retVal = m_pDepacker->SetStreamHeader(pHeader);
if (retVal == HXR_NO_DATA)
{
retVal = HXR_OK;
}
}
return retVal;
}
/****************************************************************************
* GetStreamHeader
*/
STDMETHODIMP CAACDepacker::GetStreamHeader(REF(IHXValues*) rpHeader)
{
return m_pDepacker->GetStreamHeader(rpHeader);
}
/****************************************************************************
* SetPacket
*/
HX_RESULT CAACDepacker::SetPacket(IHXPacket* pPacket)
{
m_pDepacker->SetPacket(pPacket);
return HXR_OK;
}
/****************************************************************************
* GetPacket
*/
STDMETHODIMP CAACDepacker::GetPacket(REF(IHXPacket*) rpPacket)
{
return m_pDepacker->GetPacket(rpPacket);
}
/****************************************************************************
* Flush
*/
STDMETHODIMP CAACDepacker::Flush()
{
return m_pDepacker->Flush();
}
--- NEW FILE: Umakefil ---
#
# ***** BEGIN LICENSE BLOCK *****
# Version: RCSL 1.0/RPSL 1.0
#
# Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
#
# The contents of this file, and the files included with this file, are
# subject to the current version of the RealNetworks Public Source License
# Version 1.0 (the "RPSL") available at
# http://www.helixcommunity.org/content/rpsl unless you have licensed
# the file under the RealNetworks Community Source License Version 1.0
# (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
# in which case the RCSL will apply. You may also obtain the license terms
# directly from RealNetworks. You may not use this file except in
# compliance with the RPSL or, if you have a valid RCSL with RealNetworks
# applicable to this file, the RCSL. Please see the applicable RPSL or
# RCSL for the rights, obligations and limitations governing use of the
# contents of the file.
#
# This file is part of the Helix DNA Technology. RealNetworks is the
# developer of the Original Code and owns the copyrights in the portions
# it created.
#
# This file, and the files included with this file, is distributed and made
# available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
# FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
#
# Technology Compatibility Kit Test Suite(s) Location:
# http://www.helixcommunity.org/content/tck
#
# Contributor(s):
#
# ***** END LICENSE BLOCK *****
#
UmakefileVersion(2,2)
project.AddDefines("HELIX_FEATURE_PASS_THROUGH")
project.AddDefines("HELIX_FEATURE_AUDIO_MPEG4_DEPACK_LATM")
project.AddDefines("MP4_DEPACK_IHXPACKET")
project.AddModuleIncludes("common/include",
"client/include",
"client/common/container/pub",
"datatype/common/container/pub",
"datatype/common/util/pub",
"datatype/rm/video/common/pub",
"datatype/rm/include",
"datatype/rm/common/util/pub",
"protocol/common/util/pub",
"protocol/transport/common/system/pub",
"protocol/transport/rtp/include",
"datatype/mp4/payload/pub",
"protocol/sdp/pub",
"datatype/rm/common/pub",
"datatype/mp4/filewriter")
project.AddModuleLibraries("common/runtime[runtlib]",
"common/dbgtool[debuglib]",
"common/util[utillib]",
"common/container[contlib]",
"common/system[syslib]",
"common/log/logutil[logutillib]",
"datatype/rm/common[rmcommonlib]",
"datatype/common/util[dtutillib]",
"protocol/common/util[protutillib]",
"protocol/sdp[sdplib]",
"protocol/rtsp[rtsplib]",
"datatype/common/util[dtutillib]",
"datatype/common/audrend",
"datatype/mp4/common[mp4comlib]",
"datatype/amr/common[amrcomlib]")
project.AddLibraries(GetSDKPath("rmvidcom_lib"),
GetSDKPath("rmvidpyld_lib"))
project.AddSources("aacdepackdll.cpp",
"aacdlliids.cpp",
"aacdepack.cpp")
project.AddModuleSources("datatype/mp4/payload/mp4apyld.cpp",
"datatype/mp4/payload/Mp4a-mux-cfg.cpp",
"datatype/mp4/payload/Mp4pyldutil.cpp",
"datatype/mp4/payload/mp4-latm-depack.cpp")
project.ExportFunction("RMACreateInstance",
"IUnknown** ppObj",
"common/include",
"hxcom.h")
project.ExportFunction("CanUnload", "void")
project.ExportFunction("CanUnload2", "void")
if not project.IsDefined("HELIX_FEATURE_DLLACCESS_CLIENT"):
project.ExportFunction("SetDLLAccessPath", "const char* pszPath")
project.DRMSign()
DLLTarget("aacdepack")
DependTarget()
--- NEW FILE: aacdepack.ver ---
/* THIS FILE IS GENERATED BY THE BUILD SYSTEM -- DO NOT EDIT
* Copyright (C) 1997-2002 RealNetworks Corporation. All rights reserved.
*/
#ifdef _MACINTOSH
#define TARVER_ULONG32_VERSION ((6 << 28) | (0 << 20) | (9 << 12) | 4056)
#define TARVER_ULONG64_VERSION ((6 << 48) | (0 << 32) | (9 << 16) | 4056)
#else
#define TARVER_ULONG32_VERSION (UINT32)(((UINT32)6 << 28) | ((UINT32)0 << 20) | \
((UINT32)9 << 12) | 4056) #define TARVER_ULONG64_VERSION (UINT64)(((UINT64)6 << 48) | \
((UINT64)0 << 32) | ((UINT64)9 << 16) | 4056) #endif
#define TARVER_LIST_VERSION 6,0,9,4056
#define TARVER_MAJOR_VERSION 6
#define TARVER_MINOR_VERSION 0
#define TARVER_RELEASE_VERSION 9
#define TARVER_BUILD_VERSION 4056
#define TARVER_STRING_VERSION "6.0.9.4056"
#define TARVER_STR_BUILD_NAME ""
--- NEW FILE: win32.pcf ---
project.sources[-1:-1] = ['platform\\win\\depackhdr.rc']
project.sys_libraries[-1:-1] = [
'version.lib',
'wsock32.lib',
'kernel32.lib',
'user32.lib',
'ole32.lib',
'advapi32.lib'
]
--- NEW FILE: aacdlliids.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
* Version: RCSL 1.0/RPSL 1.0
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file, are
* subject to the current version of the RealNetworks Public Source License
* Version 1.0 (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the RealNetworks Community Source License Version 1.0
* (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
* in which case the RCSL will apply. You may also obtain the license terms
* directly from RealNetworks. You may not use this file except in
* compliance with the RPSL or, if you have a valid RCSL with RealNetworks
* applicable to this file, the RCSL. Please see the applicable RPSL or
* RCSL for the rights, obligations and limitations governing use of the
* contents of the file.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the portions
* it created.
*
* This file, and the files included with this file, is distributed and made
* available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
// define all guids here once...
#include "hxtypes.h"
#define INITGUID 1
#include "hxcom.h"
#include "hxiids.h"
#include "hxpiids.h"
#undef INITGUID
#if !defined(HELIX_FEATURE_DLLACCESS_CLIENT)
#include "dllpath.h"
ENABLE_DLLACCESS_PATHS(aacdepack);
#endif // HELIX_FEATURE_DLLACCESS_CLIENT
--- NEW FILE: aacdepackdll.cpp ---
/* ***** BEGIN LICENSE BLOCK *****
*
* Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
*
* The contents of this file, and the files included with this file,
* are subject to the current version of the RealNetworks Public
* Source License (the "RPSL") available at
* http://www.helixcommunity.org/content/rpsl unless you have licensed
* the file under the current version of the RealNetworks Community
* Source License (the "RCSL") available at
* http://www.helixcommunity.org/content/rcsl, in which case the RCSL
* will apply. You may also obtain the license terms directly from
* RealNetworks. You may not use this file except in compliance with
* the RPSL or, if you have a valid RCSL with RealNetworks applicable
* to this file, the RCSL. Please see the applicable RPSL or RCSL for
* the rights, obligations and limitations governing use of the
* contents of the file.
*
* This file is part of the Helix DNA Technology. RealNetworks is the
* developer of the Original Code and owns the copyrights in the
* portions it created.
*
* This file, and the files included with this file, is distributed
* and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
* KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
* ENJOYMENT OR NON-INFRINGEMENT.
*
* Technology Compatibility Kit Test Suite(s) Location:
* http://www.helixcommunity.org/content/tck
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */
#include "aacdepack.ver"
#include "hxtypes.h"
#include "hxresult.h"
#include "hxcom.h"
#include "hxcomm.h"
#include "hxmime.h"
#include "ihxpckts.h"
#include "hxplugn.h"
#include "aacdepack.h"
#include "dllpath.h"
#include "hxheap.h"
STDAPI ENTRYPOINT(HXCREATEINSTANCE)(IUnknown** ppIUnknown)
{
return CAACDepacker::HXCreateInstance(ppIUnknown);
}
STDAPI ENTRYPOINT(CanUnload)(void)
{
return CAACDepacker::CanUnload();
}
STDAPI ENTRYPOINT(CanUnload2)(void)
{
return CAACDepacker::CanUnload2();
}
_______________________________________________
Datatype-cvs mailing list
Datatype-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/datatype-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic