This is intended to be a comprehensive list of all compile time directives used inside AAMP code base.

Compile Time DirectiveNotes
__APPLE__Defined by Xcode Compiler (Apple) 
__linux__Used in AAMP Cli Harvestor module for Path handling 
__UNIT_TESTING__Unit testing within a Class put under macro
AAMP_CC_ENABLED

Includes closed caption support, using  AampCCManager.cpp, base class for ClosedCaption integration layer

AAMP_RDK_CC_ENABLED

AAMP_SUBTEC_CC_ENABLED


AAMP_CPCindicates that this is CPC build; enforces some extra security for runtime configuration. Used for reading the environment variable for reading aamp.cfg 
AAMP_DEBUG_BOX_CONSTRUCTenabled logging for unexpected mp4 box sizes
AAMP_DEBUG_INJECTenabled logging for every injected segment
AAMP_HLS_DRMincludes content protection support for AAMP HLS playback 
AAMP_MPD_DRMincludes content protection support for AAMP DASH playback 
AAMP_SIMULATOR_BUILDset for Darwin (Apple) and Ubuntu (Linux) builds
AAMP_STOP_SINK_ON_SEEKused in Intel build; workarounds for flushing pipeline, to avoid artifacts
AAMP_VANILLA_AES_SUPPORTsupport for HLS Vanilla AEA-128 encryption
AAMP_WAIT_FOR_PLAYING_STATE

when GST_STATE_CHANGE_ASYNC returned, calls validateStateWithMsTimeout to briefly block waiting for state change to complete

AMLOGICindicates that build is for AMLOGIC SOC (drives various low level workarounds for gstreamer integration)
AVE_DRMIncludes code specific to (Deprecated) Adobe Access DRM.

CMAKE_SYSTEM_NAME

equal to Darwin in Apple builds

CMAKE_PLATFORM_UBUNTU

signals this is Linux (simulator) build
CMAKE_CDM_DRM=1

"Not Using OPEN CDM but using CDM"

Enabled in RDK/CPC product

Note: set as side effect of CMAKE_USE_OPENCDM_ADAPTER

  • AampHlsOcdmBridge.cpp
  • AampHlsDrmSessionManager.cpp
  • processProtectionHls.cpp
CMAKE_USE_CLEARKEY=1

Enabled in RDK/CPC product - allows content protected with ClearKey to work (using AampClearKeyHelper.cpp) - not used in production

CMAKE_USE_OPENCDM_ADAPTER=1

"Using OPEN CDM ADAPTER"

Enabled in RDK/CPC product

  • opencdmsessionadapter.cpp
  • AampOcdmBasicSessionAdapter.cpp
  • AampOcdmGstSessionAdapter.cpp
CMAKE_USE_OPENCDM=0

"Using OPEN CDM"

Disabled in RDK/CPC product (direct use of opencdm library, alternate to opencdm adapter?)

CMAKE_USE_PLAYREADY=1

Enabled in RDK/CPC product - allows content protected with PlayReady to work (using AampPlayReadyHelper.cpp)

CMAKE_USE_WIDEVINE=1

Enabled in RDK/CPC product - allows content protected with PlayReady to work (using AampWidevineDrmHelper.cpp)

CMAKE_USE_VGDRM

Used by CPC Verdi/Beethoven products (will be transitioning to DASH/WV)

CMAKE_USE_VERIMATRIX

Verimatrix DRM support (hardware dependent)
CONTENT_4K_SUPPORTED

platform supports playback of 4k resolution profiles

enabled use of secure video path

avoids filtering of profiles with  width>1920 or height>1080

CREATE_PIPE_SESSION_TO_XREused to transmit IP_EX_TUNETIME profiling information to X1 receiver
DEBUG_TIMELINE

Present in fragmentcollector_mpd, for a class of trace level output.

Candidate to deprecate? 

ENABLE_AAMP_QTDEMUX_OVERRIDEused to drive some aamp-specific workarounds in qtdemux for basePTS and NotifyFirstVideoPTS
ENABLE_AVE_DRM_MANGER_DEBUGChanges  AVE_DRM_MANGER_DEBUG macro to use "WARN" log level instead of "TRACE"
ENABLE_DUMP

Allows PSSH raw data to be logged.  Off by default.

EVENT_DEBUGGING

Optional profiling: "TimeTaken for Event %d SyncEvent [%d]",eventType."  Off by default.

GST_SUBTEC_ENABLEDIndicates availability of subtec caption rendering component.
IARM_MGRAdvertises availability of Inter Application Resource Management) IARM framework, used with TR181 configuration and NET_SRV_MGR interface check (to determine if device using wifi), 

 
INTELCEset if build target is for (end-of-development) Intel pxg1v1, one of our oldest non-Broadcom devices still used in production
INTELCE_USE_VIDRENDSINKused to manage Intel-specific Video Sink
LIGHTTPD_AUTHSERVICE_DISABLECPC DRM specific - indicates that older http authservice for acquiring session token not to be used
NO_PLAYBINuse subtecbin (alternative to playbin) for subtitle fragments
PLAYBINTEST_BUFFERINGUsed with Playbintest module 
PLAYBINTEST_WESTEROSSINKUsed with Playbintest module
READ_ESTB_IFACE_FROM_DEVICE_PROPERTIESused to select platform-specific portion of getEstbMac utility function (reads from /etc/device.properties)
REALTEKCEindicates that build is for RealTek SOC (drives various low level workarounds for gstreamer integration)
RENDER_FRAMES_IN_APP_CONTEXTOSX specific at moment; cause rendering to be done by application using YUV frame buffers pumped to open texture
TRACEcompile time option gating a good amount of noisy trace-level logging (much of this could be deprecated)
UNIT_TEST_ENABLEDgates unit tests for aamp config parsing
USE_CPP_THUNDER_PLUGIN_ACCESSincorporates native (C/C++) Thunder Interface, used for HDMI/MediaRite tuning, and other Thunder APIs for RDK services
USE_MAC_FOR_RANDOM_GENallows macaddress to be as part of PRNG to stagger license requests for key rotation for virtual stream stitcher (VSS) streams, to avoid thundering herd
USE_SECCLIENTCPC specific - use CPC Agnostic metadata and SecClient for license acquisition/DRM management - this flag drives availability of a native library for this interface (original implementation, still used on X1)
USE_SECMANAGERCPC specific - use CPC Agnostic metadata and SecClient for license acquisition/DRM management - this flag drives availability of a Thunder Interface for same (newer implementation, used by CPC builds, required for Watermarking feature)
USE_SYSTEMD_JOURNAL_PRINTdrives use of  sd_journal_print instead of generic printf for logging


  • No labels