#include "Parameters.h"

void SET_AUDIO_PORTDEFINITIONTYPE(OMX_AUDIO_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_PORTFORMATTYPE(OMX_AUDIO_PARAM_PORTFORMATTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_PCMMODETYPE(OMX_AUDIO_PARAM_PCMMODETYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_MP3TYPE(OMX_AUDIO_PARAM_MP3TYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_DDPTYPE(OMX_AUDIO_PARAM_DDPTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_DTSTYPE(OMX_AUDIO_PARAM_DTSTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_AACPROFILETYPE(OMX_AUDIO_PARAM_AACPROFILETYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_VORBISTYPE(OMX_AUDIO_PARAM_VORBISTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_WMATYPE(OMX_AUDIO_PARAM_WMATYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_RATYPE(OMX_AUDIO_PARAM_RATYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_SBCTYPE(OMX_AUDIO_PARAM_SBCTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_ADPCMTYPE(OMX_AUDIO_PARAM_ADPCMTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_G723TYPE(OMX_AUDIO_PARAM_G723TYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_G726TYPE(OMX_AUDIO_PARAM_G726TYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_G729TYPE(OMX_AUDIO_PARAM_G729TYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_AMRTYPE(OMX_AUDIO_PARAM_AMRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_GSMFRTYPE(OMX_AUDIO_PARAM_GSMFRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_GSMHRTYPE(OMX_AUDIO_PARAM_GSMHRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_GSMEFRTYPE(OMX_AUDIO_PARAM_GSMEFRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_TDMAFRTYPE(OMX_AUDIO_PARAM_TDMAFRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_TDMAEFRTYPE(OMX_AUDIO_PARAM_TDMAEFRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_PDCFRTYPE(OMX_AUDIO_PARAM_PDCFRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_PDCEFRTYPE(OMX_AUDIO_PARAM_PDCEFRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_PDCHRTYPE(OMX_AUDIO_PARAM_PDCHRTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_QCELP8TYPE(OMX_AUDIO_PARAM_QCELP8TYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_QCELP13TYPE(OMX_AUDIO_PARAM_QCELP13TYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_EVRCTYPE(OMX_AUDIO_PARAM_EVRCTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_SMVTYPE(OMX_AUDIO_PARAM_SMVTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_MIDITYPE(OMX_AUDIO_PARAM_MIDITYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE(OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE(OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE(OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_MIDICONTROLTYPE(OMX_AUDIO_CONFIG_MIDICONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_MIDISTATUSTYPE(OMX_AUDIO_CONFIG_MIDISTATUSTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_MIDIMETAEVENTTYPE(OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE(OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_VOLUMETYPE(OMX_AUDIO_CONFIG_VOLUMETYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_CHANNELVOLUMETYPE(OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_BALANCETYPE(OMX_AUDIO_CONFIG_BALANCETYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_MUTETYPE(OMX_AUDIO_CONFIG_MUTETYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_CHANNELMUTETYPE(OMX_AUDIO_CONFIG_CHANNELMUTETYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_LOUDNESSTYPE(OMX_AUDIO_CONFIG_LOUDNESSTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_BASSTYPE(OMX_AUDIO_CONFIG_BASSTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_TREBLETYPE(OMX_AUDIO_CONFIG_TREBLETYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_EQUALIZERTYPE(OMX_AUDIO_CONFIG_EQUALIZERTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_STEREOWIDENINGTYPE(OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_CHORUSTYPE(OMX_AUDIO_CONFIG_CHORUSTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_REVERBERATIONTYPE(OMX_AUDIO_CONFIG_REVERBERATIONTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_ECHOCANCELATIONTYPE(OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE &format, v8::Local<v8::Object> param);
void SET_AUDIO_CONFIG_NOISEREDUCTIONTYPE(OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE &format, v8::Local<v8::Object> param);
void SET_BUFFERFRAGMENTTYPE(OMX_BUFFERFRAGMENTTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_IJGSCALINGTYPE(OMX_PARAM_IJGSCALINGTYPE &format, v8::Local<v8::Object> param);
void SET_DISPLAYRECTTYPE(OMX_DISPLAYRECTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_DISPLAYREGIONTYPE(OMX_CONFIG_DISPLAYREGIONTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_SOURCETYPE(OMX_PARAM_SOURCETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_RESIZETYPE(OMX_PARAM_RESIZETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_TESTINTERFACETYPE(OMX_PARAM_TESTINTERFACETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_VISUALISATIONTYPE(OMX_CONFIG_VISUALISATIONTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMAUDIODESTINATIONTYPE(OMX_CONFIG_BRCMAUDIODESTINATIONTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMAUDIOSOURCETYPE(OMX_CONFIG_BRCMAUDIOSOURCETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS(OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8(OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8 &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMAUDIOMAXSAMPLE(OMX_CONFIG_BRCMAUDIOMAXSAMPLE &format, v8::Local<v8::Object> param);
void SET_CONFIG_PLAYMODETYPE(OMX_CONFIG_PLAYMODETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_DELIVERYFORMATTYPE(OMX_PARAM_DELIVERYFORMATTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CODECCONFIGTYPE(OMX_PARAM_CODECCONFIGTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_STILLSFUNCTIONTYPE(OMX_PARAM_STILLSFUNCTIONTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BUFFERADDRESSTYPE(OMX_PARAM_BUFFERADDRESSTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_TUNNELSETUPTYPE(OMX_PARAM_TUNNELSETUPTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMPORTEGLTYPE(OMX_PARAM_BRCMPORTEGLTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_IMAGEFILTERPARAMSTYPE(OMX_CONFIG_IMAGEFILTERPARAMSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_TRANSITIONCONTROLTYPE(OMX_CONFIG_TRANSITIONCONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_AUDIOMONOTRACKCONTROLTYPE(OMX_CONFIG_AUDIOMONOTRACKCONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERAIMAGEPOOLTYPE(OMX_PARAM_CAMERAIMAGEPOOLTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_IMAGEPOOLSIZETYPE(OMX_PARAM_IMAGEPOOLSIZETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_IMAGEPOOLEXTERNALTYPE(OMX_PARAM_IMAGEPOOLEXTERNALTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_RUTILFIFOINFOTYPE(OMX_PARAM_RUTILFIFOINFOTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_ILFIFOCONFIG(OMX_PARAM_ILFIFOCONFIG &format, v8::Local<v8::Object> param);
void SET_CONFIG_CAMERASENSORMODETYPE(OMX_CONFIG_CAMERASENSORMODETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMPORTBUFFERSTATSTYPE(OMX_CONFIG_BRCMPORTBUFFERSTATSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMPORTSTATSTYPE(OMX_CONFIG_BRCMPORTSTATSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMCAMERASTATSTYPE(OMX_CONFIG_BRCMCAMERASTATSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMIOPERFSTATSTYPE(OMX_CONFIG_BRCMIOPERFSTATSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_SHARPNESSTYPE(OMX_CONFIG_SHARPNESSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_FLICKERCANCELTYPE(OMX_CONFIG_FLICKERCANCELTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_REDEYEREMOVALTYPE(OMX_CONFIG_REDEYEREMOVALTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_FACEDETECTIONCONTROLTYPE(OMX_CONFIG_FACEDETECTIONCONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_FACEDETECTIONREGIONTYPE(OMX_CONFIG_FACEDETECTIONREGIONTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_INTERLACETYPE(OMX_CONFIG_INTERLACETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERAISPTUNERTYPE(OMX_PARAM_CAMERAISPTUNERTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_IMAGEPTRTYPE(OMX_CONFIG_IMAGEPTRTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_AFASSISTTYPE(OMX_CONFIG_AFASSISTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_INPUTCROPTYPE(OMX_CONFIG_INPUTCROPTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CODECREQUIREMENTSTYPE(OMX_PARAM_CODECREQUIREMENTSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMEGLIMAGEMEMHANDLETYPE(OMX_CONFIG_BRCMEGLIMAGEMEMHANDLETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_PRIVACYINDICATORTYPE(OMX_CONFIG_PRIVACYINDICATORTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERAFLASHTYPE(OMX_PARAM_CAMERAFLASHTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CAMERAFLASHCONFIGTYPE(OMX_CONFIG_CAMERAFLASHCONFIGTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMAUDIOTRACKGAPLESSPLAYBACKTYPE(OMX_CONFIG_BRCMAUDIOTRACKGAPLESSPLAYBACKTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMAUDIOTRACKCHANGECONTROLTYPE(OMX_CONFIG_BRCMAUDIOTRACKCHANGECONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMPIXELVALUERANGETYPE(OMX_PARAM_BRCMPIXELVALUERANGETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERADISABLEALGORITHMTYPE(OMX_PARAM_CAMERADISABLEALGORITHMTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMAUDIOEFFECTCONTROLTYPE(OMX_CONFIG_BRCMAUDIOEFFECTCONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMMINIMUMPROCESSINGLATENCY(OMX_CONFIG_BRCMMINIMUMPROCESSINGLATENCY &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMVIDEOAVCSEIENABLETYPE(OMX_PARAM_BRCMVIDEOAVCSEIENABLETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMALLOWMEMCHANGETYPE(OMX_PARAM_BRCMALLOWMEMCHANGETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CAMERAUSECASETYPE(OMX_CONFIG_CAMERAUSECASETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMDISABLEPROPRIETARYTUNNELSTYPE(OMX_PARAM_BRCMDISABLEPROPRIETARYTUNNELSTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMRETAINMEMORYTYPE(OMX_PARAM_BRCMRETAINMEMORYTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMOUTPUTBUFFERSIZETYPE(OMX_PARAM_BRCMOUTPUTBUFFERSIZETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CAMERAINFOTYPE(OMX_CONFIG_CAMERAINFOTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CAMERAFEATURESTYPE(OMX_CONFIG_CAMERAFEATURESTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_REQUESTCALLBACKTYPE(OMX_CONFIG_REQUESTCALLBACKTYPE &format, v8::Local<v8::Object> param);
void SET_FOCUSREGIONXY(OMX_FOCUSREGIONXY &format, v8::Local<v8::Object> param);
void SET_CONFIG_FOCUSREGIONXYTYPE(OMX_CONFIG_FOCUSREGIONXYTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_U8TYPE(OMX_CONFIG_U8TYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CAMERASETTINGSTYPE(OMX_CONFIG_CAMERASETTINGSTYPE &format, v8::Local<v8::Object> param);
void SET_YUVCOLOUR(OMX_YUVCOLOUR &format, v8::Local<v8::Object> param);
void SET_CONFIG_DRAWBOXLINEPARAMS(OMX_CONFIG_DRAWBOXLINEPARAMS &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERARMITYPE(OMX_PARAM_CAMERARMITYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMSYNCOUTPUTTYPE(OMX_CONFIG_BRCMSYNCOUTPUTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_DRMVIEWTYPE(OMX_CONFIG_DRMVIEWTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMU64TYPE(OMX_PARAM_BRCMU64TYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMTHUMBNAILTYPE(OMX_PARAM_BRCMTHUMBNAILTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMASPECTRATIOTYPE(OMX_PARAM_BRCMASPECTRATIOTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE(OMX_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_FLASHINFOTYPE(OMX_CONFIG_FLASHINFOTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_DYNAMICRANGEEXPANSIONTYPE(OMX_CONFIG_DYNAMICRANGEEXPANSIONTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMTHREADAFFINITYTYPE(OMX_PARAM_BRCMTHREADAFFINITYTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_SCENEDETECTTYPE(OMX_CONFIG_SCENEDETECTTYPE &format, v8::Local<v8::Object> param);
void SET_NALSTREAMFORMATTYPE(OMX_NALSTREAMFORMATTYPE &format, v8::Local<v8::Object> param);
void SET_STATICBOX(OMX_STATICBOX &format, v8::Local<v8::Object> param);
void SET_CONFIG_STATICBOXTYPE(OMX_CONFIG_STATICBOXTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_PORTBOOLEANTYPE(OMX_CONFIG_PORTBOOLEANTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERACAPTUREMODETYPE(OMX_PARAM_CAMERACAPTUREMODETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMDRMENCRYPTIONTYPE(OMX_PARAM_BRCMDRMENCRYPTIONTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BUFFERSTALLTYPE(OMX_CONFIG_BUFFERSTALLTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_LATENCYTARGETTYPE(OMX_CONFIG_LATENCYTARGETTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMUSEPROPRIETARYCALLBACKTYPE(OMX_CONFIG_BRCMUSEPROPRIETARYCALLBACKTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_TIMESTAMPMODETYPE(OMX_PARAM_TIMESTAMPMODETYPE &format, v8::Local<v8::Object> param);
void SET_BRCMVEGLIMAGETYPE(OMX_BRCMVEGLIMAGETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMFOVTYPE(OMX_CONFIG_BRCMFOVTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_CONFIG_LEVEL_EXTEND(OMX_VIDEO_CONFIG_LEVEL_EXTEND &format, v8::Local<v8::Object> param);
void SET_VIDEO_EEDE_ENABLE(OMX_VIDEO_EEDE_ENABLE &format, v8::Local<v8::Object> param);
void SET_VIDEO_EEDE_LOSSRATE(OMX_VIDEO_EEDE_LOSSRATE &format, v8::Local<v8::Object> param);
void SET_PARAM_COLORSPACETYPE(OMX_PARAM_COLORSPACETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAPTURESTATETYPE(OMX_PARAM_CAPTURESTATETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMCONFIGFILETYPE(OMX_PARAM_BRCMCONFIGFILETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMCONFIGFILECHUNKTYPE(OMX_PARAM_BRCMCONFIGFILECHUNKTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMFRAMERATERANGETYPE(OMX_PARAM_BRCMFRAMERATERANGETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_S32TYPE(OMX_PARAM_S32TYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMVIDEODRMPROTECTBUFFERTYPE(OMX_PARAM_BRCMVIDEODRMPROTECTBUFFERTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_ZEROSHUTTERLAGTYPE(OMX_CONFIG_ZEROSHUTTERLAGTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BRCMVIDEODECODECONFIGVD3TYPE(OMX_PARAM_BRCMVIDEODECODECONFIGVD3TYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CUSTOMAWBGAINSTYPE(OMX_CONFIG_CUSTOMAWBGAINSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMRENDERSTATSTYPE(OMX_CONFIG_BRCMRENDERSTATSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMANNOTATETYPE(OMX_CONFIG_BRCMANNOTATETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRCMSTEREOSCOPICMODETYPE(OMX_CONFIG_BRCMSTEREOSCOPICMODETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERAINTERFACETYPE(OMX_PARAM_CAMERAINTERFACETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERACLOCKINGMODETYPE(OMX_PARAM_CAMERACLOCKINGMODETYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERARXCONFIG_TYPE(OMX_PARAM_CAMERARXCONFIG_TYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CAMERARXTIMING_TYPE(OMX_PARAM_CAMERARXTIMING_TYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BAYERORDERTYPE(OMX_PARAM_BAYERORDERTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_PORTDEFINITIONTYPE(OMX_PARAM_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_U32TYPE(OMX_PARAM_U32TYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_SUSPENSIONPOLICYTYPE(OMX_PARAM_SUSPENSIONPOLICYTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_SUSPENSIONTYPE(OMX_PARAM_SUSPENSIONTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BOOLEANTYPE(OMX_CONFIG_BOOLEANTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CONTENTURITYPE(OMX_PARAM_CONTENTURITYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_CONTENTPIPETYPE(OMX_PARAM_CONTENTPIPETYPE &format, v8::Local<v8::Object> param);
void SET_RESOURCECONCEALMENTTYPE(OMX_RESOURCECONCEALMENTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_METADATAITEMCOUNTTYPE(OMX_CONFIG_METADATAITEMCOUNTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_METADATAITEMTYPE(OMX_CONFIG_METADATAITEMTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CONTAINERNODECOUNTTYPE(OMX_CONFIG_CONTAINERNODECOUNTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CONTAINERNODEIDTYPE(OMX_CONFIG_CONTAINERNODEIDTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_METADATAFILTERTYPE(OMX_PARAM_METADATAFILTERTYPE &format, v8::Local<v8::Object> param);
void SET_PRIORITYMGMTTYPE(OMX_PRIORITYMGMTTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_COMPONENTROLETYPE(OMX_PARAM_COMPONENTROLETYPE &format, v8::Local<v8::Object> param);
void SET_BUFFERHEADERTYPE(OMX_BUFFERHEADERTYPE &format, v8::Local<v8::Object> param);
void SET_OTHER_EXTRADATATYPE(OMX_OTHER_EXTRADATATYPE &format, v8::Local<v8::Object> param);
void SET_PORT_PARAM_TYPE(OMX_PORT_PARAM_TYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_BUFFERSUPPLIERTYPE(OMX_PARAM_BUFFERSUPPLIERTYPE &format, v8::Local<v8::Object> param);
void SET_TUNNELSETUPTYPE(OMX_TUNNELSETUPTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_PORTSUMMARYTYPE(OMX_PARAM_PORTSUMMARYTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_MARKCOMPARISONTYPE(OMX_PARAM_MARKCOMPARISONTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_TUNNELSTATUSTYPE(OMX_PARAM_TUNNELSTATUSTYPE &format, v8::Local<v8::Object> param);
void SET_IMAGE_PORTDEFINITIONTYPE(OMX_IMAGE_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param);
void SET_IMAGE_PARAM_PORTFORMATTYPE(OMX_IMAGE_PARAM_PORTFORMATTYPE &format, v8::Local<v8::Object> param);
void SET_IMAGE_PARAM_FLASHCONTROLTYPE(OMX_IMAGE_PARAM_FLASHCONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_IMAGE_CONFIG_FOCUSCONTROLTYPE(OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_IMAGE_PARAM_QFACTORTYPE(OMX_IMAGE_PARAM_QFACTORTYPE &format, v8::Local<v8::Object> param);
void SET_IMAGE_PARAM_QUANTIZATIONTABLETYPE(OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE &format, v8::Local<v8::Object> param);
void SET_IMAGE_PARAM_HUFFMANTTABLETYPE(OMX_IMAGE_PARAM_HUFFMANTTABLETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_COLORCONVERSIONTYPE(OMX_CONFIG_COLORCONVERSIONTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_SCALEFACTORTYPE(OMX_CONFIG_SCALEFACTORTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_IMAGEFILTERTYPE(OMX_CONFIG_IMAGEFILTERTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_COLORENHANCEMENTTYPE(OMX_CONFIG_COLORENHANCEMENTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_COLORKEYTYPE(OMX_CONFIG_COLORKEYTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_COLORBLENDTYPE(OMX_CONFIG_COLORBLENDTYPE &format, v8::Local<v8::Object> param);
void SET_FRAMESIZETYPE(OMX_FRAMESIZETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_ROTATIONTYPE(OMX_CONFIG_ROTATIONTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_MIRRORTYPE(OMX_CONFIG_MIRRORTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_POINTTYPE(OMX_CONFIG_POINTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_RECTTYPE(OMX_CONFIG_RECTTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_DEBLOCKINGTYPE(OMX_PARAM_DEBLOCKINGTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_FRAMESTABTYPE(OMX_CONFIG_FRAMESTABTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_WHITEBALCONTROLTYPE(OMX_CONFIG_WHITEBALCONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_EXPOSURECONTROLTYPE(OMX_CONFIG_EXPOSURECONTROLTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_SENSORMODETYPE(OMX_PARAM_SENSORMODETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CONTRASTTYPE(OMX_CONFIG_CONTRASTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BRIGHTNESSTYPE(OMX_CONFIG_BRIGHTNESSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_BACKLIGHTTYPE(OMX_CONFIG_BACKLIGHTTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_GAMMATYPE(OMX_CONFIG_GAMMATYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_SATURATIONTYPE(OMX_CONFIG_SATURATIONTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_LIGHTNESSTYPE(OMX_CONFIG_LIGHTNESSTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_PLANEBLENDTYPE(OMX_CONFIG_PLANEBLENDTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_INTERLEAVETYPE(OMX_PARAM_INTERLEAVETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_TRANSITIONEFFECTTYPE(OMX_CONFIG_TRANSITIONEFFECTTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_DATAUNITTYPE(OMX_PARAM_DATAUNITTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_DITHERTYPE(OMX_CONFIG_DITHERTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_CAPTUREMODETYPE(OMX_CONFIG_CAPTUREMODETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_EXPOSUREVALUETYPE(OMX_CONFIG_EXPOSUREVALUETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_FOCUSREGIONTYPE(OMX_CONFIG_FOCUSREGIONTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_FOCUSSTATUSTYPE(OMX_PARAM_FOCUSSTATUSTYPE &format, v8::Local<v8::Object> param);
void SET_TIME_CONFIG_SEEKMODETYPE(OMX_TIME_CONFIG_SEEKMODETYPE &format, v8::Local<v8::Object> param);
void SET_TIME_CONFIG_TIMESTAMPTYPE(OMX_TIME_CONFIG_TIMESTAMPTYPE &format, v8::Local<v8::Object> param);
void SET_TIME_CONFIG_MEDIATIMEREQUESTTYPE(OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE &format, v8::Local<v8::Object> param);
void SET_TIME_MEDIATIMETYPE(OMX_TIME_MEDIATIMETYPE &format, v8::Local<v8::Object> param);
void SET_TIME_CONFIG_SCALETYPE(OMX_TIME_CONFIG_SCALETYPE &format, v8::Local<v8::Object> param);
void SET_TIME_CONFIG_CLOCKSTATETYPE(OMX_TIME_CONFIG_CLOCKSTATETYPE &format, v8::Local<v8::Object> param);
void SET_TIME_CONFIG_ACTIVEREFCLOCKTYPE(OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE &format, v8::Local<v8::Object> param);
void SET_OTHER_CONFIG_POWERTYPE(OMX_OTHER_CONFIG_POWERTYPE &format, v8::Local<v8::Object> param);
void SET_OTHER_CONFIG_STATSTYPE(OMX_OTHER_CONFIG_STATSTYPE &format, v8::Local<v8::Object> param);
void SET_OTHER_PORTDEFINITIONTYPE(OMX_OTHER_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param);
void SET_OTHER_PARAM_PORTFORMATTYPE(OMX_OTHER_PARAM_PORTFORMATTYPE &format, v8::Local<v8::Object> param);
void SET_BU32(OMX_BU32 &format, v8::Local<v8::Object> param);
void SET_BS32(OMX_BS32 &format, v8::Local<v8::Object> param);
void SET_TICKS(OMX_TICKS &format, v8::Local<v8::Object> param);
void SET_MARKTYPE(OMX_MARKTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PORTDEFINITIONTYPE(OMX_VIDEO_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_PORTFORMATTYPE(OMX_VIDEO_PARAM_PORTFORMATTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_QUANTIZATIONTYPE(OMX_VIDEO_PARAM_QUANTIZATIONTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_VIDEOFASTUPDATETYPE(OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_BITRATETYPE(OMX_VIDEO_PARAM_BITRATETYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_MOTIONVECTORTYPE(OMX_VIDEO_PARAM_MOTIONVECTORTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_INTRAREFRESHTYPE(OMX_VIDEO_PARAM_INTRAREFRESHTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_ERRORCORRECTIONTYPE(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_VBSMCTYPE(OMX_VIDEO_PARAM_VBSMCTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_H263TYPE(OMX_VIDEO_PARAM_H263TYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_MPEG2TYPE(OMX_VIDEO_PARAM_MPEG2TYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_MPEG4TYPE(OMX_VIDEO_PARAM_MPEG4TYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_WMVTYPE(OMX_VIDEO_PARAM_WMVTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_RVTYPE(OMX_VIDEO_PARAM_RVTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_AVCTYPE(OMX_VIDEO_PARAM_AVCTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_PROFILELEVELTYPE(OMX_VIDEO_PARAM_PROFILELEVELTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_CONFIG_BITRATETYPE(OMX_VIDEO_CONFIG_BITRATETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_FRAMERATETYPE(OMX_CONFIG_FRAMERATETYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_INTRAREFRESHVOPTYPE(OMX_CONFIG_INTRAREFRESHVOPTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_MACROBLOCKERRORMAPTYPE(OMX_CONFIG_MACROBLOCKERRORMAPTYPE &format, v8::Local<v8::Object> param);
void SET_CONFIG_MBERRORREPORTINGTYPE(OMX_CONFIG_MBERRORREPORTINGTYPE &format, v8::Local<v8::Object> param);
void SET_PARAM_MACROBLOCKSTYPE(OMX_PARAM_MACROBLOCKSTYPE &format, v8::Local<v8::Object> param);
void SET_VIDEO_PARAM_AVCSLICEFMO(OMX_VIDEO_PARAM_AVCSLICEFMO &format, v8::Local<v8::Object> param);
void SET_VIDEO_CONFIG_AVCINTRAPERIOD(OMX_VIDEO_CONFIG_AVCINTRAPERIOD &format, v8::Local<v8::Object> param);
void SET_VIDEO_CONFIG_NALSIZE(OMX_VIDEO_CONFIG_NALSIZE &format, v8::Local<v8::Object> param);

void SET_AUDIO_PORTDEFINITIONTYPE(OMX_AUDIO_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param) {
  format.pNativeRender = (OMX_NATIVE_DEVICETYPE) Nan::To<int>(Nan::Get(param, Nan::New("pNativeRender").ToLocalChecked()).ToLocalChecked()).FromJust(); // < platform specific reference for an output device, otherwise this field is 0
  format.bFlagErrorConcealment = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bFlagErrorConcealment").ToLocalChecked()).ToLocalChecked()).FromJust(); // Turns on error concealment if it is supported by the OMX component
  format.eEncoding = (OMX_AUDIO_CODINGTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eEncoding").ToLocalChecked()).ToLocalChecked()).FromJust(); // Type of data expected for this port (e.g. PCM, AMR, MP3, etc)
}

void SET_AUDIO_PARAM_PORTFORMATTYPE(OMX_AUDIO_PARAM_PORTFORMATTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // Indicates the enumeration index for the format from 0x0 to N-1
  format.eEncoding = (OMX_AUDIO_CODINGTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eEncoding").ToLocalChecked()).ToLocalChecked()).FromJust(); // Type of data expected for this port (e.g. PCM, AMR, MP3, etc)
}

void SET_AUDIO_PARAM_PCMMODETYPE(OMX_AUDIO_PARAM_PCMMODETYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels (e.g. 2 for stereo)
  format.eNumData = (OMX_NUMERICALDATATYPE) Nan::To<int>(Nan::Get(param, Nan::New("eNumData").ToLocalChecked()).ToLocalChecked()).FromJust(); // indicates PCM data as signed or unsigned
  format.eEndian = (OMX_ENDIANTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eEndian").ToLocalChecked()).ToLocalChecked()).FromJust(); // indicates PCM data as little or big endian
  format.bInterleaved = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bInterleaved").ToLocalChecked()).ToLocalChecked()).FromJust(); // True for normal interleaved data; false for non-interleaved data (e.g. block data)
  format.nBitPerSample = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitPerSample").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit per sample
  format.nSamplingRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSamplingRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data. Use 0 for variable or unknown sampling rate.
  format.ePCMMode = (OMX_AUDIO_PCMMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("ePCMMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // PCM mode enumeration
}

void SET_AUDIO_PARAM_MP3TYPE(OMX_AUDIO_PARAM_MP3TYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate of the input data. Use 0 for variable rate or unknown bit rates
  format.nSampleRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSampleRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data. Use 0 for variable or unknown sampling rate.
  format.nAudioBandWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAudioBandWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Audio band width (in Hz) to which an encoder should limit the audio signal. Use 0 to let encoder decide
  format.eChannelMode = (OMX_AUDIO_CHANNELMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eChannelMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // Channel mode enumeration
  format.eFormat = (OMX_AUDIO_MP3STREAMFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // MP3 stream format
}

void SET_AUDIO_PARAM_DDPTYPE(OMX_AUDIO_PARAM_DDPTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate of the input data. Use 0 for variable rate or unknown bit rates
  format.nSampleRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSampleRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data. Use 0 for variable or unknown sampling rate.
  format.eBitStreamId = (OMX_AUDIO_DDPBITSTREAMID) Nan::To<int>(Nan::Get(param, Nan::New("eBitStreamId").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eBitStreamMode = (OMX_AUDIO_DDPBITSTREAMMODE) Nan::To<int>(Nan::Get(param, Nan::New("eBitStreamMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eDolbySurroundMode = (OMX_AUDIO_DDPDOLBYSURROUNDMODE) Nan::To<int>(Nan::Get(param, Nan::New("eDolbySurroundMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_AUDIO_PARAM_DTSTYPE(OMX_AUDIO_PARAM_DTSTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate of the input data. Use 0 for variable rate or unknown bit rates
  format.nSampleRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSampleRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data. Use 0 for variable or unknown sampling rate.
  format.nDtsType = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDtsType").ToLocalChecked()).ToLocalChecked()).FromJust(); // DTS type 1, 2, or 3.
  format.nFormat = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // DTS stream is either big/little endian and 16/14 bit packing
  format.nDtsFrameSizeBytes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDtsFrameSizeBytes").ToLocalChecked()).ToLocalChecked()).FromJust(); // DTS frame size in bytes
}

void SET_AUDIO_PARAM_AACPROFILETYPE(OMX_AUDIO_PARAM_AACPROFILETYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nSampleRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSampleRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data. Use 0 for variable or unknown sampling rate.
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate of the input data. Use 0 for variable rate or unknown bit rates
  format.nAudioBandWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAudioBandWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Audio band width (in Hz) to which an encoder should limit the audio signal. Use 0 to let encoder decide
  format.nFrameLength = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameLength").ToLocalChecked()).ToLocalChecked()).FromJust(); // Frame length (in audio samples per channel) of the codec. Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD). Use 0 to let encoder decide
  format.nAACtools = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAACtools").ToLocalChecked()).ToLocalChecked()).FromJust(); // AAC tool usage
  format.nAACERtools = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAACERtools").ToLocalChecked()).ToLocalChecked()).FromJust(); // MPEG-4 AAC error resilience tool usage
  format.eAACProfile = (OMX_AUDIO_AACPROFILETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eAACProfile").ToLocalChecked()).ToLocalChecked()).FromJust(); // AAC profile enumeration
  format.eAACStreamFormat = (OMX_AUDIO_AACSTREAMFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eAACStreamFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // AAC stream format enumeration
  format.eChannelMode = (OMX_AUDIO_CHANNELMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eChannelMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // Channel mode enumeration
}

void SET_AUDIO_PARAM_VORBISTYPE(OMX_AUDIO_PARAM_VORBISTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate of the encoded data data. Use 0 for variable rate or unknown bit rates. Encoding is set to the bitrate closest to specified value (in bps)
  format.nMinBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMinBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sets minimum bitrate (in bps).
  format.nMaxBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sets maximum bitrate (in bps).
  format.nSampleRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSampleRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data. Use 0 for variable or unknown sampling rate.
  format.nAudioBandWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAudioBandWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Audio band width (in Hz) to which an encoder should limit the audio signal. Use 0 to let encoder decide
  format.nQuality = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nQuality").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sets encoding quality to n, between -1 (low) and 10 (high). In the default mode of operation, teh quality level is 3. Normal quality range is 0 - 10.
  format.bManaged = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bManaged").ToLocalChecked()).ToLocalChecked()).FromJust(); // Set bitrate management mode. This turns off the normal VBR encoding, but allows hard or soft bitrate constraints to be enforced by the encoder. This mode can be slower, and may also be lower quality. It is primarily useful for streaming.
  format.bDownmix = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDownmix").ToLocalChecked()).ToLocalChecked()).FromJust(); // Downmix input from stereo to mono (has no effect on non-stereo streams). Useful for lower-bitrate encoding.
}

void SET_AUDIO_PARAM_WMATYPE(OMX_AUDIO_PARAM_WMATYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate of the input data. Use 0 for variable rate or unknown bit rates
  format.eFormat = (OMX_AUDIO_WMAFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // Version of WMA stream / data
  format.eProfile = (OMX_AUDIO_WMAPROFILETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eProfile").ToLocalChecked()).ToLocalChecked()).FromJust(); // Profile of WMA stream / data
  format.nSamplingRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSamplingRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data
  format.nBlockAlign = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nBlockAlign").ToLocalChecked()).ToLocalChecked()).FromJust(); // is the block alignment, or block size, in bytes of the audio codec
  format.nEncodeOptions = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nEncodeOptions").ToLocalChecked()).ToLocalChecked()).FromJust(); // WMA Type-specific data
  format.nSuperBlockAlign = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSuperBlockAlign").ToLocalChecked()).ToLocalChecked()).FromJust(); // WMA Type-specific data
}

void SET_AUDIO_PARAM_RATYPE(OMX_AUDIO_PARAM_RATYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nSamplingRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSamplingRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // is the sampling rate of the source data
  format.nBitsPerFrame = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitsPerFrame").ToLocalChecked()).ToLocalChecked()).FromJust(); // is the value for bits per frame
  format.nSamplePerFrame = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSamplePerFrame").ToLocalChecked()).ToLocalChecked()).FromJust(); // is the value for samples per frame
  format.nCouplingQuantBits = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCouplingQuantBits").ToLocalChecked()).ToLocalChecked()).FromJust(); // is the number of coupling quantization bits in the stream
  format.nCouplingStartRegion = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCouplingStartRegion").ToLocalChecked()).ToLocalChecked()).FromJust(); // is the coupling start region in the stream
  format.nNumRegions = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumRegions").ToLocalChecked()).ToLocalChecked()).FromJust(); // is the number of regions value
  format.eFormat = (OMX_AUDIO_RAFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // is the RealAudio audio format
}

void SET_AUDIO_PARAM_SBCTYPE(OMX_AUDIO_PARAM_SBCTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate of the input data. Use 0 for variable rate or unknown bit rates
  format.nSampleRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSampleRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data. Use 0 for variable or unknown sampling rate.
  format.nBlocks = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBlocks").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of blocks
  format.nSubbands = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSubbands").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of subbands
  format.nBitPool = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitPool").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bitpool value
  format.bEnableBitrate = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableBitrate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Use bitrate value instead of bitpool
  format.eChannelMode = (OMX_AUDIO_CHANNELMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eChannelMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // Channel mode enumeration
  format.eSBCAllocType = (OMX_AUDIO_SBCALLOCMETHODTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eSBCAllocType").ToLocalChecked()).ToLocalChecked()).FromJust(); // SBC Allocation method type
}

void SET_AUDIO_PARAM_ADPCMTYPE(OMX_AUDIO_PARAM_ADPCMTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.nBitsPerSample = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitsPerSample").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of bits in each sample
  format.nSampleRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSampleRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sampling rate of the source data. Use 0 for variable or unknown sampling rate.
}

void SET_AUDIO_PARAM_G723TYPE(OMX_AUDIO_PARAM_G723TYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.eBitRate = (OMX_AUDIO_G723RATE) Nan::To<int>(Nan::Get(param, Nan::New("eBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // todo: Should this be moved to a config?
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
  format.bPostFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bPostFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Post Filter
}

void SET_AUDIO_PARAM_G726TYPE(OMX_AUDIO_PARAM_G726TYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.eG726Mode = (OMX_AUDIO_G726MODE) Nan::To<int>(Nan::Get(param, Nan::New("eG726Mode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_AUDIO_PARAM_G729TYPE(OMX_AUDIO_PARAM_G729TYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.eBitType = (OMX_AUDIO_G729TYPE) Nan::To<int>(Nan::Get(param, Nan::New("eBitType").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_AUDIO_PARAM_AMRTYPE(OMX_AUDIO_PARAM_AMRTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate read only field
  format.eAMRBandMode = (OMX_AUDIO_AMRBANDMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eAMRBandMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // AMR Band Mode enumeration
  format.eAMRDTXMode = (OMX_AUDIO_AMRDTXMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eAMRDTXMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // AMR DTX Mode enumeration
  format.eAMRFrameFormat = (OMX_AUDIO_AMRFRAMEFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eAMRFrameFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // AMR frame format enumeration
}

void SET_AUDIO_PARAM_GSMFRTYPE(OMX_AUDIO_PARAM_GSMFRTYPE &format, v8::Local<v8::Object> param) {
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
}

void SET_AUDIO_PARAM_GSMHRTYPE(OMX_AUDIO_PARAM_GSMHRTYPE &format, v8::Local<v8::Object> param) {
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
}

void SET_AUDIO_PARAM_GSMEFRTYPE(OMX_AUDIO_PARAM_GSMEFRTYPE &format, v8::Local<v8::Object> param) {
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
}

void SET_AUDIO_PARAM_TDMAFRTYPE(OMX_AUDIO_PARAM_TDMAFRTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
}

void SET_AUDIO_PARAM_TDMAEFRTYPE(OMX_AUDIO_PARAM_TDMAEFRTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
}

void SET_AUDIO_PARAM_PDCFRTYPE(OMX_AUDIO_PARAM_PDCFRTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
}

void SET_AUDIO_PARAM_PDCEFRTYPE(OMX_AUDIO_PARAM_PDCEFRTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
}

void SET_AUDIO_PARAM_PDCHRTYPE(OMX_AUDIO_PARAM_PDCHRTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.bDTX = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDTX").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable Discontinuous Transmisssion
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable High Pass Filter
}

void SET_AUDIO_PARAM_QCELP8TYPE(OMX_AUDIO_PARAM_QCELP8TYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.nBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bit rate of the input data. Use 0 for variable rate or unknown bit rates
  format.eCDMARate = (OMX_AUDIO_CDMARATETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCDMARate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Frame rate
  format.nMinBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMinBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // minmal rate for the encoder = 1,2,3,4, default = 1
  format.nMaxBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // maximal rate for the encoder = 1,2,3,4, default = 4
}

void SET_AUDIO_PARAM_QCELP13TYPE(OMX_AUDIO_PARAM_QCELP13TYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.eCDMARate = (OMX_AUDIO_CDMARATETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCDMARate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Frame rate
  format.nMinBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMinBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // minmal rate for the encoder = 1,2,3,4, default = 1
  format.nMaxBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // maximal rate for the encoder = 1,2,3,4, default = 4
}

void SET_AUDIO_PARAM_EVRCTYPE(OMX_AUDIO_PARAM_EVRCTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.eCDMARate = (OMX_AUDIO_CDMARATETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCDMARate").ToLocalChecked()).ToLocalChecked()).FromJust(); // actual Frame rate
  format.bRATE_REDUCon = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bRATE_REDUCon").ToLocalChecked()).ToLocalChecked()).FromJust(); // RATE_REDUCtion is requested for this frame
  format.nMinBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMinBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // minmal rate for the encoder = 1,2,3,4, default = 1
  format.nMaxBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // maximal rate for the encoder = 1,2,3,4, default = 4
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable encoder's High Pass Filter
  format.bNoiseSuppressor = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bNoiseSuppressor").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable encoder's noise suppressor pre-processing
  format.bPostFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bPostFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable decoder's post Filter
}

void SET_AUDIO_PARAM_SMVTYPE(OMX_AUDIO_PARAM_SMVTYPE &format, v8::Local<v8::Object> param) {
  format.nChannels = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannels").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of channels in the data stream (not necessarily the same as the number of channels to be rendered.
  format.eCDMARate = (OMX_AUDIO_CDMARATETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCDMARate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Frame rate
  format.bRATE_REDUCon = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bRATE_REDUCon").ToLocalChecked()).ToLocalChecked()).FromJust(); // RATE_REDUCtion is requested for this frame
  format.nMinBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMinBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // minmal rate for the encoder = 1,2,3,4, default = 1 ??
  format.nMaxBitRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxBitRate").ToLocalChecked()).ToLocalChecked()).FromJust(); // maximal rate for the encoder = 1,2,3,4, default = 4 ??
  format.bHiPassFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHiPassFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable encoder's High Pass Filter ??
  format.bNoiseSuppressor = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bNoiseSuppressor").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable encoder's noise suppressor pre-processing
  format.bPostFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bPostFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable decoder's post Filter ??
}

void SET_AUDIO_PARAM_MIDITYPE(OMX_AUDIO_PARAM_MIDITYPE &format, v8::Local<v8::Object> param) {
  format.nFileSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFileSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // size of the MIDI file in bytes, where the entire MIDI file passed in, otherwise if 0x0, the MIDI data is merged and streamed (instead of passed as an entire MIDI file)
  if (Nan::Has(param, Nan::New("sMaxPolyphony").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sMaxPolyphony, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sMaxPolyphony").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.bLoadDefaultSound = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bLoadDefaultSound").ToLocalChecked()).ToLocalChecked()).FromJust(); // Whether to load default sound bank at initialization
  format.eMidiFormat = (OMX_AUDIO_MIDIFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMidiFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // Version of the MIDI file
}

void SET_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE(OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE &format, v8::Local<v8::Object> param) {
  format.nDLSIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDLSIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // DLS file index to be loaded
  format.nDLSSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDLSSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // Size in bytes
  format.eMidiSoundBank = (OMX_AUDIO_MIDISOUNDBANKTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMidiSoundBank").ToLocalChecked()).ToLocalChecked()).FromJust(); // Midi sound bank type enumeration
  format.eMidiSoundBankLayout = (OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMidiSoundBankLayout").ToLocalChecked()).ToLocalChecked()).FromJust(); // Midi sound bank layout enumeration
}

void SET_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE(OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE &format, v8::Local<v8::Object> param) {
  format.nMidiEventSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMidiEventSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // Size of immediate MIDI events or MIP message in bytes
}

void SET_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE(OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE &format, v8::Local<v8::Object> param) {
  format.nChannel = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannel").ToLocalChecked()).ToLocalChecked()).FromJust(); // Valid channel values range from 1 to 16
  format.nIDProgram = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nIDProgram").ToLocalChecked()).ToLocalChecked()).FromJust(); // Valid program ID range is 1 to 128
  format.nIDSoundBank = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nIDSoundBank").ToLocalChecked()).ToLocalChecked()).FromJust(); // Sound bank ID
  format.nUserSoundBankIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nUserSoundBankIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // User soundbank index, easier to access soundbanks by index if multiple banks are present
}

void SET_AUDIO_CONFIG_MIDICONTROLTYPE(OMX_AUDIO_CONFIG_MIDICONTROLTYPE &format, v8::Local<v8::Object> param) {
  if (Nan::Has(param, Nan::New("sPitchTransposition").ToLocalChecked()).FromJust())
  {
    SET_BS32(format.sPitchTransposition, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sPitchTransposition").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sPlayBackRate").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sPlayBackRate, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sPlayBackRate").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sTempo").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sTempo, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sTempo").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.nMaxPolyphony = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxPolyphony").ToLocalChecked()).ToLocalChecked()).FromJust(); // Specifies the maximum simultaneous polyphonic voices. A value of zero indicates that the default polyphony of the device is used
  format.nNumRepeat = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumRepeat").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of times to repeat playback
  format.nStopTime = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nStopTime").ToLocalChecked()).ToLocalChecked()).FromJust(); // Time in milliseconds to indicate when playback will stop automatically. Set to zero if not used
  format.nChannelMuteMask = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nChannelMuteMask").ToLocalChecked()).ToLocalChecked()).FromJust(); // 16 bit mask for channel mute status
  format.nChannelSoloMask = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nChannelSoloMask").ToLocalChecked()).ToLocalChecked()).FromJust(); // 16 bit mask for channel solo status
  format.nTrack0031MuteMask = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTrack0031MuteMask").ToLocalChecked()).ToLocalChecked()).FromJust(); // 32 bit mask for track mute status. Note: This is for tracks 0-31
  format.nTrack3263MuteMask = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTrack3263MuteMask").ToLocalChecked()).ToLocalChecked()).FromJust(); // 32 bit mask for track mute status. Note: This is for tracks 32-63
  format.nTrack0031SoloMask = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTrack0031SoloMask").ToLocalChecked()).ToLocalChecked()).FromJust(); // 32 bit mask for track solo status. Note: This is for tracks 0-31
  format.nTrack3263SoloMask = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTrack3263SoloMask").ToLocalChecked()).ToLocalChecked()).FromJust(); // 32 bit mask for track solo status. Note: This is for tracks 32-63
}

void SET_AUDIO_CONFIG_MIDISTATUSTYPE(OMX_AUDIO_CONFIG_MIDISTATUSTYPE &format, v8::Local<v8::Object> param) {
  format.nNumTracks = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nNumTracks").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of MIDI tracks in the file, read only field. NOTE: May not return a meaningful value until the entire file is parsed and buffered.
  format.nDuration = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDuration").ToLocalChecked()).ToLocalChecked()).FromJust(); // The length of the currently open MIDI resource in milliseconds. NOTE: May not return a meaningful value until the entire file is parsed and buffered.
  format.nPosition = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPosition").ToLocalChecked()).ToLocalChecked()).FromJust(); // Current Position of the MIDI resource being played in milliseconds
  format.bVibra = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bVibra").ToLocalChecked()).ToLocalChecked()).FromJust(); // Does Vibra track exist? NOTE: May not return a meaningful value until the entire file is parsed and buffered.
  format.nNumMetaEvents = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumMetaEvents").ToLocalChecked()).ToLocalChecked()).FromJust(); // Total number of MIDI Meta Events in the currently open MIDI resource. NOTE: May not return a meaningful value until the entire file is parsed and buffered.
  format.nNumActiveVoices = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumActiveVoices").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of active voices in the currently playing MIDI resource. NOTE: May not return a meaningful value until the entire file is parsed and buffered.
  format.eMIDIPlayBackState = (OMX_AUDIO_MIDIPLAYBACKSTATETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMIDIPlayBackState").ToLocalChecked()).ToLocalChecked()).FromJust(); // MIDI playback state enumeration, read only field
}

void SET_AUDIO_CONFIG_MIDIMETAEVENTTYPE(OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // Index of Meta Event
  format.nMetaEventType = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nMetaEventType").ToLocalChecked()).ToLocalChecked()).FromJust(); // Meta Event Type, 7bits (i.e. 0 - 127)
  format.nMetaEventSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMetaEventSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // size of the Meta Event in bytes
  format.nTrack = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTrack").ToLocalChecked()).ToLocalChecked()).FromJust(); // track number for the meta event
  format.nPosition = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPosition").ToLocalChecked()).ToLocalChecked()).FromJust(); // Position of the meta-event in milliseconds
}

void SET_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE(OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // Index of Meta Event
  format.nMetaEventSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMetaEventSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // size of the Meta Event in bytes
}

void SET_AUDIO_CONFIG_VOLUMETYPE(OMX_AUDIO_CONFIG_VOLUMETYPE &format, v8::Local<v8::Object> param) {
  format.bLinear = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bLinear").ToLocalChecked()).ToLocalChecked()).FromJust(); // Is the volume to be set in linear (0.100) or logarithmic scale (mB)
  if (Nan::Has(param, Nan::New("sVolume").ToLocalChecked()).FromJust())
  {
    SET_BS32(format.sVolume, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sVolume").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_AUDIO_CONFIG_CHANNELVOLUMETYPE(OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE &format, v8::Local<v8::Object> param) {
  format.nChannel = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannel").ToLocalChecked()).ToLocalChecked()).FromJust(); // channel to select from 0 to N-1, using OMX_ALL to apply volume settings to all channels
  format.bLinear = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bLinear").ToLocalChecked()).ToLocalChecked()).FromJust(); // Is the volume to be set in linear (0.100) or logarithmic scale (mB)
  if (Nan::Has(param, Nan::New("sVolume").ToLocalChecked()).FromJust())
  {
    SET_BS32(format.sVolume, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sVolume").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.bIsMIDI = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bIsMIDI").ToLocalChecked()).ToLocalChecked()).FromJust(); // TRUE if nChannel refers to a MIDI channel, FALSE otherwise
}

void SET_AUDIO_CONFIG_BALANCETYPE(OMX_AUDIO_CONFIG_BALANCETYPE &format, v8::Local<v8::Object> param) {
  format.nBalance = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nBalance").ToLocalChecked()).ToLocalChecked()).FromJust(); // balance setting for this port (-100 to 100, where -100 indicates all left, and no right
}

void SET_AUDIO_CONFIG_MUTETYPE(OMX_AUDIO_CONFIG_MUTETYPE &format, v8::Local<v8::Object> param) {
  format.bMute = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bMute").ToLocalChecked()).ToLocalChecked()).FromJust(); // Mute setting for this port
}

void SET_AUDIO_CONFIG_CHANNELMUTETYPE(OMX_AUDIO_CONFIG_CHANNELMUTETYPE &format, v8::Local<v8::Object> param) {
  format.nChannel = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nChannel").ToLocalChecked()).ToLocalChecked()).FromJust(); // channel to select from 0 to N-1, using OMX_ALL to apply mute settings to all channels
  format.bMute = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bMute").ToLocalChecked()).ToLocalChecked()).FromJust(); // Mute setting for this channel
  format.bIsMIDI = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bIsMIDI").ToLocalChecked()).ToLocalChecked()).FromJust(); // TRUE if nChannel refers to a MIDI channel, FALSE otherwise
}

void SET_AUDIO_CONFIG_LOUDNESSTYPE(OMX_AUDIO_CONFIG_LOUDNESSTYPE &format, v8::Local<v8::Object> param) {
  format.bLoudness = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bLoudness").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable for loudness
}

void SET_AUDIO_CONFIG_BASSTYPE(OMX_AUDIO_CONFIG_BASSTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable for bass control
  format.nBass = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nBass").ToLocalChecked()).ToLocalChecked()).FromJust(); // bass setting for the port, as a continuous value from -100 to 100 (0 means no change in bass level)
}

void SET_AUDIO_CONFIG_TREBLETYPE(OMX_AUDIO_CONFIG_TREBLETYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable for treble control
  format.nTreble = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nTreble").ToLocalChecked()).ToLocalChecked()).FromJust(); // treble setting for the port, as a continuous value from -100 to 100 (0 means no change in treble level)
}

void SET_AUDIO_CONFIG_EQUALIZERTYPE(OMX_AUDIO_CONFIG_EQUALIZERTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable for equalizer
  if (Nan::Has(param, Nan::New("sBandIndex").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sBandIndex, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sBandIndex").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sCenterFreq").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sCenterFreq, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sCenterFreq").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sBandLevel").ToLocalChecked()).FromJust())
  {
    SET_BS32(format.sBandLevel, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sBandLevel").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_AUDIO_CONFIG_STEREOWIDENINGTYPE(OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable for stereo widening control
  format.eWideningType = (OMX_AUDIO_STEREOWIDENINGTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eWideningType").ToLocalChecked()).ToLocalChecked()).FromJust(); // Stereo widening algorithm type
  format.nStereoWidening = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nStereoWidening").ToLocalChecked()).ToLocalChecked()).FromJust(); // stereo widening setting for the port, as a continuous value from 0 to 100
}

void SET_AUDIO_CONFIG_CHORUSTYPE(OMX_AUDIO_CONFIG_CHORUSTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable for chorus
  if (Nan::Has(param, Nan::New("sDelay").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sDelay, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sDelay").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sModulationRate").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sModulationRate, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sModulationRate").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.nModulationDepth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nModulationDepth").ToLocalChecked()).ToLocalChecked()).FromJust(); // depth of modulation as a percentage of delay (i.e. 0 to 100)
  if (Nan::Has(param, Nan::New("nFeedback").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.nFeedback, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nFeedback").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_AUDIO_CONFIG_REVERBERATIONTYPE(OMX_AUDIO_CONFIG_REVERBERATIONTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable for reverberation control
  if (Nan::Has(param, Nan::New("sRoomLevel").ToLocalChecked()).FromJust())
  {
    SET_BS32(format.sRoomLevel, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sRoomLevel").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sRoomHighFreqLevel").ToLocalChecked()).FromJust())
  {
    SET_BS32(format.sRoomHighFreqLevel, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sRoomHighFreqLevel").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sReflectionsLevel").ToLocalChecked()).FromJust())
  {
    SET_BS32(format.sReflectionsLevel, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sReflectionsLevel").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sReflectionsDelay").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sReflectionsDelay, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sReflectionsDelay").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sReverbLevel").ToLocalChecked()).FromJust())
  {
    SET_BS32(format.sReverbLevel, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sReverbLevel").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sReverbDelay").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sReverbDelay, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sReverbDelay").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sDecayTime").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sDecayTime, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sDecayTime").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("nDecayHighFreqRatio").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.nDecayHighFreqRatio, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nDecayHighFreqRatio").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.nDensity = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDensity").ToLocalChecked()).ToLocalChecked()).FromJust(); // Modal density in the late reverberation decay, in percent (i.e. 0 - 100)
  format.nDiffusion = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDiffusion").ToLocalChecked()).ToLocalChecked()).FromJust(); // Echo density in the late reverberation decay, in percent (i.e. 0 - 100)
  if (Nan::Has(param, Nan::New("sReferenceHighFreq").ToLocalChecked()).FromJust())
  {
    SET_BU32(format.sReferenceHighFreq, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sReferenceHighFreq").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_AUDIO_CONFIG_ECHOCANCELATIONTYPE(OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE &format, v8::Local<v8::Object> param) {
  format.eEchoCancelation = (OMX_AUDIO_ECHOCANTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eEchoCancelation").ToLocalChecked()).ToLocalChecked()).FromJust(); // Echo cancelation settings
}

void SET_AUDIO_CONFIG_NOISEREDUCTIONTYPE(OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE &format, v8::Local<v8::Object> param) {
  format.bNoiseReduction = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bNoiseReduction").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable for noise reduction
}

void SET_BUFFERFRAGMENTTYPE(OMX_BUFFERFRAGMENTTYPE &format, v8::Local<v8::Object> param) {
  format.nLen = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nLen").ToLocalChecked()).ToLocalChecked()).FromJust(); // number of bytes in the buffer
}

void SET_PARAM_IJGSCALINGTYPE(OMX_PARAM_IJGSCALINGTYPE &format, v8::Local<v8::Object> param) {
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_DISPLAYRECTTYPE(OMX_DISPLAYRECTTYPE &format, v8::Local<v8::Object> param) {
  format.x_offset = (OMX_S16) Nan::To<int>(Nan::Get(param, Nan::New("x_offset").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.y_offset = (OMX_S16) Nan::To<int>(Nan::Get(param, Nan::New("y_offset").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.width = (OMX_S16) Nan::To<int>(Nan::Get(param, Nan::New("width").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.height = (OMX_S16) Nan::To<int>(Nan::Get(param, Nan::New("height").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_DISPLAYREGIONTYPE(OMX_CONFIG_DISPLAYREGIONTYPE &format, v8::Local<v8::Object> param) {
  format.set = (OMX_DISPLAYSETTYPE) Nan::To<int>(Nan::Get(param, Nan::New("set").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.num = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("num").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.fullscreen = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("fullscreen").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.transform = (OMX_DISPLAYTRANSFORMTYPE) Nan::To<int>(Nan::Get(param, Nan::New("transform").ToLocalChecked()).ToLocalChecked()).FromJust();
  if (Nan::Has(param, Nan::New("dest_rect").ToLocalChecked()).FromJust())
  {
    SET_DISPLAYRECTTYPE(format.dest_rect, Nan::To<v8::Object>(Nan::Get(param, Nan::New("dest_rect").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("src_rect").ToLocalChecked()).FromJust())
  {
    SET_DISPLAYRECTTYPE(format.src_rect, Nan::To<v8::Object>(Nan::Get(param, Nan::New("src_rect").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.noaspect = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("noaspect").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.mode = (OMX_DISPLAYMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("mode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.pixel_x = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("pixel_x").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.pixel_y = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("pixel_y").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.layer = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("layer").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.copyprotect_required = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("copyprotect_required").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.alpha = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("alpha").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.wfc_context_width = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("wfc_context_width").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.wfc_context_height = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("wfc_context_height").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_SOURCETYPE(OMX_PARAM_SOURCETYPE &format, v8::Local<v8::Object> param) {
  format.eType = (OMX_SOURCETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nParam = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nParam").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameCount").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xFrameRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFrameRate").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_RESIZETYPE(OMX_PARAM_RESIZETYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_RESIZEMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMaxWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMaxHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMaxBytes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxBytes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bPreserveAspectRatio = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bPreserveAspectRatio").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bAllowUpscaling = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bAllowUpscaling").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_TESTINTERFACETYPE(OMX_PARAM_TESTINTERFACETYPE &format, v8::Local<v8::Object> param) {
  format.bTest = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bTest").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bSetExtra = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bSetExtra").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nExtra = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nExtra").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bSetError = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bSetError").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_VISUALISATIONTYPE(OMX_CONFIG_VISUALISATIONTYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_BRCMAUDIODESTINATIONTYPE(OMX_CONFIG_BRCMAUDIODESTINATIONTYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_BRCMAUDIOSOURCETYPE(OMX_CONFIG_BRCMAUDIOSOURCETYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS(OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8(OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8 &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_BRCMAUDIOMAXSAMPLE(OMX_CONFIG_BRCMAUDIOMAXSAMPLE &format, v8::Local<v8::Object> param) {
  format.nMaxSample = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxSample").ToLocalChecked()).ToLocalChecked()).FromJust();
  if (Nan::Has(param, Nan::New("nTimeStamp").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nTimeStamp, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nTimeStamp").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_CONFIG_PLAYMODETYPE(OMX_CONFIG_PLAYMODETYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_PLAYMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_DELIVERYFORMATTYPE(OMX_PARAM_DELIVERYFORMATTYPE &format, v8::Local<v8::Object> param) {
  format.eFormat = (OMX_DELIVERYFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_CODECCONFIGTYPE(OMX_PARAM_CODECCONFIGTYPE &format, v8::Local<v8::Object> param) {
  format.bCodecConfigIsComplete = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("bCodecConfigIsComplete").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_STILLSFUNCTIONTYPE(OMX_PARAM_STILLSFUNCTIONTYPE &format, v8::Local<v8::Object> param) {
  format.bBuffer = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bBuffer").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BUFFERADDRESSTYPE(OMX_PARAM_BUFFERADDRESSTYPE &format, v8::Local<v8::Object> param) {
  format.nAllocLen = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAllocLen").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.handle = (OMX_BUFFERADDRESSHANDLETYPE) Nan::To<int>(Nan::Get(param, Nan::New("handle").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_TUNNELSETUPTYPE(OMX_PARAM_TUNNELSETUPTYPE &format, v8::Local<v8::Object> param) {
  if (Nan::Has(param, Nan::New("sSetup").ToLocalChecked()).FromJust())
  {
    SET_TUNNELSETUPTYPE(format.sSetup, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sSetup").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_PARAM_BRCMPORTEGLTYPE(OMX_PARAM_BRCMPORTEGLTYPE &format, v8::Local<v8::Object> param) {
  format.bPortIsEGL = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bPortIsEGL").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_IMAGEFILTERPARAMSTYPE(OMX_CONFIG_IMAGEFILTERPARAMSTYPE &format, v8::Local<v8::Object> param) {
  format.eImageFilter = (OMX_IMAGEFILTERTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eImageFilter").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumParams = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumParams").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_TRANSITIONCONTROLTYPE(OMX_CONFIG_TRANSITIONCONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.nPosStart = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPosStart").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPosEnd = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPosEnd").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPosIncrement = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nPosIncrement").ToLocalChecked()).ToLocalChecked()).FromJust();
  if (Nan::Has(param, Nan::New("nFrameIncrement").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nFrameIncrement, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nFrameIncrement").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.bSwapInputs = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bSwapInputs").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_AUDIOMONOTRACKCONTROLTYPE(OMX_CONFIG_AUDIOMONOTRACKCONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_AUDIOMONOTRACKOPERATIONSTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_CAMERAIMAGEPOOLTYPE(OMX_PARAM_CAMERAIMAGEPOOLTYPE &format, v8::Local<v8::Object> param) {
  format.nNumHiResVideoFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumHiResVideoFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHiResVideoWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHiResVideoWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHiResVideoHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHiResVideoHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eHiResVideoType = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eHiResVideoType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumHiResStillsFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumHiResStillsFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHiResStillsWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHiResStillsWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHiResStillsHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHiResStillsHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eHiResStillsType = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eHiResStillsType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumLoResFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumLoResFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nLoResWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nLoResWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nLoResHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nLoResHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eLoResType = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eLoResType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumSnapshotFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumSnapshotFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eSnapshotType = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eSnapshotType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eInputPoolMode = (OMX_CAMERAIMAGEPOOLINPUTMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eInputPoolMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumInputVideoFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumInputVideoFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nInputVideoWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nInputVideoWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nInputVideoHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nInputVideoHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eInputVideoType = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eInputVideoType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumInputStillsFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumInputStillsFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nInputStillsWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nInputStillsWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nInputStillsHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nInputStillsHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eInputStillsType = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eInputStillsType").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_IMAGEPOOLSIZETYPE(OMX_PARAM_IMAGEPOOLSIZETYPE &format, v8::Local<v8::Object> param) {
  format.width = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("width").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.height = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("height").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.num_pages = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("num_pages").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_IMAGEPOOLEXTERNALTYPE(OMX_PARAM_IMAGEPOOLEXTERNALTYPE &format, v8::Local<v8::Object> param) {
}

void SET_PARAM_RUTILFIFOINFOTYPE(OMX_PARAM_RUTILFIFOINFOTYPE &format, v8::Local<v8::Object> param) {
}

void SET_PARAM_ILFIFOCONFIG(OMX_PARAM_ILFIFOCONFIG &format, v8::Local<v8::Object> param) {
  format.nDataSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDataSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // The size of the FIFO's data area
  format.nHeaderCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHeaderCount").ToLocalChecked()).ToLocalChecked()).FromJust(); // The number of headers allocated
}

void SET_CONFIG_CAMERASENSORMODETYPE(OMX_CONFIG_CAMERASENSORMODETYPE &format, v8::Local<v8::Object> param) {
  format.nModeIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nModeIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumModes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumModes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPaddingRight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPaddingRight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPaddingDown = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPaddingDown").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eColorFormat = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eColorFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameRateMax = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameRateMax").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameRateMin = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameRateMin").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMPORTBUFFERSTATSTYPE(OMX_CONFIG_BRCMPORTBUFFERSTATSTYPE &format, v8::Local<v8::Object> param) {
  format.nCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCount").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMPORTSTATSTYPE(OMX_CONFIG_BRCMPORTSTATSTYPE &format, v8::Local<v8::Object> param) {
  format.nImageCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nImageCount").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBufferCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBufferCount").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameCount").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameSkips = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameSkips").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nDiscards = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDiscards").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nEOS = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nEOS").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMaxFrameSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxFrameSize").ToLocalChecked()).ToLocalChecked()).FromJust();
  if (Nan::Has(param, Nan::New("nByteCount").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nByteCount, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nByteCount").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("nMaxTimeDelta").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nMaxTimeDelta, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nMaxTimeDelta").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.nCorruptMBs = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCorruptMBs").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of corrupt macroblocks in the stream
}

void SET_CONFIG_BRCMCAMERASTATSTYPE(OMX_CONFIG_BRCMCAMERASTATSTYPE &format, v8::Local<v8::Object> param) {
  format.nOutFrameCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nOutFrameCount").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nDroppedFrameCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDroppedFrameCount").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMIOPERFSTATSTYPE(OMX_CONFIG_BRCMIOPERFSTATSTYPE &format, v8::Local<v8::Object> param) {
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable/disable I/O performance statistics
}

void SET_CONFIG_SHARPNESSTYPE(OMX_CONFIG_SHARPNESSTYPE &format, v8::Local<v8::Object> param) {
  format.nSharpness = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nSharpness").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_FLICKERCANCELTYPE(OMX_CONFIG_FLICKERCANCELTYPE &format, v8::Local<v8::Object> param) {
  format.eFlickerCancel = (OMX_COMMONFLICKERCANCELTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFlickerCancel").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_REDEYEREMOVALTYPE(OMX_CONFIG_REDEYEREMOVALTYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_REDEYEREMOVALTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_FACEDETECTIONCONTROLTYPE(OMX_CONFIG_FACEDETECTIONCONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_FACEDETECTIONCONTROLTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrames").ToLocalChecked()).ToLocalChecked()).FromJust(); // number of frames to apply this setting for, 0 for unlimited
  format.nMaxRegions = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxRegions").ToLocalChecked()).ToLocalChecked()).FromJust(); // maximum number of regions to detect, 0 for unlimited
  format.nQuality = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nQuality").ToLocalChecked()).ToLocalChecked()).FromJust(); // hint for algorithmic complexity, range is 0-100. 0 for simplest algorithm, 100 for best quality
}

void SET_CONFIG_FACEDETECTIONREGIONTYPE(OMX_CONFIG_FACEDETECTIONREGIONTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // first requested region number, allowing retrieval of many regions over several requests
  format.nDetectedRegions = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDetectedRegions").ToLocalChecked()).ToLocalChecked()).FromJust(); // total number of detected regions
  format.nValidRegions = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nValidRegions").ToLocalChecked()).ToLocalChecked()).FromJust(); // number of valid regions in sRegion array When getting, the client sets this to the number of regions available. The component writes region data and updates this field with how many regions have been written to.
  format.nImageWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nImageWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Width of the image, hence reference for the face coordinates
  format.nImageHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nImageHeight").ToLocalChecked()).ToLocalChecked()).FromJust(); // Height of the image, hence reference for the face coordinates
}

void SET_CONFIG_INTERLACETYPE(OMX_CONFIG_INTERLACETYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_INTERLACETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // The interlace type of the content
  format.bRepeatFirstField = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bRepeatFirstField").ToLocalChecked()).ToLocalChecked()).FromJust(); // Whether to repeat the first field
}

void SET_PARAM_CAMERAISPTUNERTYPE(OMX_PARAM_CAMERAISPTUNERTYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_IMAGEPTRTYPE(OMX_CONFIG_IMAGEPTRTYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_AFASSISTTYPE(OMX_CONFIG_AFASSISTTYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_AFASSISTTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_INPUTCROPTYPE(OMX_CONFIG_INPUTCROPTYPE &format, v8::Local<v8::Object> param) {
  format.xLeft = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xLeft").ToLocalChecked()).ToLocalChecked()).FromJust(); // Fraction of the width for the top left corner of the rectangle
  format.xTop = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xTop").ToLocalChecked()).ToLocalChecked()).FromJust(); // Fraction of the height for the top left corner of the rectangle
  format.xWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Fraction of the image width desired
  format.xHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xHeight").ToLocalChecked()).ToLocalChecked()).FromJust(); // Fraction of the image height desired
}

void SET_PARAM_CODECREQUIREMENTSTYPE(OMX_PARAM_CODECREQUIREMENTSTYPE &format, v8::Local<v8::Object> param) {
  format.nCallbackID = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCallbackID").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bTryHWCodec = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bTryHWCodec").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMEGLIMAGEMEMHANDLETYPE(OMX_CONFIG_BRCMEGLIMAGEMEMHANDLETYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_PRIVACYINDICATORTYPE(OMX_CONFIG_PRIVACYINDICATORTYPE &format, v8::Local<v8::Object> param) {
  format.ePrivacyIndicatorMode = (OMX_PRIVACYINDICATORTYPE) Nan::To<int>(Nan::Get(param, Nan::New("ePrivacyIndicatorMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_CAMERAFLASHTYPE(OMX_PARAM_CAMERAFLASHTYPE &format, v8::Local<v8::Object> param) {
  format.eFlashType = (OMX_CAMERAFLASHTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFlashType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bRedEyeUsesTorchMode = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bRedEyeUsesTorchMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_CAMERAFLASHCONFIGTYPE(OMX_CONFIG_CAMERAFLASHCONFIGTYPE &format, v8::Local<v8::Object> param) {
  format.bUsePreFlash = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bUsePreFlash").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bUseFocusDistanceInfo = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bUseFocusDistanceInfo").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eFlashSync = (OMX_CAMERAFLASHCONFIGSYNCTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFlashSync").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bIgnoreChargeState = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bIgnoreChargeState").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMAUDIOTRACKGAPLESSPLAYBACKTYPE(OMX_CONFIG_BRCMAUDIOTRACKGAPLESSPLAYBACKTYPE &format, v8::Local<v8::Object> param) {
  format.nDelay = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDelay").ToLocalChecked()).ToLocalChecked()).FromJust(); // number of samples delay added by the codec
  format.nPadding = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPadding").ToLocalChecked()).ToLocalChecked()).FromJust(); // number of silent samples added to the end
}

void SET_CONFIG_BRCMAUDIOTRACKCHANGECONTROLTYPE(OMX_CONFIG_BRCMAUDIOTRACKCHANGECONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.nSrcPortIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSrcPortIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nDstPortIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDstPortIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nXFade = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nXFade").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMPIXELVALUERANGETYPE(OMX_PARAM_BRCMPIXELVALUERANGETYPE &format, v8::Local<v8::Object> param) {
  format.ePixelValueRange = (OMX_BRCMPIXELVALUERANGETYPE) Nan::To<int>(Nan::Get(param, Nan::New("ePixelValueRange").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_CAMERADISABLEALGORITHMTYPE(OMX_PARAM_CAMERADISABLEALGORITHMTYPE &format, v8::Local<v8::Object> param) {
  format.eAlgorithm = (OMX_CAMERADISABLEALGORITHMTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eAlgorithm").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bDisabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDisabled").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMAUDIOEFFECTCONTROLTYPE(OMX_CONFIG_BRCMAUDIOEFFECTCONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMMINIMUMPROCESSINGLATENCY(OMX_CONFIG_BRCMMINIMUMPROCESSINGLATENCY &format, v8::Local<v8::Object> param) {
  if (Nan::Has(param, Nan::New("nOffset").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nOffset, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nOffset").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_PARAM_BRCMVIDEOAVCSEIENABLETYPE(OMX_PARAM_BRCMVIDEOAVCSEIENABLETYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMALLOWMEMCHANGETYPE(OMX_PARAM_BRCMALLOWMEMCHANGETYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_CAMERAUSECASETYPE(OMX_CONFIG_CAMERAUSECASETYPE &format, v8::Local<v8::Object> param) {
  format.eUseCase = (OMX_CONFIG_CAMERAUSECASE) Nan::To<int>(Nan::Get(param, Nan::New("eUseCase").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMDISABLEPROPRIETARYTUNNELSTYPE(OMX_PARAM_BRCMDISABLEPROPRIETARYTUNNELSTYPE &format, v8::Local<v8::Object> param) {
  format.bUseBuffers = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bUseBuffers").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMRETAINMEMORYTYPE(OMX_PARAM_BRCMRETAINMEMORYTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMOUTPUTBUFFERSIZETYPE(OMX_PARAM_BRCMOUTPUTBUFFERSIZETYPE &format, v8::Local<v8::Object> param) {
  format.nBufferSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBufferSize").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_CAMERAINFOTYPE(OMX_CONFIG_CAMERAINFOTYPE &format, v8::Local<v8::Object> param) {
  format.nModelId = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nModelId").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nManufacturerId = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nManufacturerId").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nRevNum = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nRevNum").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xFNumber = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFNumber").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xFocalLength = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFocalLength").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_CAMERAFEATURESTYPE(OMX_CONFIG_CAMERAFEATURESTYPE &format, v8::Local<v8::Object> param) {
  format.eHasMechanicalShutter = (OMX_CONFIG_CAMERAFEATURESSHUTTER) Nan::To<int>(Nan::Get(param, Nan::New("eHasMechanicalShutter").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bHasLens = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bHasLens").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_REQUESTCALLBACKTYPE(OMX_CONFIG_REQUESTCALLBACKTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_INDEXTYPE) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_FOCUSREGIONXY(OMX_FOCUSREGIONXY &format, v8::Local<v8::Object> param) {
  format.xLeft = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xLeft").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xTop = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xTop").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nWeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMask = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMask").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eType = (OMX_FOCUSREGIONTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eType").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_FOCUSREGIONXYTYPE(OMX_CONFIG_FOCUSREGIONXYTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTotalRegions = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTotalRegions").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nValidRegions = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nValidRegions").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bLockToFaces = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bLockToFaces").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xFaceTolerance = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFaceTolerance").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_U8TYPE(OMX_CONFIG_U8TYPE &format, v8::Local<v8::Object> param) {
  format.nU8 = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nU8").ToLocalChecked()).ToLocalChecked()).FromJust(); // U8 value
}

void SET_CONFIG_CAMERASETTINGSTYPE(OMX_CONFIG_CAMERASETTINGSTYPE &format, v8::Local<v8::Object> param) {
  format.nExposure = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nExposure").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nAnalogGain = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAnalogGain").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nDigitalGain = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDigitalGain").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nLux = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nLux").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nRedGain = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nRedGain").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBlueGain = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBlueGain").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFocusPosition = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFocusPosition").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_YUVCOLOUR(OMX_YUVCOLOUR &format, v8::Local<v8::Object> param) {
  format.nY = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nY").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nU = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nU").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nV = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nV").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_DRAWBOXLINEPARAMS(OMX_CONFIG_DRAWBOXLINEPARAMS &format, v8::Local<v8::Object> param) {
  format.xCornerSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xCornerSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // Size of the corners as a fraction of the complete side
  format.nPrimaryFaceLineWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPrimaryFaceLineWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Width of the box line for the primary face in pixels
  format.nOtherFaceLineWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nOtherFaceLineWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Width of the box line for other faces in pixels
  format.nFocusRegionLineWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFocusRegionLineWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Width of the box line for focus regions in pixels
  if (Nan::Has(param, Nan::New("sPrimaryFaceColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sPrimaryFaceColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sPrimaryFaceColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sPrimaryFaceSmileColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sPrimaryFaceSmileColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sPrimaryFaceSmileColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sPrimaryFaceBlinkColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sPrimaryFaceBlinkColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sPrimaryFaceBlinkColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sOtherFaceColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sOtherFaceColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sOtherFaceColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sOtherFaceSmileColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sOtherFaceSmileColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sOtherFaceSmileColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sOtherFaceBlinkColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sOtherFaceBlinkColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sOtherFaceBlinkColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.bShowFocusRegionsWhenIdle = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowFocusRegionsWhenIdle").ToLocalChecked()).ToLocalChecked()).FromJust(); // Are focus regions displayed when just in viewfinder/AF idle
  if (Nan::Has(param, Nan::New("sFocusRegionColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sFocusRegionColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sFocusRegionColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.bShowAfState = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowAfState").ToLocalChecked()).ToLocalChecked()).FromJust(); // Change to the colours specified below if AF cycle has run
  format.bShowOnlyPrimaryAfState = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowOnlyPrimaryAfState").ToLocalChecked()).ToLocalChecked()).FromJust(); // Only show the primary face when displaying the AF status
  format.bCombineNonFaceRegions = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bCombineNonFaceRegions").ToLocalChecked()).ToLocalChecked()).FromJust(); // Combine all regions not defined as faces into one single box covering them all
  if (Nan::Has(param, Nan::New("sAfLockPrimaryFaceColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sAfLockPrimaryFaceColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sAfLockPrimaryFaceColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sAfLockOtherFaceColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sAfLockOtherFaceColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sAfLockOtherFaceColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sAfLockFocusRegionColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sAfLockFocusRegionColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sAfLockFocusRegionColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sAfFailPrimaryFaceColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sAfFailPrimaryFaceColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sAfFailPrimaryFaceColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sAfFailOtherFaceColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sAfFailOtherFaceColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sAfFailOtherFaceColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("sAfFailFocusRegionColour").ToLocalChecked()).FromJust())
  {
    SET_YUVCOLOUR(format.sAfFailFocusRegionColour, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sAfFailFocusRegionColour").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_PARAM_CAMERARMITYPE(OMX_PARAM_CAMERARMITYPE &format, v8::Local<v8::Object> param) {
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nInputBufferHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nInputBufferHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nRmiBufferSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nRmiBufferSize").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMSYNCOUTPUTTYPE(OMX_CONFIG_BRCMSYNCOUTPUTTYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_DRMVIEWTYPE(OMX_CONFIG_DRMVIEWTYPE &format, v8::Local<v8::Object> param) {
  format.nCurrentView = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCurrentView").ToLocalChecked()).ToLocalChecked()).FromJust(); // Current view count
  format.nMaxView = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxView").ToLocalChecked()).ToLocalChecked()).FromJust(); // Max. no. of view allowed
}

void SET_PARAM_BRCMU64TYPE(OMX_PARAM_BRCMU64TYPE &format, v8::Local<v8::Object> param) {
  format.nLowPart = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nLowPart").ToLocalChecked()).ToLocalChecked()).FromJust(); // low bits of the unsigned 64 bit value
  format.nHighPart = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHighPart").ToLocalChecked()).ToLocalChecked()).FromJust(); // high bits of the unsigned 64 bit value
}

void SET_PARAM_BRCMTHUMBNAILTYPE(OMX_PARAM_BRCMTHUMBNAILTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust(); // Enable generation of thumbnails during still capture
  format.bUsePreview = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bUsePreview").ToLocalChecked()).ToLocalChecked()).FromJust(); // Use the preview image (as is) as thumbnail
  format.nWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Desired width of the thumbnail
  format.nHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHeight").ToLocalChecked()).ToLocalChecked()).FromJust(); // Desired height of the thumbnail
}

void SET_PARAM_BRCMASPECTRATIOTYPE(OMX_PARAM_BRCMASPECTRATIOTYPE &format, v8::Local<v8::Object> param) {
  format.nWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE(OMX_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE &format, v8::Local<v8::Object> param) {
  format.bStartWithValidFrame = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bStartWithValidFrame").ToLocalChecked()).ToLocalChecked()).FromJust(); // Decoder will only start emitting frames from a non-corrupted frame
}

void SET_CONFIG_FLASHINFOTYPE(OMX_CONFIG_FLASHINFOTYPE &format, v8::Local<v8::Object> param) {
  format.eFlashType = (OMX_CAMERAFLASHTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFlashType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nDeviceId = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nDeviceId").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nDeviceVersion = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nDeviceVersion").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_DYNAMICRANGEEXPANSIONTYPE(OMX_CONFIG_DYNAMICRANGEEXPANSIONTYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_DYNAMICRANGEEXPANSIONMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMTHREADAFFINITYTYPE(OMX_PARAM_BRCMTHREADAFFINITYTYPE &format, v8::Local<v8::Object> param) {
  format.eAffinity = (OMX_BRCMTHREADAFFINITYTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eAffinity").ToLocalChecked()).ToLocalChecked()).FromJust(); // Thread CPU affinity
}

void SET_CONFIG_SCENEDETECTTYPE(OMX_CONFIG_SCENEDETECTTYPE &format, v8::Local<v8::Object> param) {
  format.eScene = (OMX_SCENEDETECTTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eScene").ToLocalChecked()).ToLocalChecked()).FromJust(); // Scene type detected
}

void SET_NALSTREAMFORMATTYPE(OMX_NALSTREAMFORMATTYPE &format, v8::Local<v8::Object> param) {
  format.eNaluFormat = (OMX_NALUFORMATSTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eNaluFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_STATICBOX(OMX_STATICBOX &format, v8::Local<v8::Object> param) {
  format.xLeft = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xLeft").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xTop = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xTop").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eType = (OMX_STATICBOXTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eType").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_STATICBOXTYPE(OMX_CONFIG_STATICBOXTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTotalBoxes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTotalBoxes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nValidBoxes = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nValidBoxes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bDrawOtherBoxes = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDrawOtherBoxes").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_PORTBOOLEANTYPE(OMX_CONFIG_PORTBOOLEANTYPE &format, v8::Local<v8::Object> param) {
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_CAMERACAPTUREMODETYPE(OMX_PARAM_CAMERACAPTUREMODETYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_CAMERACAPTUREMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMDRMENCRYPTIONTYPE(OMX_PARAM_BRCMDRMENCRYPTIONTYPE &format, v8::Local<v8::Object> param) {
  format.eEncryption = (OMX_BRCMDRMENCRYPTIONTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eEncryption").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nConfigDataLen = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nConfigDataLen").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BUFFERSTALLTYPE(OMX_CONFIG_BUFFERSTALLTYPE &format, v8::Local<v8::Object> param) {
  format.bStalled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bStalled").ToLocalChecked()).ToLocalChecked()).FromJust(); // Whether we are stalled
  format.nDelay = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDelay").ToLocalChecked()).ToLocalChecked()).FromJust(); // Delay in real time (us) from last buffer to current time
}

void SET_CONFIG_LATENCYTARGETTYPE(OMX_CONFIG_LATENCYTARGETTYPE &format, v8::Local<v8::Object> param) {
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust(); // whether this mode is enabled
  format.nFilter = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFilter").ToLocalChecked()).ToLocalChecked()).FromJust(); // number of latency samples to filter on, good value: 1
  format.nTarget = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTarget").ToLocalChecked()).ToLocalChecked()).FromJust(); // target latency, us
  format.nShift = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nShift").ToLocalChecked()).ToLocalChecked()).FromJust(); // shift for storing latency values, good value: 7
  format.nSpeedFactor = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nSpeedFactor").ToLocalChecked()).ToLocalChecked()).FromJust(); // multiplier for speed changes, in 24.8 format, good value: 256-512
  format.nInterFactor = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nInterFactor").ToLocalChecked()).ToLocalChecked()).FromJust(); // divider for comparing latency versus gradiant, good value: 300
  format.nAdjCap = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nAdjCap").ToLocalChecked()).ToLocalChecked()).FromJust(); // limit for speed change before nSpeedFactor is applied, good value: 100
}

void SET_CONFIG_BRCMUSEPROPRIETARYCALLBACKTYPE(OMX_CONFIG_BRCMUSEPROPRIETARYCALLBACKTYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_TIMESTAMPMODETYPE(OMX_PARAM_TIMESTAMPMODETYPE &format, v8::Local<v8::Object> param) {
  format.eTimestampMode = (OMX_TIMESTAMPMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eTimestampMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_BRCMVEGLIMAGETYPE(OMX_BRCMVEGLIMAGETYPE &format, v8::Local<v8::Object> param) {
  format.nWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nStride = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nStride").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nUmemHandle = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nUmemHandle").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nUmemOffset = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nUmemOffset").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFlipped = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFlipped").ToLocalChecked()).ToLocalChecked()).FromJust(); // Non-zero -> vertically flipped image
}

void SET_CONFIG_BRCMFOVTYPE(OMX_CONFIG_BRCMFOVTYPE &format, v8::Local<v8::Object> param) {
  format.xFieldOfViewHorizontal = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFieldOfViewHorizontal").ToLocalChecked()).ToLocalChecked()).FromJust(); // Horizontal field of view in degrees. 16p16 value
  format.xFieldOfViewVertical = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFieldOfViewVertical").ToLocalChecked()).ToLocalChecked()).FromJust(); // Vertical field of view in degrees. 16p16 value
}

void SET_VIDEO_CONFIG_LEVEL_EXTEND(OMX_VIDEO_CONFIG_LEVEL_EXTEND &format, v8::Local<v8::Object> param) {
  format.nCustomMaxMBPS = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCustomMaxMBPS").ToLocalChecked()).ToLocalChecked()).FromJust(); // Specifies maximum macro-blocks per second
  format.nCustomMaxFS = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCustomMaxFS").ToLocalChecked()).ToLocalChecked()).FromJust(); // Specifies maximum frame size (macro-blocks per frame)
  format.nCustomMaxBRandCPB = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCustomMaxBRandCPB").ToLocalChecked()).ToLocalChecked()).FromJust(); // Specifies maximum bitrate in units of 1000 bits/s and Codec Picture Buffer (CPB derived from bitrate)
}

void SET_VIDEO_EEDE_ENABLE(OMX_VIDEO_EEDE_ENABLE &format, v8::Local<v8::Object> param) {
  format.enable = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("enable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_EEDE_LOSSRATE(OMX_VIDEO_EEDE_LOSSRATE &format, v8::Local<v8::Object> param) {
  format.loss_rate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("loss_rate").ToLocalChecked()).ToLocalChecked()).FromJust(); // loss rate, 5 means 5%
}

void SET_PARAM_COLORSPACETYPE(OMX_PARAM_COLORSPACETYPE &format, v8::Local<v8::Object> param) {
  format.eColorSpace = (OMX_COLORSPACETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eColorSpace").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_CAPTURESTATETYPE(OMX_PARAM_CAPTURESTATETYPE &format, v8::Local<v8::Object> param) {
  format.eCaptureState = (OMX_CAPTURESTATETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCaptureState").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BRCMCONFIGFILETYPE(OMX_PARAM_BRCMCONFIGFILETYPE &format, v8::Local<v8::Object> param) {
  format.fileSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("fileSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // Size of complete file data
}

void SET_PARAM_BRCMCONFIGFILECHUNKTYPE(OMX_PARAM_BRCMCONFIGFILECHUNKTYPE &format, v8::Local<v8::Object> param) {
  format.size = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("size").ToLocalChecked()).ToLocalChecked()).FromJust(); // Number of bytes being transferred in this chunk
  format.offset = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("offset").ToLocalChecked()).ToLocalChecked()).FromJust(); // Offset of this chunk in the file
}

void SET_PARAM_BRCMFRAMERATERANGETYPE(OMX_PARAM_BRCMFRAMERATERANGETYPE &format, v8::Local<v8::Object> param) {
  format.xFramerateLow = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFramerateLow").ToLocalChecked()).ToLocalChecked()).FromJust(); // Low end of framerate range. Q16 format
  format.xFramerateHigh = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFramerateHigh").ToLocalChecked()).ToLocalChecked()).FromJust(); // High end of framerate range. Q16 format
}

void SET_PARAM_S32TYPE(OMX_PARAM_S32TYPE &format, v8::Local<v8::Object> param) {
  format.nS32 = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nS32").ToLocalChecked()).ToLocalChecked()).FromJust(); // S32 value
}

void SET_PARAM_BRCMVIDEODRMPROTECTBUFFERTYPE(OMX_PARAM_BRCMVIDEODRMPROTECTBUFFERTYPE &format, v8::Local<v8::Object> param) {
  format.size_wanted = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("size_wanted").ToLocalChecked()).ToLocalChecked()).FromJust(); // Input. Zero size means internal video decoder buffer, mem_handle and phys_addr not returned in this case
  format.protect = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("protect").ToLocalChecked()).ToLocalChecked()).FromJust(); // Input. 1 = protect, 0 = unprotect
  format.mem_handle = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("mem_handle").ToLocalChecked()).ToLocalChecked()).FromJust(); // Output. Handle for protected buffer
}

void SET_CONFIG_ZEROSHUTTERLAGTYPE(OMX_CONFIG_ZEROSHUTTERLAGTYPE &format, v8::Local<v8::Object> param) {
  format.bZeroShutterMode = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("bZeroShutterMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // Select ZSL mode from the camera.
  format.bConcurrentCapture = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("bConcurrentCapture").ToLocalChecked()).ToLocalChecked()).FromJust(); // Perform concurrent captures for full ZSL.
}

void SET_PARAM_BRCMVIDEODECODECONFIGVD3TYPE(OMX_PARAM_BRCMVIDEODECODECONFIGVD3TYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_CUSTOMAWBGAINSTYPE(OMX_CONFIG_CUSTOMAWBGAINSTYPE &format, v8::Local<v8::Object> param) {
  format.xGainR = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xGainR").ToLocalChecked()).ToLocalChecked()).FromJust(); // Red gain - 16p16
  format.xGainB = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xGainB").ToLocalChecked()).ToLocalChecked()).FromJust(); // Blue gain - 16p16
}

void SET_CONFIG_BRCMRENDERSTATSTYPE(OMX_CONFIG_BRCMRENDERSTATSTYPE &format, v8::Local<v8::Object> param) {
  format.nValid = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("nValid").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMatch = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMatch").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPeriod = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPeriod").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPhase = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPhase").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPixelClockNominal = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPixelClockNominal").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPixelClock = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPixelClock").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHvsStatus = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHvsStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRCMANNOTATETYPE(OMX_CONFIG_BRCMANNOTATETYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bShowShutter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowShutter").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bShowAnalogGain = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowAnalogGain").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bShowLens = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowLens").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bShowCaf = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowCaf").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bShowMotion = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowMotion").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bShowFrameNum = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bShowFrameNum").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableBackground = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableBackground").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bCustomBackgroundColour = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bCustomBackgroundColour").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBackgroundY = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nBackgroundY").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBackgroundU = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nBackgroundU").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBackgroundV = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nBackgroundV").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.dummy1 = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("dummy1").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bCustomTextColour = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bCustomTextColour").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTextY = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nTextY").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTextU = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nTextU").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTextV = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nTextV").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTextSize = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nTextSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // Text size: 6-150 pixels
}

void SET_CONFIG_BRCMSTEREOSCOPICMODETYPE(OMX_CONFIG_BRCMSTEREOSCOPICMODETYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_BRCMSTEREOSCOPICMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // Packing mode
  format.bDecimate = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDecimate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Half/half mode (pixel aspect ratio = 1:2 or 2:1 if set. 1:1 if not set)
  format.bSwapEyes = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bSwapEyes").ToLocalChecked()).ToLocalChecked()).FromJust(); // False = left eye first. True = right eye first.
}

void SET_PARAM_CAMERAINTERFACETYPE(OMX_PARAM_CAMERAINTERFACETYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_CAMERAINTERFACETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // Interface mode
}

void SET_PARAM_CAMERACLOCKINGMODETYPE(OMX_PARAM_CAMERACLOCKINGMODETYPE &format, v8::Local<v8::Object> param) {
  format.eMode = (OMX_CAMERACLOCKINGMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMode").ToLocalChecked()).ToLocalChecked()).FromJust(); // Clocking mode
}

void SET_PARAM_CAMERARXCONFIG_TYPE(OMX_PARAM_CAMERARXCONFIG_TYPE &format, v8::Local<v8::Object> param) {
  format.eDecode = (OMX_CAMERARXDECODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eDecode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eEncode = (OMX_CAMERARXENCODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eEncode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eUnpack = (OMX_CAMERARXUNPACKYPE) Nan::To<int>(Nan::Get(param, Nan::New("eUnpack").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.ePack = (OMX_CAMERARXPACKTYPE) Nan::To<int>(Nan::Get(param, Nan::New("ePack").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nDataLanes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDataLanes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nEncodeBlockLength = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nEncodeBlockLength").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nEmbeddedDataLines = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nEmbeddedDataLines").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nImageId = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nImageId").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_CAMERARXTIMING_TYPE(OMX_PARAM_CAMERARXTIMING_TYPE &format, v8::Local<v8::Object> param) {
  format.nTiming1 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTiming1").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTiming2 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTiming2").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTiming3 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTiming3").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTiming4 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTiming4").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTiming5 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTiming5").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTerm1 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTerm1").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTerm2 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTerm2").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nCpiTiming1 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCpiTiming1").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nCpiTiming2 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCpiTiming2").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_BAYERORDERTYPE(OMX_PARAM_BAYERORDERTYPE &format, v8::Local<v8::Object> param) {
  format.eBayerOrder = (OMX_BAYERORDERTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eBayerOrder").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_PORTDEFINITIONTYPE(OMX_PARAM_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param) {
  format.eDir = (OMX_DIRTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eDir").ToLocalChecked()).ToLocalChecked()).FromJust(); // Direction (input or output) of this port
  format.nBufferCountActual = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBufferCountActual").ToLocalChecked()).ToLocalChecked()).FromJust(); // The actual number of buffers allocated on this port
  format.nBufferCountMin = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBufferCountMin").ToLocalChecked()).ToLocalChecked()).FromJust(); // The minimum number of buffers this port requires
  format.nBufferSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBufferSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // Size, in bytes, for buffers to be used for this channel
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust(); // Ports default to enabled and are enabled/disabled by OMX_CommandPortEnable/OMX_CommandPortDisable. When disabled a port is unpopulated. A disabled port is not populated with buffers on a transition to IDLE.
  format.bPopulated = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bPopulated").ToLocalChecked()).ToLocalChecked()).FromJust(); // Port is populated with all of its buffers as indicated by nBufferCountActual. A disabled port is always unpopulated. An enabled port is populated on a transition to OMX_StateIdle and unpopulated on a transition to loaded.
  format.eDomain = (OMX_PORTDOMAINTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eDomain").ToLocalChecked()).ToLocalChecked()).FromJust(); // Domain of the port. Determines the contents of metadata below.
  if (format.eDomain == OMX_PortDomainAudio) {
    v8::Local<v8::Object> obj = Nan::To<v8::Object>(Nan::Get(param, Nan::New("audio").ToLocalChecked()).ToLocalChecked()).ToLocalChecked();
    SET_AUDIO_PORTDEFINITIONTYPE(format.format.audio, obj);
  }
  if (format.eDomain == OMX_PortDomainVideo) {
    v8::Local<v8::Object> obj = Nan::To<v8::Object>(Nan::Get(param, Nan::New("video").ToLocalChecked()).ToLocalChecked()).ToLocalChecked();
    SET_VIDEO_PORTDEFINITIONTYPE(format.format.video, obj);
  }
  if (format.eDomain == OMX_PortDomainImage) {
    v8::Local<v8::Object> obj = Nan::To<v8::Object>(Nan::Get(param, Nan::New("image").ToLocalChecked()).ToLocalChecked()).ToLocalChecked();
    SET_IMAGE_PORTDEFINITIONTYPE(format.format.image, obj);
  }
  if (format.eDomain == OMX_PortDomainOther) {
    v8::Local<v8::Object> obj = Nan::To<v8::Object>(Nan::Get(param, Nan::New("other").ToLocalChecked()).ToLocalChecked()).ToLocalChecked();
    SET_OTHER_PORTDEFINITIONTYPE(format.format.other, obj);
  }
}

void SET_PARAM_U32TYPE(OMX_PARAM_U32TYPE &format, v8::Local<v8::Object> param) {
  format.nU32 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nU32").ToLocalChecked()).ToLocalChecked()).FromJust(); // U32 value
}

void SET_PARAM_SUSPENSIONPOLICYTYPE(OMX_PARAM_SUSPENSIONPOLICYTYPE &format, v8::Local<v8::Object> param) {
  format.ePolicy = (OMX_SUSPENSIONPOLICYTYPE) Nan::To<int>(Nan::Get(param, Nan::New("ePolicy").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_SUSPENSIONTYPE(OMX_PARAM_SUSPENSIONTYPE &format, v8::Local<v8::Object> param) {
  format.eType = (OMX_SUSPENSIONTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eType").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BOOLEANTYPE(OMX_CONFIG_BOOLEANTYPE &format, v8::Local<v8::Object> param) {
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_CONTENTURITYPE(OMX_PARAM_CONTENTURITYPE &format, v8::Local<v8::Object> param) {
}

void SET_PARAM_CONTENTPIPETYPE(OMX_PARAM_CONTENTPIPETYPE &format, v8::Local<v8::Object> param) {
  format.hPipe = (OMX_HANDLETYPE) Nan::To<int>(Nan::Get(param, Nan::New("hPipe").ToLocalChecked()).ToLocalChecked()).FromJust(); // The pipe handle
}

void SET_RESOURCECONCEALMENTTYPE(OMX_RESOURCECONCEALMENTTYPE &format, v8::Local<v8::Object> param) {
  format.bResourceConcealmentForbidden = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bResourceConcealmentForbidden").ToLocalChecked()).ToLocalChecked()).FromJust(); // disallow the use of resource concealment methods (like degrading algorithm quality to lower resource consumption or functional bypass) on a component as a resolution to resource conflicts.
}

void SET_CONFIG_METADATAITEMCOUNTTYPE(OMX_CONFIG_METADATAITEMCOUNTTYPE &format, v8::Local<v8::Object> param) {
  format.eScopeMode = (OMX_METADATASCOPETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eScopeMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nScopeSpecifier = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nScopeSpecifier").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMetadataItemCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMetadataItemCount").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_METADATAITEMTYPE(OMX_CONFIG_METADATAITEMTYPE &format, v8::Local<v8::Object> param) {
  format.eScopeMode = (OMX_METADATASCOPETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eScopeMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nScopeSpecifier = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nScopeSpecifier").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMetadataItemIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMetadataItemIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eSearchMode = (OMX_METADATASEARCHMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eSearchMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eKeyCharset = (OMX_METADATACHARSETTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eKeyCharset").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nKeySizeUsed = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nKeySizeUsed").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eValueCharset = (OMX_METADATACHARSETTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eValueCharset").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nValueMaxSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nValueMaxSize").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nValueSizeUsed = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nValueSizeUsed").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_CONTAINERNODECOUNTTYPE(OMX_CONFIG_CONTAINERNODECOUNTTYPE &format, v8::Local<v8::Object> param) {
  format.bAllKeys = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bAllKeys").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nParentNodeID = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nParentNodeID").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumNodes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumNodes").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_CONTAINERNODEIDTYPE(OMX_CONFIG_CONTAINERNODEIDTYPE &format, v8::Local<v8::Object> param) {
  format.bAllKeys = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bAllKeys").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nParentNodeID = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nParentNodeID").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNodeIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNodeIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNodeID = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNodeID").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bIsLeafType = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bIsLeafType").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_METADATAFILTERTYPE(OMX_PARAM_METADATAFILTERTYPE &format, v8::Local<v8::Object> param) {
  format.bAllKeys = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bAllKeys").ToLocalChecked()).ToLocalChecked()).FromJust(); // if true then this structure refers to all keys and the three key fields below are ignored
  format.eKeyCharset = (OMX_METADATACHARSETTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eKeyCharset").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nKeySizeUsed = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nKeySizeUsed").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nLanguageCountrySizeUsed = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nLanguageCountrySizeUsed").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust(); // if true then key is part of filter (e.g. retained for query later). If false then key is not part of filter
}

void SET_PRIORITYMGMTTYPE(OMX_PRIORITYMGMTTYPE &format, v8::Local<v8::Object> param) {
  format.nGroupPriority = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nGroupPriority").ToLocalChecked()).ToLocalChecked()).FromJust(); // Priority of the component group
  format.nGroupID = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nGroupID").ToLocalChecked()).ToLocalChecked()).FromJust(); // ID of the component group
}

void SET_PARAM_COMPONENTROLETYPE(OMX_PARAM_COMPONENTROLETYPE &format, v8::Local<v8::Object> param) {
}

void SET_BUFFERHEADERTYPE(OMX_BUFFERHEADERTYPE &format, v8::Local<v8::Object> param) {
  format.pBuffer = (OMX_U8*) Nan::To<int>(Nan::Get(param, Nan::New("pBuffer").ToLocalChecked()).ToLocalChecked()).FromJust(); // Pointer to actual block of memory that is acting as the buffer
  format.nAllocLen = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAllocLen").ToLocalChecked()).ToLocalChecked()).FromJust(); // size of the buffer allocated, in bytes
  format.nFilledLen = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFilledLen").ToLocalChecked()).ToLocalChecked()).FromJust(); // number of bytes currently in the buffer
  format.nOffset = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nOffset").ToLocalChecked()).ToLocalChecked()).FromJust(); // start offset of valid data in bytes from the start of the buffer
  format.hMarkTargetComponent = (OMX_HANDLETYPE) Nan::To<int>(Nan::Get(param, Nan::New("hMarkTargetComponent").ToLocalChecked()).ToLocalChecked()).FromJust(); // The component that will generate a mark event upon processing this buffer.
  format.nTickCount = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTickCount").ToLocalChecked()).ToLocalChecked()).FromJust(); // Optional entry that the component and application can update with a tick count when they access the component. This value should be in microseconds. Since this is a value relative to an arbitrary starting point, this value cannot be used to determine absolute time. This is an optional entry and not all components will update it.
  if (Nan::Has(param, Nan::New("nTimeStamp").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nTimeStamp, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nTimeStamp").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.nFlags = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFlags").ToLocalChecked()).ToLocalChecked()).FromJust(); // buffer specific flags
  format.nOutputPortIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nOutputPortIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // The index of the output port (if any) using this buffer
  format.nInputPortIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nInputPortIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // The index of the input port (if any) using this buffer
}

void SET_OTHER_EXTRADATATYPE(OMX_OTHER_EXTRADATATYPE &format, v8::Local<v8::Object> param) {
  format.eType = (OMX_EXTRADATATYPE) Nan::To<int>(Nan::Get(param, Nan::New("eType").ToLocalChecked()).ToLocalChecked()).FromJust(); // Extra Data type
  format.nDataSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDataSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // Size of the supporting data to follow
}

void SET_PORT_PARAM_TYPE(OMX_PORT_PARAM_TYPE &format, v8::Local<v8::Object> param) {
  format.nPorts = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPorts").ToLocalChecked()).ToLocalChecked()).FromJust(); // The number of ports for this component
  format.nStartPortNumber = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nStartPortNumber").ToLocalChecked()).ToLocalChecked()).FromJust(); // first port number for this type of port
}

void SET_PARAM_BUFFERSUPPLIERTYPE(OMX_PARAM_BUFFERSUPPLIERTYPE &format, v8::Local<v8::Object> param) {
  format.eBufferSupplier = (OMX_BUFFERSUPPLIERTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eBufferSupplier").ToLocalChecked()).ToLocalChecked()).FromJust(); // buffer supplier
}

void SET_TUNNELSETUPTYPE(OMX_TUNNELSETUPTYPE &format, v8::Local<v8::Object> param) {
  format.nTunnelFlags = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTunnelFlags").ToLocalChecked()).ToLocalChecked()).FromJust(); // bit flags for tunneling
  format.eSupplier = (OMX_BUFFERSUPPLIERTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eSupplier").ToLocalChecked()).ToLocalChecked()).FromJust(); // supplier preference
}

void SET_PARAM_PORTSUMMARYTYPE(OMX_PARAM_PORTSUMMARYTYPE &format, v8::Local<v8::Object> param) {
  format.nNumPorts = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumPorts").ToLocalChecked()).ToLocalChecked()).FromJust(); // Total number of ports
  format.reqSet = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("reqSet").ToLocalChecked()).ToLocalChecked()).FromJust(); // Which set of ports is details below, portIndex[0] is port reqSet 32
  format.portDir = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("portDir").ToLocalChecked()).ToLocalChecked()).FromJust(); // Bitfield, 1 if output port, 0 if input port, max 256 ports
}

void SET_PARAM_MARKCOMPARISONTYPE(OMX_PARAM_MARKCOMPARISONTYPE &format, v8::Local<v8::Object> param) {
}

void SET_PARAM_TUNNELSTATUSTYPE(OMX_PARAM_TUNNELSTATUSTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // Query the nIndex'th port and fill in nPortIndex
  format.bUseIndex = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bUseIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // If OMX_TRUE read nIndex, otherwise read nPortIndex
  format.nTunneledPort = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTunneledPort").ToLocalChecked()).ToLocalChecked()).FromJust(); // Port on tunnelled component
}

void SET_IMAGE_PORTDEFINITIONTYPE(OMX_IMAGE_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param) {
  format.pNativeRender = (OMX_NATIVE_DEVICETYPE) Nan::To<int>(Nan::Get(param, Nan::New("pNativeRender").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nStride = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nStride").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nSliceHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSliceHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bFlagErrorConcealment = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bFlagErrorConcealment").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eCompressionFormat = (OMX_IMAGE_CODINGTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCompressionFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eColorFormat = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eColorFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.pNativeWindow = (OMX_NATIVE_WINDOWTYPE) Nan::To<int>(Nan::Get(param, Nan::New("pNativeWindow").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_IMAGE_PARAM_PORTFORMATTYPE(OMX_IMAGE_PARAM_PORTFORMATTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eCompressionFormat = (OMX_IMAGE_CODINGTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCompressionFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eColorFormat = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eColorFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_IMAGE_PARAM_FLASHCONTROLTYPE(OMX_IMAGE_PARAM_FLASHCONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.eFlashControl = (OMX_IMAGE_FLASHCONTROLTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFlashControl").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_IMAGE_CONFIG_FOCUSCONTROLTYPE(OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.eFocusControl = (OMX_IMAGE_FOCUSCONTROLTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFocusControl").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFocusSteps = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFocusSteps").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFocusStepIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFocusStepIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_IMAGE_PARAM_QFACTORTYPE(OMX_IMAGE_PARAM_QFACTORTYPE &format, v8::Local<v8::Object> param) {
  format.nQFactor = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nQFactor").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_IMAGE_PARAM_QUANTIZATIONTABLETYPE(OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE &format, v8::Local<v8::Object> param) {
  format.eQuantizationTable = (OMX_IMAGE_QUANTIZATIONTABLETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eQuantizationTable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_IMAGE_PARAM_HUFFMANTTABLETYPE(OMX_IMAGE_PARAM_HUFFMANTTABLETYPE &format, v8::Local<v8::Object> param) {
  format.eHuffmanTable = (OMX_IMAGE_HUFFMANTABLETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eHuffmanTable").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_COLORCONVERSIONTYPE(OMX_CONFIG_COLORCONVERSIONTYPE &format, v8::Local<v8::Object> param) {
}

void SET_CONFIG_SCALEFACTORTYPE(OMX_CONFIG_SCALEFACTORTYPE &format, v8::Local<v8::Object> param) {
  format.xWidth = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("xWidth").ToLocalChecked()).ToLocalChecked()).FromJust(); // Fixed point value stored as Q16
  format.xHeight = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("xHeight").ToLocalChecked()).ToLocalChecked()).FromJust(); // Fixed point value stored as Q16
}

void SET_CONFIG_IMAGEFILTERTYPE(OMX_CONFIG_IMAGEFILTERTYPE &format, v8::Local<v8::Object> param) {
  format.eImageFilter = (OMX_IMAGEFILTERTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eImageFilter").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_COLORENHANCEMENTTYPE(OMX_CONFIG_COLORENHANCEMENTTYPE &format, v8::Local<v8::Object> param) {
  format.bColorEnhancement = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bColorEnhancement").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nCustomizedU = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nCustomizedU").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nCustomizedV = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nCustomizedV").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_COLORKEYTYPE(OMX_CONFIG_COLORKEYTYPE &format, v8::Local<v8::Object> param) {
  format.nARGBColor = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nARGBColor").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nARGBMask = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nARGBMask").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_COLORBLENDTYPE(OMX_CONFIG_COLORBLENDTYPE &format, v8::Local<v8::Object> param) {
  format.nRGBAlphaConstant = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nRGBAlphaConstant").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eColorBlend = (OMX_COLORBLENDTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eColorBlend").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_FRAMESIZETYPE(OMX_FRAMESIZETYPE &format, v8::Local<v8::Object> param) {
  format.nWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_ROTATIONTYPE(OMX_CONFIG_ROTATIONTYPE &format, v8::Local<v8::Object> param) {
  format.nRotation = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nRotation").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_MIRRORTYPE(OMX_CONFIG_MIRRORTYPE &format, v8::Local<v8::Object> param) {
  format.eMirror = (OMX_MIRRORTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMirror").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_POINTTYPE(OMX_CONFIG_POINTTYPE &format, v8::Local<v8::Object> param) {
  format.nX = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nX").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nY = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nY").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_RECTTYPE(OMX_CONFIG_RECTTYPE &format, v8::Local<v8::Object> param) {
  format.nLeft = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nLeft").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTop = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nTop").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_DEBLOCKINGTYPE(OMX_PARAM_DEBLOCKINGTYPE &format, v8::Local<v8::Object> param) {
  format.bDeblocking = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDeblocking").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_FRAMESTABTYPE(OMX_CONFIG_FRAMESTABTYPE &format, v8::Local<v8::Object> param) {
  format.bStab = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bStab").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_WHITEBALCONTROLTYPE(OMX_CONFIG_WHITEBALCONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.eWhiteBalControl = (OMX_WHITEBALCONTROLTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eWhiteBalControl").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_EXPOSURECONTROLTYPE(OMX_CONFIG_EXPOSURECONTROLTYPE &format, v8::Local<v8::Object> param) {
  format.eExposureControl = (OMX_EXPOSURECONTROLTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eExposureControl").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_SENSORMODETYPE(OMX_PARAM_SENSORMODETYPE &format, v8::Local<v8::Object> param) {
  format.nFrameRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameRate").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bOneShot = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bOneShot").ToLocalChecked()).ToLocalChecked()).FromJust();
  if (Nan::Has(param, Nan::New("sFrameSize").ToLocalChecked()).FromJust())
  {
    SET_FRAMESIZETYPE(format.sFrameSize, Nan::To<v8::Object>(Nan::Get(param, Nan::New("sFrameSize").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_CONFIG_CONTRASTTYPE(OMX_CONFIG_CONTRASTTYPE &format, v8::Local<v8::Object> param) {
  format.nContrast = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nContrast").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BRIGHTNESSTYPE(OMX_CONFIG_BRIGHTNESSTYPE &format, v8::Local<v8::Object> param) {
  format.nBrightness = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBrightness").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_BACKLIGHTTYPE(OMX_CONFIG_BACKLIGHTTYPE &format, v8::Local<v8::Object> param) {
  format.nBacklight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBacklight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTimeout = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTimeout").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_GAMMATYPE(OMX_CONFIG_GAMMATYPE &format, v8::Local<v8::Object> param) {
  format.nGamma = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nGamma").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_SATURATIONTYPE(OMX_CONFIG_SATURATIONTYPE &format, v8::Local<v8::Object> param) {
  format.nSaturation = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nSaturation").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_LIGHTNESSTYPE(OMX_CONFIG_LIGHTNESSTYPE &format, v8::Local<v8::Object> param) {
  format.nLightness = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nLightness").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_PLANEBLENDTYPE(OMX_CONFIG_PLANEBLENDTYPE &format, v8::Local<v8::Object> param) {
  format.nDepth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nDepth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nAlpha = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAlpha").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_INTERLEAVETYPE(OMX_PARAM_INTERLEAVETYPE &format, v8::Local<v8::Object> param) {
  format.bEnable = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnable").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nInterleavePortIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nInterleavePortIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_TRANSITIONEFFECTTYPE(OMX_CONFIG_TRANSITIONEFFECTTYPE &format, v8::Local<v8::Object> param) {
  format.eEffect = (OMX_TRANSITIONEFFECTTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eEffect").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_DATAUNITTYPE(OMX_PARAM_DATAUNITTYPE &format, v8::Local<v8::Object> param) {
  format.eUnitType = (OMX_DATAUNITTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eUnitType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eEncapsulationType = (OMX_DATAUNITENCAPSULATIONTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eEncapsulationType").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_DITHERTYPE(OMX_CONFIG_DITHERTYPE &format, v8::Local<v8::Object> param) {
  format.eDither = (OMX_DITHERTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eDither").ToLocalChecked()).ToLocalChecked()).FromJust(); // Type of dithering to use
}

void SET_CONFIG_CAPTUREMODETYPE(OMX_CONFIG_CAPTUREMODETYPE &format, v8::Local<v8::Object> param) {
  format.bContinuous = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bContinuous").ToLocalChecked()).ToLocalChecked()).FromJust(); // If true then ignore frame rate and emit capture data as fast as possible (otherwise obey port's frame rate).
  format.bFrameLimited = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bFrameLimited").ToLocalChecked()).ToLocalChecked()).FromJust(); // If true then terminate capture after the port emits the specified number of frames (otherwise the port does not terminate the capture until instructed to do so by the client). Even if set, the client may manually terminate the capture prior to reaching the limit.
  format.nFrameLimit = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameLimit").ToLocalChecked()).ToLocalChecked()).FromJust(); // Limit on number of frames emitted during a capture (only valid if bFrameLimited is set).
}

void SET_CONFIG_EXPOSUREVALUETYPE(OMX_CONFIG_EXPOSUREVALUETYPE &format, v8::Local<v8::Object> param) {
  format.eMetering = (OMX_METERINGTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eMetering").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xEVCompensation = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("xEVCompensation").ToLocalChecked()).ToLocalChecked()).FromJust(); // Fixed point value stored as Q16
  format.nApertureFNumber = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nApertureFNumber").ToLocalChecked()).ToLocalChecked()).FromJust(); // e.g. nApertureFNumber = 2 implies "f/2" - Q16 format
  format.bAutoAperture = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bAutoAperture").ToLocalChecked()).ToLocalChecked()).FromJust(); // Whether aperture number is defined automatically
  format.nShutterSpeedMsec = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nShutterSpeedMsec").ToLocalChecked()).ToLocalChecked()).FromJust(); // Shutterspeed in milliseconds
  format.bAutoShutterSpeed = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bAutoShutterSpeed").ToLocalChecked()).ToLocalChecked()).FromJust(); // Whether shutter speed is defined automatically
  format.nSensitivity = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSensitivity").ToLocalChecked()).ToLocalChecked()).FromJust(); // e.g. nSensitivity = 100 implies "ISO 100"
  format.bAutoSensitivity = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bAutoSensitivity").ToLocalChecked()).ToLocalChecked()).FromJust(); // Whether sensitivity is defined automatically
}

void SET_CONFIG_FOCUSREGIONTYPE(OMX_CONFIG_FOCUSREGIONTYPE &format, v8::Local<v8::Object> param) {
  format.bCenter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bCenter").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bLeft = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bLeft").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bRight = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bRight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bTop = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bTop").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bBottom = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bBottom").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bTopLeft = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bTopLeft").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bTopRight = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bTopRight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bBottomLeft = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bBottomLeft").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bBottomRight = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bBottomRight").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_FOCUSSTATUSTYPE(OMX_PARAM_FOCUSSTATUSTYPE &format, v8::Local<v8::Object> param) {
  format.eFocusStatus = (OMX_FOCUSSTATUSTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFocusStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bCenterStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bCenterStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bLeftStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bLeftStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bRightStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bRightStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bTopStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bTopStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bBottomStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bBottomStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bTopLeftStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bTopLeftStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bTopRightStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bTopRightStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bBottomLeftStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bBottomLeftStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bBottomRightStatus = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bBottomRightStatus").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_TIME_CONFIG_SEEKMODETYPE(OMX_TIME_CONFIG_SEEKMODETYPE &format, v8::Local<v8::Object> param) {
  format.eType = (OMX_TIME_SEEKMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eType").ToLocalChecked()).ToLocalChecked()).FromJust(); // The seek mode
}

void SET_TIME_CONFIG_TIMESTAMPTYPE(OMX_TIME_CONFIG_TIMESTAMPTYPE &format, v8::Local<v8::Object> param) {
  if (Nan::Has(param, Nan::New("nTimestamp").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nTimestamp, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nTimestamp").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_TIME_CONFIG_MEDIATIMEREQUESTTYPE(OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE &format, v8::Local<v8::Object> param) {
  if (Nan::Has(param, Nan::New("nMediaTimestamp").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nMediaTimestamp, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nMediaTimestamp").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("nOffset").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nOffset, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nOffset").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
}

void SET_TIME_MEDIATIMETYPE(OMX_TIME_MEDIATIMETYPE &format, v8::Local<v8::Object> param) {
  format.nClientPrivate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nClientPrivate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Client private data to disabiguate this media time from others. Copied from the media time request. A value of zero is reserved for time scale updates.
  format.eUpdateType = (OMX_TIME_UPDATETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eUpdateType").ToLocalChecked()).ToLocalChecked()).FromJust(); // Reason for the update
  if (Nan::Has(param, Nan::New("nMediaTimestamp").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nMediaTimestamp, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nMediaTimestamp").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("nOffset").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nOffset, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nOffset").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("nWallTimeAtMediaTime").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nWallTimeAtMediaTime, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nWallTimeAtMediaTime").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.xScale = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("xScale").ToLocalChecked()).ToLocalChecked()).FromJust(); // Current media time scale in Q16 format.
  format.eState = (OMX_TIME_CLOCKSTATE) Nan::To<int>(Nan::Get(param, Nan::New("eState").ToLocalChecked()).ToLocalChecked()).FromJust(); // Seeking Change. Added 7/12.
}

void SET_TIME_CONFIG_SCALETYPE(OMX_TIME_CONFIG_SCALETYPE &format, v8::Local<v8::Object> param) {
  format.xScale = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("xScale").ToLocalChecked()).ToLocalChecked()).FromJust(); // This is a value in Q16 format which is used for scaling the media time
}

void SET_TIME_CONFIG_CLOCKSTATETYPE(OMX_TIME_CONFIG_CLOCKSTATETYPE &format, v8::Local<v8::Object> param) {
  format.eState = (OMX_TIME_CLOCKSTATE) Nan::To<int>(Nan::Get(param, Nan::New("eState").ToLocalChecked()).ToLocalChecked()).FromJust(); // State of the media time.
  if (Nan::Has(param, Nan::New("nStartTime").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nStartTime, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nStartTime").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  if (Nan::Has(param, Nan::New("nOffset").ToLocalChecked()).FromJust())
  {
    SET_TICKS(format.nOffset, Nan::To<v8::Object>(Nan::Get(param, Nan::New("nOffset").ToLocalChecked()).ToLocalChecked()).ToLocalChecked());
  }
  format.nWaitMask = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWaitMask").ToLocalChecked()).ToLocalChecked()).FromJust(); // Mask of OMX_CLOCKPORT values.
}

void SET_TIME_CONFIG_ACTIVEREFCLOCKTYPE(OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE &format, v8::Local<v8::Object> param) {
  format.eClock = (OMX_TIME_REFCLOCKTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eClock").ToLocalChecked()).ToLocalChecked()).FromJust(); // Reference clock used to compute media time
}

void SET_OTHER_CONFIG_POWERTYPE(OMX_OTHER_CONFIG_POWERTYPE &format, v8::Local<v8::Object> param) {
  format.bEnablePM = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnablePM").ToLocalChecked()).ToLocalChecked()).FromJust(); // Flag to enable Power Management
}

void SET_OTHER_CONFIG_STATSTYPE(OMX_OTHER_CONFIG_STATSTYPE &format, v8::Local<v8::Object> param) {
}

void SET_OTHER_PORTDEFINITIONTYPE(OMX_OTHER_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param) {
  format.eFormat = (OMX_OTHER_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // Type of data expected for this channel
}

void SET_OTHER_PARAM_PORTFORMATTYPE(OMX_OTHER_PARAM_PORTFORMATTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // Indicates the enumeration index for the format from 0x0 to N-1
  format.eFormat = (OMX_OTHER_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFormat").ToLocalChecked()).ToLocalChecked()).FromJust(); // Type of data expected for this channel
}

void SET_BU32(OMX_BU32 &format, v8::Local<v8::Object> param) {
  format.nValue = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nValue").ToLocalChecked()).ToLocalChecked()).FromJust(); // actual value
  format.nMin = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMin").ToLocalChecked()).ToLocalChecked()).FromJust(); // minimum for value (i.e. nValue >= nMin)
  format.nMax = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMax").ToLocalChecked()).ToLocalChecked()).FromJust(); // maximum for value (i.e. nValue <= nMax)
}

void SET_BS32(OMX_BS32 &format, v8::Local<v8::Object> param) {
  format.nValue = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nValue").ToLocalChecked()).ToLocalChecked()).FromJust(); // actual value
  format.nMin = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nMin").ToLocalChecked()).ToLocalChecked()).FromJust(); // minimum for value (i.e. nValue >= nMin)
  format.nMax = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nMax").ToLocalChecked()).ToLocalChecked()).FromJust(); // maximum for value (i.e. nValue <= nMax)
}

void SET_TICKS(OMX_TICKS &format, v8::Local<v8::Object> param) {
  format.nLowPart = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nLowPart").ToLocalChecked()).ToLocalChecked()).FromJust(); // low bits of the signed 64 bit tick value
  format.nHighPart = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHighPart").ToLocalChecked()).ToLocalChecked()).FromJust(); // high bits of the signed 64 bit tick value
}

void SET_MARKTYPE(OMX_MARKTYPE &format, v8::Local<v8::Object> param) {
  format.hMarkTargetComponent = (OMX_HANDLETYPE) Nan::To<int>(Nan::Get(param, Nan::New("hMarkTargetComponent").ToLocalChecked()).ToLocalChecked()).FromJust(); // The component that will generate a mark event upon processing the mark.
}

void SET_VIDEO_PORTDEFINITIONTYPE(OMX_VIDEO_PORTDEFINITIONTYPE &format, v8::Local<v8::Object> param) {
  format.pNativeRender = (OMX_NATIVE_DEVICETYPE) Nan::To<int>(Nan::Get(param, Nan::New("pNativeRender").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameWidth = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nStride = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("nStride").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nSliceHeight = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSliceHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBitrate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitrate").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xFramerate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFramerate").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bFlagErrorConcealment = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bFlagErrorConcealment").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eCompressionFormat = (OMX_VIDEO_CODINGTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCompressionFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eColorFormat = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eColorFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.pNativeWindow = (OMX_NATIVE_WINDOWTYPE) Nan::To<int>(Nan::Get(param, Nan::New("pNativeWindow").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_PORTFORMATTYPE(OMX_VIDEO_PARAM_PORTFORMATTYPE &format, v8::Local<v8::Object> param) {
  format.nIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIndex").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eCompressionFormat = (OMX_VIDEO_CODINGTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eCompressionFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eColorFormat = (OMX_COLOR_FORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eColorFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.xFramerate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xFramerate").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_QUANTIZATIONTYPE(OMX_VIDEO_PARAM_QUANTIZATIONTYPE &format, v8::Local<v8::Object> param) {
  format.nQpI = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nQpI").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nQpP = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nQpP").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nQpB = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nQpB").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_VIDEOFASTUPDATETYPE(OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE &format, v8::Local<v8::Object> param) {
  format.bEnableVFU = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableVFU").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFirstGOB = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFirstGOB").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFirstMB = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFirstMB").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nNumMBs = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNumMBs").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_BITRATETYPE(OMX_VIDEO_PARAM_BITRATETYPE &format, v8::Local<v8::Object> param) {
  format.eControlRate = (OMX_VIDEO_CONTROLRATETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eControlRate").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTargetBitrate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTargetBitrate").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_MOTIONVECTORTYPE(OMX_VIDEO_PARAM_MOTIONVECTORTYPE &format, v8::Local<v8::Object> param) {
  format.eAccuracy = (OMX_VIDEO_MOTIONVECTORTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eAccuracy").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bUnrestrictedMVs = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bUnrestrictedMVs").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bFourMV = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bFourMV").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.sXSearchRange = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("sXSearchRange").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.sYSearchRange = (OMX_S32) Nan::To<int>(Nan::Get(param, Nan::New("sYSearchRange").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_INTRAREFRESHTYPE(OMX_VIDEO_PARAM_INTRAREFRESHTYPE &format, v8::Local<v8::Object> param) {
  format.eRefreshMode = (OMX_VIDEO_INTRAREFRESHTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eRefreshMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nAirMBs = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAirMBs").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nAirRef = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAirRef").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nCirMBs = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCirMBs").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPirMBs = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPirMBs").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_ERRORCORRECTIONTYPE(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE &format, v8::Local<v8::Object> param) {
  format.bEnableHEC = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableHEC").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableResync = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableResync").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nResynchMarkerSpacing = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nResynchMarkerSpacing").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableDataPartitioning = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableDataPartitioning").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableRVLC = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableRVLC").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_VBSMCTYPE(OMX_VIDEO_PARAM_VBSMCTYPE &format, v8::Local<v8::Object> param) {
  format.b16x16 = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("b16x16").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.b16x8 = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("b16x8").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.b8x16 = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("b8x16").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.b8x8 = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("b8x8").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.b8x4 = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("b8x4").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.b4x8 = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("b4x8").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.b4x4 = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("b4x4").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_H263TYPE(OMX_VIDEO_PARAM_H263TYPE &format, v8::Local<v8::Object> param) {
  format.nPFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eProfile = (OMX_VIDEO_H263PROFILETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eProfile").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eLevel = (OMX_VIDEO_H263LEVELTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eLevel").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bPLUSPTYPEAllowed = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bPLUSPTYPEAllowed").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nAllowedPictureTypes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAllowedPictureTypes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bForceRoundingTypeToZero = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bForceRoundingTypeToZero").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPictureHeaderRepetition = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPictureHeaderRepetition").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nGOBHeaderInterval = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nGOBHeaderInterval").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_MPEG2TYPE(OMX_VIDEO_PARAM_MPEG2TYPE &format, v8::Local<v8::Object> param) {
  format.nPFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eProfile = (OMX_VIDEO_MPEG2PROFILETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eProfile").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eLevel = (OMX_VIDEO_MPEG2LEVELTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eLevel").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_MPEG4TYPE(OMX_VIDEO_PARAM_MPEG4TYPE &format, v8::Local<v8::Object> param) {
  format.nSliceHeaderSpacing = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSliceHeaderSpacing").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bSVH = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bSVH").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bGov = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bGov").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nIDCVLCThreshold = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIDCVLCThreshold").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bACPred = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bACPred").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMaxPacketSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxPacketSize").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nTimeIncRes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nTimeIncRes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eProfile = (OMX_VIDEO_MPEG4PROFILETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eProfile").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eLevel = (OMX_VIDEO_MPEG4LEVELTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eLevel").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nAllowedPictureTypes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAllowedPictureTypes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nHeaderExtension = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nHeaderExtension").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bReversibleVLC = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bReversibleVLC").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_WMVTYPE(OMX_VIDEO_PARAM_WMVTYPE &format, v8::Local<v8::Object> param) {
  format.eFormat = (OMX_VIDEO_WMVFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_RVTYPE(OMX_VIDEO_PARAM_RVTYPE &format, v8::Local<v8::Object> param) {
  format.eFormat = (OMX_VIDEO_RVFORMATTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eFormat").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBitsPerPixel = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nBitsPerPixel").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPaddedWidth = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nPaddedWidth").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPaddedHeight = (OMX_U16) Nan::To<int>(Nan::Get(param, Nan::New("nPaddedHeight").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nFrameRate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nFrameRate").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBitstreamFlags = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitstreamFlags").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBitstreamVersion = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBitstreamVersion").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nMaxEncodeFrameSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMaxEncodeFrameSize").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnablePostFilter = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnablePostFilter").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableTemporalInterpolation = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableTemporalInterpolation").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableLatencyMode = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableLatencyMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_AVCTYPE(OMX_VIDEO_PARAM_AVCTYPE &format, v8::Local<v8::Object> param) {
  format.nSliceHeaderSpacing = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nSliceHeaderSpacing").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nBFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nBFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bUseHadamard = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bUseHadamard").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nRefFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nRefFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nRefIdx10ActiveMinus1 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nRefIdx10ActiveMinus1").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nRefIdx11ActiveMinus1 = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nRefIdx11ActiveMinus1").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableUEP = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableUEP").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableFMO = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableFMO").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableASO = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableASO").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEnableRS = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnableRS").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eProfile = (OMX_VIDEO_AVCPROFILETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eProfile").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eLevel = (OMX_VIDEO_AVCLEVELTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eLevel").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nAllowedPictureTypes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nAllowedPictureTypes").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bFrameMBsOnly = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bFrameMBsOnly").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bMBAFF = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bMBAFF").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bEntropyCodingCABAC = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEntropyCodingCABAC").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bWeightedPPrediction = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bWeightedPPrediction").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nWeightedBipredicitonMode = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nWeightedBipredicitonMode").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bconstIpred = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bconstIpred").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bDirect8x8Inference = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDirect8x8Inference").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.bDirectSpatialTemporal = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bDirectSpatialTemporal").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nCabacInitIdc = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nCabacInitIdc").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eLoopFilterMode = (OMX_VIDEO_AVCLOOPFILTERTYPE) Nan::To<int>(Nan::Get(param, Nan::New("eLoopFilterMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_PROFILELEVELTYPE(OMX_VIDEO_PARAM_PROFILELEVELTYPE &format, v8::Local<v8::Object> param) {
  format.eProfile = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("eProfile").ToLocalChecked()).ToLocalChecked()).FromJust(); // type is OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE, or OMX_VIDEO_MPEG4PROFILETYPE depending on context
  format.eLevel = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("eLevel").ToLocalChecked()).ToLocalChecked()).FromJust(); // type is OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE, or OMX_VIDEO_MPEG4PROFILETYPE depending on context
  format.nProfileIndex = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nProfileIndex").ToLocalChecked()).ToLocalChecked()).FromJust(); // Used to query for individual profile support information, This parameter is valid only for OMX_IndexParamVideoProfileLevelQuerySupported index, For all other indices this parameter is to be ignored.
}

void SET_VIDEO_CONFIG_BITRATETYPE(OMX_VIDEO_CONFIG_BITRATETYPE &format, v8::Local<v8::Object> param) {
  format.nEncodeBitrate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nEncodeBitrate").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_FRAMERATETYPE(OMX_CONFIG_FRAMERATETYPE &format, v8::Local<v8::Object> param) {
  format.xEncodeFramerate = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("xEncodeFramerate").ToLocalChecked()).ToLocalChecked()).FromJust(); // Q16 format
}

void SET_CONFIG_INTRAREFRESHVOPTYPE(OMX_CONFIG_INTRAREFRESHVOPTYPE &format, v8::Local<v8::Object> param) {
  format.IntraRefreshVOP = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("IntraRefreshVOP").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_CONFIG_MACROBLOCKERRORMAPTYPE(OMX_CONFIG_MACROBLOCKERRORMAPTYPE &format, v8::Local<v8::Object> param) {
  format.nErrMapSize = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nErrMapSize").ToLocalChecked()).ToLocalChecked()).FromJust(); // Size of the Error Map in bytes
}

void SET_CONFIG_MBERRORREPORTINGTYPE(OMX_CONFIG_MBERRORREPORTINGTYPE &format, v8::Local<v8::Object> param) {
  format.bEnabled = (OMX_BOOL) Nan::To<int>(Nan::Get(param, Nan::New("bEnabled").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_PARAM_MACROBLOCKSTYPE(OMX_PARAM_MACROBLOCKSTYPE &format, v8::Local<v8::Object> param) {
  format.nMacroblocks = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nMacroblocks").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_PARAM_AVCSLICEFMO(OMX_VIDEO_PARAM_AVCSLICEFMO &format, v8::Local<v8::Object> param) {
  format.nNumSliceGroups = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nNumSliceGroups").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nSliceGroupMapType = (OMX_U8) Nan::To<int>(Nan::Get(param, Nan::New("nSliceGroupMapType").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.eSliceMode = (OMX_VIDEO_AVCSLICEMODETYPE) Nan::To<int>(Nan::Get(param, Nan::New("eSliceMode").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_CONFIG_AVCINTRAPERIOD(OMX_VIDEO_CONFIG_AVCINTRAPERIOD &format, v8::Local<v8::Object> param) {
  format.nIDRPeriod = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nIDRPeriod").ToLocalChecked()).ToLocalChecked()).FromJust();
  format.nPFrames = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nPFrames").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void SET_VIDEO_CONFIG_NALSIZE(OMX_VIDEO_CONFIG_NALSIZE &format, v8::Local<v8::Object> param) {
  format.nNaluBytes = (OMX_U32) Nan::To<int>(Nan::Get(param, Nan::New("nNaluBytes").ToLocalChecked()).ToLocalChecked()).FromJust();
}

void Parameters::SetParameter(OMX_HANDLETYPE *handle, int port, OMX_INDEXTYPE nParamIndex, v8::Local<v8::Object> param) {
  switch (nParamIndex) {
    case OMX_IndexParamPriorityMgmt:
    {
      OMX_PRIORITYMGMTTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PRIORITYMGMTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioInit:
    {
      OMX_PORT_PARAM_TYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PORT_PARAM_TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamImageInit:
    {
      OMX_PORT_PARAM_TYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PORT_PARAM_TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoInit:
    {
      OMX_PORT_PARAM_TYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PORT_PARAM_TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamOtherInit:
    {
      OMX_PORT_PARAM_TYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PORT_PARAM_TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamNumAvailableStreams:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamActiveStream:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamSuspensionPolicy:
    {
      OMX_PARAM_SUSPENSIONPOLICYTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_SUSPENSIONPOLICYTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamComponentSuspended:
    {
      OMX_PARAM_SUSPENSIONTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_SUSPENSIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCapturing:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCaptureMode:
    {
      OMX_CONFIG_CAPTUREMODETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_CAPTUREMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexAutoPauseAfterCapture:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamContentURI:
    {
      OMX_PARAM_CONTENTURITYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CONTENTURITYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCustomContentPipe:
    {
      OMX_PARAM_CONTENTPIPETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CONTENTPIPETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamDisableResourceConcealment:
    {
      OMX_RESOURCECONCEALMENTTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_RESOURCECONCEALMENTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigMetadataItemCount:
    {
      OMX_CONFIG_METADATAITEMCOUNTTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_METADATAITEMCOUNTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigContainerNodeCount:
    {
      OMX_CONFIG_CONTAINERNODECOUNTTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_CONTAINERNODECOUNTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigMetadataItem:
    {
      OMX_CONFIG_METADATAITEMTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_METADATAITEMTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCounterNodeID:
    {
      OMX_CONFIG_CONTAINERNODEIDTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_CONTAINERNODEIDTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamMetadataFilterType:
    {
      OMX_PARAM_METADATAFILTERTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_METADATAFILTERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamMetadataKeyFilter:
    {
      OMX_PARAM_METADATAFILTERTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_METADATAFILTERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigPriorityMgmt:
    {
      OMX_PRIORITYMGMTTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PRIORITYMGMTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamStandardComponentRole:
    {
      OMX_PARAM_COMPONENTROLETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_COMPONENTROLETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamPortDefinition:
    {
      OMX_PARAM_PORTDEFINITIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_PORTDEFINITIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCompBufferSupplier:
    {
      OMX_PARAM_BUFFERSUPPLIERTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BUFFERSUPPLIERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioPortFormat:
    {
      OMX_AUDIO_PARAM_PORTFORMATTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_PORTFORMATTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioPcm:
    {
      OMX_AUDIO_PARAM_PCMMODETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_PCMMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioAac:
    {
      OMX_AUDIO_PARAM_AACPROFILETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_AACPROFILETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioRa:
    {
      OMX_AUDIO_PARAM_RATYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_RATYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioMp3:
    {
      OMX_AUDIO_PARAM_MP3TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_MP3TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioAdpcm:
    {
      OMX_AUDIO_PARAM_ADPCMTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_ADPCMTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioG723:
    {
      OMX_AUDIO_PARAM_G723TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_G723TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioG729:
    {
      OMX_AUDIO_PARAM_G729TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_G729TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioAmr:
    {
      OMX_AUDIO_PARAM_AMRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_AMRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioWma:
    {
      OMX_AUDIO_PARAM_WMATYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_WMATYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioSbc:
    {
      OMX_AUDIO_PARAM_SBCTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_SBCTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioMidi:
    {
      OMX_AUDIO_PARAM_MIDITYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_MIDITYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioGsm_FR:
    {
      OMX_AUDIO_PARAM_GSMFRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_GSMFRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioMidiLoadUserSound:
    {
      OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioG726:
    {
      OMX_AUDIO_PARAM_G726TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_G726TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioGsm_EFR:
    {
      OMX_AUDIO_PARAM_GSMEFRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_GSMEFRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioGsm_HR:
    {
      OMX_AUDIO_PARAM_GSMHRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_GSMHRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioPdc_FR:
    {
      OMX_AUDIO_PARAM_PDCFRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_PDCFRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioPdc_EFR:
    {
      OMX_AUDIO_PARAM_PDCEFRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_PDCEFRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioPdc_HR:
    {
      OMX_AUDIO_PARAM_PDCHRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_PDCHRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioTdma_FR:
    {
      OMX_AUDIO_PARAM_TDMAFRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_TDMAFRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioTdma_EFR:
    {
      OMX_AUDIO_PARAM_TDMAEFRTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_TDMAEFRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioQcelp8:
    {
      OMX_AUDIO_PARAM_QCELP8TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_QCELP8TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioQcelp13:
    {
      OMX_AUDIO_PARAM_QCELP13TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_QCELP13TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioEvrc:
    {
      OMX_AUDIO_PARAM_EVRCTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_EVRCTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioSmv:
    {
      OMX_AUDIO_PARAM_SMVTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_SMVTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioVorbis:
    {
      OMX_AUDIO_PARAM_VORBISTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_VORBISTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioMidiImmediateEvent:
    {
      OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioMidiControl:
    {
      OMX_AUDIO_CONFIG_MIDICONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_MIDICONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioMidiSoundBankProgram:
    {
      OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioMidiStatus:
    {
      OMX_AUDIO_CONFIG_MIDISTATUSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_MIDISTATUSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioMidiMetaEvent:
    {
      OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_MIDIMETAEVENTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioMidiMetaEventData:
    {
      OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioVolume:
    {
      OMX_AUDIO_CONFIG_VOLUMETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_VOLUMETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioBalance:
    {
      OMX_AUDIO_CONFIG_BALANCETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_BALANCETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioChannelMute:
    {
      OMX_AUDIO_CONFIG_CHANNELMUTETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_CHANNELMUTETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioMute:
    {
      OMX_AUDIO_CONFIG_MUTETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_MUTETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioLoudness:
    {
      OMX_AUDIO_CONFIG_LOUDNESSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_LOUDNESSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioEchoCancelation:
    {
      OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_ECHOCANCELATIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioNoiseReduction:
    {
      OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_NOISEREDUCTIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioBass:
    {
      OMX_AUDIO_CONFIG_BASSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_BASSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioTreble:
    {
      OMX_AUDIO_CONFIG_TREBLETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_TREBLETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioStereoWidening:
    {
      OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_STEREOWIDENINGTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioChorus:
    {
      OMX_AUDIO_CONFIG_CHORUSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_CHORUSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioEqualizer:
    {
      OMX_AUDIO_CONFIG_EQUALIZERTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_EQUALIZERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioReverberation:
    {
      OMX_AUDIO_CONFIG_REVERBERATIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_REVERBERATIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioChannelVolume:
    {
      OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_CONFIG_CHANNELVOLUMETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamImagePortFormat:
    {
      OMX_IMAGE_PARAM_PORTFORMATTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_IMAGE_PARAM_PORTFORMATTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamFlashControl:
    {
      OMX_IMAGE_PARAM_FLASHCONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_IMAGE_PARAM_FLASHCONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigFocusControl:
    {
      OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_IMAGE_CONFIG_FOCUSCONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamQFactor:
    {
      OMX_IMAGE_PARAM_QFACTORTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_IMAGE_PARAM_QFACTORTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamQuantizationTable:
    {
      OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_IMAGE_PARAM_QUANTIZATIONTABLETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamHuffmanTable:
    {
      OMX_IMAGE_PARAM_HUFFMANTTABLETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_IMAGE_PARAM_HUFFMANTTABLETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigFlashControl:
    {
      OMX_IMAGE_PARAM_FLASHCONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_IMAGE_PARAM_FLASHCONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoPortFormat:
    {
      OMX_VIDEO_PARAM_PORTFORMATTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_PORTFORMATTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoQuantization:
    {
      OMX_VIDEO_PARAM_QUANTIZATIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_QUANTIZATIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoFastUpdate:
    {
      OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_VIDEOFASTUPDATETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoBitrate:
    {
      OMX_VIDEO_PARAM_BITRATETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_BITRATETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoMotionVector:
    {
      OMX_VIDEO_PARAM_MOTIONVECTORTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_MOTIONVECTORTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoIntraRefresh:
    {
      OMX_VIDEO_PARAM_INTRAREFRESHTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_INTRAREFRESHTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoErrorCorrection:
    {
      OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_ERRORCORRECTIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoVBSMC:
    {
      OMX_VIDEO_PARAM_VBSMCTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_VBSMCTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoMpeg2:
    {
      OMX_VIDEO_PARAM_MPEG2TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_MPEG2TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoMpeg4:
    {
      OMX_VIDEO_PARAM_MPEG4TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_MPEG4TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoWmv:
    {
      OMX_VIDEO_PARAM_WMVTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_WMVTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoRv:
    {
      OMX_VIDEO_PARAM_RVTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_RVTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoAvc:
    {
      OMX_VIDEO_PARAM_AVCTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_AVCTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoH263:
    {
      OMX_VIDEO_PARAM_H263TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_H263TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoProfileLevelQuerySupported:
    {
      OMX_VIDEO_PARAM_PROFILELEVELTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_PROFILELEVELTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoProfileLevelCurrent:
    {
      OMX_VIDEO_PARAM_PROFILELEVELTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_PROFILELEVELTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoBitrate:
    {
      OMX_VIDEO_CONFIG_BITRATETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_CONFIG_BITRATETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoFramerate:
    {
      OMX_CONFIG_FRAMERATETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_FRAMERATETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoIntraVOPRefresh:
    {
      OMX_CONFIG_INTRAREFRESHVOPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_INTRAREFRESHVOPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoIntraMBRefresh:
    {
      OMX_CONFIG_MACROBLOCKERRORMAPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_MACROBLOCKERRORMAPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoMBErrorReporting:
    {
      OMX_CONFIG_MBERRORREPORTINGTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_MBERRORREPORTINGTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoMacroblocksPerFrame:
    {
      OMX_PARAM_MACROBLOCKSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_MACROBLOCKSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoMacroBlockErrorMap:
    {
      OMX_CONFIG_MACROBLOCKERRORMAPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_MACROBLOCKERRORMAPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamVideoSliceFMO:
    {
      OMX_VIDEO_PARAM_AVCSLICEFMO format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_AVCSLICEFMO(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoAVCIntraPeriod:
    {
      OMX_VIDEO_CONFIG_AVCINTRAPERIOD format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_CONFIG_AVCINTRAPERIOD(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoNalSize:
    {
      OMX_VIDEO_CONFIG_NALSIZE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_CONFIG_NALSIZE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCommonDeblocking:
    {
      OMX_PARAM_DEBLOCKINGTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_DEBLOCKINGTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCommonSensorMode:
    {
      OMX_PARAM_SENSORMODETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_SENSORMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCommonInterleave:
    {
      OMX_PARAM_INTERLEAVETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_INTERLEAVETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonColorFormatConversion:
    {
      OMX_CONFIG_COLORCONVERSIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_COLORCONVERSIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonScale:
    {
      OMX_CONFIG_SCALEFACTORTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_SCALEFACTORTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonImageFilter:
    {
      OMX_CONFIG_IMAGEFILTERTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_IMAGEFILTERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonColorEnhancement:
    {
      OMX_CONFIG_COLORENHANCEMENTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_COLORENHANCEMENTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonColorKey:
    {
      OMX_CONFIG_COLORKEYTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_COLORKEYTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonColorBlend:
    {
      OMX_CONFIG_COLORBLENDTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_COLORBLENDTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonFrameStabilisation:
    {
      OMX_CONFIG_FRAMESTABTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_FRAMESTABTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonRotate:
    {
      OMX_CONFIG_ROTATIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_ROTATIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonMirror:
    {
      OMX_CONFIG_MIRRORTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_MIRRORTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonOutputPosition:
    {
      OMX_CONFIG_POINTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_POINTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonInputCrop:
    {
      OMX_CONFIG_RECTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_RECTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonOutputCrop:
    {
      OMX_CONFIG_RECTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_RECTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonDigitalZoom:
    {
      OMX_CONFIG_SCALEFACTORTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_SCALEFACTORTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonOpticalZoom:
    {
      OMX_CONFIG_SCALEFACTORTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_SCALEFACTORTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonWhiteBalance:
    {
      OMX_CONFIG_WHITEBALCONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_WHITEBALCONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonExposure:
    {
      OMX_CONFIG_EXPOSURECONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_EXPOSURECONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonContrast:
    {
      OMX_CONFIG_CONTRASTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_CONTRASTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonBrightness:
    {
      OMX_CONFIG_BRIGHTNESSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRIGHTNESSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonBacklight:
    {
      OMX_CONFIG_BACKLIGHTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BACKLIGHTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonGamma:
    {
      OMX_CONFIG_GAMMATYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_GAMMATYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonSaturation:
    {
      OMX_CONFIG_SATURATIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_SATURATIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonLightness:
    {
      OMX_CONFIG_LIGHTNESSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_LIGHTNESSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonExclusionRect:
    {
      OMX_CONFIG_RECTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_RECTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonDithering:
    {
      OMX_CONFIG_DITHERTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_DITHERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonPlaneBlend:
    {
      OMX_CONFIG_PLANEBLENDTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PLANEBLENDTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonExposureValue:
    {
      OMX_CONFIG_EXPOSUREVALUETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_EXPOSUREVALUETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonOutputSize:
    {
      OMX_FRAMESIZETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_FRAMESIZETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCommonExtraQuantData:
    {
      OMX_OTHER_EXTRADATATYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_OTHER_EXTRADATATYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonFocusRegion:
    {
      OMX_CONFIG_FOCUSREGIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_FOCUSREGIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonFocusStatus:
    {
      OMX_PARAM_FOCUSSTATUSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_FOCUSSTATUSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonTransitionEffect:
    {
      OMX_CONFIG_TRANSITIONEFFECTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_TRANSITIONEFFECTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamOtherPortFormat:
    {
      OMX_OTHER_PARAM_PORTFORMATTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_OTHER_PARAM_PORTFORMATTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigOtherPower:
    {
      OMX_OTHER_CONFIG_POWERTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_OTHER_CONFIG_POWERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigOtherStats:
    {
      OMX_OTHER_CONFIG_STATSTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_OTHER_CONFIG_STATSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeScale:
    {
      OMX_TIME_CONFIG_SCALETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_TIME_CONFIG_SCALETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeClockState:
    {
      OMX_TIME_CONFIG_CLOCKSTATETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_TIME_CONFIG_CLOCKSTATETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeActiveRefClock:
    {
      OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_TIME_CONFIG_ACTIVEREFCLOCKTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeCurrentMediaTime:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeCurrentWallTime:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeCurrentAudioReference:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeCurrentVideoReference:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeMediaTimeRequest:
    {
      OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_MEDIATIMEREQUESTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeClientStartTime:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimePosition:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeSeekMode:
    {
      OMX_TIME_CONFIG_SEEKMODETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_TIME_CONFIG_SEEKMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamMarkComparison:
    {
      OMX_PARAM_MARKCOMPARISONTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_MARKCOMPARISONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamPortSummary:
    {
      OMX_PARAM_PORTSUMMARYTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_PORTSUMMARYTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamTunnelStatus:
    {
      OMX_PARAM_TUNNELSTATUSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_TUNNELSTATUSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBufferAddress:
    {
      OMX_PARAM_BUFFERADDRESSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BUFFERADDRESSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamTunnelSetup:
    {
      OMX_PARAM_TUNNELSETUPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_TUNNELSETUPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmPortEGL:
    {
      OMX_PARAM_BRCMPORTEGLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMPORTEGLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamIdleResourceCount:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmDataUnit:
    {
      OMX_PARAM_DATAUNITTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_DATAUNITTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCodecConfig:
    {
      OMX_PARAM_CODECCONFIGTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_CODECCONFIGTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamTestInterface:
    {
      OMX_PARAM_TESTINTERFACETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_TESTINTERFACETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigDisplayRegion:
    {
      OMX_CONFIG_DISPLAYREGIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_DISPLAYREGIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamSource:
    {
      OMX_PARAM_SOURCETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_SOURCETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamResize:
    {
      OMX_PARAM_RESIZETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_RESIZETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVisualisation:
    {
      OMX_CONFIG_VISUALISATIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_VISUALISATIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigSingleStep:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigPlayMode:
    {
      OMX_CONFIG_PLAYMODETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_PLAYMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraCamplusId:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonImageFilterParameters:
    {
      OMX_CONFIG_IMAGEFILTERPARAMSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_IMAGEFILTERPARAMSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTransitionControl:
    {
      OMX_CONFIG_TRANSITIONCONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_TRANSITIONCONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigPresentationOffset:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamSourceFunctions:
    {
      OMX_PARAM_STILLSFUNCTIONTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_STILLSFUNCTIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioMonoTrackControl:
    {
      OMX_CONFIG_AUDIOMONOTRACKCONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_AUDIOMONOTRACKCONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraImagePool:
    {
      OMX_PARAM_CAMERAIMAGEPOOLTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CAMERAIMAGEPOOLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraISPOutputPoolHeight:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamImagePoolSize:
    {
      OMX_PARAM_IMAGEPOOLSIZETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_IMAGEPOOLSIZETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamImagePoolExternal:
    {
      OMX_PARAM_IMAGEPOOLEXTERNALTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_IMAGEPOOLEXTERNALTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamRUTILFifoInfo:
    {
      OMX_PARAM_RUTILFIFOINFOTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_RUTILFIFOINFOTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamILFifoConfig:
    {
      OMX_PARAM_ILFIFOCONFIG format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_ILFIFOCONFIG(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraSensorModes:
    {
      OMX_CONFIG_CAMERASENSORMODETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_CAMERASENSORMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmPortStats:
    {
      OMX_CONFIG_BRCMPORTSTATSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMPORTSTATSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmPortBufferStats:
    {
      OMX_CONFIG_BRCMPORTBUFFERSTATSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMPORTBUFFERSTATSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmCameraStats:
    {
      OMX_CONFIG_BRCMCAMERASTATSTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BRCMCAMERASTATSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmIOPerfStats:
    {
      OMX_CONFIG_BRCMIOPERFSTATSTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BRCMIOPERFSTATSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonSharpness:
    {
      OMX_CONFIG_SHARPNESSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_SHARPNESSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonFlickerCancellation:
    {
      OMX_CONFIG_FLICKERCANCELTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_FLICKERCANCELTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraSwapImagePools:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraSingleBufferCaptureInput:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonRedEyeRemoval:
    {
      OMX_CONFIG_REDEYEREMOVALTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_REDEYEREMOVALTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonFaceDetectionControl:
    {
      OMX_CONFIG_FACEDETECTIONCONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_FACEDETECTIONCONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonFaceDetectionRegion:
    {
      OMX_CONFIG_FACEDETECTIONREGIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_FACEDETECTIONREGIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonInterlace:
    {
      OMX_CONFIG_INTERLACETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_INTERLACETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamISPTunerName:
    {
      OMX_PARAM_CAMERAISPTUNERTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CAMERAISPTUNERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraDeviceNumber:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraDevicesPresent:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraInputFrame:
    {
      OMX_CONFIG_IMAGEPTRTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_IMAGEPTRTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigStillColourDenoiseEnable:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigVideoColourDenoiseEnable:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAFAssistLight:
    {
      OMX_CONFIG_AFASSISTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_AFASSISTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigSmartShakeReductionEnable:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigInputCropPercentages:
    {
      OMX_CONFIG_INPUTCROPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_INPUTCROPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigStillsAntiShakeEnable:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigWaitForFocusBeforeCapture:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAudioRenderingLatency:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigDrawBoxAroundFaces:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCodecRequirements:
    {
      OMX_PARAM_CODECREQUIREMENTSTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CODECREQUIREMENTSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmEGLImageMemHandle:
    {
      OMX_CONFIG_BRCMEGLIMAGEMEMHANDLETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMEGLIMAGEMEMHANDLETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigPrivacyIndicator:
    {
      OMX_CONFIG_PRIVACYINDICATORTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_PRIVACYINDICATORTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraFlashType:
    {
      OMX_PARAM_CAMERAFLASHTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_CAMERAFLASHTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraEnableStatsPass:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraFlashConfig:
    {
      OMX_CONFIG_CAMERAFLASHCONFIGTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_CAMERAFLASHCONFIGTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCaptureRawImageURI:
    {
      OMX_PARAM_CONTENTURITYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CONTENTURITYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraStripeFuncMinLines:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraAlgorithmVersionDeprecated:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraIsoReferenceValue:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraCaptureAbortsAutoFocus:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmClockMissCount:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigFlashChargeLevel:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoEncodedSliceSize:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioTrackGaplessPlayback:
    {
      OMX_CONFIG_BRCMAUDIOTRACKGAPLESSPLAYBACKTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMAUDIOTRACKGAPLESSPLAYBACKTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioTrackChangeControl:
    {
      OMX_CONFIG_BRCMAUDIOTRACKCHANGECONTROLTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BRCMAUDIOTRACKCHANGECONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmPixelAspectRatio:
    {
      OMX_CONFIG_POINTTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_POINTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmPixelValueRange:
    {
      OMX_PARAM_BRCMPIXELVALUERANGETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMPIXELVALUERANGETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraDisableAlgorithm:
    {
      OMX_PARAM_CAMERADISABLEALGORITHMTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CAMERADISABLEALGORITHMTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoIntraPeriodTime:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoIntraPeriod:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioEffectControl:
    {
      OMX_CONFIG_BRCMAUDIOEFFECTCONTROLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMAUDIOEFFECTCONTROLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmMinimumProcessingLatency:
    {
      OMX_CONFIG_BRCMMINIMUMPROCESSINGLATENCY format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BRCMMINIMUMPROCESSINGLATENCY(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoAVCSEIEnable:
    {
      OMX_PARAM_BRCMVIDEOAVCSEIENABLETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMVIDEOAVCSEIENABLETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmAllowMemChange:
    {
      OMX_PARAM_BRCMALLOWMEMCHANGETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMALLOWMEMCHANGETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoEncoderMBRowsPerSlice:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraAFAssistDeviceNumber_Deprecated:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraPrivacyIndicatorDeviceNumber_Deprecated:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraUseCase:
    {
      OMX_CONFIG_CAMERAUSECASETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_CAMERAUSECASETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmDisableProprietaryTunnels:
    {
      OMX_PARAM_BRCMDISABLEPROPRIETARYTUNNELSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMDISABLEPROPRIETARYTUNNELSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmOutputBufferSize:
    {
      OMX_PARAM_BRCMOUTPUTBUFFERSIZETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMOUTPUTBUFFERSIZETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmRetainMemory:
    {
      OMX_PARAM_BRCMRETAINMEMORYTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMRETAINMEMORYTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCanFocus_Deprecated:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmImmutableInput:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamDynamicParameterFile:
    {
      OMX_PARAM_CONTENTURITYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CONTENTURITYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamUseDynamicParameterFile:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraInfo:
    {
      OMX_CONFIG_CAMERAINFOTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_CAMERAINFOTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraFeatures:
    {
      OMX_CONFIG_CAMERAFEATURESTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_CAMERAFEATURESTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigRequestCallback:
    {
      OMX_CONFIG_REQUESTCALLBACKTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_REQUESTCALLBACKTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmOutputBufferFullCount:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonFocusRegionXY:
    {
      OMX_CONFIG_FOCUSREGIONXYTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_FOCUSREGIONXYTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmDisableEXIF:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigUserSettingsId:
    {
      OMX_CONFIG_U8TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_U8TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraSettings:
    {
      OMX_CONFIG_CAMERASETTINGSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_CAMERASETTINGSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigDrawBoxLineParams:
    {
      OMX_CONFIG_DRAWBOXLINEPARAMS format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_DRAWBOXLINEPARAMS(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraRmiControl_Deprecated:
    {
      OMX_PARAM_CAMERARMITYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CAMERARMITYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBurstCapture:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmEnableIJGTableScaling:
    {
      OMX_PARAM_IJGSCALINGTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_IJGSCALINGTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigPowerDown:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmSyncOutput:
    {
      OMX_CONFIG_BRCMSYNCOUTPUTTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BRCMSYNCOUTPUTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoRequestIFrame:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmNALSSeparate:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigConfirmView:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigDrmView:
    {
      OMX_CONFIG_DRMVIEWTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_DRMVIEWTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoIntraRefresh:
    {
      OMX_VIDEO_PARAM_INTRAREFRESHTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_PARAM_INTRAREFRESHTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmMaxFileSize:
    {
      OMX_PARAM_BRCMU64TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMU64TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmCRCEnable:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmCRC:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCameraRmiInUse_Deprecated:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioSource:
    {
      OMX_CONFIG_BRCMAUDIOSOURCETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BRCMAUDIOSOURCETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioDestination:
    {
      OMX_CONFIG_BRCMAUDIODESTINATIONTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BRCMAUDIODESTINATIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioDdp:
    {
      OMX_AUDIO_PARAM_DDPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_DDPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmThumbnail:
    {
      OMX_PARAM_BRCMTHUMBNAILTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMTHUMBNAILTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmDisableLegacyBlocks_Deprecated:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmCameraInputAspectRatio:
    {
      OMX_PARAM_BRCMASPECTRATIOTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMASPECTRATIOTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamDynamicParameterFileFailFatal:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoDecodeErrorConcealment:
    {
      OMX_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMVIDEODECODEERRORCONCEALMENTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmInterpolateMissingTimestamps:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmSetCodecPerformanceMonitoring:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigFlashInfo:
    {
      OMX_CONFIG_FLASHINFOTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_FLASHINFOTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmMaxFrameSkips:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigDynamicRangeExpansion:
    {
      OMX_CONFIG_DYNAMICRANGEEXPANSIONTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_DYNAMICRANGEEXPANSIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmFlushCallbackId:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmTransposeBufferCount:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigFaceRecognitionControl:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigFaceRecognitionSaveFace:
    {
      OMX_PARAM_BRCMU64TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMU64TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigFaceRecognitionDatabaseUri:
    {
      OMX_PARAM_CONTENTURITYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CONTENTURITYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigClockAdjustment:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmThreadAffinity:
    {
      OMX_PARAM_BRCMTHREADAFFINITYTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMTHREADAFFINITYTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAsynchronousOutput:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigAsynchronousFailureURI:
    {
      OMX_PARAM_CONTENTURITYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_CONTENTURITYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonFaceBeautification:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonSceneDetectionControl:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCommonSceneDetected:
    {
      OMX_CONFIG_SCENEDETECTTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_SCENEDETECTTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamDisableVllPool:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmDrawStaticBox:
    {
      OMX_CONFIG_STATICBOXTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_STATICBOXTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmClockReferenceSource:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamPassBufferMarks:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigPortCapturing:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmDecoderPassThrough:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmMaxCorruptMBs:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmGlobalAudioMute:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraCaptureMode:
    {
      OMX_PARAM_CAMERACAPTUREMODETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_CAMERACAPTUREMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmDrmEncryption:
    {
      OMX_PARAM_BRCMDRMENCRYPTIONTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMDRMENCRYPTIONTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmCameraRnDPreprocess:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmCameraRnDPostprocess:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioTrackChangeCount:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCommonUseStcTimestamps:
    {
      OMX_PARAM_TIMESTAMPMODETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_TIMESTAMPMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBufferStall:
    {
      OMX_CONFIG_BUFFERSTALLTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BUFFERSTALLTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigRefreshCodec:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCaptureStatus:
    {
      OMX_PARAM_CAPTURESTATETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_CAPTURESTATETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTimeInvalidStartTime:
    {
      OMX_TIME_CONFIG_TIMESTAMPTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_TIME_CONFIG_TIMESTAMPTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigLatencyTarget:
    {
      OMX_CONFIG_LATENCYTARGETTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_LATENCYTARGETTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigMinimiseFragmentation:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamPortMaxFrameSize:
    {
      OMX_FRAMESIZETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_FRAMESIZETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamComponentName:
    {
      OMX_PARAM_COMPONENTROLETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_COMPONENTROLETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigEncLevelExtension:
    {
      OMX_VIDEO_CONFIG_LEVEL_EXTEND format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_CONFIG_LEVEL_EXTEND(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigTemporalDenoiseEnable:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmLazyImagePoolDestroy:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmEEDEEnable:
    {
      OMX_VIDEO_EEDE_ENABLE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_EEDE_ENABLE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmEEDELossRate:
    {
      OMX_VIDEO_EEDE_LOSSRATE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_VIDEO_EEDE_LOSSRATE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamAudioDts:
    {
      OMX_AUDIO_PARAM_DTSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_AUDIO_PARAM_DTSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamNumOutputChannels:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmHighDynamicRange:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmPoolMemAllocSize:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmBufferFlagFilter:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoEncodeMinQuant:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoEncodeMaxQuant:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamRateControlModel:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmExtraBuffers:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigFieldOfView:
    {
      OMX_CONFIG_BRCMFOVTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMFOVTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmAlignHoriz:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmAlignVert:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamColorSpace:
    {
      OMX_PARAM_COLORSPACETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_COLORSPACETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmDroppablePFrames:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoInitialQuant:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoEncodeQpP:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoRCSliceDQuant:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoFrameLimitBits:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoPeakRate:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoH264DisableCABAC:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoH264LowLatency:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoH264AUDelimiters:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoH264DeblockIDC:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmVideoH264IntraMBMode:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigContrastEnhance:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraCustomSensorConfig:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmHeaderOnOpen:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmUseRegisterFile:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmRegisterFileFailFatal:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmConfigFileRegisters:
    {
      OMX_PARAM_BRCMCONFIGFILETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMCONFIGFILETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmConfigFileChunkRegisters:
    {
      OMX_PARAM_BRCMCONFIGFILECHUNKTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMCONFIGFILECHUNKTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmAttachLog:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraZeroShutterLag:
    {
      OMX_CONFIG_ZEROSHUTTERLAGTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_ZEROSHUTTERLAGTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmFpsRange:
    {
      OMX_PARAM_BRCMFRAMERATERANGETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BRCMFRAMERATERANGETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCaptureExposureCompensation:
    {
      OMX_PARAM_S32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_S32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoPrecodeForQP:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoTimestampFifo:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamSWSharpenDisable:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmFlashRequired:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoDrmProtectBuffer:
    {
      OMX_PARAM_BRCMVIDEODRMPROTECTBUFFERTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMVIDEODRMPROTECTBUFFERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamSWSaturationDisable:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoDecodeConfigVD3:
    {
      OMX_PARAM_BRCMVIDEODECODECONFIGVD3TYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_PARAM_BRCMVIDEODECODECONFIGVD3TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmPowerMonitor:
    {
      OMX_CONFIG_BOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmZeroCopy:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoEGLRenderDiscardMode:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoAVC_VCLHRDEnable:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoAVC_LowDelayHRDEnable:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoCroppingDisable:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoAVCInlineHeaderEnable:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioDownmixCoefficients:
    {
      OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioDownmixCoefficients8x8:
    {
      OMX_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8 format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMAUDIODOWNMIXCOEFFICIENTS8x8(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmAudioMaxSample:
    {
      OMX_CONFIG_BRCMAUDIOMAXSAMPLE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMAUDIOMAXSAMPLE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigCustomAwbGains:
    {
      OMX_CONFIG_CUSTOMAWBGAINSTYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_CUSTOMAWBGAINSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamRemoveImagePadding:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoAVCInlineVectorsEnable:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmRenderStats:
    {
      OMX_CONFIG_BRCMRENDERSTATSTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_BRCMRENDERSTATSTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexConfigBrcmCameraAnnotate:
    {
      OMX_CONFIG_BRCMANNOTATETYPE format;
      OMX_consts::InitOMXParams(&format);
      SET_CONFIG_BRCMANNOTATETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmLockStepEnable:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmTimeScale:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraInterface:
    {
      OMX_PARAM_CAMERAINTERFACETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_CAMERAINTERFACETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraClockingMode:
    {
      OMX_PARAM_CAMERACLOCKINGMODETYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_CAMERACLOCKINGMODETYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraRxConfig:
    {
      OMX_PARAM_CAMERARXCONFIG_TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_CAMERARXCONFIG_TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamCameraRxTiming:
    {
      OMX_PARAM_CAMERARXTIMING_TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_CAMERARXTIMING_TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamDynamicParameterConfig:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmVideoAVCSPSTimingEnable:
    {
      OMX_CONFIG_PORTBOOLEANTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_CONFIG_PORTBOOLEANTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmBayerOrder:
    {
      OMX_PARAM_BAYERORDERTYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_BAYERORDERTYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    case OMX_IndexParamBrcmMaxNumCallbacks:
    {
      OMX_PARAM_U32TYPE format;
      OMX_consts::InitOMXParams(&format, port);
      SET_PARAM_U32TYPE(format, param);

      SetParameterTemplate(&format, handle, nParamIndex);
    }
      break;
    default:
      break;
  }
}
