[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