中航光电的中间件仓库

usrlib.h 160KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366
  1. /**********************************************************************/
  2. /* EhangCom: User reference Head file
  3. *
  4. * FILE: usrlib.h
  5. * VERSION: 1.0.1.1
  6. * DATE: 2011-2-21
  7. *
  8. * DESCRIPTION: Header File for EhangCom Digital USR Interface library
  9. * Copyright (c) EhangCom Corp. All Rights Reserved
  10. *
  11. * THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF EhangCom Corp.
  12. * The copyright notice above does not evidence any actual or
  13. * intended publication of such source code.
  14. *
  15. * Note: Can not modify.
  16. */
  17. /*********************************************************************/
  18. #ifndef __USRLIB_H__
  19. #define __USRLIB_H__
  20. #include "IsxApi.h"
  21. #include "ipmlib.h"
  22. #include "srllib.h"
  23. #include "voclib.h"
  24. #include "m3glib.h"
  25. #include "gclib.h"
  26. /************************************************************************/
  27. #ifdef __cplusplus
  28. extern "C" { // C++ func bindings to enable C funcs to be called from C++
  29. #define extern
  30. #endif
  31. #ifndef EHV_NOTHING
  32. #define EHV_NOTHING -1
  33. #define TEMP_STR_LEN 1024
  34. #define MAX_OUTSTR_LEN 600
  35. #define FAILTRACE(x) if(x) {return szOutStr;}
  36. #define FAILRETN(x) if(x) {return -1;}
  37. static INT STR_OVERFLOW_CHECK(CHAR *szOutStr, CHAR* szTemp)
  38. {
  39. if(strlen(szTemp) + strlen(szOutStr) >= MAX_OUTSTR_LEN){
  40. strcat((CHAR *)szOutStr, "...");
  41. return -1;
  42. }
  43. strcat(szOutStr, szTemp);
  44. return 0;
  45. }
  46. #endif
  47. //////////////////////////////////////////////////////////////////////////
  48. //struct
  49. #pragma pack(1)
  50. typedef struct tagM3G_VOICE_CODER_USR: public tagM3G_VOICE_CODER{
  51. tagM3G_VOICE_CODER_USR() { Init(); };
  52. VOID Init() { memset(this, 0, sizeof(*this) ); };
  53. INT GetSize() { return sizeof(*this); };
  54. VOID SetValue(UINT vVoCoder, UINT vPayloadType=0, UINT vCNG=0, UINT vPLC=0)
  55. {
  56. ucValid =1;
  57. if(vVoCoder!=(UINT)EHV_NOTHING) ucVoCoder = (UCHAR)vVoCoder;
  58. if(vPayloadType!=(UINT)EHV_NOTHING) ucPayloadType = (UCHAR)vPayloadType;
  59. if(vCNG!=(UINT)EHV_NOTHING) ucCNG = (UCHAR)vCNG;
  60. if(vPLC!=(UINT)EHV_NOTHING) ucPLC = (UCHAR)vPLC;
  61. };
  62. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  63. {
  64. CHAR szTemp[TEMP_STR_LEN];
  65. if(ucValid){
  66. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Coder=%d,PT=%d,CNG=%d,PLC=%d> ",
  67. pszParamName?pszParamName:"VoCoder", ucValid, ucVoCoder, ucPayloadType, ucCNG, ucPLC);
  68. } else {
  69. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  70. pszParamName?pszParamName:"VoCoder", ucValid);
  71. }
  72. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  73. return 0;
  74. };
  75. } M3G_VOICE_CODER_USR;
  76. typedef struct tagVoiceConfig_PayloadSize_USR: public VoiceConfig_PayloadSize{
  77. tagVoiceConfig_PayloadSize_USR() { Init(); };
  78. VOID Init() { memset(this, 0, sizeof(*this) ); };
  79. INT GetSize() { return sizeof(*this); };
  80. VOID SetValue(UCHAR vPayloadSize = 1)
  81. {
  82. Valid =1;
  83. if(vPayloadSize!=(UCHAR)EHV_NOTHING) PayloadSize = (UCHAR)vPayloadSize;
  84. };
  85. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  86. {
  87. CHAR szTemp[TEMP_STR_LEN];
  88. if(Valid){
  89. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,PayloadSize=%d> ",
  90. pszParamName?pszParamName:"PS", Valid, PayloadSize);
  91. } else {
  92. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  93. pszParamName?pszParamName:"PS", Valid);
  94. }
  95. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  96. return 0;
  97. };
  98. }VoiceConfig_PayloadSize_USR;
  99. typedef struct tagVoiceConfig_SilenceSuppress_USR: public VoiceConfig_SilenceSuppress{
  100. tagVoiceConfig_SilenceSuppress_USR() { Init(); };
  101. VOID Init() { memset(this, 0, sizeof(*this) ); };
  102. INT GetSize() { return sizeof(*this); };
  103. VOID SetValue(UCHAR vSilenceSuppress)
  104. {
  105. Valid =1;
  106. if(vSilenceSuppress!=(UCHAR)EHV_NOTHING) SilenceSuppress = (UCHAR)vSilenceSuppress;
  107. };
  108. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  109. {
  110. CHAR szTemp[TEMP_STR_LEN];
  111. if(Valid){
  112. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,SilenceSuppress=%d> ",
  113. pszParamName?pszParamName:"SS", Valid, SilenceSuppress);
  114. } else {
  115. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  116. pszParamName?pszParamName:"SS", Valid);
  117. }
  118. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  119. return 0;
  120. };
  121. }VoiceConfig_SilenceSuppress_USR;
  122. typedef struct tagVoiceConfig_EchoCancel_USR: public VoiceConfig_EchoCancel{
  123. tagVoiceConfig_EchoCancel_USR() { Init(); };
  124. VOID Init() { memset(this, 0, sizeof(*this) ); };
  125. INT GetSize() { return sizeof(*this); };
  126. VOID SetValue(UCHAR vEchoCancel=0, UCHAR vEchoCancellerLength=4)
  127. {
  128. Valid =1;
  129. if(vEchoCancel!=(UCHAR)EHV_NOTHING) EchoCancel = vEchoCancel;
  130. if(vEchoCancellerLength!=(UCHAR)EHV_NOTHING) EchoCancellerLength = vEchoCancellerLength;
  131. };
  132. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  133. {
  134. CHAR szTemp[TEMP_STR_LEN];
  135. if(Valid){
  136. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,EchoCancel=%d,EchoCancellerLength=%d> ",
  137. pszParamName?pszParamName:"EC", Valid, EchoCancel, EchoCancellerLength);
  138. } else {
  139. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  140. pszParamName?pszParamName:"EC", Valid);
  141. }
  142. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  143. return 0;
  144. };
  145. } VoiceConfig_EchoCancel_USR;
  146. typedef struct tagVoiceConfig_JitterBufferDelay_USR: public VoiceConfig_JitterBufferDelay{
  147. tagVoiceConfig_JitterBufferDelay_USR() { Init(); };
  148. VOID Init() { memset(this, 0, sizeof(*this) ); };
  149. INT GetSize() { return sizeof(*this); };
  150. VOID SetValue(USHORT vValue)
  151. {
  152. Valid =1;
  153. if(vValue!=(USHORT)EHV_NOTHING) Value = vValue;
  154. };
  155. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  156. {
  157. CHAR szTemp[TEMP_STR_LEN];
  158. if(Valid){
  159. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Value=%d> ",
  160. pszParamName?pszParamName:"JB", Valid, Value);
  161. } else {
  162. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  163. pszParamName?pszParamName:"JB", Valid);
  164. }
  165. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  166. return 0;
  167. };
  168. } VoiceConfig_JitterBufferDelay_USR;
  169. typedef struct tagVoiceConfig_AdaptationRate_USR: public VoiceConfig_AdaptationRate{
  170. tagVoiceConfig_AdaptationRate_USR() { Init(); };
  171. VOID Init() { memset(this, 0, sizeof(*this) ); };
  172. INT GetSize() { return sizeof(*this); };
  173. VOID SetValue(UCHAR vValue)
  174. {
  175. Valid =1;
  176. if(vValue!=(UCHAR)EHV_NOTHING) Value = vValue;
  177. };
  178. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  179. {
  180. CHAR szTemp[TEMP_STR_LEN];
  181. if(Valid){
  182. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Value=%d> ",
  183. pszParamName?pszParamName:"AR", Valid, Value);
  184. } else {
  185. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  186. pszParamName?pszParamName:"AR", Valid);
  187. }
  188. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  189. return 0;
  190. };
  191. } VoiceConfig_AdaptationRate_USR;
  192. typedef struct tagM3G_VOICE_ATTR_CONFIG_USR: public tagM3G_VOICE_ATTR_CONFIG{
  193. tagM3G_VOICE_ATTR_CONFIG_USR() { Init(); };
  194. VOID Init() { memset(this, 0, sizeof(*this) ); };
  195. INT GetSize() { return sizeof(*this); };
  196. VOID SetValue()
  197. {
  198. ((M3G_VOICE_CODER_USR*)&VoEnCoder)->SetValue(M3G_VOCODER_G711A);
  199. ((M3G_VOICE_CODER_USR*)&VoDeCoder)->SetValue(M3G_VOCODER_G711A);
  200. ((VoiceConfig_PayloadSize_USR*)&PayloadSize)->SetValue(1);
  201. ((VoiceConfig_SilenceSuppress_USR*)&SilenceSuppress)->SetValue(0);
  202. ((VoiceConfig_EchoCancel_USR*)&EchoCancel)->SetValue(0, 4);
  203. ((VoiceConfig_JitterBufferDelay_USR*)&MinJitterBuffer)->SetValue(80);
  204. ((VoiceConfig_JitterBufferDelay_USR*)&MaxJitterBuffer)->SetValue(200);
  205. ((VoiceConfig_AdaptationRate_USR*)&AdaptationRate)->SetValue(7);
  206. };
  207. VOID SetVoEnCoder(eM3G_VOICE_CODER vVoCoder, UCHAR vPayloadType=8, UCHAR vCNG=0, UCHAR vPLC=0)
  208. {
  209. ((M3G_VOICE_CODER_USR*)&VoEnCoder)->SetValue(vVoCoder, vPayloadType, vCNG, vPLC);
  210. };
  211. VOID SetVoDeCoder(eM3G_VOICE_CODER vVoCoder, UCHAR vPayloadType=8, UCHAR vCNG=0, UCHAR vPLC=0)
  212. {
  213. ((M3G_VOICE_CODER_USR*)&VoDeCoder)->SetValue(vVoCoder, vPayloadType, vCNG, vPLC);
  214. };
  215. VOID SetOthers(UCHAR vPayloadSize=1, UCHAR vSilenceSuppress=0,
  216. UCHAR vEchoCancel=0, UCHAR vEchoCancellerLength=4,
  217. USHORT vMinJitterBuffer=80, USHORT vMaxJitterBuffer=200, UCHAR vAdaptationRate=7)
  218. {
  219. ((VoiceConfig_PayloadSize_USR*)&PayloadSize)->SetValue(vPayloadSize);
  220. ((VoiceConfig_SilenceSuppress_USR*)&SilenceSuppress)->SetValue(vSilenceSuppress);
  221. ((VoiceConfig_EchoCancel_USR*)&EchoCancel)->SetValue(vEchoCancel, vEchoCancellerLength);
  222. ((VoiceConfig_JitterBufferDelay_USR*)&MinJitterBuffer)->SetValue(vMinJitterBuffer);
  223. ((VoiceConfig_JitterBufferDelay_USR*)&MaxJitterBuffer)->SetValue(vMaxJitterBuffer);
  224. ((VoiceConfig_AdaptationRate_USR*)&AdaptationRate)->SetValue(vAdaptationRate);
  225. };
  226. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  227. {
  228. CHAR szTemp[TEMP_STR_LEN];
  229. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"VoiceConfig");
  230. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  231. FAILRETN(((M3G_VOICE_CODER_USR*)&VoEnCoder)->TraceStr(szOutStr, "VoEnCoder"));
  232. FAILRETN(((M3G_VOICE_CODER_USR*)&VoDeCoder)->TraceStr(szOutStr, "VoDeCoder"));
  233. FAILRETN(((VoiceConfig_PayloadSize_USR*)&PayloadSize)->TraceStr(szOutStr, "PS"));
  234. FAILRETN(((VoiceConfig_SilenceSuppress_USR*)&SilenceSuppress)->TraceStr(szOutStr, "SS"));
  235. FAILRETN(((VoiceConfig_EchoCancel_USR*)&EchoCancel)->TraceStr(szOutStr, "EC"));
  236. FAILRETN(((VoiceConfig_JitterBufferDelay_USR*)&MinJitterBuffer)->TraceStr(szOutStr, "MiJB"));
  237. FAILRETN(((VoiceConfig_JitterBufferDelay_USR*)&MaxJitterBuffer)->TraceStr(szOutStr, "MaJB"));
  238. FAILRETN(((VoiceConfig_AdaptationRate_USR*)&AdaptationRate)->TraceStr(szOutStr, "AR"));
  239. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  240. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  241. return 0;
  242. };
  243. } M3G_VOICE_ATTR_CONFIG_USR;
  244. typedef struct tagIpConfig_IP_addr_USR: public IpConfig_IP_addr{
  245. tagIpConfig_IP_addr_USR() { Init(); };
  246. VOID Init() { memset(this, 0, sizeof(*this) ); };
  247. INT GetSize() { return sizeof(*this); };
  248. VOID SetValue(CHAR *vIpAddr)
  249. {
  250. Valid =1;
  251. if(vIpAddr) strncpy(IpAddr, vIpAddr, sizeof(IpAddr));
  252. };
  253. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  254. {
  255. CHAR szTemp[TEMP_STR_LEN];
  256. if(Valid){
  257. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,IpAddr=%s> ",
  258. pszParamName?pszParamName:"IP", Valid, IpAddr);
  259. } else {
  260. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  261. pszParamName?pszParamName:"IP", Valid);
  262. }
  263. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  264. return 0;
  265. };
  266. } IpConfig_IP_addr_USR;
  267. typedef struct tagIpConfig_UdpPort_USR: public IpConfig_UdpPort{
  268. tagIpConfig_UdpPort_USR() { Init(); };
  269. VOID Init() { memset(this, 0, sizeof(*this) ); };
  270. INT GetSize() { return sizeof(*this); };
  271. VOID SetValue(INT vPort = 0)
  272. {
  273. Valid =1;
  274. if(vPort!=(INT)EHV_NOTHING) UdpPort = (USHORT)vPort;
  275. };
  276. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  277. {
  278. CHAR szTemp[TEMP_STR_LEN];
  279. if(Valid){
  280. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,UdpPort=%d> ",
  281. pszParamName?pszParamName:"PORT", Valid, UdpPort);
  282. } else {
  283. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  284. pszParamName?pszParamName:"PORT", Valid);
  285. }
  286. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  287. return 0;
  288. };
  289. } IpConfig_UdpPort_USR;
  290. #define DEFAULT_DIGIT_RELAYMODE DRM_ERASE_AND_RELAY_RFC2833
  291. #define DEFAULT_DYNAMIC_PAYLOAD 101
  292. typedef struct tagDtmfConfig_DigitRelay_USR: public DtmfConfig_DigitRelay{
  293. tagDtmfConfig_DigitRelay_USR() { Init(); };
  294. VOID Init() { memset(this, 0, sizeof(*this) ); };
  295. INT GetSize() { return sizeof(*this); };
  296. VOID SetValue(UCHAR vDigitRelayMode=DEFAULT_DIGIT_RELAYMODE)
  297. {
  298. Valid =1;
  299. if(vDigitRelayMode!=(UCHAR)EHV_NOTHING) DigitRelayMode = vDigitRelayMode;
  300. };
  301. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  302. {
  303. CHAR szTemp[TEMP_STR_LEN];
  304. if(Valid){
  305. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,DigitRelayMode=%d> ",
  306. pszParamName?pszParamName:"DR", Valid, DigitRelayMode);
  307. } else {
  308. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  309. pszParamName?pszParamName:"DR", Valid);
  310. }
  311. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  312. return 0;
  313. };
  314. } DtmfConfig_DigitRelay_USR;
  315. typedef struct tagDtmfConfig_Dynamic_Payload_USR: public DtmfConfig_Dynamic_Payload{
  316. tagDtmfConfig_Dynamic_Payload_USR() { Init(); };
  317. VOID Init() { memset(this, 0, sizeof(*this) ); };
  318. INT GetSize() { return sizeof(*this); };
  319. VOID SetValue(UCHAR vDynamicPayload=DEFAULT_DYNAMIC_PAYLOAD)
  320. {
  321. Valid =1;
  322. if(vDynamicPayload!=(UCHAR)EHV_NOTHING) DynamicPayload =vDynamicPayload;
  323. };
  324. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  325. {
  326. CHAR szTemp[TEMP_STR_LEN];
  327. if(Valid){
  328. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,DynamicPayload=%d> ",
  329. pszParamName?pszParamName:"DP", Valid, DynamicPayload);
  330. } else {
  331. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  332. pszParamName?pszParamName:"DP", Valid);
  333. }
  334. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  335. return 0;
  336. };
  337. } DtmfConfig_Dynamic_Payload_USR;
  338. typedef struct tagDtmfConfig_USR: public DtmfConfig{
  339. tagDtmfConfig_USR() { Init(); };
  340. VOID Init() { memset(this, 0, sizeof(*this) ); };
  341. INT GetSize() { return sizeof(*this); };
  342. VOID SetValue(UCHAR vDigitRelayMode=DEFAULT_DIGIT_RELAYMODE, UCHAR vDynamicPayload=DEFAULT_DYNAMIC_PAYLOAD)
  343. {
  344. ((DtmfConfig_DigitRelay_USR*)&DigitRelay)->SetValue(vDigitRelayMode);
  345. ((DtmfConfig_Dynamic_Payload_USR*)&DynamicPayload)->SetValue(vDynamicPayload);
  346. };
  347. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  348. {
  349. CHAR szTemp[TEMP_STR_LEN];
  350. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"DtmfConfig");
  351. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  352. FAILRETN(((DtmfConfig_DigitRelay_USR*)&DigitRelay)->TraceStr(szOutStr, "DR"));
  353. FAILRETN(((DtmfConfig_Dynamic_Payload_USR*)&DynamicPayload)->TraceStr(szOutStr, "DP"));
  354. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  355. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  356. return 0;
  357. };
  358. } DtmfConfig_USR;
  359. typedef struct tagM3G_CHAN_TYPE_VOICE_PARAM_USR: public tagM3G_CHAN_TYPE_VOICE_PARAM{
  360. tagM3G_CHAN_TYPE_VOICE_PARAM_USR() { Init(); };
  361. VOID Init() { memset(this, 0, sizeof(*this) ); };
  362. INT GetSize() { return sizeof(*this); };
  363. VOID SetSrcAddr(CHAR *vSrcIp, USHORT vSrcPort)
  364. {
  365. ((IpConfig_IP_addr_USR*)&SrcIpAddr)->SetValue(vSrcIp);
  366. ((IpConfig_UdpPort_USR*)&SrcRtpPort)->SetValue(vSrcPort);
  367. };
  368. VOID SetDstAddr(CHAR *vDstIp, USHORT vDstPort)
  369. {
  370. ((IpConfig_IP_addr_USR*)&DstIpAddr)->SetValue(vDstIp);
  371. ((IpConfig_UdpPort_USR*)&DstRtpPort)->SetValue(vDstPort);
  372. };
  373. VOID SetRtcpPort(USHORT vSrcRtcpPort, USHORT vDstRtcpPort)
  374. {
  375. ((IpConfig_UdpPort_USR*)&SrcRTCPPort)->SetValue(vSrcRtcpPort);
  376. ((IpConfig_UdpPort_USR*)&DstRTCPPort)->SetValue(vDstRtcpPort);
  377. };
  378. VOID SetMode(UCHAR vConnMode=ConnMode_FullDup, UCHAR vVoiceMode=M3G_VOICE_MODE_P2P)
  379. {
  380. if(vConnMode!=(UCHAR)EHV_NOTHING) ucConnMode = vConnMode;
  381. if(vVoiceMode!=(UCHAR)EHV_NOTHING) ucVoiceMode= vVoiceMode;
  382. };
  383. VOID SetVoiceCfg(M3G_VOICE_ATTR_CONFIG_USR* pVoiceCfg)
  384. {
  385. memcpy(&VoiceCfg, pVoiceCfg, sizeof(M3G_VOICE_ATTR_CONFIG_USR));
  386. };
  387. VOID SetDtmfCfg(UCHAR vDigitRelayMode=DEFAULT_DIGIT_RELAYMODE, UCHAR vDynamicPayload=DEFAULT_DYNAMIC_PAYLOAD)
  388. {
  389. ((DtmfConfig_USR*)&DtmfCfg)->SetValue(vDigitRelayMode, vDynamicPayload);
  390. };
  391. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  392. {
  393. CHAR szTemp[TEMP_STR_LEN];
  394. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"VoiceParm");
  395. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  396. FAILRETN(((IpConfig_IP_addr_USR*)&SrcIpAddr)->TraceStr(szOutStr, "SrcIp"));
  397. FAILRETN(((IpConfig_UdpPort_USR*)&SrcRtpPort)->TraceStr(szOutStr, "SrcRtpPort"));
  398. FAILRETN(((IpConfig_IP_addr_USR*)&DstIpAddr)->TraceStr(szOutStr, "DstIp"));
  399. FAILRETN(((IpConfig_UdpPort_USR*)&DstRtpPort)->TraceStr(szOutStr, "DstRtpPort"));
  400. FAILRETN(((IpConfig_UdpPort_USR*)&SrcRTCPPort)->TraceStr(szOutStr, "SrcRTCPPort"));
  401. FAILRETN(((IpConfig_UdpPort_USR*)&DstRTCPPort)->TraceStr(szOutStr, "DstRTCPPort"));
  402. _snprintf(szTemp, TEMP_STR_LEN, "ConnMode=%d, VoiceMode=%d ", ucConnMode, ucVoiceMode);
  403. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  404. FAILRETN(((M3G_VOICE_ATTR_CONFIG_USR*)&VoiceCfg)->TraceStr(szOutStr, "VoiceCfg"));
  405. FAILRETN(((DtmfConfig_USR*)&DtmfCfg)->TraceStr(szOutStr, "DtmfCfg"));
  406. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  407. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  408. return 0;
  409. };
  410. } M3G_CHAN_TYPE_VOICE_PARAM_USR;
  411. typedef struct tagM3G_VIDEO_RTP_USR: public tagM3G_VIDEO_RTP{
  412. tagM3G_VIDEO_RTP_USR() { Init(); };
  413. VOID Init() { memset(this, 0, sizeof(*this) ); };
  414. INT GetSize() { return sizeof(*this); };
  415. VOID SetValue(UINT vRtpPayloadType=8, UINT vRtpPayloadEncap=M3G_VIDEO_RTP_PAYLOAD_ENCAP_RFC2190, USHORT vSrcUdpPort=0)
  416. {
  417. if(vRtpPayloadType!=(UINT)EHV_NOTHING) ucRtpPayloadType =(UCHAR)vRtpPayloadType;
  418. if(vRtpPayloadEncap!=(UINT)EHV_NOTHING) ulRtpPayloadEncap =vRtpPayloadEncap;
  419. if(vSrcUdpPort!=(USHORT)EHV_NOTHING) usSrcUdpPort =vSrcUdpPort;
  420. };
  421. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  422. {
  423. CHAR szTemp[TEMP_STR_LEN];
  424. _snprintf(szTemp, TEMP_STR_LEN, "%s<PayloadType=%d,PayloadEncap=%d,SrcUdpPort=%d> ",
  425. pszParamName?pszParamName:"Rtp", ucRtpPayloadType, ulRtpPayloadEncap, usSrcUdpPort);
  426. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  427. return 0;
  428. };
  429. }M3G_VIDEO_RTP_USR;
  430. typedef struct tagM3G_VIDEO_RTCP_USR: public tagM3G_VIDEO_RTCP{
  431. tagM3G_VIDEO_RTCP_USR() { Init(); };
  432. VOID Init() { memset(this, 0, sizeof(*this) ); };
  433. INT GetSize() { return sizeof(*this); };
  434. VOID SetValue(USHORT vSrcPort, CHAR* vDstIp, USHORT vDstPort)
  435. {
  436. ucValid =1;
  437. if(vSrcPort!=(USHORT)EHV_NOTHING) usSrcUdpPort = vSrcPort;
  438. if(vDstPort!=(USHORT)EHV_NOTHING) usDstUdpPort =vDstPort;
  439. if(vDstIp) strncpy(DstIpAddr, vDstIp, sizeof(DstIpAddr));
  440. };
  441. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  442. {
  443. CHAR szTemp[TEMP_STR_LEN];
  444. if(ucValid){
  445. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,SrcPort=%d,DstPort=%d,DstIp=%s> ",
  446. pszParamName?pszParamName:"VideoRtcp", ucValid, usSrcUdpPort, usDstUdpPort, DstIpAddr);
  447. } else {
  448. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  449. pszParamName?pszParamName:"VideoRtcp", ucValid);
  450. }
  451. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  452. return 0;
  453. };
  454. }M3G_VIDEO_RTCP_USR;
  455. typedef struct tagM3G_VIDEO_DEST_ITEM_USR: public tagM3G_VIDEO_DEST_ITEM{
  456. tagM3G_VIDEO_DEST_ITEM_USR() { Init(); };
  457. VOID Init() { memset(this, 0, sizeof(*this) ); };
  458. INT GetSize() { return sizeof(*this); };
  459. VOID SetValue(CHAR *vDstRtpIp, USHORT vDstRtpPort, CHAR *vDstRtcpIp=NULL, USHORT vDstRtcpPort=0)
  460. {
  461. if(vDstRtpIp) strcpy(DstIpAddr, vDstRtpIp);
  462. usDstUdpPort = vDstRtpPort;
  463. if(vDstRtcpIp) strcpy(DstRtcpIpAddr, vDstRtcpIp);
  464. usDstRtcpUdpPort = vDstRtcpPort;
  465. };
  466. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  467. {
  468. CHAR szTemp[TEMP_STR_LEN];
  469. _snprintf(szTemp, TEMP_STR_LEN, "%s<DstRtpIp=%s,DstRtpPort=%d,DstRtcpIp=%s,DstRtcpPort=%d> ",
  470. pszParamName?pszParamName:"DestItem", DstIpAddr, usDstUdpPort, DstRtcpIpAddr, usDstRtcpUdpPort);
  471. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  472. return 0;
  473. };
  474. }M3G_VIDEO_DEST_ITEM_USR;
  475. typedef struct tagM3G_VIDEO_DEST_USR: public tagM3G_VIDEO_DEST{
  476. tagM3G_VIDEO_DEST_USR() { Init(); };
  477. VOID Init() { memset(this, 0, sizeof(*this) ); };
  478. INT GetSize() { return sizeof(*this); };
  479. VOID SetNum(UCHAR vDestNum)
  480. {
  481. ucDestNum = vDestNum;
  482. };
  483. VOID SetValue(CHAR *vDstRtpIp, USHORT vDstRtpPort, CHAR *vDstRtcpIp=NULL, USHORT vDstRtcpPort=0)
  484. {
  485. ucDestNum = 1;
  486. if(vDstRtpIp) strncpy(DestItem[0].DstIpAddr, vDstRtpIp, sizeof(DestItem[0].DstIpAddr));
  487. if(vDstRtpPort!=(USHORT)EHV_NOTHING) DestItem[0].usDstUdpPort = vDstRtpPort;
  488. if(vDstRtcpIp) strncpy(DestItem[0].DstRtcpIpAddr, vDstRtcpIp, sizeof(DestItem[0].DstRtcpIpAddr));
  489. if(vDstRtcpPort!=(USHORT)EHV_NOTHING) DestItem[0].usDstRtcpUdpPort = vDstRtcpPort;
  490. };
  491. VOID AddValue(CHAR *vDstRtpIp, USHORT vDstRtpPort, CHAR *vDstRtcpIp=NULL, USHORT vDstRtcpPort=0)
  492. {
  493. INT i = ucDestNum;
  494. if(i>=MAX_VIDEO_DEST_ITEM) return;
  495. ucDestNum += 1;
  496. if(vDstRtpIp) strncpy(DestItem[i].DstIpAddr, vDstRtpIp, sizeof(DestItem[i].DstIpAddr));
  497. if(vDstRtpPort!=(USHORT)EHV_NOTHING) DestItem[i].usDstUdpPort = vDstRtpPort;
  498. if(vDstRtcpIp) strncpy(DestItem[i].DstRtcpIpAddr, vDstRtcpIp, sizeof(DestItem[i].DstRtcpIpAddr));
  499. if(vDstRtcpPort!=(USHORT)EHV_NOTHING) DestItem[i].usDstRtcpUdpPort = vDstRtcpPort;
  500. };
  501. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  502. {
  503. CHAR szTemp[TEMP_STR_LEN];
  504. _snprintf(szTemp, TEMP_STR_LEN, "%s<DestNum=%d,",
  505. pszParamName?pszParamName:"Dest", ucDestNum);
  506. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  507. CHAR szIndex[16];
  508. for(INT i=0; i<ucDestNum; i++) {
  509. if(i>=MAX_VIDEO_DEST_ITEM) break;
  510. _snprintf(szIndex, 16, "%d", i);
  511. ((M3G_VIDEO_DEST_ITEM_USR*)&DestItem[i])->TraceStr(szOutStr, szIndex);
  512. }
  513. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  514. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  515. return 0;
  516. };
  517. }M3G_VIDEO_DEST_USR;
  518. typedef struct tagM3G_VIDEO_INPUT_USR: public tagM3G_VIDEO_INPUT{
  519. tagM3G_VIDEO_INPUT_USR() { Init(); };
  520. VOID Init() { memset(this, 0, sizeof(*this) ); };
  521. INT GetSize() { return sizeof(*this); };
  522. VOID SetEnable(UCHAR vIsEnable=1)
  523. {
  524. ucValid =1;
  525. if(vIsEnable!=(UCHAR)EHV_NOTHING) ucIsEnable = vIsEnable;
  526. };
  527. VOID SetTransportType(UINT vTransportType/*eM3G_VIDEO_TRANSPORT_TYPE*/)
  528. {
  529. ucValid =1;
  530. if(vTransportType!=(UINT)EHV_NOTHING) ucTransportType = (UCHAR)vTransportType;
  531. };
  532. VOID SetRtp(USHORT vSrcRtpPort, UINT vRtpPayloadType=34, UINT vRtpPayloadEncap=M3G_VIDEO_RTP_PAYLOAD_ENCAP_RFC2190)
  533. {
  534. ucValid = 1;
  535. ((M3G_VIDEO_RTP_USR*)&Rtp)->SetValue(vRtpPayloadType, vRtpPayloadEncap, vSrcRtpPort);
  536. };
  537. VOID SetRtcp(USHORT vSrcRtcpPort, CHAR* vDstRtcpIp, USHORT vDstRtcpPort)
  538. {
  539. ucValid = 1;
  540. ((M3G_VIDEO_RTCP_USR*)&Rtcp)->SetValue(vSrcRtcpPort, vDstRtcpIp, vDstRtcpPort);
  541. };
  542. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  543. {
  544. CHAR szTemp[TEMP_STR_LEN];
  545. if(ucValid){
  546. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,IsEnable=%d,TransportType=%d,",
  547. pszParamName?pszParamName:"VideoInput", ucValid, ucIsEnable, ucTransportType);
  548. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  549. ((M3G_VIDEO_RTP_USR*)&Rtp)->TraceStr(szOutStr);
  550. ((M3G_VIDEO_RTCP_USR*)&Rtcp)->TraceStr(szOutStr);
  551. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  552. } else {
  553. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  554. pszParamName?pszParamName:"VideoInput", ucValid);
  555. }
  556. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  557. return 0;
  558. };
  559. }M3G_VIDEO_INPUT_USR;
  560. typedef struct tagM3G_VIDEO_DECODER_USR: public tagM3G_VIDEO_DECODER{
  561. tagM3G_VIDEO_DECODER_USR() { Init(); };
  562. VOID Init() { memset(this, 0, sizeof(*this) ); };
  563. INT GetSize() { return sizeof(*this); };
  564. VOID SetEnable(UCHAR vIsEnable=1)
  565. {
  566. ucValid =1;
  567. if(vIsEnable!=(UCHAR)EHV_NOTHING) ucIsEnable = vIsEnable;
  568. };
  569. VOID SetValue(UINT vCodingStandard=M3G_VICODER_H263,
  570. UINT vInputWidth=176, UINT vInputHeight=144, UINT vOutputWidth=176,
  571. UINT vOutputHeight=144, UINT vFramesPerSec=10, UINT vDeblocking_smoth=0,
  572. UINT vDeblocking_strength=0, UINT vReferFrames=0)
  573. {
  574. ucValid =1;
  575. if(vCodingStandard!=(UINT)EHV_NOTHING) ulCodingStandard = vCodingStandard;
  576. if(vInputHeight!=(UINT)EHV_NOTHING) ulInputHeight = vInputHeight;
  577. if(vInputWidth!=(UINT)EHV_NOTHING) ulInputWidth = vInputWidth;
  578. if(vOutputHeight!=(UINT)EHV_NOTHING) ulOutputHeight = vOutputHeight;
  579. if(vOutputWidth!=(UINT)EHV_NOTHING) ulOutputWidth = vOutputWidth;
  580. if(vFramesPerSec!=(UINT)EHV_NOTHING) ulFramesPerSec = vFramesPerSec;
  581. if(vDeblocking_smoth!=(UINT)EHV_NOTHING) ulDeblocking_smoth = vDeblocking_smoth;
  582. if(vDeblocking_strength!=(UINT)EHV_NOTHING)ulDeblocking_strength= vDeblocking_strength;
  583. if(vReferFrames!=(UINT)EHV_NOTHING) ulReferFrames = vReferFrames;
  584. };
  585. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  586. {
  587. CHAR szTemp[TEMP_STR_LEN];
  588. if(ucValid){
  589. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,IsEnable=%d,CodingStd=%d,InH=%d,"
  590. "InW=%d,OutH=%d,OutW=%d,fps=%d,Bsmoth=%d,Bstrength=%d,ReferFrms=%d> ",
  591. pszParamName?pszParamName:"VideoDecoder", ucValid, ucIsEnable, ulCodingStandard, ulInputHeight,
  592. ulInputWidth, ulOutputHeight, ulOutputWidth, ulFramesPerSec, ulDeblocking_smoth,
  593. ulDeblocking_strength, ulReferFrames);
  594. } else {
  595. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  596. pszParamName?pszParamName:"VideoDecoder", ucValid);
  597. }
  598. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  599. return 0;
  600. };
  601. }M3G_VIDEO_DECODER_USR;
  602. typedef struct tagM3G_VIDEO_ENCODER_USR: public tagM3G_VIDEO_ENCODER{
  603. tagM3G_VIDEO_ENCODER_USR() { Init(); };
  604. VOID Init() { memset(this, 0, sizeof(*this) ); };
  605. INT GetSize() { return sizeof(*this); };
  606. VOID SetEnable(UCHAR vIsEnable=1)
  607. {
  608. ucValid =1;
  609. if(vIsEnable!=(UCHAR)EHV_NOTHING) ucIsEnable = vIsEnable;
  610. };
  611. VOID SetValue(UINT vCodingStandard=M3G_VICODER_H263,
  612. UINT vProfileLevel=0, UINT vInputWidth=176, UINT vInputHeight=144,
  613. UINT vFramesPerSec=10, UINT vBitRate=40000, UINT vIsVariableBitRate=0,
  614. UINT vVbrQualityMin=0, UINT vVbrQualityMax=0x7FFF, UINT vIFrameFrequency=99)
  615. {
  616. ucValid =1;
  617. if(vCodingStandard!=(UINT)EHV_NOTHING) ulCodingStandard = vCodingStandard;
  618. if(vProfileLevel!=(UINT)EHV_NOTHING) ulProfileLevel = vProfileLevel;
  619. if(vInputHeight!=(UINT)EHV_NOTHING) ulInputHeight = vInputHeight;
  620. if(vInputWidth!=(UINT)EHV_NOTHING) ulInputWidth = vInputWidth;
  621. if(vFramesPerSec!=(UINT)EHV_NOTHING) ulFramesPerSec = vFramesPerSec;
  622. if(vBitRate!=(UINT)EHV_NOTHING) ulBitRate = vBitRate;
  623. if(vIsVariableBitRate!=(UINT)EHV_NOTHING) ucIsVariableBitRate = (UCHAR)vIsVariableBitRate;
  624. if(vVbrQualityMin!=(UINT)EHV_NOTHING) ulVbrQualityMin = vVbrQualityMin;
  625. if(vVbrQualityMax!=(UINT)EHV_NOTHING) ulVbrQualityMax = vVbrQualityMax;
  626. if(vIFrameFrequency!=(UINT)EHV_NOTHING) ulIFrameFrequency = vIFrameFrequency;
  627. };
  628. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  629. {
  630. CHAR szTemp[TEMP_STR_LEN];
  631. if(ucValid){
  632. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,IsEnable=%d,CodingStd=%d,ProfLvl=%d,InH=%d,InW=%d, "
  633. "fps=%d,BitRate=%d,VarRate=%d,VbrQMin=%d,VbrQMax=%d,IFrmFreq=%d> ",
  634. pszParamName?pszParamName:"VideoEncoder", ucValid, ucIsEnable, ulCodingStandard,
  635. ulProfileLevel, ulInputHeight, ulInputWidth, ulFramesPerSec, ulBitRate,
  636. ucIsVariableBitRate, ulVbrQualityMin, ulVbrQualityMax, ulIFrameFrequency);
  637. } else {
  638. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  639. pszParamName?pszParamName:"VideoEncoder", ucValid);
  640. }
  641. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  642. return 0;
  643. };
  644. }M3G_VIDEO_ENCODER_USR;
  645. typedef struct tagM3G_VIDEO_OUTPUT_USR: public tagM3G_VIDEO_OUTPUT{
  646. tagM3G_VIDEO_OUTPUT_USR() { Init(); };
  647. VOID Init() { memset(this, 0, sizeof(*this) ); };
  648. INT GetSize() { return sizeof(*this); };
  649. VOID SetEnable(UCHAR vIsEnable=1)
  650. {
  651. ucValid =1;
  652. if(vIsEnable!=(UCHAR)EHV_NOTHING) ucIsEnable = vIsEnable;
  653. };
  654. VOID SetTransportType(UINT vTransportType/*eM3G_VIDEO_TRANSPORT_TYPE*/)
  655. {
  656. ucValid =1;
  657. if(vTransportType!=(UINT)EHV_NOTHING) ucTransportType = (UCHAR)vTransportType;
  658. };
  659. VOID SetRtp(USHORT vSrcRtpPort, UINT vRtpPayloadType=34, UINT vRtpPayloadEncap=M3G_VIDEO_RTP_PAYLOAD_ENCAP_RFC2190)
  660. {
  661. ucValid =1;
  662. ((M3G_VIDEO_RTP_USR*)&Rtp)->SetValue(vRtpPayloadType, vRtpPayloadEncap, vSrcRtpPort);
  663. };
  664. VOID SetRtcp(USHORT vSrcRtcpPort, CHAR* vDstRtcpIp, USHORT vDstRtcpPort)
  665. {
  666. ucValid =1;
  667. ((M3G_VIDEO_RTCP_USR*)&Rtcp)->SetValue(vSrcRtcpPort, vDstRtcpIp, vDstRtcpPort);
  668. };
  669. VOID SetDest(CHAR* vDstRtpIp, USHORT vDstRtpPort, CHAR* vDstRtcpIp=NULL, USHORT vDstRtcpPort=0)
  670. {
  671. ucValid =0;
  672. if(vDstRtpIp==NULL) return;
  673. if(vDstRtpIp[0]==0) return;
  674. if(vDstRtpPort==0) return;
  675. ucValid =1;
  676. ((M3G_VIDEO_DEST_USR*)&Dest)->SetValue(vDstRtpIp, vDstRtpPort, vDstRtcpIp, vDstRtcpPort);
  677. };
  678. VOID AddDest(CHAR* vDstRtpIp, USHORT vDstRtpPort, CHAR* vDstRtcpIp=NULL, USHORT vDstRtcpPort=0)
  679. {
  680. if(vDstRtpIp==NULL) return;
  681. if(vDstRtpIp[0]==0) return;
  682. if(vDstRtpPort==0) return;
  683. if(ucValid!=1) ucValid = 1;
  684. ((M3G_VIDEO_DEST_USR*)&Dest)->AddValue(vDstRtpIp, vDstRtpPort, vDstRtcpIp, vDstRtcpPort);
  685. };
  686. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  687. {
  688. CHAR szTemp[TEMP_STR_LEN];
  689. if(ucValid){
  690. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,IsEnable=%d,TransportType=%d,",
  691. pszParamName?pszParamName:"VideoOutput", ucValid, ucIsEnable, ucTransportType);
  692. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  693. ((M3G_VIDEO_RTP_USR*)&Rtp)->TraceStr(szOutStr);
  694. ((M3G_VIDEO_RTCP_USR*)&Rtcp)->TraceStr(szOutStr);
  695. ((M3G_VIDEO_DEST_USR*)&Dest)->TraceStr(szOutStr);
  696. _snprintf(szTemp, TEMP_STR_LEN, ">");
  697. } else {
  698. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  699. pszParamName?pszParamName:"VideoOutput", ucValid);
  700. }
  701. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  702. return 0;
  703. };
  704. }M3G_VIDEO_OUTPUT_USR;
  705. typedef struct tagM3G_CHAN_TYPE_VIDEO_PARAM_USR: public tagM3G_CHAN_TYPE_VIDEO_PARAM{
  706. tagM3G_CHAN_TYPE_VIDEO_PARAM_USR() { Init(); };
  707. VOID Init() { memset(this, 0, sizeof(*this) ); };
  708. INT GetSize() { return sizeof(*this); };
  709. VOID SetVideoInput(M3G_VIDEO_INPUT_USR *pVideoInput)
  710. {
  711. memcpy(&VideoInput, pVideoInput, sizeof(M3G_VIDEO_INPUT_USR));
  712. };
  713. VOID SetVideoOutput(M3G_VIDEO_OUTPUT_USR *pVideoOutput)
  714. {
  715. memcpy(&VideoOutput, pVideoOutput, sizeof(M3G_VIDEO_OUTPUT_USR));
  716. };
  717. VOID SetVideoDecoder(M3G_VIDEO_DECODER_USR *pVideoDecoder)
  718. {
  719. memcpy(&VideoDecoder, pVideoDecoder, sizeof(M3G_VIDEO_DECODER_USR));
  720. };
  721. VOID SetVideoEncoder(M3G_VIDEO_ENCODER_USR *pVideoEncoder)
  722. {
  723. memcpy(&VideoEncoder, pVideoEncoder, sizeof(M3G_VIDEO_ENCODER_USR));
  724. };
  725. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  726. {
  727. CHAR szTemp[TEMP_STR_LEN];
  728. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"VideoParm");
  729. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  730. FAILRETN(((M3G_VIDEO_INPUT_USR*)&VideoInput)->TraceStr(szOutStr, "VideoInput"));
  731. FAILRETN(((M3G_VIDEO_DECODER_USR*)&VideoDecoder)->TraceStr(szOutStr, "VideoDecoder"));
  732. FAILRETN(((M3G_VIDEO_ENCODER_USR*)&VideoEncoder)->TraceStr(szOutStr, "VideoEncoder"));
  733. FAILRETN(((M3G_VIDEO_OUTPUT_USR*)&VideoOutput)->TraceStr(szOutStr, "VideoOutput"));
  734. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  735. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  736. return 0;
  737. };
  738. }M3G_CHAN_TYPE_VIDEO_PARAM_USR;
  739. typedef struct tagM3G_TERM_CAPS_USR: public tagM3G_TERM_CAPS{
  740. tagM3G_TERM_CAPS_USR() { Init(); };
  741. VOID Init() { memset(this, 0, sizeof(*this) ); };
  742. INT GetSize() { return sizeof(*this); };
  743. VOID SetValue()
  744. {
  745. ucValid =1;
  746. //ucAudioCodes[0] =M3G_H324_AUDIO_CODEC_AMR; //AMR
  747. //ucAudioCodes[1] =M3G_H324_AUDIO_CODEC_G723; //G723
  748. //ucAudioCodes[2] =M3G_H324_AUDIO_CODEC_NONE; //NONE
  749. //ucAudioCodes[3] =M3G_H324_AUDIO_CODEC_NONE; //NONE
  750. //ucVideoCodes[0] =M3G_H324_VIDEO_CODEC_MPEG4;//MPEG4
  751. //ucVideoCodes[1] =M3G_H324_VIDEO_CODEC_H263; //H263
  752. //ucVideoCodes[2] =M3G_H324_VIDEO_CODEC_NONE; //NONE
  753. //ucVideoCodes[3] =M3G_H324_VIDEO_CODEC_NONE; //NONE
  754. ucAudioCodes[0] =M3G_H324_AUDIO_CODEC_AMR; //AMR
  755. ucAudioCodes[1] =M3G_H324_AUDIO_CODEC_NONE; //NONE
  756. ucAudioCodes[2] =M3G_H324_AUDIO_CODEC_NONE; //NONE
  757. ucAudioCodes[3] =M3G_H324_AUDIO_CODEC_NONE; //NONE
  758. ucVideoCodes[0] =M3G_H324_VIDEO_CODEC_H263;//H263
  759. ucVideoCodes[1] =M3G_H324_VIDEO_CODEC_NONE; //NONE
  760. ucVideoCodes[2] =M3G_H324_VIDEO_CODEC_NONE; //NONE
  761. ucVideoCodes[3] =M3G_H324_VIDEO_CODEC_NONE; //NONE
  762. ucDtmfSignal[0] =1;
  763. ucDtmfSignal[1] =1;
  764. };
  765. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  766. {
  767. CHAR szTemp[TEMP_STR_LEN];
  768. if(ucValid){
  769. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,AudioCodes(%d,%d,%d,%d),VideoCodes(%d,%d,%d,%d),DtmfSignal(%d,%d)> ",
  770. pszParamName?pszParamName:"TermCaps", ucValid, ucAudioCodes[0], ucAudioCodes[1], ucAudioCodes[2],
  771. ucAudioCodes[3], ucVideoCodes[0], ucVideoCodes[1], ucVideoCodes[2], ucVideoCodes[3],
  772. ucDtmfSignal[0], ucDtmfSignal[1]);
  773. } else {
  774. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  775. pszParamName?pszParamName:"TermCaps", ucValid);
  776. }
  777. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  778. return 0;
  779. };
  780. }M3G_TERM_CAPS_USR;
  781. typedef struct tagM3G_H223_PARAMS_USR: public tagM3G_H223_PARAMS{
  782. tagM3G_H223_PARAMS_USR() { Init(); };
  783. VOID Init() { memset(this, 0, sizeof(*this) ); };
  784. INT GetSize() { return sizeof(*this); };
  785. VOID SetValue(UINT vAl2WithSeqNumberAudio=1, UINT vAl2WitchSeqNumberVideo=1, UINT vMaxPdu=160)
  786. {
  787. ucValid =1;
  788. if(vAl2WithSeqNumberAudio!=(UINT)EHV_NOTHING) ulAl2WithSeqNumberAudio = vAl2WithSeqNumberAudio;
  789. if(vAl2WitchSeqNumberVideo!=(UINT)EHV_NOTHING) ulAl2WitchSeqNumberVideo= vAl2WitchSeqNumberVideo;
  790. if(vMaxPdu!=(UINT)EHV_NOTHING) ulMaxPdu = vMaxPdu;
  791. };
  792. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  793. {
  794. CHAR szTemp[TEMP_STR_LEN];
  795. if(ucValid){
  796. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,AudioWithSN=%d,VideoWithSN=%d,MaxPdu=%d> ",
  797. pszParamName?pszParamName:"H223Parms", ucValid, ulAl2WithSeqNumberAudio, ulAl2WitchSeqNumberVideo, ulMaxPdu);
  798. } else {
  799. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  800. pszParamName?pszParamName:"H223Parms", ucValid);
  801. }
  802. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  803. return 0;
  804. };
  805. } M3G_H223_PARAMS_USR;
  806. typedef struct tagM3G_MEDIA_CHAN_USR: public tagM3G_MEDIA_CHAN{
  807. tagM3G_MEDIA_CHAN_USR() { Init(); };
  808. VOID Init() { memset(this, 0, sizeof(*this) ); };
  809. INT GetSize() { return sizeof(*this); };
  810. VOID SetValue(USHORT vSrcRtpPort, USHORT vDstRtpPort=0, CHAR* vDstRtpIp=NULL, UINT vPayloadType=0, UINT vCodec=0, UCHAR vIsMuted=0)
  811. {
  812. ucValid =1;
  813. if(vPayloadType!=(UINT)EHV_NOTHING) ucRtpPayloadType = (UCHAR)vPayloadType;
  814. if(vSrcRtpPort!=(USHORT)EHV_NOTHING) usSrcUdpPort = vSrcRtpPort;
  815. if(vDstRtpPort!=(USHORT)EHV_NOTHING) usDstUdpPort = vDstRtpPort;
  816. if(vDstRtpIp) strncpy(DstIpAddr, vDstRtpIp, sizeof(DstIpAddr));
  817. if(vCodec!=(UINT)EHV_NOTHING) ulCodec = vCodec;
  818. if(vIsMuted!=(UCHAR)EHV_NOTHING) ucIsMuted = vIsMuted;
  819. };
  820. INT SetDefaultSrcPort(INT nCh, INT i)
  821. {
  822. ucValid= 1;
  823. usSrcUdpPort = EHANG_MAKE_MEDIA_PORT(nCh, i);
  824. return 0;
  825. };
  826. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  827. {
  828. CHAR szTemp[TEMP_STR_LEN];
  829. if(ucValid){
  830. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,PT=%d,SrcPort=%d,DstPort=%d,DstIp=%s, "
  831. "Codec=%d, IsMuted=%d> ", pszParamName?pszParamName:"MediaChan",
  832. ucValid, ucRtpPayloadType, usSrcUdpPort, usDstUdpPort, DstIpAddr, ulCodec, ucIsMuted);
  833. } else {
  834. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  835. pszParamName?pszParamName:"MediaChan", ucValid);
  836. }
  837. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  838. return 0;
  839. };
  840. } M3G_MEDIA_CHAN_USR;
  841. typedef struct tagM3G_CHAN_TYPE_H324M_PARAM_USR: public tagM3G_CHAN_TYPE_H324M_PARAM{
  842. tagM3G_CHAN_TYPE_H324M_PARAM_USR() { Init(); };
  843. VOID Init() { memset(this, 0, sizeof(*this) ); };
  844. INT GetSize() { return sizeof(*this); };
  845. VOID SetValue()
  846. {
  847. ucTermType =128;
  848. ((M3G_TERM_CAPS_USR*)&LocalCaps)->SetValue();
  849. ((M3G_H223_PARAMS_USR*)&H223Params)->SetValue();
  850. ((M3G_MEDIA_CHAN_USR*)&MediaChan[0])->SetValue(0);
  851. ((M3G_MEDIA_CHAN_USR*)&MediaChan[1])->SetValue(0);
  852. ((M3G_MEDIA_CHAN_USR*)&MediaChan[2])->SetValue(0);
  853. ((M3G_MEDIA_CHAN_USR*)&MediaChan[3])->SetValue(0);
  854. };
  855. INT SetLocalTerm(UCHAR vTermType=128, M3G_TERM_CAPS_USR* pTermCaps=NULL, M3G_H223_PARAMS_USR* pH223Parms=NULL)
  856. {
  857. ucTermType = vTermType;
  858. if(pTermCaps==NULL) {
  859. ((M3G_TERM_CAPS_USR*)&LocalCaps)->SetValue();
  860. } else {
  861. memcpy(&LocalCaps, pTermCaps, sizeof(M3G_TERM_CAPS));
  862. }
  863. if(pH223Parms==NULL) {
  864. ((M3G_H223_PARAMS_USR*)&H223Params)->SetValue();
  865. } else {
  866. memcpy(&H223Params, pH223Parms, sizeof(M3G_H223_PARAMS));
  867. }
  868. return 0;
  869. };
  870. INT SetMediaChan(eM3G_LC_NUMBER lc, M3G_MEDIA_CHAN_USR* pParam)
  871. {
  872. if(pParam == NULL) return -1;
  873. memcpy(&MediaChan[lc], pParam, sizeof(M3G_MEDIA_CHAN));
  874. return 0;
  875. };
  876. INT SetDefaultSrcPort(INT nCh)
  877. {
  878. M3G_MEDIA_CHAN_USR* pMediaChan;
  879. pMediaChan= (M3G_MEDIA_CHAN_USR*)&MediaChan[0];
  880. pMediaChan->SetDefaultSrcPort(nCh, 0);
  881. pMediaChan= (M3G_MEDIA_CHAN_USR*)&MediaChan[1];
  882. pMediaChan->SetDefaultSrcPort(nCh, 2);
  883. pMediaChan= (M3G_MEDIA_CHAN_USR*)&MediaChan[2];
  884. pMediaChan->SetDefaultSrcPort(nCh, 4);
  885. pMediaChan= (M3G_MEDIA_CHAN_USR*)&MediaChan[3];
  886. pMediaChan->SetDefaultSrcPort(nCh, 6);
  887. return 0;
  888. };
  889. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  890. {
  891. CHAR szTemp[TEMP_STR_LEN];
  892. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"H324MParm");
  893. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  894. FAILRETN(((M3G_TERM_CAPS_USR*)&LocalCaps)->TraceStr(szOutStr, "LocalCaps"));
  895. FAILRETN(((M3G_H223_PARAMS_USR*)&H223Params)->TraceStr(szOutStr, "H223Params"));
  896. _snprintf(szTemp, TEMP_STR_LEN, "MediaChan< ");
  897. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  898. CHAR szIndex[10];
  899. for(INT i=0; i<MAX_H324M_LC_NUM; i++) {
  900. sprintf(szIndex, "%d", i);
  901. FAILRETN(((M3G_MEDIA_CHAN_USR*)&MediaChan[i])->TraceStr(szOutStr, szIndex));
  902. }
  903. _snprintf(szTemp, TEMP_STR_LEN, ">> ");
  904. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  905. return 0;
  906. };
  907. } M3G_CHAN_TYPE_H324M_PARAM_USR;
  908. typedef struct tagM3G_AUDIO_RTP_USR: public tagM3G_AUDIO_RTP{
  909. tagM3G_AUDIO_RTP_USR() { Init(); };
  910. VOID Init() { memset(this, 0, sizeof(*this) ); };
  911. INT GetSize() {
  912. return sizeof(*this);
  913. };
  914. VOID SetValue(UCHAR vPayloadType, UCHAR vRtpMode, USHORT vConjugatedChanNo, UINT vTsTicksPerSecond, USHORT vSrcUdpPort, USHORT vDestUdpPort, CHAR* vDestIPAddr)
  915. {
  916. ucPayloadType = vPayloadType;
  917. ucRtpMode = vRtpMode;
  918. usConjugatedChanNo = vConjugatedChanNo;
  919. ulTsTicksPerSecond = vTsTicksPerSecond;
  920. usSrcUdpPort = vSrcUdpPort;
  921. usDestUdpPort = vDestUdpPort;
  922. if(vDestIPAddr) _snprintf(szDestIPAddr, sizeof(szDestIPAddr), "%s", vDestIPAddr);
  923. };
  924. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  925. {
  926. CHAR szTemp[TEMP_STR_LEN];
  927. _snprintf(szTemp, TEMP_STR_LEN, "%s<PayloadType=%d,RtpMode=%d,ConjugatedChanNo=%d,TsTicksPerSecond=%d,SrcUdpPort=%d,DestUdpPort=%d,DestIPAddr=%s>",
  928. pszParamName?pszParamName:"RTP", ucPayloadType, ucRtpMode, usConjugatedChanNo, ulTsTicksPerSecond, usSrcUdpPort,usDestUdpPort,szDestIPAddr);
  929. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  930. return 0;
  931. };
  932. } M3G_AUDIO_RTP_USR;
  933. typedef struct tagM3G_AUDIO_INPUT_JB_USR: public tagM3G_AUDIO_INPUT_JB{
  934. tagM3G_AUDIO_INPUT_JB_USR() { Init(); };
  935. VOID Init() { memset(this, 0, sizeof(*this) ); };
  936. INT GetSize() {
  937. return sizeof(*this);
  938. };
  939. VOID SetValue(UCHAR vType, UINT vSize, UINT vAverageDelayInMS, UINT vPacketLossTimeout)
  940. {
  941. ucType = ucType;
  942. ulSize = vSize;
  943. ulAverageDelayInMS = vAverageDelayInMS;
  944. ulPacketLossTimeout = vPacketLossTimeout;
  945. };
  946. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  947. {
  948. CHAR szTemp[TEMP_STR_LEN];
  949. _snprintf(szTemp, TEMP_STR_LEN, "%s<Type=%d,Size=%d,AverageDelayInMS=%d,PacketLossTimeout=%d>",
  950. pszParamName?pszParamName:"JB", ucType, ulSize, ulAverageDelayInMS, ulPacketLossTimeout);
  951. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  952. return 0;
  953. };
  954. } M3G_AUDIO_INPUT_JB_USR;
  955. typedef struct tagM3G_AUDIO_RTCP_USR: public tagM3G_AUDIO_RTCP{
  956. tagM3G_AUDIO_RTCP_USR() { Init(); };
  957. VOID Init() { memset(this, 0, sizeof(*this) ); };
  958. INT GetSize() {
  959. return sizeof(*this);
  960. };
  961. VOID SetEnable(UCHAR vEnable)
  962. {
  963. ucEnable = vEnable;
  964. };
  965. VOID SetValue(UCHAR vRecvRtcp, UCHAR vRtcpHandleType, UINT vReportInterval, USHORT vSrcUdpPort, USHORT vDestUdpPort, CHAR* vDestIPAddr)
  966. {
  967. ucRecvRtcp = vRecvRtcp;
  968. ucRtcpHandleType = vRtcpHandleType;
  969. ulReportInterval = vReportInterval;
  970. usSrcUdpPort = vSrcUdpPort;
  971. usDestUdpPort = vDestUdpPort;
  972. if(vDestIPAddr) _snprintf(szDestIPAddr, sizeof(szDestIPAddr), "%s", vDestIPAddr);
  973. };
  974. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  975. {
  976. CHAR szTemp[TEMP_STR_LEN];
  977. _snprintf(szTemp, TEMP_STR_LEN, "%s<Enable=%d,RecvRtcp=%d,RtcpHandleType=%d,ReportInterval=%d,SrcUdpPort=%d,DestUdpPort=%d,DestIPAddr=%s>",
  978. pszParamName?pszParamName:"RTCP", ucEnable, ucRecvRtcp, ucRtcpHandleType, ulReportInterval, usSrcUdpPort,usDestUdpPort,szDestIPAddr);
  979. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  980. return 0;
  981. };
  982. } M3G_AUDIO_RTCP_USR;
  983. typedef struct tagM3G_AUDIO_INPUT_USR: public tagM3G_AUDIO_INPUT{
  984. tagM3G_AUDIO_INPUT_USR() { Init(); };
  985. VOID Init() { memset(this, 0, sizeof(*this) ); };
  986. INT GetSize() {
  987. return sizeof(*this);
  988. };
  989. VOID SetValid(UCHAR vValid)
  990. {
  991. ucValid = vValid;
  992. };
  993. VOID SetEnable(UCHAR vEnable)
  994. {
  995. ucEnable = vEnable;
  996. };
  997. VOID SetValue(UINT vTransportType, UINT vRfcType, UINT vTrackNum, UINT vSampleRate)
  998. {
  999. if(vTransportType!=(UINT)EHV_NOTHING) ucTransportType = (UCHAR)ucTransportType;
  1000. if(vRfcType!=(UINT)EHV_NOTHING) ucRfcType = (UCHAR)vRfcType;
  1001. if(vTrackNum!=(UINT)EHV_NOTHING) ucTrackNum = (UCHAR)vTrackNum;
  1002. if(vSampleRate!=(UINT)EHV_NOTHING) ulSampleRate = vSampleRate;
  1003. };
  1004. VOID SetRTP(M3G_AUDIO_RTP *pRTP)
  1005. {
  1006. if(pRTP) memcpy(&RTP, pRTP, sizeof(M3G_AUDIO_RTP));
  1007. };
  1008. VOID SetRTCP(M3G_AUDIO_RTP *pRTCP)
  1009. {
  1010. if(pRTCP) memcpy(&RTCP, pRTCP, sizeof(M3G_AUDIO_RTCP));
  1011. };
  1012. VOID SetRTP(M3G_AUDIO_INPUT_JB *pJB)
  1013. {
  1014. if(pJB) memcpy(&JB, pJB, sizeof(M3G_AUDIO_INPUT_JB));
  1015. };
  1016. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1017. {
  1018. CHAR szTemp[TEMP_STR_LEN];
  1019. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Enable=%d,TransportType=%d,RfcType=%d,TrackNum=%d,SampleRate=%d, ",
  1020. pszParamName?pszParamName:"AudioInput", ucValid, ucEnable, ucTransportType, ucRfcType, ucTrackNum,ulSampleRate);
  1021. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1022. FAILRETN(((M3G_AUDIO_RTP_USR*)&RTP)->TraceStr(szOutStr));
  1023. FAILRETN(((M3G_AUDIO_INPUT_JB_USR*)&JB)->TraceStr(szOutStr));
  1024. FAILRETN(((M3G_AUDIO_RTCP_USR*)&RTCP)->TraceStr(szOutStr));
  1025. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1026. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1027. return 0;
  1028. };
  1029. } M3G_AUDIO_INPUT_USR;
  1030. typedef struct tagM3G_AUDIO_DECODER_USR: public tagM3G_AUDIO_DECODER{
  1031. tagM3G_AUDIO_DECODER_USR() { Init(); };
  1032. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1033. INT GetSize() {
  1034. return sizeof(*this);
  1035. };
  1036. VOID SetValid(UCHAR vValid)
  1037. {
  1038. ucValid = vValid;
  1039. };
  1040. VOID SetEnable(UCHAR vEnable)
  1041. {
  1042. ucEnable = vEnable;
  1043. };
  1044. VOID SetValue(UINT vCodecType, UINT vTrackNum, UINT vSampleRate)
  1045. {
  1046. if(vCodecType!=(UINT)EHV_NOTHING) ucCodecType = (UCHAR)vCodecType;
  1047. if(vTrackNum!=(UINT)EHV_NOTHING) ucTrackNum = (UCHAR)vTrackNum;
  1048. if(vSampleRate!=(UINT)EHV_NOTHING) ulSampleRate = vSampleRate;
  1049. };
  1050. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1051. {
  1052. CHAR szTemp[TEMP_STR_LEN];
  1053. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Enable=%d,CodecType=%d,TrackNum=%d,SampleRate=%d>",
  1054. pszParamName?pszParamName:"AudioDecoder", ucValid, ucEnable, ucCodecType, ucTrackNum, ulSampleRate);
  1055. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1056. return 0;
  1057. };
  1058. } M3G_AUDIO_DECODER_USR;
  1059. typedef struct tagM3G_AUDIO_TOOLBOX_RESAMPLE_USR: public tagM3G_AUDIO_TOOLBOX_RESAMPLE{
  1060. tagM3G_AUDIO_TOOLBOX_RESAMPLE_USR() { Init(); };
  1061. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1062. INT GetSize() {
  1063. return sizeof(*this);
  1064. };
  1065. VOID SetValue(UINT vNewSampleRate, UCHAR vComplexity)
  1066. {
  1067. ulNewSampleRate = vNewSampleRate;
  1068. ucComplexity = vComplexity;
  1069. };
  1070. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1071. {
  1072. CHAR szTemp[TEMP_STR_LEN];
  1073. _snprintf(szTemp, TEMP_STR_LEN, "%s<NewSampleRate=%d, Complexity=%d>",
  1074. pszParamName?pszParamName:"Resample", ulNewSampleRate, ucComplexity);
  1075. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1076. return 0;
  1077. };
  1078. }M3G_AUDIO_TOOLBOX_RESAMPLE_USR;
  1079. typedef struct tagM3G_AUDIO_TOOLBOX_TRACK_CONF_USR: public tagM3G_AUDIO_TOOLBOX_TRACK_CONF{
  1080. tagM3G_AUDIO_TOOLBOX_TRACK_CONF_USR() { Init(); };
  1081. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1082. INT GetSize() {
  1083. return sizeof(*this);
  1084. };
  1085. VOID SetValue(UCHAR vNewTrackNum)
  1086. {
  1087. ucNewTrackNum = (UCHAR)vNewTrackNum;
  1088. };
  1089. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1090. {
  1091. CHAR szTemp[TEMP_STR_LEN];
  1092. _snprintf(szTemp, TEMP_STR_LEN, "%s<NewTrackNum=%d>",
  1093. pszParamName?pszParamName:"TrackConf", ucNewTrackNum);
  1094. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1095. return 0;
  1096. };
  1097. } M3G_AUDIO_TOOLBOX_TRACK_CONF_USR;
  1098. typedef struct tagM3G_AUDIO_TOOLBOX_ITEM_USR: public tagM3G_AUDIO_TOOLBOX_ITEM{
  1099. tagM3G_AUDIO_TOOLBOX_ITEM_USR() { Init(); };
  1100. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1101. INT GetSize() {
  1102. return sizeof(*this);
  1103. };
  1104. VOID SetValue(UINT vDirection, UINT vInTrackNum, UINT vInSampleRate)
  1105. {
  1106. if(vDirection!=(UINT)EHV_NOTHING) ucDirection = (UCHAR)vDirection;
  1107. if(vInTrackNum!=(UINT)EHV_NOTHING) ucInTrackNum = (UCHAR)vInTrackNum;
  1108. if(vInSampleRate!=(UINT)EHV_NOTHING) ulInSampleRate = vInSampleRate;
  1109. };
  1110. VOID SetToolBoxTypeParm(UCHAR vType, VOID* pValue)
  1111. {
  1112. ucType = (UCHAR)vType;
  1113. if(ucType==M3G_AUDIO_TOOL_TYPE_RESAMPLING) {
  1114. memcpy(&u.Resample, pValue, sizeof(M3G_AUDIO_TOOLBOX_RESAMPLE));
  1115. } else {
  1116. memcpy(&u.TrackConf, pValue, sizeof(M3G_AUDIO_TOOLBOX_TRACK_CONF));
  1117. }
  1118. }
  1119. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1120. {
  1121. CHAR szTemp[TEMP_STR_LEN];
  1122. _snprintf(szTemp, TEMP_STR_LEN, "%s<Type=%d,Direction=%d,InTrackNum=%d,InSampleRate=%d, ",
  1123. pszParamName?pszParamName:"ToolboxItem", ucType, ucDirection,ucInTrackNum,ulInSampleRate);
  1124. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1125. if(ucType==M3G_AUDIO_TOOL_TYPE_RESAMPLING) {
  1126. FAILRETN(((M3G_AUDIO_TOOLBOX_RESAMPLE_USR*)&u.Resample)->TraceStr(szOutStr));
  1127. } else {
  1128. FAILRETN(((M3G_AUDIO_TOOLBOX_TRACK_CONF_USR*)&u.TrackConf)->TraceStr(szOutStr));
  1129. }
  1130. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1131. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1132. return 0;
  1133. };
  1134. } M3G_AUDIO_TOOLBOX_ITEM_USR;
  1135. typedef struct tagM3G_AUDIO_TOOLBOX_USR: public tagM3G_AUDIO_TOOLBOX{
  1136. tagM3G_AUDIO_TOOLBOX_USR() { Init(); };
  1137. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1138. INT GetSize() {
  1139. return sizeof(*this);
  1140. };
  1141. VOID SetValid(UCHAR vValid)
  1142. {
  1143. ucValid = vValid;
  1144. };
  1145. VOID SetToolBox(UCHAR vNum, M3G_AUDIO_TOOLBOX_ITEM *pItems)
  1146. {
  1147. ucToolBoxNum = vNum;
  1148. if(ucToolBoxNum > M3G_AUDIO_TOOLBOX_ITEM_NUM) ucToolBoxNum = M3G_AUDIO_TOOLBOX_ITEM_NUM;
  1149. if(pItems && ucToolBoxNum>0) {
  1150. memcpy(Item, pItems, sizeof(M3G_AUDIO_TOOLBOX_ITEM)*ucToolBoxNum);
  1151. }
  1152. };
  1153. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1154. {
  1155. CHAR szTemp[TEMP_STR_LEN];
  1156. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,ToolBoxNum=%d,Item<",
  1157. pszParamName?pszParamName:"AudioToolbox", ucValid, ucToolBoxNum);
  1158. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1159. CHAR szIndex[16];
  1160. if(ucToolBoxNum>M3G_AUDIO_TOOLBOX_ITEM_NUM) ucToolBoxNum = M3G_AUDIO_TOOLBOX_ITEM_NUM;
  1161. for(INT i=0; i<ucToolBoxNum; i++) {
  1162. sprintf(szIndex, "%d", i);
  1163. FAILRETN(((M3G_AUDIO_TOOLBOX_ITEM_USR*)&Item[i])->TraceStr(szOutStr, szIndex));
  1164. }
  1165. _snprintf(szTemp, TEMP_STR_LEN, ">> ");
  1166. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1167. return 0;
  1168. };
  1169. } M3G_AUDIO_TOOLBOX_USR;
  1170. typedef struct tagM3G_AUDIO_ENCODER_USR: public tagM3G_AUDIO_ENCODER{
  1171. tagM3G_AUDIO_ENCODER_USR() { Init(); };
  1172. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1173. INT GetSize() {
  1174. return sizeof(*this);
  1175. };
  1176. VOID SetValid(UCHAR vValid)
  1177. {
  1178. ucValid = vValid;
  1179. };
  1180. VOID SetEnable(UCHAR vEnable)
  1181. {
  1182. ucEnable = vEnable;
  1183. };
  1184. VOID SetValue(UINT vCodecType, UINT vBitRateType, UINT vBitRate, UINT vTrackNum, UINT vSampleRate)
  1185. {
  1186. if(vCodecType!=(UINT)EHV_NOTHING) ucCodecType = (UCHAR)vCodecType;
  1187. if(vBitRateType!=(UINT)EHV_NOTHING) ucBitRateType = (UCHAR)vBitRateType;
  1188. if(vBitRate!=(UINT)EHV_NOTHING) ulBitRate = vBitRate;
  1189. if(vTrackNum!=(UINT)EHV_NOTHING) ucTrackNum = (UCHAR)vTrackNum;
  1190. if(vSampleRate!=(UINT)EHV_NOTHING) ulSampleRate = vSampleRate;
  1191. };
  1192. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1193. {
  1194. CHAR szTemp[TEMP_STR_LEN];
  1195. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Enable=%d,CodecType=%d,BitRateType=%d,BitRate=%d,TrackNum=%d,SampleRate=%d>",
  1196. pszParamName?pszParamName:"AudioEncoder", ucValid, ucEnable, ucCodecType, ucBitRateType, ulBitRate, ucTrackNum, ulSampleRate);
  1197. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1198. return 0;
  1199. };
  1200. } M3G_AUDIO_ENCODER_USR;
  1201. typedef struct tagM3G_AUDIO_OUTPUT_DEST_USR: public tagM3G_AUDIO_OUTPUT_DEST{
  1202. tagM3G_AUDIO_OUTPUT_DEST_USR() { Init(); };
  1203. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1204. INT GetSize() {
  1205. return sizeof(*this);
  1206. };
  1207. VOID SetValue(UINT vTransportType, UINT vRfcType)
  1208. {
  1209. if(vTransportType!=(UINT)EHV_NOTHING) ucTransportType = (UCHAR)vTransportType;
  1210. if(vRfcType!=(UINT)EHV_NOTHING) ucRfcType = (UCHAR)vRfcType;
  1211. };
  1212. VOID SetRTP(M3G_AUDIO_RTP *pRTP)
  1213. {
  1214. if(pRTP) memcpy(&RTP, pRTP, sizeof(M3G_AUDIO_RTP));
  1215. };
  1216. VOID SetRTCP(M3G_AUDIO_RTP *pRTCP)
  1217. {
  1218. if(pRTCP) memcpy(&RTCP, pRTCP, sizeof(M3G_AUDIO_RTCP));
  1219. };
  1220. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1221. {
  1222. CHAR szTemp[TEMP_STR_LEN];
  1223. _snprintf(szTemp, TEMP_STR_LEN, "%s<TransportType=%d,RfcType=%d, ",
  1224. pszParamName?pszParamName:"AudioOutputDest", ucTransportType, ucRfcType);
  1225. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1226. FAILRETN(((M3G_AUDIO_RTP_USR*)&RTP)->TraceStr(szOutStr));
  1227. FAILRETN(((M3G_AUDIO_RTCP_USR*)&RTCP)->TraceStr(szOutStr));
  1228. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1229. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1230. return 0;
  1231. };
  1232. } M3G_AUDIO_OUTPUT_DEST_USR;
  1233. typedef struct tagM3G_AUDIO_OUTPUT_USR: public tagM3G_AUDIO_OUTPUT{
  1234. tagM3G_AUDIO_OUTPUT_USR() { Init(); };
  1235. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1236. INT GetSize() {
  1237. return sizeof(*this);
  1238. };
  1239. VOID SetValid(UCHAR vValid)
  1240. {
  1241. ucValid = vValid;
  1242. };
  1243. VOID SetDest(UCHAR vDestNum, M3G_AUDIO_OUTPUT_DEST *pDest)
  1244. {
  1245. ucDestNum = vDestNum;
  1246. if(ucDestNum>MAX_M3G_AUDIO_OUTPUT_DEST_NUM) ucDestNum=MAX_M3G_AUDIO_OUTPUT_DEST_NUM;
  1247. if(pDest && ucDestNum>0) {
  1248. memcpy(Dest, pDest, sizeof(M3G_AUDIO_OUTPUT_DEST)*ucDestNum);
  1249. }
  1250. };
  1251. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1252. {
  1253. CHAR szTemp[TEMP_STR_LEN];
  1254. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,DestNum=%d, Dest<",
  1255. pszParamName?pszParamName:"AudioOutput", ucValid, ucDestNum);
  1256. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1257. CHAR szIndex[16];
  1258. if(ucDestNum>MAX_M3G_AUDIO_OUTPUT_DEST_NUM) ucDestNum=MAX_M3G_AUDIO_OUTPUT_DEST_NUM;
  1259. for(INT i=0; i<ucDestNum; i++) {
  1260. sprintf(szIndex, "%d", i);
  1261. FAILRETN(((M3G_AUDIO_OUTPUT_DEST_USR*)&Dest[i])->TraceStr(szOutStr, szIndex));
  1262. }
  1263. _snprintf(szTemp, TEMP_STR_LEN, ">> ");
  1264. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1265. return 0;
  1266. };
  1267. } M3G_AUDIO_OUTPUT_USR;
  1268. typedef struct tagM3G_CHAN_TYPE_AUDIO_PARAM_USR: public tagM3G_CHAN_TYPE_AUDIO_PARAM{
  1269. tagM3G_CHAN_TYPE_AUDIO_PARAM_USR() { Init(); };
  1270. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1271. INT GetSize() {
  1272. return sizeof(*this);
  1273. };
  1274. VOID SetInput(M3G_AUDIO_INPUT *pInput)
  1275. {
  1276. if(pInput) memcpy(&Input, pInput, sizeof(M3G_AUDIO_INPUT));
  1277. };
  1278. VOID SetDecoder(M3G_AUDIO_DECODER *pDecoder)
  1279. {
  1280. if(pDecoder) memcpy(&Decoder, pDecoder, sizeof(M3G_AUDIO_DECODER));
  1281. };
  1282. VOID SetToolBox(M3G_AUDIO_TOOLBOX *pToolBox)
  1283. {
  1284. if(pToolBox) memcpy(&ToolBox, pToolBox, sizeof(M3G_AUDIO_TOOLBOX));
  1285. };
  1286. VOID SetEncoder(M3G_AUDIO_ENCODER *pEncoder)
  1287. {
  1288. if(pEncoder) memcpy(&Encoder, pEncoder, sizeof(M3G_AUDIO_ENCODER));
  1289. };
  1290. VOID SetOutput(M3G_AUDIO_OUTPUT *pOutput)
  1291. {
  1292. if(pOutput) memcpy(&Output, pOutput, sizeof(M3G_AUDIO_OUTPUT));
  1293. };
  1294. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1295. {
  1296. CHAR szTemp[TEMP_STR_LEN];
  1297. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"AudioParm");
  1298. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1299. FAILRETN(((M3G_AUDIO_INPUT_USR*)&Input)->TraceStr(szOutStr, "Input"));
  1300. FAILRETN(((M3G_AUDIO_DECODER_USR*)&Decoder)->TraceStr(szOutStr, "Decoder"));
  1301. FAILRETN(((M3G_AUDIO_TOOLBOX_USR*)&ToolBox)->TraceStr(szOutStr, "ToolBox"));
  1302. FAILRETN(((M3G_AUDIO_ENCODER_USR*)&Encoder)->TraceStr(szOutStr, "Encoder"));
  1303. FAILRETN(((M3G_AUDIO_OUTPUT_USR*)&Output)->TraceStr(szOutStr, "Output"));
  1304. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1305. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1306. return 0;
  1307. };
  1308. }M3G_CHAN_TYPE_AUDIO_PARAM_USR;
  1309. typedef struct tagM3G_CHAN_PARAM_USR: public tagM3G_CHAN_PARAM {
  1310. tagM3G_CHAN_PARAM_USR() { Init(); };
  1311. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1312. INT GetSize()
  1313. {
  1314. INT iRetVal= 0;
  1315. switch(ucChanType) {
  1316. case M3G_CHAN_TYPE_VOICE: iRetVal = sizeof(ucChanType)+((M3G_CHAN_TYPE_VOICE_PARAM_USR*)&voice)->GetSize(); break;
  1317. case M3G_CHAN_TYPE_VIDEO: iRetVal = sizeof(ucChanType)+((M3G_CHAN_TYPE_VIDEO_PARAM_USR*)&video)->GetSize(); break;
  1318. case M3G_CHAN_TYPE_H324M: iRetVal = sizeof(ucChanType)+((M3G_CHAN_TYPE_H324M_PARAM_USR*)&h324m)->GetSize(); break;
  1319. case M3G_CHAN_TYPE_AUDIO: iRetVal = sizeof(ucChanType)+((M3G_CHAN_TYPE_AUDIO_PARAM_USR*)&audio)->GetSize(); break;
  1320. default: break;
  1321. }
  1322. return iRetVal;
  1323. };
  1324. VOID SetChanType(UCHAR vChanType)
  1325. {
  1326. if(vChanType!=(UCHAR)EHV_NOTHING) ucChanType = vChanType;
  1327. };
  1328. VOID SetVoice(M3G_CHAN_TYPE_VOICE_PARAM_USR* pVoiceParm)
  1329. {
  1330. if(pVoiceParm != NULL) memcpy(&voice, pVoiceParm, sizeof(M3G_CHAN_TYPE_VOICE_PARAM));
  1331. };
  1332. VOID SetVideo(M3G_CHAN_TYPE_VIDEO_PARAM_USR* pVideoParm)
  1333. {
  1334. if(pVideoParm != NULL) memcpy(&video, pVideoParm, sizeof(M3G_CHAN_TYPE_VIDEO_PARAM));
  1335. }
  1336. VOID SetH324m(M3G_CHAN_TYPE_H324M_PARAM_USR* pH324mParm)
  1337. {
  1338. if(pH324mParm != NULL) memcpy(&h324m, pH324mParm, sizeof(M3G_CHAN_TYPE_H324M_PARAM));
  1339. }
  1340. VOID SetAudio(M3G_CHAN_TYPE_AUDIO_PARAM_USR* pAudioParm)
  1341. {
  1342. if(pAudioParm != NULL) memcpy(&audio, pAudioParm, sizeof(M3G_CHAN_TYPE_AUDIO_PARAM));
  1343. }
  1344. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1345. {
  1346. szOutStr[0] = 0;
  1347. CHAR szTemp[TEMP_STR_LEN];
  1348. _snprintf(szTemp, TEMP_STR_LEN, "%s<ChanType=%d,", pszParamName?pszParamName:"ChanParm", ucChanType);
  1349. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1350. switch(ucChanType) {
  1351. case M3G_CHAN_TYPE_VOICE:
  1352. FAILRETN(((M3G_CHAN_TYPE_VOICE_PARAM_USR*)&voice)->TraceStr(szOutStr, "voice"));
  1353. break;
  1354. case M3G_CHAN_TYPE_VIDEO:
  1355. FAILRETN(((M3G_CHAN_TYPE_VIDEO_PARAM_USR*)&video)->TraceStr(szOutStr, "video"));
  1356. break;
  1357. case M3G_CHAN_TYPE_H324M:
  1358. FAILRETN(((M3G_CHAN_TYPE_H324M_PARAM_USR*)&h324m)->TraceStr(szOutStr, "h324m"));
  1359. break;
  1360. case M3G_CHAN_TYPE_AUDIO:
  1361. FAILRETN(((M3G_CHAN_TYPE_AUDIO_PARAM_USR*)&audio)->TraceStr(szOutStr, "audio"));
  1362. break;
  1363. default:
  1364. _snprintf(szTemp, TEMP_STR_LEN, "ERROR: Unknown channel type ");
  1365. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1366. break;
  1367. }
  1368. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1369. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1370. return 0;
  1371. };
  1372. }M3G_CHAN_PARAM_USR;
  1373. typedef struct tagM3G_CHAN_EXINFO_USR: public tagM3G_CHAN_EXINFO{
  1374. tagM3G_CHAN_EXINFO_USR() { Init(); };
  1375. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1376. INT GetSize() { return sizeof(*this); };
  1377. VOID SetValue(UCHAR vValid, M3GDEV vVideoDev=0, UCHAR vVideoMode=0, M3GDEV vAudioDev=0, UCHAR vAudioMode=0)
  1378. {
  1379. ucValid = vValid;
  1380. if(ucValid == 0) return;
  1381. if(ucValid == 1) {
  1382. if(vVideoDev!=(M3GDEV)EHV_NOTHING) uVoiceRelated.VideoDev = vVideoDev;
  1383. return;
  1384. }
  1385. if(ucValid == 2) {
  1386. if(vAudioMode!=(UCHAR)EHV_NOTHING) uH324mRelated.ucAudioMode = vAudioMode;
  1387. if(vAudioDev!=(M3GDEV)EHV_NOTHING) uH324mRelated.AudioDev = vAudioDev;
  1388. if(vVideoMode!=(UCHAR)EHV_NOTHING) uH324mRelated.ucVideoMode = vVideoMode;
  1389. if(vVideoDev!=(M3GDEV)EHV_NOTHING) uH324mRelated.VideoDev = vVideoDev;
  1390. }
  1391. };
  1392. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1393. {
  1394. szOutStr[0] = 0;
  1395. CHAR szTemp[TEMP_STR_LEN];
  1396. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,", pszParamName?pszParamName:"ChanExInfo", ucValid);
  1397. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1398. switch(ucValid) {
  1399. case 0: break;
  1400. case 1:
  1401. _snprintf(szTemp, TEMP_STR_LEN, "VoiceRela<VideoDev=%d> ", uVoiceRelated.VideoDev);
  1402. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1403. break;
  1404. case 2:
  1405. _snprintf(szTemp, TEMP_STR_LEN, "H324mRela<AudioMode=%d, AudioDev=%d, VideoMode=%d, VideoDev=%d> ",
  1406. uH324mRelated.ucAudioMode, uH324mRelated.AudioDev, uH324mRelated.ucVideoMode, uH324mRelated.VideoDev);
  1407. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1408. break;
  1409. default:
  1410. _snprintf(szTemp, TEMP_STR_LEN, "ERROR: Unknown type ");
  1411. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1412. break;
  1413. }
  1414. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1415. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1416. return 0;
  1417. };
  1418. }M3G_CHAN_EXINFO_USR;
  1419. typedef struct tagM3G_FILE_BIN_PARAMS_USR: public tagM3G_FILE_BIN_PARAMS{
  1420. tagM3G_FILE_BIN_PARAMS_USR() { Init(); };
  1421. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1422. INT GetSize() { return sizeof(*this); };
  1423. VOID SetValue(UINT vFragmentSize=160)
  1424. {
  1425. if(vFragmentSize!=(UINT)EHV_NOTHING) FragmentSize = vFragmentSize;
  1426. };
  1427. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1428. {
  1429. CHAR szTemp[TEMP_STR_LEN];
  1430. _snprintf(szTemp, TEMP_STR_LEN, "%s<FragmentSize=%d> ", pszParamName?pszParamName:"Bin",
  1431. FragmentSize);
  1432. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1433. return 0;
  1434. };
  1435. } M3G_FILE_BIN_PARAMS_USR, M3G_FILE_AMR_PARAMS_USR;
  1436. typedef struct tagM3G_FILE_WAV_PARAMS_USR: public tagM3G_FILE_WAV_PARAMS{
  1437. tagM3G_FILE_WAV_PARAMS_USR() { Init(); };
  1438. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1439. INT GetSize() { return sizeof(*this); };
  1440. VOID SetValue(UINT vCoder=0, UINT vBlockSize=M3G_WAV_BLOCK_SIZE_5MS)
  1441. {
  1442. if(vCoder!=(UINT)EHV_NOTHING) ulCoder = vCoder;
  1443. if(vBlockSize!=(UINT)EHV_NOTHING) ulBlockSize = vBlockSize;
  1444. };
  1445. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1446. {
  1447. CHAR szTemp[TEMP_STR_LEN];
  1448. _snprintf(szTemp, TEMP_STR_LEN, "%s<Coder=%d,BlockSize=%d> ", pszParamName?pszParamName:"Wav",
  1449. ulCoder, ulBlockSize);
  1450. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1451. return 0;
  1452. };
  1453. } M3G_FILE_WAV_PARAMS_USR;
  1454. typedef struct tagM3G_FILE_AV_PLAY_TRACK_PARAM_USR: public tagM3G_FILE_AV_PLAY_TRACK_PARAM{
  1455. tagM3G_FILE_AV_PLAY_TRACK_PARAM_USR() { Init(); };
  1456. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1457. INT GetSize() { return sizeof(*this); };
  1458. VOID SetValue(UCHAR vSampleType=M3G_SAMPLE_TYPE_AMR_NB,
  1459. UCHAR vTimeStampSource=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS, USHORT vFPS=10)
  1460. {
  1461. if(vSampleType!=(UCHAR)EHV_NOTHING) ucSampleType = vSampleType;
  1462. if(vTimeStampSource!=(UCHAR)EHV_NOTHING) ucTimeStampSource = vTimeStampSource;
  1463. if(vFPS!=(USHORT)EHV_NOTHING) usFPS = vFPS;
  1464. };
  1465. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1466. {
  1467. CHAR szTemp[TEMP_STR_LEN];
  1468. _snprintf(szTemp, TEMP_STR_LEN, "%s<ST=%d,TSS=%d,FPS=%d> ",
  1469. pszParamName?pszParamName:"Av", ucSampleType, ucTimeStampSource, usFPS);
  1470. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1471. return 0;
  1472. };
  1473. } M3G_FILE_AV_PLAY_TRACK_PARAM_USR;
  1474. typedef struct tagM3G_FILE_AV_PLAY_PARAMS_USR: public tagM3G_FILE_AV_PLAY_PARAMS{
  1475. tagM3G_FILE_AV_PLAY_PARAMS_USR() { Init(); };
  1476. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1477. INT GetSize() { return sizeof(*this); };
  1478. VOID SetValue(UCHAR vVoiceST=M3G_SAMPLE_TYPE_AMR_NB,
  1479. UCHAR vVoiceTSS=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1480. USHORT vVoiceFPS=10,
  1481. UCHAR vVideoST=M3G_SAMPLE_TYPE_H263,
  1482. UCHAR vVideoTSS=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1483. USHORT vVideoFPS=10 )
  1484. {
  1485. ucTrackNum = 0;
  1486. if(vVoiceST != (UCHAR)EHV_NOTHING) {
  1487. ucTrackNum++;
  1488. ((M3G_FILE_AV_PLAY_TRACK_PARAM_USR*)&TrackParam[0])->SetValue(vVoiceST, vVoiceTSS, vVoiceFPS);
  1489. }
  1490. if(vVideoST != (UCHAR)EHV_NOTHING) {
  1491. ucTrackNum++;
  1492. ((M3G_FILE_AV_PLAY_TRACK_PARAM_USR*)&TrackParam[1])->SetValue(vVideoST, vVideoTSS, vVideoFPS);
  1493. }
  1494. };
  1495. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1496. {
  1497. CHAR szTemp[TEMP_STR_LEN];
  1498. _snprintf(szTemp, TEMP_STR_LEN, "%s<TrackNum=%d,", pszParamName?pszParamName:"Av", ucTrackNum);
  1499. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1500. CHAR szIndex[10];
  1501. for(INT i=0; i<MAX_TRACK_NUM; i++) {
  1502. sprintf(szIndex, "%d", i);
  1503. if(i>=ucTrackNum) break;
  1504. FAILRETN(((M3G_FILE_AV_PLAY_TRACK_PARAM_USR*)&TrackParam[i])->TraceStr(szOutStr, szIndex));
  1505. }
  1506. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1507. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1508. return 0;
  1509. };
  1510. } M3G_FILE_AV_PLAY_PARAMS_USR;
  1511. typedef struct tagM3G_FILE_AV_REC_TRACK_PARAM_USR: public tagM3G_FILE_AV_REC_TRACK_PARAM{
  1512. tagM3G_FILE_AV_REC_TRACK_PARAM_USR() { Init(); };
  1513. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1514. INT GetSize() { return sizeof(*this); };
  1515. VOID SetValue(UCHAR vSampleType=M3G_SAMPLE_TYPE_H263,
  1516. UCHAR vTimeStampSource=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1517. UINT vWidth=176, UINT vHeight=144, USHORT vFPS=10)
  1518. {
  1519. if(vSampleType!=(UCHAR)EHV_NOTHING) ucSampleType = vSampleType;
  1520. if(vTimeStampSource!=(UCHAR)EHV_NOTHING) ucTimeStampSource = vTimeStampSource;
  1521. if(vWidth!=(UINT)EHV_NOTHING) ulWidth = vWidth;
  1522. if(vHeight!=(UINT)EHV_NOTHING) ulHeight = vHeight;
  1523. if(vFPS!=(USHORT)EHV_NOTHING) usFPS = vFPS;
  1524. };
  1525. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1526. {
  1527. CHAR szTemp[TEMP_STR_LEN];
  1528. _snprintf(szTemp, TEMP_STR_LEN, "%s<ST=%d,TSS=%d,W=%d,H=%d,FPS=%d> ",
  1529. pszParamName?pszParamName:"Av", ucSampleType, ucTimeStampSource, ulWidth, ulHeight, usFPS);
  1530. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1531. return 0;
  1532. };
  1533. } M3G_FILE_AV_REC_TRACK_PARAM_USR;
  1534. typedef struct tagM3G_FILE_AV_REC_PARAMS_USR: public tagM3G_FILE_AV_REC_PARAMS{
  1535. tagM3G_FILE_AV_REC_PARAMS_USR() { Init(); };
  1536. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1537. INT GetSize() { return sizeof(*this); };
  1538. VOID SetValue(UCHAR vHintTracks=0,
  1539. UCHAR vVoiceST=M3G_SAMPLE_TYPE_AMR_NB,
  1540. UCHAR vVoiceTSS=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1541. UINT vVoiceW=176,
  1542. UINT vVoiceH=144,
  1543. USHORT vVoiceFPS=10,
  1544. UCHAR vVideoST=M3G_SAMPLE_TYPE_H263,
  1545. UCHAR vVideoTSS=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1546. UINT vVideoW=176,
  1547. UINT vVideoH=144,
  1548. USHORT vVideoFPS=10 )
  1549. {
  1550. if(vHintTracks!=(UCHAR)EHV_NOTHING) ucHintTracks = vHintTracks;
  1551. ucTrackNum =0;
  1552. if(vVoiceST!=(UCHAR)EHV_NOTHING) {
  1553. ucTrackNum++;
  1554. ((M3G_FILE_AV_REC_TRACK_PARAM_USR*)&TrackParam[0])->SetValue(vVoiceST, vVoiceTSS, vVoiceW, vVoiceH, vVoiceFPS);
  1555. }
  1556. if(vVideoST!=(UCHAR)EHV_NOTHING) {
  1557. ucTrackNum++;
  1558. ((M3G_FILE_AV_REC_TRACK_PARAM_USR*)&TrackParam[1])->SetValue(vVideoST, vVideoTSS, vVideoW, vVideoH, vVideoFPS);
  1559. }
  1560. };
  1561. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1562. {
  1563. CHAR szTemp[TEMP_STR_LEN];
  1564. _snprintf(szTemp, TEMP_STR_LEN, "%s<HT=%d,TrackNum=%d,", pszParamName?pszParamName:"Av",
  1565. ucHintTracks, ucTrackNum);
  1566. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1567. CHAR szIndex[10];
  1568. for(INT i=0; i<MAX_TRACK_NUM; i++) {
  1569. sprintf(szIndex, "%d", i);
  1570. if(i>=ucTrackNum) break;
  1571. FAILRETN(((M3G_FILE_AV_REC_TRACK_PARAM_USR*)&TrackParam[i])->TraceStr(szOutStr, szIndex));
  1572. }
  1573. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1574. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1575. return 0;
  1576. };
  1577. } M3G_FILE_AV_REC_PARAMS_USR;
  1578. typedef struct tagM3G_XPB_USR: public tagM3G_XPB{
  1579. tagM3G_XPB_USR() { Init(); };
  1580. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1581. INT GetSize() { return sizeof(*this); };
  1582. VOID SetAmrFormat(UINT vFragmentSize=0)
  1583. {
  1584. ucFileType =M3G_FILE_TYPE_AMR;
  1585. ((M3G_FILE_AMR_PARAMS_USR*)&amr)->SetValue(vFragmentSize);
  1586. };
  1587. VOID SetBinFormat(UINT vFragmentSize=160)
  1588. {
  1589. ucFileType =M3G_FILE_TYPE_BIN;
  1590. ((M3G_FILE_BIN_PARAMS_USR*)&bin)->SetValue(vFragmentSize);
  1591. };
  1592. VOID SetWavFormat(UINT vCoder=0, UINT vBlockSize=M3G_WAV_BLOCK_SIZE_5MS)
  1593. {
  1594. ucFileType =M3G_FILE_TYPE_WAV;
  1595. ((M3G_FILE_WAV_PARAMS_USR*)&wav)->SetValue(vCoder, vBlockSize);
  1596. };
  1597. VOID SetAvpFormat(eM3G_FILE_TYPE vFileType=M3G_FILE_TYPE_3GP,
  1598. UCHAR vVoiceST=M3G_SAMPLE_TYPE_AMR_NB,
  1599. UCHAR vVoiceTSS=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1600. USHORT vVoiceFPS=10,
  1601. UCHAR vVideoST=M3G_SAMPLE_TYPE_H263,
  1602. UCHAR vVideoTSS=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1603. USHORT vVideoFPS=10 )
  1604. {
  1605. if(vFileType!=(UCHAR)EHV_NOTHING) ucFileType = vFileType;
  1606. ((M3G_FILE_AV_PLAY_PARAMS_USR*)&avp)->SetValue(vVoiceST, vVoiceTSS, vVoiceFPS, vVideoST, vVideoTSS, vVideoFPS);
  1607. };
  1608. VOID SetAvrFormat(eM3G_FILE_TYPE vFileType=M3G_FILE_TYPE_3GP, UCHAR vHintTracks=0,
  1609. UCHAR vVoiceST=M3G_SAMPLE_TYPE_AMR_NB,
  1610. UCHAR vVoiceTSS=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1611. UINT vVoiceW=176,
  1612. UINT vVoiceH=144,
  1613. USHORT vVoiceFPS=10,
  1614. UCHAR vVideoST=M3G_SAMPLE_TYPE_H263,
  1615. UCHAR vVideoTSS=M3G_FILE_TIMING_SOURCE_SAMPLE_TIMESTAMPS,
  1616. UINT vVideoW=176,
  1617. UINT vVideoH=144,
  1618. USHORT vVideoFPS=10 )
  1619. {
  1620. if(vFileType!=(UCHAR)EHV_NOTHING) ucFileType = vFileType;
  1621. ((M3G_FILE_AV_REC_PARAMS_USR*)&avr)->SetValue(vHintTracks, vVoiceST, vVoiceTSS, vVoiceW, vVoiceH, vVoiceFPS,
  1622. vVideoST, vVideoTSS, vVideoW, vVideoH, vVideoFPS);
  1623. };
  1624. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL, BOOL bIsRec = FALSE)
  1625. {
  1626. szOutStr[0] = 0;
  1627. CHAR szTemp[TEMP_STR_LEN];
  1628. _snprintf(szTemp, TEMP_STR_LEN, "%s<FileType=%d,", pszParamName?pszParamName:"xpb", ucFileType);
  1629. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1630. if(M3G_FILE_TYPE_WAV==ucFileType){
  1631. FAILRETN(((M3G_FILE_WAV_PARAMS_USR*)&wav)->TraceStr(szOutStr, "wav"));
  1632. } else if(M3G_FILE_TYPE_BIN==ucFileType) {
  1633. FAILRETN(((M3G_FILE_BIN_PARAMS_USR*)&bin)->TraceStr(szOutStr, "Bin"));
  1634. } else if(M3G_FILE_TYPE_AMR==ucFileType) {
  1635. FAILRETN(((M3G_FILE_AMR_PARAMS_USR*)&amr)->TraceStr(szOutStr, "Amr"));
  1636. } else {
  1637. if(bIsRec) {
  1638. FAILRETN(((M3G_FILE_AV_REC_PARAMS_USR*)&avr)->TraceStr(szOutStr, "avr"));
  1639. } else {
  1640. FAILRETN(((M3G_FILE_AV_PLAY_PARAMS_USR*)&avp)->TraceStr(szOutStr, "avp"));
  1641. }
  1642. }
  1643. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1644. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1645. return 0;
  1646. };
  1647. }M3G_XPB_USR;
  1648. typedef struct tagM3G_MEDIA_EX_USR: public tagM3G_MEDIA_EX{
  1649. tagM3G_MEDIA_EX_USR() { Init(); };
  1650. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1651. INT GetSize() { return sizeof(*this); };
  1652. VOID SetValue(eM3G_VOICE_CODER vVoCoder=M3G_VOCODER_GSM_AMR59_OA, INT vVolumeGain=0)
  1653. {
  1654. if(vVoCoder!=(UCHAR)EHV_NOTHING) ucVoCoder = vVoCoder;
  1655. if(vVolumeGain!=(INT)EHV_NOTHING) iVolumeGain = vVolumeGain;
  1656. };
  1657. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1658. {
  1659. szOutStr[0] = 0;
  1660. CHAR szTemp[TEMP_STR_LEN];
  1661. _snprintf(szTemp, TEMP_STR_LEN, "%s<VoCoder=%d,VolumeGain=%d> ",
  1662. pszParamName?pszParamName:"MediaEx", ucVoCoder, iVolumeGain);
  1663. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1664. return 0;
  1665. };
  1666. }M3G_MEDIA_EX_USR;
  1667. typedef struct tagM3G_DIGIT_INFO_USR: public tagM3G_DIGIT_INFO{
  1668. tagM3G_DIGIT_INFO_USR() { Init(); };
  1669. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1670. INT GetSize() { return sizeof(*this); };
  1671. VOID SetValue(CHAR* vDigits, UCHAR vDigitNum, UCHAR vDigitDir=DIGIT_TDM,
  1672. UCHAR vDigitType=DIGIT_ALPHA_NUMERIC, UCHAR vDuration=75, UCHAR vInterval=40)
  1673. {
  1674. if(vDigitType!=(UCHAR)EHV_NOTHING) ucDigitType = vDigitType;
  1675. if(vDigitDir!=(UCHAR)EHV_NOTHING) ucDigitDir = vDigitDir;
  1676. if(vDigitNum >= sizeof(Digits)) {
  1677. ucDigitNum = sizeof(Digits) - 1;
  1678. } else ucDigitNum = vDigitNum;
  1679. if(vDigits && ucDigitNum>0) memcpy(Digits, vDigits, vDigitNum);
  1680. if(vDuration!=(UCHAR)EHV_NOTHING) ucDuration = vDuration;
  1681. if(vInterval!=(UCHAR)EHV_NOTHING) ucInterval = vInterval;
  1682. };
  1683. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1684. {
  1685. szOutStr[0] = 0;
  1686. CHAR szTemp[TEMP_STR_LEN];
  1687. _snprintf(szTemp, TEMP_STR_LEN, "%s<DigitType=%d,DigitDir=%d,DigitNum=%d, "
  1688. "Digits=%s, Duration=%d, Interval=%d> ", pszParamName?pszParamName:"DigitInfo",
  1689. ucDigitType, ucDigitDir, ucDigitNum, Digits, ucDuration, ucInterval);
  1690. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1691. return 0;
  1692. };
  1693. } M3G_DIGIT_INFO_USR;
  1694. typedef struct tagM3G_TCS_INFO_USR: public tagM3G_TCS_INFO{
  1695. tagM3G_TCS_INFO_USR() { Init(); };
  1696. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1697. INT GetSize() { return sizeof(*this); };
  1698. VOID SetValue()
  1699. {
  1700. };
  1701. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1702. {
  1703. szOutStr[0] = 0;
  1704. CHAR szTemp[TEMP_STR_LEN];
  1705. _snprintf(szTemp, TEMP_STR_LEN, "%s<ST=%s,", pszParamName?pszParamName:"TcsInfo",
  1706. GetTcsStatus(ucTCSStatus));
  1707. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1708. FAILRETN(((M3G_TERM_CAPS_USR*)&localcaps)->TraceStr(szOutStr, "localcaps"));
  1709. FAILRETN(((M3G_TERM_CAPS_USR*)&remotecaps)->TraceStr(szOutStr, "remotecaps"));
  1710. FAILRETN(((M3G_TERM_CAPS_USR*)&matchcaps)->TraceStr(szOutStr, "matchcaps"));
  1711. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1712. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1713. return 0;
  1714. };
  1715. CHAR *GetTcsStatus(UCHAR vStatus)
  1716. {
  1717. switch(vStatus) {
  1718. case M3G_TCS_STATUS_NONE: return (CHAR *)"TCSS_NONE";
  1719. case M3G_TCS_STATUS_REQUEST: return (CHAR *)"TCSS_REQUEST";
  1720. case M3G_TCS_STATUS_STARTED: return (CHAR *)"TCSS_STARTED";
  1721. case M3G_TCS_STATUS_RESOLVED: return (CHAR *)"TCSS_RESOLVED";
  1722. case M3G_TCS_STATUS_RESOLVED_FINISHED: return (CHAR *)"TCSS_RESOLVED_FINISHED";
  1723. case M3G_TCS_STATUS_ERROR: return (CHAR *)"TCSS_ERROR";
  1724. case M3G_TCS_STATUS_IDLE: return (CHAR *)"TCSS_IDLE";
  1725. default: return (CHAR *)"TCSS_UNKNOWN";
  1726. }
  1727. return (CHAR *)"TCSS_UNKNOWN";
  1728. };
  1729. }M3G_TCS_INFO_USR;
  1730. typedef struct tagM3G_VIDEO_FAST_UPDATE_GOB_USR: public tagM3G_VIDEO_FAST_UPDATE_GOB{
  1731. tagM3G_VIDEO_FAST_UPDATE_GOB_USR() { Init(); };
  1732. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1733. INT GetSize() { return sizeof(*this); };
  1734. VOID SetValue(UINT vFirstGOB=0, UINT vNumberOfGOBs=0)
  1735. {
  1736. if(vFirstGOB!=(UINT)EHV_NOTHING) ulFirstGOB = vFirstGOB;
  1737. if(vNumberOfGOBs!=(UINT)EHV_NOTHING) ulNumberOfGOBs = vNumberOfGOBs;
  1738. };
  1739. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1740. {
  1741. CHAR szTemp[TEMP_STR_LEN];
  1742. _snprintf(szTemp, TEMP_STR_LEN, "%s<FirstGOB=%d,NumberOfGOBs=%d> ",
  1743. pszParamName?pszParamName:"GOB", ulFirstGOB, ulNumberOfGOBs);
  1744. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1745. return 0;
  1746. };
  1747. } M3G_VIDEO_FAST_UPDATE_GOB_USR;
  1748. typedef struct tagM3G_VIDEO_FAST_UPDATE_MB_USR: public tagM3G_VIDEO_FAST_UPDATE_MB{
  1749. tagM3G_VIDEO_FAST_UPDATE_MB_USR() { Init(); };
  1750. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1751. INT GetSize() { return sizeof(*this); };
  1752. VOID SetValue(UINT vFirstGOB=0, UINT vFirstMB=0, UINT vNumberOfMBs=0)
  1753. {
  1754. if(vFirstGOB!=(UINT)EHV_NOTHING) ulFirstGOB = vFirstGOB;
  1755. if(vFirstMB!=(UINT)EHV_NOTHING) ulFirstMB = vFirstMB;
  1756. if(vNumberOfMBs!=(UINT)EHV_NOTHING) ulNumberOfMBs = vNumberOfMBs;
  1757. };
  1758. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1759. {
  1760. CHAR szTemp[TEMP_STR_LEN];
  1761. _snprintf(szTemp, TEMP_STR_LEN, "%s<FirstGOB=%d,FirstMB=%d,NumberOfMBs=%d> ",
  1762. pszParamName?pszParamName:"MB", ulFirstGOB, ulFirstMB, ulNumberOfMBs);
  1763. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1764. return 0;
  1765. };
  1766. } M3G_VIDEO_FAST_UPDATE_MB_USR;
  1767. typedef struct tagM3G_SKEW_INDICATION_USR: public tagM3G_SKEW_INDICATION{
  1768. tagM3G_SKEW_INDICATION_USR() { Init(); };
  1769. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1770. INT GetSize() { return sizeof(*this); };
  1771. VOID SetValue(UINT vSkew=0)
  1772. {
  1773. if(vSkew!=(UINT)EHV_NOTHING) ulSkew = vSkew;
  1774. };
  1775. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1776. {
  1777. CHAR szTemp[TEMP_STR_LEN];
  1778. _snprintf(szTemp, TEMP_STR_LEN, "%s<Skew=%d> ", pszParamName?pszParamName:"SKEW", ulSkew);
  1779. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1780. return 0;
  1781. };
  1782. } M3G_SKEW_INDICATION_USR;
  1783. typedef struct tagM3G_H245_MISC_INFO_USR: public tagM3G_H245_MISC_INFO{
  1784. tagM3G_H245_MISC_INFO_USR() { Init(); };
  1785. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1786. INT GetSize() { return sizeof(*this); };
  1787. VOID SetValue()
  1788. {
  1789. ucLogicChanNo =0;
  1790. ulMiscCmdId =M3G_MISC_ID_VIDEO_FAST_UPDATE_GOB;
  1791. ((M3G_VIDEO_FAST_UPDATE_GOB_USR*)&vfug)->SetValue();
  1792. };
  1793. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1794. {
  1795. szOutStr[0] = 0;
  1796. CHAR szTemp[TEMP_STR_LEN];
  1797. _snprintf(szTemp, TEMP_STR_LEN, "%s<LogicChanNo=%d,MiscCmdId=%d ",
  1798. pszParamName?pszParamName:"MISC", ucLogicChanNo, ulMiscCmdId);
  1799. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1800. switch(ulMiscCmdId) {
  1801. case M3G_MISC_ID_VIDEO_FAST_UPDATE_GOB:
  1802. FAILRETN(((M3G_VIDEO_FAST_UPDATE_GOB_USR*)&vfug)->TraceStr(szOutStr, "GOB"));
  1803. break;
  1804. case M3G_MISC_ID_VIDEO_FAST_UPDATE_MB:
  1805. FAILRETN(((M3G_VIDEO_FAST_UPDATE_MB_USR*)&vfug)->TraceStr(szOutStr, "MB"));
  1806. break;
  1807. case M3G_MISC_ID_SKEW_INDICATION:
  1808. FAILRETN(((M3G_SKEW_INDICATION_USR*)&vfug)->TraceStr(szOutStr, "SKEW"));
  1809. break;
  1810. default: break;
  1811. }
  1812. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1813. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1814. return 0;
  1815. };
  1816. } M3G_H245_MISC_INFO_USR;
  1817. typedef struct tagM3G_LC_PARAM_USR: public tagM3G_LC_PARAM{
  1818. tagM3G_LC_PARAM_USR() { Init(); };
  1819. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1820. INT GetSize() { return sizeof(*this); };
  1821. VOID SetValue() { };
  1822. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1823. {
  1824. szOutStr[0] = 0;
  1825. CHAR szTemp[TEMP_STR_LEN];
  1826. _snprintf(szTemp, TEMP_STR_LEN, "%s<LC=%d,Status=%s,", pszParamName?pszParamName:"LcParm",
  1827. ucLogicChanNo, GetLcStatusName(ucLCStatus));
  1828. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1829. FAILRETN(((M3G_MEDIA_CHAN_USR*)&parm)->TraceStr(szOutStr, "MediaChan"));
  1830. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  1831. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1832. return 0;
  1833. };
  1834. CHAR *GetLcStatusName(UCHAR vLcStatus)
  1835. {
  1836. switch(vLcStatus) {
  1837. case M3G_LC_STATUS_CREATED: return (CHAR *)"LCS_CREATED";
  1838. case M3G_LC_STATUS_REQUEST: return (CHAR *)"LCS_REQUEST";
  1839. case M3G_LC_STATUS_STARTED: return (CHAR *)"LCS_STARTED";
  1840. case M3G_LC_STATUS_RESOLVED: return (CHAR *)"LCS_RESOLVED";
  1841. case M3G_LC_STATUS_RESOLVED_FINISHED: return (CHAR *)"LCS_RESOLVED_FINISHED";
  1842. case M3G_LC_STATUS_ERROR: return (CHAR *)"LCS_ERROR";
  1843. case M3G_LC_STATUS_IDLE: return (CHAR *)"LCS_IDLE";
  1844. default: return (CHAR *)"LCS_UNKNOWN";
  1845. }
  1846. return (CHAR *)"LCS_UNKNOWN";
  1847. };
  1848. } M3G_LC_PARAM_USR;
  1849. typedef struct tagM3G_CALL_STATUS_USR: public tagM3G_CALL_STATUS{
  1850. tagM3G_CALL_STATUS_USR() { Init(); };
  1851. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1852. INT GetSize() { return sizeof(*this); };
  1853. VOID SetValue() { };
  1854. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1855. {
  1856. szOutStr[0] = 0;
  1857. CHAR szTemp[TEMP_STR_LEN];
  1858. _snprintf(szTemp, TEMP_STR_LEN, "%s<LinkStatus=%s,CPStatus=%s> ",
  1859. pszParamName?pszParamName:"CallStatus", GetLinkStatusName(ucLinkStatus), GetCPStatusName(ucCPStatus));
  1860. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1861. return 0;
  1862. };
  1863. CHAR* GetLinkStatusName(UCHAR vLinkStatus)
  1864. {
  1865. switch(vLinkStatus) {
  1866. case M3G_H223_LINK_STATUS_NONE: return (CHAR*)"HLS_NONE";
  1867. case M3G_H223_LINK_STATUS_SYNCHROZING: return (CHAR*)"HLS_SYNCHROZING";
  1868. case M3G_H223_LINK_STATUS_CONNECTED: return (CHAR*)"HLS_CONNECTED";
  1869. case M3G_H223_LINK_STATUS_ERROR: return (CHAR*)"HLS_ERROR";
  1870. case M3G_H223_LINK_STATUS_IDLE: return (CHAR*)"HLS_IDLE";
  1871. default: return (CHAR *)"HLS_UNKNOWN";
  1872. }
  1873. return (CHAR *)"HLS_UNKNOWN";
  1874. };
  1875. CHAR* GetCPStatusName(UCHAR vCPStatus)
  1876. {
  1877. switch(vCPStatus) {
  1878. case M3G_CP_STATUS_IDLE: return (CHAR*)"CPS_IDLE";
  1879. case M3G_CP_STATUS_INITIALIZING: return (CHAR*)"CPS_INITIALIZING";
  1880. case M3G_CP_STATUS_ACTIVING: return (CHAR*)"CPS_ACTIVING";
  1881. case M3G_CP_STATUS_ACTIVED: return (CHAR*)"CPS_ACTIVED";
  1882. case M3G_CP_STATUS_DEACTIVING: return (CHAR*)"CPS_DEACTIVING";
  1883. case M3G_CP_STATUS_CLEAN_UP: return (CHAR*)"CPS_CLEAN_UP";
  1884. default: return (CHAR *)"CPS_UNKNOWN";
  1885. }
  1886. return (CHAR *)"CPS_UNKNOWN";
  1887. };
  1888. } M3G_CALL_STATUS_USR;
  1889. typedef struct tagM3G_MSD_INFO_USR: public tagM3G_MSD_INFO{
  1890. tagM3G_MSD_INFO_USR() { Init(); };
  1891. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1892. INT GetSize() { return sizeof(*this); };
  1893. VOID SetValue() { };
  1894. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1895. {
  1896. szOutStr[0] = 0;
  1897. CHAR szTemp[TEMP_STR_LEN];
  1898. _snprintf(szTemp, TEMP_STR_LEN, "%s<ST=%s,LocalIsMaster=%d,LocalTermType=%d,RemoteTermType=%d> ",
  1899. pszParamName?pszParamName:"MsdInfo", GetMsdStatusName(ucMsdStatus), ucLocalIsMaster, ucLocalTermType, ucRemoteTermType);
  1900. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1901. return 0;
  1902. };
  1903. CHAR *GetMsdStatusName(UCHAR vMsdStatus)
  1904. {
  1905. switch(vMsdStatus) {
  1906. case M3G_MSD_STATUS_NONE: return (CHAR*)"MSDS_NONE";
  1907. case M3G_MSD_STATUS_REQUEST: return (CHAR*)"MSDS_REQUEST";
  1908. case M3G_MSD_STATUS_STARTED: return (CHAR*)"MSDS_STARTED";
  1909. case M3G_MSD_STATUS_RESOLVED: return (CHAR*)"MSDS_RESOLVED";
  1910. case M3G_MSD_STATUS_RESOLVED_FINISHED: return (CHAR*)"MSDS_RESOLVED_FINISHED";
  1911. case M3G_MSD_STATUS_ERROR: return (CHAR*)"MSDS_ERROR";
  1912. case M3G_MSD_STATUS_IDLE: return (CHAR*)"MSDS_IDLE";
  1913. default: return (CHAR *)"MSDS_UNKNOWN";
  1914. }
  1915. return (CHAR *)"MSDS_UNKNOWN";
  1916. };
  1917. } M3G_MSD_INFO_USR;
  1918. typedef struct tagM3G_LC_INFO_USR: public tagM3G_LC_INFO{
  1919. tagM3G_LC_INFO_USR() { Init(); };
  1920. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1921. INT GetSize() { return sizeof(*this); };
  1922. VOID SetValue() { };
  1923. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1924. {
  1925. szOutStr[0] = 0;
  1926. CHAR szTemp[TEMP_STR_LEN];
  1927. _snprintf(szTemp, TEMP_STR_LEN, "%s<ChanNo=%d,ST=%d,Codec=[%d,%d,%d,%d],IsMuted=%d> ",
  1928. pszParamName?pszParamName:"LcInfo", ucLogicChanNo, ucLCStatus,
  1929. ucCodec[0], ucCodec[1], ucCodec[2], ucCodec[3], ucIsMuted);
  1930. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  1931. return 0;
  1932. };
  1933. } M3G_LC_INFO_USR;
  1934. typedef struct tagISXSIP_IE_SDP_MEDIA_DESC_EX_USR: public ISXSIP_IE_SDP_MEDIA_DESC_EX {
  1935. tagISXSIP_IE_SDP_MEDIA_DESC_EX_USR() { Init(); };
  1936. VOID Init() { memset(this, 0, sizeof(*this) ); };
  1937. INT GetSize() { return sizeof(*this); };
  1938. VOID SetValue() { };
  1939. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  1940. {
  1941. return 0;
  1942. };
  1943. INT GetValueForAudio(eAUDIOCODEC *eCodecIdp, ISXSIP_IE_SDP_MEDIA_DESC_EX *AudioDescp)
  1944. {
  1945. if(MediaType != ISXSIP_SDPMEDIATYPE_AUDIO) return FALSE;
  1946. memcpy(AudioDescp, this, sizeof(ISXSIP_IE_SDP_MEDIA_DESC_EX));
  1947. SIP_CODEC_PAYLOAD_MAP* pCodecMap;
  1948. for(INT j=0; j<(INT)PayLoadNum; j++){
  1949. INT iRet = ISXE_gc_SipGetCodecMap(CODECT_AUDIO, Payload[j], &pCodecMap);
  1950. if(iRet==0){
  1951. //p rintf("MEDIA_DESC, CodecId: %d, PayLoadType=%d, CodecName:%s, MediaPort=%d \n",
  1952. // k, Payload[j], g_SipSdpRtpMap[k].EncodingName, AudioDescp->MediaPort);
  1953. *eCodecIdp = (eAUDIOCODEC)pCodecMap->codec;
  1954. AudioDescp->PayLoadNum=1;
  1955. AudioDescp->Payload[0]=Payload[j];
  1956. return 0;
  1957. }
  1958. }
  1959. return -1;
  1960. };
  1961. INT GetValueForVoice(eM3G_VOICE_CODER *eCodecIdp, ISXSIP_IE_SDP_MEDIA_DESC_EX *VoiceDescp)
  1962. {
  1963. if(MediaType != ISXSIP_SDPMEDIATYPE_AUDIO) return -1;
  1964. memcpy(VoiceDescp, this, sizeof(ISXSIP_IE_SDP_MEDIA_DESC_EX));
  1965. SIP_CODEC_PAYLOAD_MAP* pCodecMap;
  1966. for(INT j=0; j<(INT)PayLoadNum; j++){
  1967. INT iRet = ISXE_gc_SipGetCodecMap(CODECT_VOICE, Payload[j], &pCodecMap);
  1968. if(iRet==0){
  1969. //p rintf("VOICE_DESC, CodecId: %d, PayLoadType=%d, CodecName:%s, MediaPort=%d \n",
  1970. // pCodecMap->codec, Payload[j], pCodecMap->rtpmap.EncodingName, VoiceDescp->MediaPort);
  1971. *eCodecIdp = (eM3G_VOICE_CODER)pCodecMap->codec;
  1972. VoiceDescp->PayLoadNum=2;
  1973. VoiceDescp->Payload[0]=Payload[j];
  1974. VoiceDescp->Payload[1]=101;
  1975. return 0;
  1976. }
  1977. }
  1978. return -1;
  1979. };
  1980. INT GetValueForVideo(eM3G_VIDEO_CODER *eCodecIdp, ISXSIP_IE_SDP_MEDIA_DESC_EX *VideoDescp)
  1981. {
  1982. if(MediaType != ISXSIP_SDPMEDIATYPE_VIDEO) return -1;
  1983. memcpy(VideoDescp, this, sizeof(ISXSIP_IE_SDP_MEDIA_DESC_EX));
  1984. SIP_CODEC_PAYLOAD_MAP* pCodecMap;
  1985. for(INT j=0; j<(INT)PayLoadNum; j++){
  1986. INT iRet = ISXE_gc_SipGetCodecMap(CODECT_VIDEO, Payload[j], &pCodecMap);
  1987. if(iRet==0){
  1988. //p rintf("VIDEO_DESC, CodecId: %d, PayLoadType=%d, CodecName:%s, MediaPort=%d \n",
  1989. // pCodecMap->codec, Payload[j], pCodecMap->rtpmap.EncodingName, VideoDescp->MediaPort);
  1990. *eCodecIdp = (eM3G_VIDEO_CODER)pCodecMap->codec;
  1991. VideoDescp->PayLoadNum=1;
  1992. VideoDescp->Payload[0]=Payload[j];
  1993. return 0;
  1994. }
  1995. }
  1996. return -1;
  1997. };
  1998. }ISXSIP_IE_SDP_MEDIA_DESC_EX_USR;
  1999. typedef struct tagISXSIP_IE_BODY_EX_USR: public ISXSIP_IE_BODY_EX {
  2000. tagISXSIP_IE_BODY_EX_USR() { Init(); };
  2001. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2002. INT GetSize() { return sizeof(*this); };
  2003. VOID SetValue() { };
  2004. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2005. {
  2006. return 0;
  2007. };
  2008. INT GetCallMediaDesc(CHAR* szSrcAddr,
  2009. eM3G_VOICE_CODER *eVoiceCodecp,
  2010. ISXSIP_IE_SDP_MEDIA_DESC_EX* VoiceDescp,
  2011. eM3G_VIDEO_CODER *eVideoCodecp,
  2012. ISXSIP_IE_SDP_MEDIA_DESC_EX* VideoDescp)
  2013. {
  2014. if(Valid == 0) return -1;
  2015. if(BodyPartyType == BodyPartyType_TRANS) return -1;
  2016. INT iLoopNum = u.BodySdp.SdpNum;
  2017. BOOL bGetAddrOk = FALSE;
  2018. BOOL bGetVoiceOk = FALSE;
  2019. BOOL bGetVideoOk = FALSE;
  2020. ISXSIP_IE_BODY_SDP_EX* psdpex = &u.BodySdp;
  2021. for(INT i=0; i<iLoopNum; i++){
  2022. if(psdpex->Sdp[i].Tag == ISXSIP_IE_SDP_TAG_CONNECTION){
  2023. strcpy(szSrcAddr, psdpex->Sdp[i].u.Connection.Addr);
  2024. bGetAddrOk = TRUE;
  2025. continue;
  2026. }
  2027. if(psdpex->Sdp[i].Tag != ISXSIP_IE_SDP_TAG_MEDIA_DESC) continue;
  2028. ISXSIP_IE_SDP_MEDIA_DESC_EX_USR* pmdex = (ISXSIP_IE_SDP_MEDIA_DESC_EX_USR*)&psdpex->Sdp[i].u.MediaDesc;
  2029. if(!bGetVoiceOk) bGetVoiceOk = (pmdex->GetValueForVoice(eVoiceCodecp, VoiceDescp)==0)?TRUE:FALSE;
  2030. if(!bGetVideoOk) bGetVideoOk = (pmdex->GetValueForVideo(eVideoCodecp, VideoDescp)==0)?TRUE:FALSE;
  2031. }
  2032. if(bGetAddrOk && bGetVoiceOk && bGetVideoOk) return 0;
  2033. if(bGetAddrOk && bGetVoiceOk) return 1;
  2034. return -1;
  2035. };
  2036. INT GetCallMediaDesc4Audio(CHAR* szSrcAddr, UINT *AudioCodecp, ISXSIP_IE_SDP_MEDIA_DESC_EX* AudioDescp)
  2037. {
  2038. if(Valid == 0) return -1;
  2039. if(BodyPartyType == BodyPartyType_TRANS) return -1;
  2040. INT iLoopNum = u.BodySdp.SdpNum;
  2041. BOOL bGetAddrOk = FALSE;
  2042. BOOL bGetVoiceOk = FALSE;
  2043. ISXSIP_IE_BODY_SDP_EX* psdpex = &u.BodySdp;
  2044. for(INT i=0; i<iLoopNum; i++){
  2045. if(psdpex->Sdp[i].Tag == ISXSIP_IE_SDP_TAG_CONNECTION){
  2046. strcpy(szSrcAddr, psdpex->Sdp[i].u.Connection.Addr);
  2047. bGetAddrOk = TRUE;
  2048. continue;
  2049. }
  2050. if(psdpex->Sdp[i].Tag != ISXSIP_IE_SDP_TAG_MEDIA_DESC) continue;
  2051. ISXSIP_IE_SDP_MEDIA_DESC_EX_USR* pmdex = (ISXSIP_IE_SDP_MEDIA_DESC_EX_USR*)&psdpex->Sdp[i].u.MediaDesc;
  2052. if(!bGetVoiceOk) bGetVoiceOk = (pmdex->GetValueForAudio((eAUDIOCODEC *)AudioCodecp, AudioDescp)==0)?TRUE:FALSE;
  2053. }
  2054. if(bGetAddrOk && bGetVoiceOk) return 0;
  2055. return -1;
  2056. };
  2057. VOID SetBodySdp_o(ISXSIP_IE_BODY_SDP_EX* pb, CHAR* szConnAddr)
  2058. {
  2059. //o
  2060. INT iIndex = pb->SdpNum;
  2061. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_ORIGIN;
  2062. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_ORIGIN);
  2063. pb->Sdp[iIndex].u.Origin.NetType = ISXSIP_SDPNETTYPE_IN;
  2064. pb->Sdp[iIndex].u.Origin.AddrType = ISXSIP_SDPADDRTYPE_IP4;
  2065. strcpy(pb->Sdp[iIndex].u.Origin.SessionId, "20");
  2066. strcpy(pb->Sdp[iIndex].u.Origin.UserName, "EHang");
  2067. strcpy(pb->Sdp[iIndex].u.Origin.Version, "001");
  2068. strcpy(pb->Sdp[iIndex].u.Origin.Addr, szConnAddr);
  2069. pb->SdpNum++;
  2070. };
  2071. VOID SetBodySdp_s(ISXSIP_IE_BODY_SDP_EX* pb)
  2072. {
  2073. //s
  2074. INT iIndex = pb->SdpNum;
  2075. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_SESSION;
  2076. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_SESSION);
  2077. strcpy(pb->Sdp[iIndex].u.Session.Name, "EH-Call");
  2078. strcpy(pb->Sdp[iIndex].u.Session.Info, "");
  2079. pb->SdpNum++;
  2080. };
  2081. VOID SetBodySdp_c(ISXSIP_IE_BODY_SDP_EX* pb, CHAR* szConnAddr)
  2082. {
  2083. //c
  2084. INT iIndex = pb->SdpNum;
  2085. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_CONNECTION;
  2086. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_CONNECTION);
  2087. pb->Sdp[iIndex].u.Connection.NetType = ISXSIP_SDPNETTYPE_IN;
  2088. pb->Sdp[iIndex].u.Connection.AddrType = ISXSIP_SDPADDRTYPE_IP4;
  2089. sprintf(pb->Sdp[iIndex].u.Connection.Addr, szConnAddr);
  2090. //p rintf("Connection.Addr= %s \n",pb->Sdp[iIndex].u.Connection.Addr);
  2091. pb->SdpNum++;
  2092. };
  2093. VOID SetBodySdp_t(ISXSIP_IE_BODY_SDP_EX* pb)
  2094. {
  2095. //t
  2096. INT iIndex = pb->SdpNum;
  2097. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_SESSION_TIME;
  2098. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_SESSION_TIME);
  2099. pb->Sdp[iIndex].u.SessionTime.Start = 0;
  2100. pb->Sdp[iIndex].u.SessionTime.End = 0;
  2101. pb->SdpNum++;
  2102. };
  2103. VOID SetBodySdp_m(ISXSIP_IE_BODY_SDP_EX* pb, ISXSIP_IE_SDP_MEDIA_DESC_EX* pMediaDesc)
  2104. {
  2105. //m
  2106. INT iIndex = pb->SdpNum;
  2107. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_MEDIA_DESC;
  2108. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_MEDIA_DESC_EX);
  2109. ISXSIP_IE_SDP_MEDIA_DESC_EX *pmdex =(ISXSIP_IE_SDP_MEDIA_DESC_EX *)&pb->Sdp[iIndex].u.MediaDesc;
  2110. memcpy(pmdex, pMediaDesc, sizeof(ISXSIP_IE_SDP_MEDIA_DESC_EX));
  2111. pb->SdpNum++;
  2112. };
  2113. VOID SetBodySdp_rtpmap(ISXSIP_IE_BODY_SDP_EX* pb, ISXSIP_IE_SDP_RTP_MAP* pSdpRtpMap)
  2114. {
  2115. //rtpmap
  2116. INT iIndex = pb->SdpNum;
  2117. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_RTP_MAP;
  2118. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_RTP_MAP);
  2119. ISXSIP_IE_SDP_RTP_MAP* pRtpMap = &pb->Sdp[iIndex].u.RtpMap;
  2120. memcpy(pRtpMap, pSdpRtpMap, sizeof(ISXSIP_IE_SDP_RTP_MAP));
  2121. pb->SdpNum++;
  2122. };
  2123. VOID SetBodySdp_a(ISXSIP_IE_BODY_SDP_EX* pb, CHAR *vAttrName, CHAR *vAttrValue)
  2124. {
  2125. //a
  2126. INT iIndex = pb->SdpNum;
  2127. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_ATTRIBUTE;
  2128. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_ATTRIBUTE);
  2129. strcpy(pb->Sdp[iIndex].u.Attribute.Name, vAttrName);
  2130. strcpy(pb->Sdp[iIndex].u.Attribute.Value, vAttrValue);
  2131. pb->SdpNum++;
  2132. };
  2133. VOID SetBodySdp_mediaencode(ISXSIP_IE_BODY_SDP_EX* pb, UCHAR Payload)
  2134. {
  2135. //mediaencode
  2136. INT iIndex = pb->SdpNum;
  2137. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_MEDIA_ENCODE;
  2138. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_MEDIA_ENCODE);
  2139. pb->Sdp[iIndex].u.MediaEncode.Payload = Payload;
  2140. pb->SdpNum++;
  2141. };
  2142. VOID SetBodySdp_fmtp(ISXSIP_IE_BODY_SDP_EX* pb, ISXSIP_IE_SDP_FMTP_EX* pSdpFmtp)
  2143. {
  2144. //fmtp
  2145. INT iIndex = pb->SdpNum;
  2146. pb->Sdp[iIndex].Tag = ISXSIP_IE_SDP_TAG_FMTP;
  2147. pb->Sdp[iIndex].Len = sizeof(ISXSIP_IE_SDP_FMTP_EX);
  2148. ISXSIP_IE_SDP_FMTP_EX* pFmtp = (ISXSIP_IE_SDP_FMTP_EX*)&pb->Sdp[iIndex].u.Fmtp;
  2149. memcpy(pFmtp, pSdpFmtp, sizeof(ISXSIP_IE_SDP_FMTP_EX));
  2150. pb->SdpNum++;
  2151. };
  2152. INT SetCallBodySdp(CHAR* szConnAddr,
  2153. eM3G_VOICE_CODER eVoiceCodec,
  2154. ISXSIP_IE_SDP_MEDIA_DESC_EX* pVoiceDesc,
  2155. eM3G_VIDEO_CODER eVideoCodec,
  2156. ISXSIP_IE_SDP_MEDIA_DESC_EX* pVideoDesc)
  2157. {
  2158. Valid = 1;
  2159. BodyPartyType = BodyPartyType_SDP;
  2160. ISXSIP_IE_BODY_SDP_EX* pb = &u.BodySdp;
  2161. pb->SdpNum = 0;
  2162. //o
  2163. SetBodySdp_o(pb, szConnAddr);
  2164. //s
  2165. SetBodySdp_s(pb);
  2166. //c
  2167. SetBodySdp_c(pb, szConnAddr);
  2168. //t
  2169. SetBodySdp_t(pb);
  2170. //m
  2171. SetBodySdp_m(pb, pVoiceDesc);
  2172. //rtpmap
  2173. ISXSIP_IE_SDP_RTP_MAP SdpRtpMap;
  2174. SdpRtpMap.Payload = pVoiceDesc->Payload[1];
  2175. SdpRtpMap.ClkRate = 8000;
  2176. strcpy(SdpRtpMap.EncodingName, "telephone-event");
  2177. strcpy(SdpRtpMap.EncodingParam, "");
  2178. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2179. //fmtp
  2180. ISXSIP_IE_SDP_FMTP_EX SdpFmtp;
  2181. sprintf(SdpFmtp.fmtf, "%d 0-15", pVoiceDesc->Payload[1]);
  2182. SetBodySdp_fmtp(pb, &SdpFmtp);
  2183. //a
  2184. CHAR a_value[24];
  2185. //sprintf(a_value, "%d 0-15", pVoiceDesc->Payload[1]);
  2186. //SetBodySdp_a(pb, (CHAR *)"fmtp", a_value);
  2187. SetBodySdp_a(pb, (CHAR *)"sendrecv", (CHAR *)"");
  2188. //m
  2189. SetBodySdp_m(pb, pVideoDesc);
  2190. //a
  2191. SetBodySdp_a(pb, (CHAR *)"sendrecv", (CHAR *)"");
  2192. switch(eVideoCodec)
  2193. {
  2194. case M3G_VICODER_MPEG4:
  2195. //rtpmap
  2196. SdpRtpMap.Payload = pVideoDesc->Payload[0];
  2197. SdpRtpMap.ClkRate = 90000;
  2198. strcpy(SdpRtpMap.EncodingName, "MPEG4");
  2199. strcpy(SdpRtpMap.EncodingParam, "");
  2200. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2201. break;
  2202. case M3G_VICODER_H263:
  2203. //rtpmap
  2204. SdpRtpMap.Payload = pVideoDesc->Payload[0];
  2205. SdpRtpMap.ClkRate = 90000;
  2206. strcpy(SdpRtpMap.EncodingName, "H263"); //34
  2207. strcpy(SdpRtpMap.EncodingParam, "");
  2208. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2209. //a
  2210. sprintf(a_value, "%d QCIF=1", pVideoDesc->Payload[0]); //34
  2211. SetBodySdp_a(pb, (CHAR *)"fmtp", a_value);
  2212. break;
  2213. case M3G_VICODER_H264:
  2214. //rtpmap
  2215. SdpRtpMap.Payload = pVideoDesc->Payload[0];
  2216. SdpRtpMap.ClkRate = 90000;
  2217. strcpy(SdpRtpMap.EncodingName, "H264"); //123
  2218. strcpy(SdpRtpMap.EncodingParam, "");
  2219. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2220. break;
  2221. case M3G_VICODER_WMV9:
  2222. //rtpmap
  2223. SdpRtpMap.Payload = pVideoDesc->Payload[0];
  2224. SdpRtpMap.ClkRate = 90000;
  2225. strcpy(SdpRtpMap.EncodingName, "WMV9");
  2226. strcpy(SdpRtpMap.EncodingParam, "");
  2227. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2228. break;
  2229. case M3G_VICODER_H263_PLUS:
  2230. //rtpmap
  2231. SdpRtpMap.Payload = pVideoDesc->Payload[0];
  2232. SdpRtpMap.ClkRate = 90000;
  2233. strcpy(SdpRtpMap.EncodingName, "H263-1998"); //115
  2234. strcpy(SdpRtpMap.EncodingParam, "");
  2235. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2236. //a
  2237. sprintf(a_value, "%d CIF=1", pVideoDesc->Payload[0]); //115
  2238. SetBodySdp_a(pb, (CHAR *)"fmtp", a_value);
  2239. break;
  2240. }
  2241. //a
  2242. //sprintf(a_value, "%d profile=0,level=10", pVideoDesc->Payload[0]); //107
  2243. //sprintf(a_value, "%d QCIF=1;CIF=1", pVideoDesc->Payload[0]); //34
  2244. //sprintf(a_value, "%d QCIF=1", pVideoDesc->Payload[0]); //34
  2245. //sprintf(a_value, "%d QCIF=1;I=1;J=1;T=1", pVideoDesc->Payload[0]); //115
  2246. //sprintf(a_value, "%d packetization-mode=0", pVideoDesc->Payload[0]); //123
  2247. //sprintf(a_value, "%d packetization-mode=1", pVideoDesc->Payload[1]); //124
  2248. //SetBodySdp_a(pb, "fmtp", a_value);
  2249. return 0;
  2250. };
  2251. INT SetCallBodySdp(CHAR* szConnAddr,
  2252. eM3G_VOICE_CODER eVoiceCodec,
  2253. ISXSIP_IE_SDP_MEDIA_DESC_EX* pVoiceDesc)
  2254. {
  2255. Valid = 1;
  2256. BodyPartyType = BodyPartyType_SDP;
  2257. ISXSIP_IE_BODY_SDP_EX* pb = &u.BodySdp;
  2258. pb->SdpNum = 0;
  2259. //o
  2260. SetBodySdp_o(pb, szConnAddr);
  2261. //s
  2262. SetBodySdp_s(pb);
  2263. //c
  2264. SetBodySdp_c(pb, szConnAddr);
  2265. //t
  2266. SetBodySdp_t(pb);
  2267. //m
  2268. SetBodySdp_m(pb, pVoiceDesc);
  2269. //rtpmap
  2270. ISXSIP_IE_SDP_RTP_MAP SdpRtpMap;
  2271. SdpRtpMap.Payload = pVoiceDesc->Payload[1];
  2272. SdpRtpMap.ClkRate = 8000;
  2273. strcpy(SdpRtpMap.EncodingName, "telephone-event");
  2274. strcpy(SdpRtpMap.EncodingParam, "");
  2275. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2276. //fmtp
  2277. ISXSIP_IE_SDP_FMTP_EX SdpFmtp;
  2278. sprintf(SdpFmtp.fmtf, "%d 0-15", pVoiceDesc->Payload[1]);
  2279. SetBodySdp_fmtp(pb, &SdpFmtp);
  2280. //a
  2281. //CHAR a_value[24];
  2282. //sprintf(a_value, "%d 0-15", pVoiceDesc->Payload[1]);
  2283. //SetBodySdp_a(pb, (CHAR *)"fmtp", a_value);
  2284. SetBodySdp_a(pb, (CHAR *)"sendrecv", (CHAR *)"");
  2285. return 0;
  2286. };
  2287. INT SetCallBodySdp4Audio(CHAR* szConnAddr, ISXSIP_IE_SDP_MEDIA_DESC_EX* pAudioDesc)
  2288. {
  2289. Valid = 1;
  2290. BodyPartyType = BodyPartyType_SDP;
  2291. ISXSIP_IE_BODY_SDP_EX* pb = &u.BodySdp;
  2292. pb->SdpNum = 0;
  2293. //o
  2294. SetBodySdp_o(pb, szConnAddr);
  2295. //s
  2296. SetBodySdp_s(pb);
  2297. //c
  2298. SetBodySdp_c(pb, szConnAddr);
  2299. //t
  2300. SetBodySdp_t(pb);
  2301. //m
  2302. SetBodySdp_m(pb, pAudioDesc);
  2303. //rtpmap
  2304. ISXSIP_IE_SDP_RTP_MAP SdpRtpMap;
  2305. SdpRtpMap.Payload = pAudioDesc->Payload[1];
  2306. SdpRtpMap.ClkRate = 8000;
  2307. strcpy(SdpRtpMap.EncodingName, "telephone-event");
  2308. strcpy(SdpRtpMap.EncodingParam, "");
  2309. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2310. //mediaencode
  2311. SetBodySdp_mediaencode(pb, pAudioDesc->Payload[1]);
  2312. //fmtp
  2313. ISXSIP_IE_SDP_FMTP_EX SdpFmtp;
  2314. sprintf(SdpFmtp.fmtf, "%d 0-15", pAudioDesc->Payload[1]);
  2315. SetBodySdp_fmtp(pb, &SdpFmtp);
  2316. //a
  2317. //CHAR a_value[24];
  2318. //sprintf(a_value, "%d 0-15", pAudioDesc->Payload[1]);
  2319. //SetBodySdp_a(pb, (CHAR *)"fmtp", a_value);
  2320. SetBodySdp_a(pb, (CHAR *)"sendrecv", (CHAR *)"");
  2321. return 0;
  2322. };
  2323. INT ConstructAudioBody(char *szConnAddr, USHORT nSrcMediaPort, UCHAR nPayLoad1=8, UCHAR nPayLoad2=101)
  2324. {
  2325. ISXSIP_IE_BODY_SDP_EX* pb = NULL;
  2326. Valid = 1;
  2327. BodyPartyType = BodyPartyType_SDP;
  2328. pb = &u.BodySdp;
  2329. pb->SdpNum = 0;
  2330. //o
  2331. SetBodySdp_o(pb, szConnAddr);
  2332. //s
  2333. SetBodySdp_s(pb);
  2334. //c
  2335. SetBodySdp_c(pb, szConnAddr);
  2336. //t
  2337. SetBodySdp_t(pb);
  2338. //m
  2339. ISXSIP_IE_SDP_MEDIA_DESC_EX MediaDescEx;
  2340. MediaDescEx.MediaPort = nSrcMediaPort;
  2341. MediaDescEx.MediaProtocol = ISXSIP_SDPPROTOCOL_RTP;
  2342. MediaDescEx.MediaType = ISXSIP_SDPMEDIATYPE_AUDIO;
  2343. MediaDescEx.PayLoadNum = 2;
  2344. MediaDescEx.Payload[0] = nPayLoad1;
  2345. MediaDescEx.Payload[1] = nPayLoad2;
  2346. SetBodySdp_m(pb, &MediaDescEx);
  2347. //rtpmap
  2348. ISXSIP_IE_SDP_RTP_MAP SdpRtpMap;
  2349. SdpRtpMap.Payload = nPayLoad2;
  2350. SdpRtpMap.ClkRate = 8000;
  2351. strcpy(SdpRtpMap.EncodingName, "telephone-event");
  2352. strcpy(SdpRtpMap.EncodingParam, "");
  2353. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2354. //mediaencode
  2355. SetBodySdp_mediaencode(pb, nPayLoad1);
  2356. //fmtp
  2357. ISXSIP_IE_SDP_FMTP_EX SdpFmtp;
  2358. sprintf(SdpFmtp.fmtf, "%d 0-15", nPayLoad2);
  2359. SetBodySdp_fmtp(pb, &SdpFmtp);
  2360. //a
  2361. SetBodySdp_a(pb, (CHAR *)"sendrecv", (CHAR *)"");
  2362. return 0;
  2363. };
  2364. INT ConstructMediaBody(char *szConnAddr,
  2365. USHORT nVoiceSrcPort, USHORT nVideoSrcPort,
  2366. UCHAR nVoicePayLoad1=8, UCHAR nVoicePayLoad2=101, UCHAR nVideoPayLoad=34)
  2367. {
  2368. ISXSIP_IE_BODY_SDP_EX* pb = NULL;
  2369. Valid = 1;
  2370. BodyPartyType = BodyPartyType_SDP;
  2371. pb = &u.BodySdp;
  2372. pb->SdpNum = 0;
  2373. //o
  2374. SetBodySdp_o(pb, szConnAddr);
  2375. //s
  2376. SetBodySdp_s(pb);
  2377. //c
  2378. SetBodySdp_c(pb, szConnAddr);
  2379. //t
  2380. SetBodySdp_t(pb);
  2381. //m
  2382. ISXSIP_IE_SDP_MEDIA_DESC_EX MediaDescEx;
  2383. MediaDescEx.MediaType = ISXSIP_SDPMEDIATYPE_AUDIO;
  2384. MediaDescEx.MediaProtocol = ISXSIP_SDPPROTOCOL_RTP;
  2385. MediaDescEx.MediaPort = nVoiceSrcPort;
  2386. MediaDescEx.PayLoadNum = 2;
  2387. MediaDescEx.Payload[0] = nVoicePayLoad1;
  2388. MediaDescEx.Payload[1] = nVoicePayLoad2;
  2389. SetBodySdp_m(pb, &MediaDescEx);
  2390. //rtpmap
  2391. ISXSIP_IE_SDP_RTP_MAP SdpRtpMap;
  2392. SdpRtpMap.Payload = nVoicePayLoad2;
  2393. SdpRtpMap.ClkRate = 8000;
  2394. strcpy(SdpRtpMap.EncodingName, "telephone-event");
  2395. strcpy(SdpRtpMap.EncodingParam, "");
  2396. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2397. //fmtp
  2398. ISXSIP_IE_SDP_FMTP_EX SdpFmtp;
  2399. sprintf(SdpFmtp.fmtf, "%d 0-15", nVoicePayLoad2);
  2400. SetBodySdp_fmtp(pb, &SdpFmtp);
  2401. //m
  2402. MediaDescEx.MediaType = ISXSIP_SDPMEDIATYPE_VIDEO;
  2403. MediaDescEx.MediaProtocol = ISXSIP_SDPPROTOCOL_RTP;
  2404. MediaDescEx.MediaPort = nVideoSrcPort;
  2405. MediaDescEx.PayLoadNum = 1;
  2406. MediaDescEx.Payload[0] = nVideoPayLoad;
  2407. SetBodySdp_m(pb, &MediaDescEx);
  2408. //rtpmap
  2409. SdpRtpMap.Payload = nVideoPayLoad;
  2410. SdpRtpMap.ClkRate = 90000;
  2411. strcpy(SdpRtpMap.EncodingName, "H263"); //34
  2412. strcpy(SdpRtpMap.EncodingParam, "");
  2413. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2414. //fmtp
  2415. sprintf(SdpFmtp.fmtf, "%d QCIF=1;CIF=1", nVideoPayLoad);
  2416. SetBodySdp_fmtp(pb, &SdpFmtp);
  2417. //a
  2418. SetBodySdp_a(pb, (CHAR *)"sendrecv", (CHAR *)"");
  2419. return 0;
  2420. };
  2421. INT ConstructMediaBody(char *szConnAddr,
  2422. USHORT nVoiceSrcPort, eM3G_VOICE_CODER eVoiceCodecId,
  2423. USHORT nVideoSrcPort, eM3G_VIDEO_CODER eVideoCodecId,
  2424. ISXSIP_IE_SDP_MEDIA_DESC_EX *pRetVoiceDesc,
  2425. ISXSIP_IE_SDP_MEDIA_DESC_EX *pRetVideoDesc)
  2426. {
  2427. ISXSIP_IE_BODY_SDP_EX* pb = NULL;
  2428. Valid = 1;
  2429. BodyPartyType = BodyPartyType_SDP;
  2430. pb = &u.BodySdp;
  2431. pb->SdpNum = 0;
  2432. //o
  2433. SetBodySdp_o(pb, szConnAddr);
  2434. //s
  2435. SetBodySdp_s(pb);
  2436. //c
  2437. SetBodySdp_c(pb, szConnAddr);
  2438. //t
  2439. SetBodySdp_t(pb);
  2440. //m
  2441. SIP_CODEC_PAYLOAD_MAP *pCodecMap;
  2442. ISXE_gc_SipGetPayloadMap(CODECT_VOICE, (UINT)eVoiceCodecId, &pCodecMap);
  2443. ISXSIP_IE_SDP_MEDIA_DESC_EX MediaDescEx;
  2444. MediaDescEx.MediaType = ISXSIP_SDPMEDIATYPE_AUDIO;
  2445. MediaDescEx.MediaProtocol = ISXSIP_SDPPROTOCOL_RTP;
  2446. MediaDescEx.MediaPort = nVoiceSrcPort;
  2447. MediaDescEx.PayLoadNum = 2;
  2448. MediaDescEx.Payload[0] = pCodecMap->rtpmap.Payload;
  2449. MediaDescEx.Payload[1] = 101;
  2450. SetBodySdp_m(pb, &MediaDescEx);
  2451. if(pRetVoiceDesc) memcpy(pRetVoiceDesc, &MediaDescEx, sizeof(ISXSIP_IE_SDP_MEDIA_DESC_EX));
  2452. //rtpmap
  2453. ISXSIP_IE_SDP_RTP_MAP SdpRtpMap;
  2454. SdpRtpMap.Payload = 101;
  2455. SdpRtpMap.ClkRate = 8000;
  2456. strcpy(SdpRtpMap.EncodingName, "telephone-event");
  2457. strcpy(SdpRtpMap.EncodingParam, "");
  2458. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2459. //fmtp
  2460. ISXSIP_IE_SDP_FMTP_EX SdpFmtp;
  2461. sprintf(SdpFmtp.fmtf, "%d 0-15", 101);
  2462. SetBodySdp_fmtp(pb, &SdpFmtp);
  2463. //m
  2464. ISXE_gc_SipGetPayloadMap(CODECT_VIDEO, (UINT)eVideoCodecId, &pCodecMap);
  2465. MediaDescEx.MediaType = ISXSIP_SDPMEDIATYPE_VIDEO;
  2466. MediaDescEx.MediaProtocol = ISXSIP_SDPPROTOCOL_RTP;
  2467. MediaDescEx.MediaPort = nVideoSrcPort;
  2468. MediaDescEx.PayLoadNum = 1;
  2469. MediaDescEx.Payload[0] = pCodecMap->rtpmap.Payload;
  2470. SetBodySdp_m(pb, &MediaDescEx);
  2471. if(pRetVideoDesc) memcpy(pRetVideoDesc, &MediaDescEx, sizeof(ISXSIP_IE_SDP_MEDIA_DESC_EX));
  2472. //rtpmap
  2473. SdpRtpMap.Payload = pCodecMap->rtpmap.Payload;
  2474. SdpRtpMap.ClkRate = 90000;
  2475. strcpy(SdpRtpMap.EncodingName, "H263"); //34
  2476. strcpy(SdpRtpMap.EncodingParam, "");
  2477. SetBodySdp_rtpmap(pb, &SdpRtpMap);
  2478. //fmtp
  2479. sprintf(SdpFmtp.fmtf, "%d QCIF=1;CIF=1", pCodecMap->rtpmap.Payload);
  2480. SetBodySdp_fmtp(pb, &SdpFmtp);
  2481. //a
  2482. SetBodySdp_a(pb, (CHAR *)"sendrecv", (CHAR *)"");
  2483. return 0;
  2484. };
  2485. }ISXSIP_IE_BODY_EX_USR;
  2486. typedef struct tagM3G_TO_DISPLAY_MODE_USR: public tagM3G_TO_DISPLAY_MODE{
  2487. tagM3G_TO_DISPLAY_MODE_USR() { Init(); };
  2488. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2489. INT GetSize() { return sizeof(*this); };
  2490. VOID SetValue(UCHAR vMode=M3G_DISPLAY_MODE_SHOW)
  2491. {
  2492. ucValid = 1;
  2493. if(vMode!=(UCHAR)EHV_NOTHING) ucMode = vMode;
  2494. };
  2495. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2496. {
  2497. CHAR szTemp[TEMP_STR_LEN];
  2498. if(ucValid){
  2499. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Mode=%d> ", pszParamName?pszParamName:"DisplayMode", ucValid, ucMode);
  2500. } else {
  2501. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"DisplayMode", ucValid);
  2502. }
  2503. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2504. return 0;
  2505. };
  2506. } M3G_TO_DISPLAY_MODE_USR;
  2507. typedef struct tagM3G_TOOLBOX_PARAM_USR: public tagM3G_TOOLBOX_PARAM{
  2508. tagM3G_TOOLBOX_PARAM_USR() { Init(); };
  2509. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2510. INT GetSize() { return sizeof(*this); };
  2511. VOID SetEnable(UCHAR vIsEnable=1)
  2512. {
  2513. ucValid =1;
  2514. if(vIsEnable!=(UCHAR)EHV_NOTHING) ucIsEnable = vIsEnable;
  2515. };
  2516. VOID SetValue(UINT vFPS, UINT vRev, UINT vInputWidth, UINT vInputHeight, UINT vOutputWidth, UINT vOutputHeight)
  2517. {
  2518. ucValid = 1;
  2519. if(vFPS!=(UINT)EHV_NOTHING) ucFPS = (UCHAR)vFPS;
  2520. if(vRev!=(UINT)EHV_NOTHING) ucRev = (UCHAR)vRev;
  2521. if(vInputHeight!=(UINT)EHV_NOTHING) ulInputHeight = vInputHeight;
  2522. if(vInputWidth!=(UINT)EHV_NOTHING) ulInputWidth = vInputWidth;
  2523. if(vOutputHeight!=(UINT)EHV_NOTHING) ulOutputHeight = vOutputHeight;
  2524. if(vOutputWidth!=(UINT)EHV_NOTHING) ulOutputWidth = vOutputWidth;
  2525. };
  2526. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2527. {
  2528. CHAR szTemp[TEMP_STR_LEN];
  2529. if(ucValid){
  2530. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,IsEnable=%d,FPS=%d,Rev=%d,InputHeight=%d,InputWidth=%d,OutputHeight=%d,OutputWidth=%d> ",
  2531. pszParamName?pszParamName:"ToolboxParam", ucValid, ucIsEnable,ucFPS,ucRev,ulInputHeight,ulInputWidth,ulOutputHeight,ulOutputWidth);
  2532. } else {
  2533. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"ToolboxParam", ucValid);
  2534. }
  2535. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2536. return 0;
  2537. };
  2538. } M3G_TOOLBOX_PARAM_USR;
  2539. typedef struct tagM3G_LOGO_PARAM_USR: public tagM3G_LOGO_PARAM{
  2540. tagM3G_LOGO_PARAM_USR() { Init(); };
  2541. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2542. INT GetSize() { return sizeof(*this); };
  2543. VOID SetValue(UINT vWidth, UINT vHeight, UINT vLeftPos, UINT vTopPos, UINT vTransY, UINT vTransU, UINT vTransV, UINT vTransAlpha, UINT vAlphaBlending)
  2544. {
  2545. ucValid = 1;
  2546. if(vHeight!=(UINT)EHV_NOTHING) ulHeight = vHeight;
  2547. if(vWidth!=(UINT)EHV_NOTHING) ulWidth = vWidth;
  2548. if(vTopPos!=(UINT)EHV_NOTHING) ulTopPos = vTopPos;
  2549. if(vLeftPos!=(UINT)EHV_NOTHING) ulLeftPos = vLeftPos;
  2550. if(vTransY!=(UINT)EHV_NOTHING) ucTransY = (UCHAR)vTransY;
  2551. if(vTransU!=(UINT)EHV_NOTHING) ucTransU = (UCHAR)vTransU;
  2552. if(vTransV!=(UINT)EHV_NOTHING) ucTransV = (UCHAR)vTransV;
  2553. if(vTransAlpha!=(UINT)EHV_NOTHING) ucTransAlpha = (UCHAR)vTransAlpha;
  2554. if(vAlphaBlending!=(UINT)EHV_NOTHING) ucAlphaBlending = (UCHAR)vAlphaBlending;
  2555. };
  2556. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2557. {
  2558. CHAR szTemp[TEMP_STR_LEN];
  2559. if(ucValid){
  2560. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Height=%d,Width=%d,TopPos=%d,LeftPos=%d,YUV(%d.%d.%d),TransAlpha=%d,AlphaBlending=%d> ",
  2561. pszParamName?pszParamName:"LogoParam", ucValid, ulHeight,ulWidth,ulTopPos,ulLeftPos,ucTransY,ucTransU,ucTransV,ucTransAlpha, ucAlphaBlending);
  2562. } else {
  2563. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"LogoParam", ucValid);
  2564. }
  2565. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2566. return 0;
  2567. };
  2568. } M3G_LOGO_PARAM_USR;
  2569. typedef struct tagM3G_LOGO_CONFIG_USR: public tagM3G_LOGO_CONFIG{
  2570. tagM3G_LOGO_CONFIG_USR() { Init(); };
  2571. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2572. INT GetSize() { return sizeof(*this); };
  2573. VOID SetLogoParm(M3G_LOGO_PARAM_USR *pLogoParm)
  2574. {
  2575. if(pLogoParm) memcpy(&LogoParm, pLogoParm, sizeof(M3G_LOGO_PARAM_USR));
  2576. };
  2577. VOID SetDisplayMode(M3G_TO_DISPLAY_MODE_USR *pDisplayMode)
  2578. {
  2579. if(pDisplayMode) memcpy(&DisplayMode, pDisplayMode, sizeof(M3G_TO_DISPLAY_MODE_USR));
  2580. };
  2581. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2582. {
  2583. szOutStr[0]=0;
  2584. CHAR szTemp[TEMP_STR_LEN];
  2585. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"LogoCfg");
  2586. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2587. FAILRETN(((M3G_LOGO_PARAM_USR*)&LogoParm)->TraceStr(szOutStr, "Param"));
  2588. FAILRETN(((M3G_TO_DISPLAY_MODE_USR*)&DisplayMode)->TraceStr(szOutStr, "DisplayMode"));
  2589. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  2590. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2591. return 0;
  2592. };
  2593. } M3G_LOGO_CONFIG_USR;
  2594. typedef struct tagM3G_TOOLBOX_CONFIG_USR: public tagM3G_TOOLBOX_CONFIG{
  2595. tagM3G_TOOLBOX_CONFIG_USR() { Init(); };
  2596. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2597. INT GetSize() { return sizeof(*this); };
  2598. VOID SetLogoParm(M3G_LOGO_PARAM_USR *pLogoParm)
  2599. {
  2600. if(pLogoParm) memcpy(&logo, pLogoParm, sizeof(M3G_LOGO_PARAM_USR));
  2601. };
  2602. VOID SetToolbox(M3G_TOOLBOX_PARAM_USR *pToolbox)
  2603. {
  2604. if(pToolbox) memcpy(&toolbox, pToolbox, sizeof(M3G_TOOLBOX_PARAM_USR));
  2605. };
  2606. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2607. {
  2608. szOutStr[0]=0;
  2609. CHAR szTemp[TEMP_STR_LEN];
  2610. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"ToolBoxCfg");
  2611. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2612. FAILRETN(((M3G_TOOLBOX_PARAM_USR*)&toolbox)->TraceStr(szOutStr, "Toolbox"));
  2613. FAILRETN(((M3G_LOGO_PARAM_USR*)&logo)->TraceStr(szOutStr, "Logo"));
  2614. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  2615. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2616. return 0;
  2617. };
  2618. } M3G_TOOLBOX_CONFIG_USR;
  2619. typedef struct tagM3G_TO_CARET_POSITION_USR: public tagM3G_TO_CARET_POSITION{
  2620. tagM3G_TO_CARET_POSITION_USR() { Init(); };
  2621. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2622. INT GetSize() { return sizeof(*this); };
  2623. VOID SetValue(UINT vTextDir/*eM3G_TEXT_DIRECTION*/, UINT vLeftPos, UINT vTopPos)
  2624. {
  2625. ucValid = 1;
  2626. if(vTextDir!=(UINT)EHV_NOTHING) ucTextDir = (UCHAR)vTextDir;
  2627. if(vLeftPos!=(UINT)EHV_NOTHING) ulLeftPos = vLeftPos;
  2628. if(vTopPos!=(UINT)EHV_NOTHING) ulTopPos = vTopPos;
  2629. };
  2630. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2631. {
  2632. CHAR szTemp[TEMP_STR_LEN];
  2633. if(ucValid!=0) {
  2634. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,TextDir=%d,LeftPos=%d,TopPos=%d> ",
  2635. pszParamName?pszParamName:"Position", ucValid, ucTextDir, ulLeftPos, ulTopPos);
  2636. } else {
  2637. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"Position", ucValid);
  2638. }
  2639. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2640. return 0;
  2641. };
  2642. } M3G_TO_CARET_POSITION_USR;
  2643. /* 字体相关的信息 */
  2644. typedef struct tagM3G_TO_FONT_INFO_USR: public tagM3G_TO_FONT_INFO {
  2645. tagM3G_TO_FONT_INFO_USR() { Init(); };
  2646. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2647. INT GetSize() { return sizeof(*this); };
  2648. VOID SetValue(UINT vFontIndex, UINT vFontSize, UINT vFontStyle/*eM3G_TEXT_STYLE*/)
  2649. {
  2650. ucValid = 1;
  2651. if(vFontIndex!=(UINT)EHV_NOTHING) ucFontIndex = (UCHAR)vFontIndex;
  2652. if(vFontSize!=(UINT)EHV_NOTHING) ulFontSize = vFontSize;
  2653. if(vFontStyle!=(UINT)EHV_NOTHING) ulFontStyle = vFontStyle;
  2654. };
  2655. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2656. {
  2657. CHAR szTemp[TEMP_STR_LEN];
  2658. if(ucValid!=0) {
  2659. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,FontIndex=%d,FontSize=%d,FontStyle=%d> ",
  2660. pszParamName?pszParamName:"Font", ucValid, ucFontIndex, ulFontSize, ulFontStyle);
  2661. } else {
  2662. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"Font", ucValid);
  2663. }
  2664. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2665. return 0;
  2666. };
  2667. } M3G_TO_FONT_INFO_USR;
  2668. typedef struct tagM3G_TO_COLOR_USR: public tagM3G_TO_COLOR {
  2669. tagM3G_TO_COLOR_USR() { Init(); };
  2670. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2671. INT GetSize() { return sizeof(*this); };
  2672. VOID SetForeground(UINT vR, UINT vG, UINT vB, UINT vAlpha)
  2673. {
  2674. ucValid = 1;
  2675. if(vR!=(UINT)EHV_NOTHING) ucForegroundR = (UCHAR)vR;
  2676. if(vG!=(UINT)EHV_NOTHING) ucForegroundG = (UCHAR)vG;
  2677. if(vB!=(UINT)EHV_NOTHING) ucForegroundB = (UCHAR)vB;
  2678. if(vAlpha!=(UINT)EHV_NOTHING) ucForegroundAlpha = (UCHAR)vAlpha;
  2679. };
  2680. VOID SetBackground(UINT vR, UINT vG, UINT vB, UINT vAlpha)
  2681. {
  2682. ucValid = 1;
  2683. if(vR!=(UINT)EHV_NOTHING) ucBackgroundR = (UCHAR)vR;
  2684. if(vG!=(UINT)EHV_NOTHING) ucBackgroundG = (UCHAR)vG;
  2685. if(vB!=(UINT)EHV_NOTHING) ucBackgroundB = (UCHAR)vB;
  2686. if(vAlpha!=(UINT)EHV_NOTHING) ucBackgroundAlpha = (UCHAR)vAlpha;
  2687. };
  2688. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2689. {
  2690. CHAR szTemp[TEMP_STR_LEN];
  2691. if(ucValid!=0) {
  2692. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Foreground(RGB=%d.%d.%d,Alpha=%d), Background(RGB=%d.%d.%d,Alpha=%d)> ",
  2693. pszParamName?pszParamName:"Color", ucValid, ucForegroundR, ucForegroundG, ucForegroundB, ucForegroundAlpha,
  2694. ucBackgroundR, ucBackgroundG, ucBackgroundB, ucBackgroundAlpha);
  2695. } else {
  2696. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"Color", ucValid);
  2697. }
  2698. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2699. return 0;
  2700. };
  2701. } M3G_TO_COLOR_USR;
  2702. typedef struct tagM3G_TO_SCROLL_INFO_USR: public tagM3G_TO_SCROLL_INFO {
  2703. tagM3G_TO_SCROLL_INFO_USR() { Init(); };
  2704. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2705. INT GetSize() { return sizeof(*this); };
  2706. VOID SetEnable(UCHAR vIsEnable=1)
  2707. {
  2708. ucValid =1;
  2709. if(vIsEnable!=(UCHAR)EHV_NOTHING) ucEnable = vIsEnable;
  2710. };
  2711. VOID SetScroll(UINT vDir/*eM3G_TEXT_DIRECTION*/, UINT vEndlessLoop, UINT vSpeed, UINT vLeftPos, UINT vRightPos)
  2712. {
  2713. ucValid = 1;
  2714. if(vDir!=(UINT)EHV_NOTHING) ucScrollDir = (UCHAR)vDir;
  2715. if(vEndlessLoop!=(UINT)EHV_NOTHING) ucEndlessLoop = (UCHAR)vEndlessLoop;
  2716. if(vSpeed!=(UINT)EHV_NOTHING) ulSpeed = (UINT)vSpeed;
  2717. if(vLeftPos!=(UINT)EHV_NOTHING) ulLeftPos = (UINT)vLeftPos;
  2718. if(vRightPos!=(UINT)EHV_NOTHING) ulRightPos = (UINT)vRightPos;
  2719. };
  2720. VOID SetBackground(UINT vLeftPos, UINT vTopPos, UINT vWidth, UINT vHeight)
  2721. {
  2722. ucValid = 1;
  2723. if(vLeftPos!=(UINT)EHV_NOTHING) ulBackgroundLeftPos = (UINT)vLeftPos;
  2724. if(vTopPos!=(UINT)EHV_NOTHING) ulBackgroundTopPos = (UINT)vTopPos;
  2725. if(vWidth!=(UINT)EHV_NOTHING) ulBackgroundWidth = (UINT)vWidth;
  2726. if(vHeight!=(UINT)EHV_NOTHING) ulBackgroundHeight = (UINT)vHeight;
  2727. };
  2728. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2729. {
  2730. CHAR szTemp[TEMP_STR_LEN];
  2731. if(ucValid!=0) {
  2732. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Enable=%d,Scroll(Dir=%d,EndlessLoop=%d,Speed=%d,LeftPos=%d,RightPos=%d) "
  2733. "Background(TopPos=%d,LeftPos=%d,Width=%d,Height=%d)> ",
  2734. pszParamName?pszParamName:"Scroll", ucValid, ucEnable, ucScrollDir, ucEndlessLoop, ulSpeed, ulLeftPos, ulRightPos,
  2735. ulBackgroundTopPos, ulBackgroundLeftPos, ulBackgroundWidth, ulBackgroundHeight);
  2736. } else {
  2737. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"Scroll", ucValid);
  2738. }
  2739. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2740. return 0;
  2741. };
  2742. } M3G_TO_SCROLL_INFO_USR;
  2743. typedef struct tagM3G_TO_TEXT_USR: public tagM3G_TO_TEXT {
  2744. tagM3G_TO_TEXT_USR() { Init(); };
  2745. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2746. INT GetSize() { return sizeof(*this); }
  2747. VOID SetValue(CHAR* pszText)
  2748. {
  2749. ucValid = 1;
  2750. INT iTmpLen = 0;
  2751. if(pszText!=NULL) {
  2752. iTmpLen = strlen(pszText);
  2753. if(iTmpLen>=EHANG_MAX_TEXT_LEN) iTmpLen = EHANG_MAX_TEXT_LEN-1;
  2754. strncpy(szContent, pszText, iTmpLen);
  2755. }
  2756. };
  2757. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2758. {
  2759. CHAR szTemp[TEMP_STR_LEN];
  2760. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Content='%s'> ",
  2761. pszParamName?pszParamName:"Text", ucValid, szContent);
  2762. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2763. return 0;
  2764. };
  2765. } M3G_TO_TEXT_USR;
  2766. typedef struct tagM3G_TEXTOVERLAY_CONFIG_USR: public tagM3G_TEXTOVERLAY_CONFIG {
  2767. tagM3G_TEXTOVERLAY_CONFIG_USR() { Init(); };
  2768. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2769. INT GetSize() { return sizeof(*this); };
  2770. VOID SetCaretPos(M3G_TO_CARET_POSITION_USR *pCaretPos)
  2771. {
  2772. if(pCaretPos) memcpy(&CaretPos, pCaretPos, sizeof(M3G_TO_CARET_POSITION_USR));
  2773. };
  2774. VOID SetFontInfo(M3G_TO_FONT_INFO_USR *pFontInfo)
  2775. {
  2776. if(pFontInfo) memcpy(&FontInfo, pFontInfo, sizeof(M3G_TO_FONT_INFO_USR));
  2777. };
  2778. VOID SetColorInfo(M3G_TO_COLOR_USR *pColorInfo)
  2779. {
  2780. if(pColorInfo) memcpy(&ColorInfo, pColorInfo, sizeof(M3G_TO_COLOR_USR));
  2781. };
  2782. VOID SetDisplayMode(M3G_TO_DISPLAY_MODE_USR *pDisplayMode)
  2783. {
  2784. if(pDisplayMode) memcpy(&DisplayMode, pDisplayMode, sizeof(M3G_TO_DISPLAY_MODE_USR));
  2785. };
  2786. VOID SetScrollInfo(M3G_TO_SCROLL_INFO_USR *pScrollInfo)
  2787. {
  2788. if(pScrollInfo) memcpy(&ScrollInfo, pScrollInfo, sizeof(M3G_TO_SCROLL_INFO_USR));
  2789. };
  2790. VOID SetText(M3G_TO_TEXT_USR *pText)
  2791. {
  2792. if(pText) memcpy(&Text, pText, sizeof(M3G_TO_TEXT_USR));
  2793. };
  2794. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2795. {
  2796. szOutStr[0]=0;
  2797. CHAR szTemp[TEMP_STR_LEN];
  2798. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"TextOverlayCfg");
  2799. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2800. FAILRETN(((M3G_TO_CARET_POSITION_USR*)&CaretPos)->TraceStr(szOutStr));
  2801. FAILRETN(((M3G_TO_FONT_INFO_USR*)&FontInfo)->TraceStr(szOutStr));
  2802. FAILRETN(((M3G_TO_COLOR_USR*)&ColorInfo)->TraceStr(szOutStr));
  2803. FAILRETN(((M3G_TO_DISPLAY_MODE_USR*)&DisplayMode)->TraceStr(szOutStr));
  2804. FAILRETN(((M3G_TO_SCROLL_INFO_USR*)&ScrollInfo)->TraceStr(szOutStr));
  2805. FAILRETN(((M3G_TO_TEXT_USR*)&Text)->TraceStr(szOutStr));
  2806. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  2807. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2808. return 0;
  2809. };
  2810. } M3G_TEXTOVERLAY_CONFIG_USR;
  2811. typedef struct tagM3G_VIDEOCONF_MIXER_USR: public tagM3G_VIDEOCONF_MIXER {
  2812. tagM3G_VIDEOCONF_MIXER_USR() { Init(); };
  2813. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2814. INT GetSize() { return sizeof(*this); };
  2815. VOID SetValue(UINT vMixerId, UINT vWidth, UINT vHeight, UINT vSynSrc, UINT vFPS, UINT vVideodev)
  2816. {
  2817. if(vMixerId!=(UINT)EHV_NOTHING) ucMixerId = (UCHAR)vMixerId;
  2818. if(vWidth!=(UINT)EHV_NOTHING) ulWidth = (UINT)vWidth;
  2819. if(vHeight!=(UINT)EHV_NOTHING) ulHeight = (UINT)vHeight;
  2820. if(vSynSrc!=(UINT)EHV_NOTHING) ucSynSrc = (UCHAR)vSynSrc;
  2821. if(vFPS!=(UINT)EHV_NOTHING) ulFPS = (UINT)vFPS;
  2822. if(vVideodev!=(UINT)EHV_NOTHING) videodev = (M3GDEV)vVideodev;
  2823. };
  2824. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2825. {
  2826. CHAR szTemp[TEMP_STR_LEN];
  2827. _snprintf(szTemp, TEMP_STR_LEN, "%s<MixerId=%d,Width=%d,Height=%d,SynSrc=%d,FPS=%d,videodev=%d> ",
  2828. pszParamName?pszParamName:"Mixer", ucMixerId, ulWidth, ulHeight, ucSynSrc, ulFPS, videodev);
  2829. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2830. return 0;
  2831. };
  2832. } M3G_VIDEOCONF_MIXER_USR;
  2833. typedef struct tagM3G_VIDEOCONF_PARM_USR: public tagM3G_VIDEOCONF_PARM {
  2834. tagM3G_VIDEOCONF_PARM_USR() { Init(); };
  2835. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2836. INT GetSize() {return sizeof(*this);};
  2837. VOID SetValue(UINT vVideoConfCaps, UINT vSrcUdpPort)
  2838. {
  2839. if(vVideoConfCaps!=(UINT)EHV_NOTHING) ulVideoConfCaps = (UINT)vVideoConfCaps;
  2840. if(vSrcUdpPort!=(UINT)EHV_NOTHING) usSrcUdpPort = (USHORT)vSrcUdpPort;
  2841. };
  2842. VOID SetMixer(UINT vMixerNum, M3G_VIDEOCONF_MIXER* pMixer)
  2843. {
  2844. if(vMixerNum!=(UINT)EHV_NOTHING) {
  2845. ucMixerNum = (UCHAR)vMixerNum;
  2846. if(ucMixerNum > MAX_VIDEOCONF_MIXER_NUM) ucMixerNum = MAX_VIDEOCONF_MIXER_NUM;
  2847. if(pMixer) memcpy(Mixer, pMixer, sizeof(M3G_VIDEOCONF_MIXER)*ucMixerNum);
  2848. };
  2849. };
  2850. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2851. {
  2852. CHAR szTemp[TEMP_STR_LEN];
  2853. _snprintf(szTemp, TEMP_STR_LEN, "%s<VideoConfCaps=%d,SrcUdpPort=%d,MixerNum=%d(",
  2854. pszParamName?pszParamName:"VideoConfParm", ulVideoConfCaps, usSrcUdpPort, ucMixerNum);
  2855. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2856. CHAR szIndex[8]={0};
  2857. for(INT i=0; i<ucMixerNum; i++) {
  2858. sprintf(szIndex, "%d", i);
  2859. FAILRETN(((M3G_VIDEOCONF_MIXER_USR*)&Mixer[i])->TraceStr(szOutStr, szIndex));
  2860. }
  2861. _snprintf(szTemp, TEMP_STR_LEN, ")>");
  2862. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2863. return 0;
  2864. };
  2865. } M3G_VIDEOCONF_PARM_USR;
  2866. typedef struct tagVIDEO_PARTICIANT_SENDER_USR: public tagVIDEO_PARTICIANT_SENDER {
  2867. tagVIDEO_PARTICIANT_SENDER_USR() { Init(); };
  2868. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2869. INT GetSize() { return sizeof(*this); };
  2870. VOID SetValue(UINT vSendFlag=1, UINT vWidth=0, UINT vHeight=0)
  2871. {
  2872. ucValid = 1;
  2873. if(vSendFlag!=(UINT)EHV_NOTHING) ucSendFlag = (UCHAR)vSendFlag;
  2874. if(vWidth!=(UINT)EHV_NOTHING) usWidth = (USHORT)vWidth;
  2875. if(vHeight!=(UINT)EHV_NOTHING) usHeight = (USHORT)vHeight;
  2876. };
  2877. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2878. {
  2879. CHAR szTemp[TEMP_STR_LEN];
  2880. if(ucValid!=0) {
  2881. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,SendFlag=%d,Width=%d,Height=%d> ",
  2882. pszParamName?pszParamName:"Sender", ucValid, ucSendFlag, usWidth, usHeight);
  2883. } else {
  2884. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"Sender", ucValid);
  2885. }
  2886. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2887. return 0;
  2888. };
  2889. } VIDEO_PARTICIANT_SENDER_USR;
  2890. typedef struct tagVIDEO_PARTICIANT_RECVER_USR: public tagVIDEO_PARTICIANT_RECVER {
  2891. tagVIDEO_PARTICIANT_RECVER_USR() { Init(); };
  2892. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2893. INT GetSize() { return sizeof(*this); };
  2894. VOID SetValue(UINT vMixerId, UINT vRecvFlag=1, UINT vRecverUdpPort=0, UINT vRecverFPS=0)
  2895. {
  2896. ucValid = 1;
  2897. if(vMixerId!=(UINT)EHV_NOTHING) ucMixerId = (UCHAR)vMixerId;
  2898. if(vRecvFlag!=(UINT)EHV_NOTHING) ucRecvFlag = (UCHAR)vRecvFlag;
  2899. if(vRecverUdpPort!=(UINT)EHV_NOTHING) usRecverUdpPort = (USHORT)vRecverUdpPort;
  2900. if(vRecverFPS!=(UINT)EHV_NOTHING) ulRecverFPS = (UINT)vRecverFPS;
  2901. };
  2902. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2903. {
  2904. CHAR szTemp[TEMP_STR_LEN];
  2905. if(ucValid!=0) {
  2906. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,MixerId=%d,RecvFlag=%d,RecverUdpPort=%d,RecverFPS=%d> ",
  2907. pszParamName?pszParamName:"Recver", ucValid, ucMixerId, ucRecvFlag, usRecverUdpPort, ulRecverFPS);
  2908. } else {
  2909. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"Recver", ucValid);
  2910. }
  2911. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2912. return 0;
  2913. };
  2914. } VIDEO_PARTICIANT_RECVER_USR;
  2915. typedef struct tagVIDEO_PARTICIANT_VISION_ITEM_USR: public tagVIDEO_PARTICIANT_VISION_ITEM {
  2916. tagVIDEO_PARTICIANT_VISION_ITEM_USR() { Init(); };
  2917. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2918. INT GetSize() { return sizeof(*this); };
  2919. VOID SetValue(UINT vMixerId, UINT vLayerId, UINT vLeftPos, UINT vTopPos, UINT vWidth, UINT vHeight)
  2920. {
  2921. if(vMixerId!=(UINT)EHV_NOTHING) ucMixerId = (UCHAR)vMixerId;
  2922. if(vLayerId!=(UINT)EHV_NOTHING) ucLayerId = (UCHAR)vLayerId;
  2923. if(vLeftPos!=(UINT)EHV_NOTHING) usLeftPos = (USHORT)vLeftPos;
  2924. if(vTopPos!=(UINT)EHV_NOTHING) usTopPos = (USHORT)vTopPos;
  2925. if(vWidth!=(UINT)EHV_NOTHING) usWidth = (USHORT)vWidth;
  2926. if(vHeight!=(UINT)EHV_NOTHING) usHeight = (USHORT)vHeight;
  2927. };
  2928. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2929. {
  2930. CHAR szTemp[TEMP_STR_LEN];
  2931. _snprintf(szTemp, TEMP_STR_LEN, "%s<MixerId=%d,LayerId=%d,LeftPos=%d,TopPos=%d,Width=%d,Height=%d> ",
  2932. pszParamName?pszParamName:"MixerPos", ucMixerId, ucLayerId, usLeftPos, usTopPos, usWidth, usHeight);
  2933. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2934. return 0;
  2935. };
  2936. } VIDEO_PARTICIANT_VISION_ITEM_USR;
  2937. typedef struct tagVIDEO_PARTICIANT_VISION_USR: public tagVIDEO_PARTICIANT_VISION {
  2938. tagVIDEO_PARTICIANT_VISION_USR() { Init(); };
  2939. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2940. INT GetSize() { return sizeof(*this); };
  2941. VOID SetValue(UINT vVisionNum, VIDEO_PARTICIANT_VISION_ITEM* pVisions=NULL)
  2942. {
  2943. ucValid = 1;
  2944. if(vVisionNum!=(UINT)EHV_NOTHING) {
  2945. ucVisionNum = (UCHAR)vVisionNum;
  2946. if(ucVisionNum > MAX_VIDEOCONF_MIXER_NUM) ucVisionNum = MAX_VIDEOCONF_MIXER_NUM;
  2947. if(pVisions) memcpy(Visions, pVisions, sizeof(VIDEO_PARTICIANT_VISION_ITEM)*ucVisionNum);
  2948. }
  2949. };
  2950. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2951. {
  2952. CHAR szTemp[TEMP_STR_LEN];
  2953. if(ucValid!=0) {
  2954. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,VisionNum=%d(",
  2955. pszParamName?pszParamName:"Visions", ucValid, ucVisionNum);
  2956. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2957. CHAR szIndex[8]={0};
  2958. for(INT i=0; i<ucVisionNum; i++) {
  2959. sprintf(szIndex, "%d", i);
  2960. FAILRETN(((VIDEO_PARTICIANT_VISION_ITEM_USR*)&Visions[i])->TraceStr(szOutStr, szIndex));
  2961. }
  2962. _snprintf(szTemp, TEMP_STR_LEN, ")>");
  2963. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2964. } else {
  2965. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"Visions", ucValid);
  2966. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2967. }
  2968. return 0;
  2969. };
  2970. } VIDEO_PARTICIANT_VISION_USR;
  2971. typedef struct tagVIDEO_PARTICIANT_SYNC_SRC_USR: public tagVIDEO_PARTICIANT_SYNC_SRC {
  2972. tagVIDEO_PARTICIANT_SYNC_SRC_USR() { Init(); };
  2973. VOID Init() { memset(this, 0, sizeof(*this) ); };
  2974. INT GetSize() { return sizeof(*this); };
  2975. VOID SetValue(UINT vMixerNum, UCHAR* pMixerIds)
  2976. {
  2977. ucValid = 1;
  2978. if(vMixerNum!=(UINT)EHV_NOTHING) {
  2979. ucMixerNum = (UCHAR)vMixerNum;
  2980. if(ucMixerNum > MAX_VIDEOCONF_MIXER_NUM) ucMixerNum = MAX_VIDEOCONF_MIXER_NUM;
  2981. if(pMixerIds) memcpy(ucMixerIds, pMixerIds, sizeof(UCHAR)*ucMixerNum);
  2982. }
  2983. };
  2984. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  2985. {
  2986. CHAR szTemp[TEMP_STR_LEN];
  2987. if(ucValid!=0) {
  2988. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,MixerNum=%d(",
  2989. pszParamName?pszParamName:"SyncSrc", ucValid, ucMixerNum);
  2990. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  2991. CHAR szIndex[8]={0};
  2992. for(INT i=0; i<ucMixerNum; i++) {
  2993. sprintf(szIndex, "%d,", ucMixerIds[i]);
  2994. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szIndex));
  2995. }
  2996. char *p = (CHAR *)(szOutStr-1);
  2997. p[0] = 0;
  2998. _snprintf(szTemp, TEMP_STR_LEN, ")>");
  2999. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3000. } else {
  3001. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ", pszParamName?pszParamName:"SyncSrc", ucValid);
  3002. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3003. }
  3004. return 0;
  3005. };
  3006. } VIDEO_PARTICIANT_SYNC_SRC_USR;
  3007. typedef struct tagM3G_VIDEOCONF_CDT_USR: public tagM3G_VIDEOCONF_CDT {
  3008. tagM3G_VIDEOCONF_CDT_USR() { Init(); };
  3009. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3010. INT GetSize() { return sizeof(*this); };
  3011. VOID SetValue(UINT vVideodev, VIDEO_PARTICIANT_SENDER* pSender,VIDEO_PARTICIANT_RECVER* pRecver, VIDEO_PARTICIANT_VISION* pVision, VIDEO_PARTICIANT_SYNC_SRC *pSyncsrc)
  3012. {
  3013. if(vVideodev!=(UINT)EHV_NOTHING) videodev = (M3GDEV)vVideodev;
  3014. if(pSender) memcpy(&sender, pSender, sizeof(VIDEO_PARTICIANT_SENDER));
  3015. if(pRecver) memcpy(&recver, pRecver, sizeof(VIDEO_PARTICIANT_RECVER));
  3016. if(pVision) memcpy(&vision, pVision, sizeof(VIDEO_PARTICIANT_VISION));
  3017. if(pSyncsrc) memcpy(&syncsrc, pSyncsrc, sizeof(VIDEO_PARTICIANT_SYNC_SRC));
  3018. };
  3019. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3020. {
  3021. CHAR szTemp[TEMP_STR_LEN];
  3022. _snprintf(szTemp, TEMP_STR_LEN, "%s<videodev=%d, ", pszParamName?pszParamName:"VideoCdt", videodev);
  3023. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3024. FAILRETN(((VIDEO_PARTICIANT_SENDER_USR*)&sender)->TraceStr(szOutStr));
  3025. FAILRETN(((VIDEO_PARTICIANT_RECVER_USR*)&recver)->TraceStr(szOutStr));
  3026. FAILRETN(((VIDEO_PARTICIANT_VISION_USR*)&vision)->TraceStr(szOutStr));
  3027. FAILRETN(((VIDEO_PARTICIANT_SYNC_SRC_USR*)&syncsrc)->TraceStr(szOutStr));
  3028. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3029. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3030. return 0;
  3031. };
  3032. } M3G_VIDEOCONF_CDT_USR;
  3033. typedef struct tagM3G_VOICECONF_PARM_USR: public tagM3G_VOICECONF_PARM {
  3034. tagM3G_VOICECONF_PARM_USR() { Init(); };
  3035. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3036. INT GetSize() { return sizeof(*this); };
  3037. VOID SetValue(UINT vMaxDominantSpeakers, UINT vHangOver)
  3038. {
  3039. if(vMaxDominantSpeakers!=(UINT)EHV_NOTHING) ulMaxDominantSpeakers = (UINT)vMaxDominantSpeakers;
  3040. if(vHangOver!=(UINT)EHV_NOTHING) ulHangOver = (UINT)vHangOver;
  3041. };
  3042. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3043. {
  3044. CHAR szTemp[TEMP_STR_LEN];
  3045. _snprintf(szTemp, TEMP_STR_LEN, "%s<MaxDominantSpeakers=%d,HangOver=%d> ",
  3046. pszParamName?pszParamName:"VoiceConfParm", ulMaxDominantSpeakers, ulHangOver);
  3047. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3048. return 0;
  3049. };
  3050. } M3G_VOICECONF_PARM_USR;
  3051. typedef struct tagM3G_VOICECONF_CDT_USR: public tagM3G_VOICECONF_CDT {
  3052. tagM3G_VOICECONF_CDT_USR() { Init(); };
  3053. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3054. INT GetSize() { return sizeof(*this); };
  3055. VOID SetValue(UINT vVoicedev, UINT vParticipantType, UINT vWhisperdev)
  3056. {
  3057. if(vVoicedev!=(UINT)EHV_NOTHING) voicedev = (M3GDEV)vVoicedev;
  3058. if(vWhisperdev!=(UINT)EHV_NOTHING) Whisperdev = (M3GDEV)vWhisperdev;
  3059. if(vParticipantType!=(UINT)EHV_NOTHING) ucParticipantType = (UCHAR)vParticipantType;
  3060. };
  3061. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3062. {
  3063. CHAR szTemp[TEMP_STR_LEN];
  3064. _snprintf(szTemp, TEMP_STR_LEN, "%s<voicedev=%d,ParticipantType=%d,Whisperdev=%d> ",
  3065. pszParamName?pszParamName:"VoiceCdt", voicedev, ucParticipantType, Whisperdev);
  3066. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3067. return 0;
  3068. };
  3069. } M3G_VOICECONF_CDT_USR;
  3070. //////////////////////////////////////////////////////////////////////////
  3071. //IPM
  3072. typedef struct tagIpConfig_TOS_USR: public IpConfig_TOS {
  3073. tagIpConfig_TOS_USR() { Init(); };
  3074. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3075. INT GetSize() { return sizeof(*this); };
  3076. VOID SetValue(UINT vPrecedence, UINT vLowDelay, UINT vHighThroughout, UINT vHighReliability, UINT vLowCost)
  3077. {
  3078. Valid = 1;
  3079. if(vPrecedence!=(UINT)EHV_NOTHING) Precedence = (UCHAR)vPrecedence;
  3080. if(vLowDelay!=(UINT)EHV_NOTHING) LowDelay = (UCHAR)vLowDelay;
  3081. if(vHighThroughout!=(UINT)EHV_NOTHING) HighThroughout = (UCHAR)vHighThroughout;
  3082. if(vHighReliability!=(UINT)EHV_NOTHING) HighReliability = (UCHAR)vHighReliability;
  3083. if(vLowCost!=(UINT)EHV_NOTHING) LowCost = (UCHAR)vLowCost;
  3084. };
  3085. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3086. {
  3087. CHAR szTemp[TEMP_STR_LEN];
  3088. if(Valid==1) {
  3089. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Precedence=%d,LowDelay=%d,HighThroughout=%d,HighReliability=%d,LowCost=%d> ",
  3090. pszParamName?pszParamName:"TOS", Valid, Precedence, LowDelay, HighThroughout, HighReliability, LowCost);
  3091. } else {
  3092. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3093. pszParamName?pszParamName:"TOS", Valid);
  3094. }
  3095. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3096. return 0;
  3097. };
  3098. } IpConfig_TOS_USR;
  3099. typedef struct tagIpConfig_UDPSourcePortValid_USR: public IpConfig_UDPSourcePortValid {
  3100. tagIpConfig_UDPSourcePortValid_USR() { Init(); };
  3101. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3102. INT GetSize() { return sizeof(*this); };
  3103. VOID SetValue(UINT vSourcePortValid)
  3104. {
  3105. Valid = 1;
  3106. if(vSourcePortValid!=(UINT)EHV_NOTHING) SourcePortValid = (UCHAR)vSourcePortValid;
  3107. };
  3108. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3109. {
  3110. CHAR szTemp[TEMP_STR_LEN];
  3111. if(Valid==1) {
  3112. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,SourcePortValid=%d> ",
  3113. pszParamName?pszParamName:"UDPSrcPortValid", Valid, SourcePortValid);
  3114. } else {
  3115. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3116. pszParamName?pszParamName:"UDPSrcPortValid", Valid);
  3117. }
  3118. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3119. return 0;
  3120. };
  3121. } IpConfig_UDPSourcePortValid_USR;
  3122. typedef struct tagIpConfig_IMID_USR: public IpConfig_IMID {
  3123. tagIpConfig_IMID_USR() { Init(); };
  3124. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3125. INT GetSize() { return sizeof(*this); };
  3126. VOID SetValue(UINT vIMID)
  3127. {
  3128. Valid = 1;
  3129. if(vIMID!=(UINT)EHV_NOTHING) IMID = (USHORT)vIMID;
  3130. };
  3131. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3132. {
  3133. CHAR szTemp[TEMP_STR_LEN];
  3134. if(Valid==1) {
  3135. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,IMID=%d> ",
  3136. pszParamName?pszParamName:"IMID", Valid, IMID);
  3137. } else {
  3138. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3139. pszParamName?pszParamName:"IMID", Valid);
  3140. }
  3141. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3142. return 0;
  3143. };
  3144. } IpConfig_IMID_USR;
  3145. typedef struct tagIpConfig_MID_USR: public IpConfig_MID {
  3146. tagIpConfig_MID_USR() { Init(); };
  3147. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3148. INT GetSize() { return sizeof(*this); };
  3149. VOID SetValue(UINT vMID)
  3150. {
  3151. Valid = 1;
  3152. if(vMID!=(UINT)EHV_NOTHING) MID = (USHORT)vMID;
  3153. };
  3154. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3155. {
  3156. CHAR szTemp[TEMP_STR_LEN];
  3157. if(Valid==1) {
  3158. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,MID=%d> ",
  3159. pszParamName?pszParamName:"MID", Valid, MID);
  3160. } else {
  3161. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3162. pszParamName?pszParamName:"MID", Valid);
  3163. }
  3164. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3165. return 0;
  3166. };
  3167. } IpConfig_MID_USR;
  3168. typedef struct tagGeneralIpConfig_USR: public GeneralIpConfig {
  3169. tagGeneralIpConfig_USR() { Init(); };
  3170. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3171. INT GetSize() { return sizeof(*this); };
  3172. VOID SetTOS(IpConfig_TOS *pTOS)
  3173. {
  3174. if(pTOS) memcpy(&TOS, pTOS, sizeof(IpConfig_TOS));
  3175. };
  3176. VOID SetUDPSrcPortValid(IpConfig_UDPSourcePortValid *pUDPSrcPortValid)
  3177. {
  3178. if(pUDPSrcPortValid) memcpy(&UDPSrcPortValid, pUDPSrcPortValid, sizeof(IpConfig_UDPSourcePortValid));
  3179. };
  3180. VOID SetIMID(IpConfig_IMID *pIMID)
  3181. {
  3182. if(pIMID) memcpy(&IMID, pIMID, sizeof(IpConfig_IMID));
  3183. };
  3184. VOID SetMID(IpConfig_MID *pMID)
  3185. {
  3186. if(pMID) memcpy(&MID, pMID, sizeof(IpConfig_MID));
  3187. };
  3188. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3189. {
  3190. CHAR szTemp[TEMP_STR_LEN];
  3191. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"GeneralIp");
  3192. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3193. FAILRETN(((IpConfig_TOS_USR*)&TOS)->TraceStr(szOutStr));
  3194. FAILRETN(((IpConfig_UDPSourcePortValid_USR*)&UDPSrcPortValid)->TraceStr(szOutStr));
  3195. FAILRETN(((IpConfig_IMID_USR*)&IMID)->TraceStr(szOutStr));
  3196. FAILRETN(((IpConfig_MID_USR*)&MID)->TraceStr(szOutStr));
  3197. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3198. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3199. return 0;
  3200. };
  3201. } GeneralIpConfig_USR;
  3202. typedef struct tagFaxConfig_FaxType_USR: public FaxConfig_FaxType {
  3203. tagFaxConfig_FaxType_USR() { Init(); };
  3204. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3205. INT GetSize() { return sizeof(*this); };
  3206. VOID SetValue(UINT vFaxType)
  3207. {
  3208. Valid = 1;
  3209. if(vFaxType!=(UINT)EHV_NOTHING) FaxType = (UCHAR)vFaxType;
  3210. };
  3211. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3212. {
  3213. CHAR szTemp[TEMP_STR_LEN];
  3214. if(Valid==1) {
  3215. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,FaxType=%d> ",
  3216. pszParamName?pszParamName:"FaxType", Valid, FaxType);
  3217. } else {
  3218. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3219. pszParamName?pszParamName:"FaxType", Valid);
  3220. }
  3221. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3222. return 0;
  3223. };
  3224. } FaxConfig_FaxType_USR;
  3225. typedef struct tagFaxConfig_BypassCoder_USR: public FaxConfig_BypassCoder {
  3226. tagFaxConfig_BypassCoder_USR() { Init(); };
  3227. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3228. INT GetSize() { return sizeof(*this); };
  3229. VOID SetValue(UINT vDecoder, UINT vFaxBypassM)
  3230. {
  3231. Valid = 1;
  3232. if(vDecoder!=(UINT)EHV_NOTHING) Decoder = (UCHAR)vDecoder;
  3233. if(vFaxBypassM!=(UINT)EHV_NOTHING) FaxBypassM = (UCHAR)vFaxBypassM;
  3234. };
  3235. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3236. {
  3237. CHAR szTemp[TEMP_STR_LEN];
  3238. if(Valid==1) {
  3239. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Decoder=%d,FaxBypassM=%d> ",
  3240. pszParamName?pszParamName:"BypassCoder", Valid, Decoder, FaxBypassM);
  3241. } else {
  3242. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3243. pszParamName?pszParamName:"BypassCoder", Valid);
  3244. }
  3245. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3246. return 0;
  3247. };
  3248. } FaxConfig_BypassCoder_USR;
  3249. typedef struct tagFaxConfig_CompMode_USR: public FaxConfig_CompMode {
  3250. tagFaxConfig_CompMode_USR() { Init(); };
  3251. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3252. INT GetSize() { return sizeof(*this); };
  3253. VOID SetValue(UINT vEcmComptMode)
  3254. {
  3255. Valid = 1;
  3256. if(vEcmComptMode!=(UINT)EHV_NOTHING) EcmComptMode = (UCHAR)vEcmComptMode;
  3257. };
  3258. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3259. {
  3260. CHAR szTemp[TEMP_STR_LEN];
  3261. if(Valid==1) {
  3262. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,EcmComptMode=%d> ",
  3263. pszParamName?pszParamName:"CompMode", Valid, EcmComptMode);
  3264. } else {
  3265. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3266. pszParamName?pszParamName:"CompMode", Valid);
  3267. }
  3268. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3269. return 0;
  3270. };
  3271. } FaxConfig_CompMode_USR;
  3272. typedef struct tagFaxAttributeConfig_USR: public FaxAttributeConfig {
  3273. tagFaxAttributeConfig_USR() { Init(); };
  3274. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3275. INT GetSize() { return sizeof(*this); };
  3276. VOID SetFaxType(FaxConfig_FaxType *pFaxType)
  3277. {
  3278. if(pFaxType) memcpy(&FaxType, pFaxType, sizeof(FaxConfig_FaxType));
  3279. };
  3280. VOID SetBypassCoder(FaxConfig_BypassCoder *pBypassCoder)
  3281. {
  3282. if(pBypassCoder) memcpy(&BypassCoder, pBypassCoder, sizeof(FaxConfig_BypassCoder));
  3283. };
  3284. VOID SetCompMode(FaxConfig_CompMode *pCompMode)
  3285. {
  3286. if(pCompMode) memcpy(&CompMode, pCompMode, sizeof(FaxConfig_CompMode));
  3287. };
  3288. VOID SetSrcT38Port(IpConfig_UdpPort *pSrcT38Port)
  3289. {
  3290. if(pSrcT38Port) memcpy(&SrcT38Port, pSrcT38Port, sizeof(IpConfig_UdpPort));
  3291. };
  3292. VOID SetDstT38Port(IpConfig_UdpPort *pDstT38Port)
  3293. {
  3294. if(pDstT38Port) memcpy(&DstT38Port, pDstT38Port, sizeof(IpConfig_UdpPort));
  3295. };
  3296. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3297. {
  3298. CHAR szTemp[TEMP_STR_LEN];
  3299. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"FaxConfig");
  3300. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3301. FAILRETN(((FaxConfig_FaxType_USR*)&FaxType)->TraceStr(szOutStr));
  3302. FAILRETN(((FaxConfig_BypassCoder_USR*)&BypassCoder)->TraceStr(szOutStr));
  3303. FAILRETN(((FaxConfig_CompMode_USR*)&CompMode)->TraceStr(szOutStr));
  3304. FAILRETN(((IpConfig_UdpPort_USR*)&SrcT38Port)->TraceStr(szOutStr, "SrcT38Port"));
  3305. FAILRETN(((IpConfig_UdpPort_USR*)&DstT38Port)->TraceStr(szOutStr, "DstT38Port"));
  3306. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3307. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3308. return 0;
  3309. };
  3310. } FaxAttributeConfig_USR;
  3311. typedef struct tagVoiceConfig_PayloadType_USR: public VoiceConfig_PayloadType {
  3312. tagVoiceConfig_PayloadType_USR() { Init(); };
  3313. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3314. INT GetSize() { return sizeof(*this); };
  3315. VOID SetValue(UINT vPaylaodType)
  3316. {
  3317. Valid = 1;
  3318. if(vPaylaodType!=(UINT)EHV_NOTHING) PaylaodType = (UCHAR)vPaylaodType;
  3319. };
  3320. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3321. {
  3322. CHAR szTemp[TEMP_STR_LEN];
  3323. if(Valid==1) {
  3324. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,PaylaodType=%d> ",
  3325. pszParamName?pszParamName:"PaylaodType", Valid, PaylaodType);
  3326. } else {
  3327. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3328. pszParamName?pszParamName:"PaylaodType", Valid);
  3329. }
  3330. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3331. return 0;
  3332. };
  3333. } VoiceConfig_PayloadType_USR;
  3334. typedef struct tagVoiceAttributeConfig_USR: public VoiceAttributeConfig {
  3335. tagVoiceAttributeConfig_USR() { Init(); };
  3336. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3337. INT GetSize() { return sizeof(*this); };
  3338. VOID SetPayloadType(VoiceConfig_PayloadType *pPayloadType)
  3339. {
  3340. if(pPayloadType) memcpy(&PayloadType, pPayloadType, sizeof(VoiceConfig_PayloadType));
  3341. };
  3342. VOID SetPayloadSize(VoiceConfig_PayloadSize *pPayloadSize)
  3343. {
  3344. if(pPayloadSize) memcpy(&PayloadSize, pPayloadSize, sizeof(VoiceConfig_PayloadSize));
  3345. };
  3346. VOID SetSilenceSuppress(VoiceConfig_SilenceSuppress *pSilenceSuppress)
  3347. {
  3348. if(pSilenceSuppress) memcpy(&SilenceSuppress, pSilenceSuppress, sizeof(VoiceConfig_SilenceSuppress));
  3349. };
  3350. VOID SetEchoCancel(VoiceConfig_EchoCancel *pEchoCancel)
  3351. {
  3352. if(pEchoCancel) memcpy(&EchoCancel, pEchoCancel, sizeof(VoiceConfig_EchoCancel));
  3353. };
  3354. VOID SetMinJitterBuffer(VoiceConfig_JitterBufferDelay *pMinJitterBuffer)
  3355. {
  3356. if(pMinJitterBuffer) memcpy(&MinJitterBuffer, pMinJitterBuffer, sizeof(VoiceConfig_JitterBufferDelay));
  3357. };
  3358. VOID SetMaxJitterBuffer(VoiceConfig_JitterBufferDelay *pMaxJitterBuffer)
  3359. {
  3360. if(pMaxJitterBuffer) memcpy(&MaxJitterBuffer, pMaxJitterBuffer, sizeof(VoiceConfig_JitterBufferDelay));
  3361. };
  3362. VOID SetAdaptationRate(VoiceConfig_AdaptationRate *pAdaptationRate)
  3363. {
  3364. if(pAdaptationRate) memcpy(&AdaptationRate, pAdaptationRate, sizeof(VoiceConfig_AdaptationRate));
  3365. };
  3366. VOID SetSrcRTCPPort(IpConfig_UdpPort *pSrcRTCPPort)
  3367. {
  3368. if(pSrcRTCPPort) memcpy(&SrcRTCPPort, pSrcRTCPPort, sizeof(IpConfig_UdpPort));
  3369. };
  3370. VOID SetDstRTCPPort(IpConfig_UdpPort *pDstRTCPPort)
  3371. {
  3372. if(pDstRTCPPort) memcpy(&DstRTCPPort, pDstRTCPPort, sizeof(IpConfig_UdpPort));
  3373. };
  3374. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3375. {
  3376. CHAR szTemp[TEMP_STR_LEN];
  3377. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"VoiceConfig");
  3378. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3379. FAILRETN(((VoiceConfig_PayloadType_USR*)&PayloadType)->TraceStr(szOutStr));
  3380. FAILRETN(((VoiceConfig_PayloadSize_USR*)&PayloadSize)->TraceStr(szOutStr));
  3381. FAILRETN(((VoiceConfig_SilenceSuppress_USR*)&SilenceSuppress)->TraceStr(szOutStr));
  3382. FAILRETN(((VoiceConfig_EchoCancel_USR*)&EchoCancel)->TraceStr(szOutStr));
  3383. FAILRETN(((VoiceConfig_JitterBufferDelay_USR*)&MinJitterBuffer)->TraceStr(szOutStr, "MinJitterBuffer"));
  3384. FAILRETN(((VoiceConfig_JitterBufferDelay_USR*)&MaxJitterBuffer)->TraceStr(szOutStr, "MaxJitterBuffer"));
  3385. FAILRETN(((VoiceConfig_AdaptationRate_USR*)&AdaptationRate)->TraceStr(szOutStr));
  3386. FAILRETN(((IpConfig_UdpPort_USR*)&SrcRTCPPort)->TraceStr(szOutStr, "SrcRTCPPort"));
  3387. FAILRETN(((IpConfig_UdpPort_USR*)&DstRTCPPort)->TraceStr(szOutStr, "DstRTCPPort"));
  3388. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3389. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3390. return 0;
  3391. };
  3392. } VoiceAttributeConfig_USR;
  3393. typedef struct tagRfc2198Config_RTPPacketDepth_USR: public Rfc2198Config_RTPPacketDepth {
  3394. tagRfc2198Config_RTPPacketDepth_USR() { Init(); };
  3395. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3396. INT GetSize() { return sizeof(*this); };
  3397. VOID SetValue(UINT vRedundancyDepth)
  3398. {
  3399. Valid = 1;
  3400. if(vRedundancyDepth!=(UINT)EHV_NOTHING) RedundancyDepth = (UCHAR)vRedundancyDepth;
  3401. };
  3402. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3403. {
  3404. CHAR szTemp[TEMP_STR_LEN];
  3405. if(Valid==1) {
  3406. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,RedundancyDepth=%d> ",
  3407. pszParamName?pszParamName:"Redundancy", Valid, RedundancyDepth);
  3408. } else {
  3409. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3410. pszParamName?pszParamName:"Redundancy", Valid);
  3411. }
  3412. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3413. return 0;
  3414. };
  3415. } Rfc2198Config_RTPPacketDepth_USR, Rfc2198Config_FaxPacketDepth_USR, Rfc2198Config_Rfc2833PacketDepth_USR;
  3416. typedef struct tagRfc2198Config_DynamicPayload_USR: public Rfc2198Config_DynamicPayload {
  3417. tagRfc2198Config_DynamicPayload_USR() { Init(); };
  3418. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3419. INT GetSize() { return sizeof(*this); };
  3420. VOID SetValue(UINT vDynamicPayload)
  3421. {
  3422. Valid = 1;
  3423. if(vDynamicPayload!=(UINT)EHV_NOTHING) DynamicPayload = (UCHAR)vDynamicPayload;
  3424. };
  3425. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3426. {
  3427. CHAR szTemp[TEMP_STR_LEN];
  3428. if(Valid==1) {
  3429. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,DynamicPayload=%d> ",
  3430. pszParamName?pszParamName:"DynamicPayload", Valid, DynamicPayload);
  3431. } else {
  3432. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3433. pszParamName?pszParamName:"DynamicPayload", Valid);
  3434. }
  3435. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3436. return 0;
  3437. };
  3438. } Rfc2198Config_DynamicPayload_USR;
  3439. typedef struct tagRfc2198Config_USR: public Rfc2198Config {
  3440. tagRfc2198Config_USR() { Init(); };
  3441. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3442. INT GetSize() { return sizeof(*this); };
  3443. VOID SetRtpPacketDepth(Rfc2198Config_RTPPacketDepth *pRtpPacketDepth)
  3444. {
  3445. if(pRtpPacketDepth) memcpy(&RtpPacketDepth, pRtpPacketDepth, sizeof(Rfc2198Config_RTPPacketDepth));
  3446. };
  3447. VOID SetFaxPacketDepth(Rfc2198Config_FaxPacketDepth *pFaxPacketDepth)
  3448. {
  3449. if(pFaxPacketDepth) memcpy(&FaxPacketDepth, pFaxPacketDepth, sizeof(Rfc2198Config_FaxPacketDepth));
  3450. };
  3451. VOID SetRfc2833PacketDepth(Rfc2198Config_Rfc2833PacketDepth *pRfc2833PacketDepth)
  3452. {
  3453. if(pRfc2833PacketDepth) memcpy(&Rfc2833PacketDepth, pRfc2833PacketDepth, sizeof(Rfc2198Config_Rfc2833PacketDepth));
  3454. };
  3455. VOID SetDynamicPayload(Rfc2198Config_DynamicPayload *pDynamicPayload)
  3456. {
  3457. if(pDynamicPayload) memcpy(&DynamicPayload, pDynamicPayload, sizeof(Rfc2198Config_DynamicPayload));
  3458. };
  3459. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3460. {
  3461. CHAR szTemp[TEMP_STR_LEN];
  3462. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"Rfc2198Config");
  3463. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3464. FAILRETN(((Rfc2198Config_RTPPacketDepth_USR*)&RtpPacketDepth)->TraceStr(szOutStr));
  3465. FAILRETN(((Rfc2198Config_FaxPacketDepth_USR*)&FaxPacketDepth)->TraceStr(szOutStr));
  3466. FAILRETN(((Rfc2198Config_Rfc2833PacketDepth_USR*)&Rfc2833PacketDepth)->TraceStr(szOutStr));
  3467. FAILRETN(((Rfc2198Config_DynamicPayload_USR*)&DynamicPayload)->TraceStr(szOutStr));
  3468. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3469. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3470. return 0;
  3471. };
  3472. } Rfc2198Config_USR;
  3473. typedef struct tagIpMedia_AnswerDetectorInfo_USR: public IpMedia_AnswerDetectorInfo {
  3474. tagIpMedia_AnswerDetectorInfo_USR() { Init(); };
  3475. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3476. INT GetSize() { return sizeof(*this); };
  3477. VOID SetValue(UINT vActive, UINT vActivityDelay, UINT vRedirection, UINT vSilenceTime)
  3478. {
  3479. Valid = 1;
  3480. if(vActive!=(UINT)EHV_NOTHING) Active = (UCHAR)vActive;
  3481. if(vActivityDelay!=(UINT)EHV_NOTHING) ActivityDelay = (UCHAR)vActivityDelay;
  3482. if(vRedirection!=(UINT)EHV_NOTHING) Redirection = (UCHAR)vRedirection;
  3483. if(vSilenceTime!=(UINT)EHV_NOTHING) SilenceTime = (UCHAR)vSilenceTime;
  3484. };
  3485. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3486. {
  3487. CHAR szTemp[TEMP_STR_LEN];
  3488. if(Valid==1) {
  3489. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Active=%d,ActivityDelay=%d,Redirection=%d,SilenceTime=%d> ",
  3490. pszParamName?pszParamName:"AnswerDetector", Valid, Active, ActivityDelay, Redirection, SilenceTime);
  3491. } else {
  3492. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3493. pszParamName?pszParamName:"AnswerDetector", Valid);
  3494. }
  3495. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3496. return 0;
  3497. };
  3498. } IpMedia_AnswerDetectorInfo_USR;
  3499. typedef struct tagIpMedia_AgcInfo_USR: public IpMedia_AgcInfo {
  3500. tagIpMedia_AgcInfo_USR() { Init(); };
  3501. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3502. INT GetSize() { return sizeof(*this); };
  3503. VOID SetValue(UINT vActive, UINT vGainSlop, UINT vRedirection, UINT vTargetEnergy)
  3504. {
  3505. Valid = 1;
  3506. if(vActive!=(UINT)EHV_NOTHING) Active = (UCHAR)vActive;
  3507. if(vGainSlop!=(UINT)EHV_NOTHING) GainSlop = (UCHAR)vGainSlop;
  3508. if(vRedirection!=(UINT)EHV_NOTHING) Redirection = (UCHAR)vRedirection;
  3509. if(vTargetEnergy!=(UINT)EHV_NOTHING) TargetEnergy = (UCHAR)vTargetEnergy;
  3510. };
  3511. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3512. {
  3513. CHAR szTemp[TEMP_STR_LEN];
  3514. if(Valid==1) {
  3515. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Active=%d,GainSlop=%d,Redirection=%d,TargetEnergy=%d> ",
  3516. pszParamName?pszParamName:"Agc", Valid, Active, GainSlop, Redirection, TargetEnergy);
  3517. } else {
  3518. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3519. pszParamName?pszParamName:"Agc", Valid);
  3520. }
  3521. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3522. return 0;
  3523. };
  3524. } IpMedia_AgcInfo_USR;
  3525. typedef struct tagIpMedia_EnergyDetectorInfo_USR: public IpMedia_EnergyDetectorInfo {
  3526. tagIpMedia_EnergyDetectorInfo_USR() { Init(); };
  3527. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3528. INT GetSize() { return sizeof(*this); };
  3529. VOID SetValue(UINT vActive, UINT vThreshold, UINT vQualifyFactor)
  3530. {
  3531. Valid = 1;
  3532. if(vActive!=(UINT)EHV_NOTHING) Active = (UCHAR)vActive;
  3533. if(vThreshold!=(UINT)EHV_NOTHING) Threshold = (UCHAR)vThreshold;
  3534. if(vQualifyFactor!=(UINT)EHV_NOTHING) QualifyFactor = (UCHAR)vQualifyFactor;
  3535. };
  3536. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3537. {
  3538. CHAR szTemp[TEMP_STR_LEN];
  3539. if(Valid==1) {
  3540. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,Active=%d,Threshold=%d,QualifyFactor=%d> ",
  3541. pszParamName?pszParamName:"EnergyDetector", Valid, Active, Threshold, QualifyFactor);
  3542. } else {
  3543. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d> ",
  3544. pszParamName?pszParamName:"EnergyDetector", Valid);
  3545. }
  3546. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3547. return 0;
  3548. };
  3549. } IpMedia_EnergyDetectorInfo_USR;
  3550. typedef struct tagIpMediaConfig_USR: public IpMediaConfig {
  3551. tagIpMediaConfig_USR() { Init(); };
  3552. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3553. INT GetSize() { return sizeof(*this); };
  3554. VOID SetAnswerDetector(IpMedia_AnswerDetectorInfo *pAnswerDetector)
  3555. {
  3556. if(pAnswerDetector) memcpy(&AnswerDetector, pAnswerDetector, sizeof(IpMedia_AnswerDetectorInfo));
  3557. };
  3558. VOID SetAgc(IpMedia_AgcInfo *pAgc)
  3559. {
  3560. if(pAgc) memcpy(&Agc, pAgc, sizeof(IpMedia_AgcInfo));
  3561. };
  3562. VOID SetEnergyDetector(IpMedia_EnergyDetectorInfo *pEnergyDetector)
  3563. {
  3564. if(pEnergyDetector) memcpy(&EnergyDetector, pEnergyDetector, sizeof(IpMedia_EnergyDetectorInfo));
  3565. };
  3566. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3567. {
  3568. CHAR szTemp[TEMP_STR_LEN];
  3569. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"IpMediaCfg");
  3570. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3571. FAILRETN(((IpMedia_AnswerDetectorInfo_USR*)&AnswerDetector)->TraceStr(szOutStr));
  3572. FAILRETN(((IpMedia_AgcInfo_USR*)&Agc)->TraceStr(szOutStr));
  3573. FAILRETN(((IpMedia_EnergyDetectorInfo_USR*)&EnergyDetector)->TraceStr(szOutStr));
  3574. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3575. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3576. return 0;
  3577. };
  3578. } IpMediaConfig_USR;
  3579. typedef struct tagXOIP_CFG_USR: public XOIP_CFG {
  3580. tagXOIP_CFG_USR() { Init(); };
  3581. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3582. INT GetSize() { return sizeof(*this); };
  3583. VOID SetValue(UINT vConnMode)
  3584. {
  3585. if(vConnMode!=(UINT)EHV_NOTHING) ConnMode = (UCHAR)vConnMode;
  3586. };
  3587. VOID SetDstIpAddr(IpConfig_IP_addr *pDstIpAddr)
  3588. {
  3589. if(pDstIpAddr) memcpy(&DstIpAddr, pDstIpAddr, sizeof(IpConfig_IP_addr));
  3590. };
  3591. VOID SetDstRtpPort(IpConfig_UdpPort *pDstRtpPort)
  3592. {
  3593. if(pDstRtpPort) memcpy(&DstRtpPort, pDstRtpPort, sizeof(IpConfig_UdpPort));
  3594. };
  3595. VOID SetGenIpCfg(GeneralIpConfig *pGenIpCfg)
  3596. {
  3597. if(pGenIpCfg) memcpy(&GenIpCfg, pGenIpCfg, sizeof(GeneralIpConfig));
  3598. };
  3599. VOID SetFaxCfg(FaxAttributeConfig *pFaxCfg)
  3600. {
  3601. if(pFaxCfg) memcpy(&FaxCfg, pFaxCfg, sizeof(FaxAttributeConfig));
  3602. };
  3603. VOID SetVoiceCfg(VoiceAttributeConfig *pVoiceCfg)
  3604. {
  3605. if(pVoiceCfg) memcpy(&VoiceCfg, pVoiceCfg, sizeof(VoiceAttributeConfig));
  3606. };
  3607. VOID SetDtmfCfg(DtmfConfig *pDtmfCfg)
  3608. {
  3609. if(pDtmfCfg) memcpy(&DtmfCfg, pDtmfCfg, sizeof(DtmfConfig));
  3610. };
  3611. VOID SetRfc2189Cfg(Rfc2198Config *pRfc2189Cfg)
  3612. {
  3613. if(pRfc2189Cfg) memcpy(&Rfc2189Cfg, pRfc2189Cfg, sizeof(Rfc2198Config));
  3614. };
  3615. VOID SetIpMediaCfg(IpMediaConfig *pIpMediaCfg)
  3616. {
  3617. if(pIpMediaCfg) memcpy(&IpMediaCfg, pIpMediaCfg, sizeof(IpMediaConfig));
  3618. };
  3619. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3620. {
  3621. CHAR szTemp[TEMP_STR_LEN];
  3622. _snprintf(szTemp, TEMP_STR_LEN, "%s<ConnMode=%d,",
  3623. pszParamName?pszParamName:"VoiceCdt", ConnMode);
  3624. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3625. FAILRETN(((IpConfig_IP_addr_USR*)&DstIpAddr)->TraceStr(szOutStr));
  3626. FAILRETN(((IpConfig_UdpPort_USR*)&DstRtpPort)->TraceStr(szOutStr));
  3627. FAILRETN(((GeneralIpConfig_USR*)&GenIpCfg)->TraceStr(szOutStr));
  3628. FAILRETN(((FaxAttributeConfig_USR*)&FaxCfg)->TraceStr(szOutStr));
  3629. FAILRETN(((VoiceAttributeConfig_USR*)&VoiceCfg)->TraceStr(szOutStr));
  3630. FAILRETN(((DtmfConfig_USR*)&DtmfCfg)->TraceStr(szOutStr));
  3631. FAILRETN(((Rfc2198Config_USR*)&Rfc2189Cfg)->TraceStr(szOutStr));
  3632. FAILRETN(((IpMediaConfig_USR*)&IpMediaCfg)->TraceStr(szOutStr));
  3633. FAILRETN(((IpConfig_UdpPort_USR*)&SrcRtpPort)->TraceStr(szOutStr));
  3634. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3635. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3636. return 0;
  3637. };
  3638. } XOIP_CFG_USR;
  3639. typedef struct tagM3G_VIDEOCONF_FOREGROUND_USR: public tagM3G_VIDEOCONF_FOREGROUND {
  3640. tagM3G_VIDEOCONF_FOREGROUND_USR() { Init(); };
  3641. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3642. INT GetSize() { return sizeof(*this); };
  3643. VOID SetValue(UINT vControlCode, CHAR *vFileName)
  3644. {
  3645. if(vControlCode!=(UINT)EHV_NOTHING) ucControlCode = (UCHAR)vControlCode;
  3646. if(vFileName!=NULL) strncpy(szFileName, vFileName, sizeof(szFileName));
  3647. };
  3648. VOID Set_vision(VIDEO_PARTICIANT_VISION *pVision)
  3649. {
  3650. if(pVision) memcpy(&vision, pVision, sizeof(VIDEO_PARTICIANT_VISION));
  3651. };
  3652. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3653. {
  3654. CHAR szTemp[TEMP_STR_LEN];
  3655. _snprintf(szTemp, TEMP_STR_LEN, "%s<ControlCode=%d,", pszParamName?pszParamName:"Foreground", ucControlCode);
  3656. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3657. FAILRETN(((VIDEO_PARTICIANT_VISION_USR*)&vision)->TraceStr(szOutStr));
  3658. _snprintf(szTemp, TEMP_STR_LEN, "FileName=%s)> ", szFileName);
  3659. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3660. return 0;
  3661. };
  3662. } M3G_VIDEOCONF_FOREGROUND_USR, M3G_VIDEOCONF_BACKGROUND_USR;
  3663. typedef struct tagM3G_BOX_ATTRI_USR: public tagM3G_BOX_ATTRI {
  3664. tagM3G_BOX_ATTRI_USR() { Init(); };
  3665. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3666. INT GetSize() { return sizeof(*this); };
  3667. VOID SetValue(UINT vBoxColorY, UINT vBoxColorU, UINT vBoxColorV, UINT vLineSize)
  3668. {
  3669. if(vBoxColorY!=(UINT)EHV_NOTHING) ucBoxColorY = (UCHAR)vBoxColorY;
  3670. if(vBoxColorU!=(UINT)EHV_NOTHING) ucBoxColorU = (UCHAR)vBoxColorU;
  3671. if(vBoxColorV!=(UINT)EHV_NOTHING) ucBoxColorV = (UCHAR)vBoxColorV;
  3672. if(vLineSize!=(UINT)EHV_NOTHING) ucLineSize = (UCHAR)vLineSize;
  3673. };
  3674. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3675. {
  3676. CHAR szTemp[TEMP_STR_LEN];
  3677. _snprintf(szTemp, TEMP_STR_LEN, "%s<YUV(%d.%d.%d),LineSize=%d> ",
  3678. pszParamName?pszParamName:"BoxAttr", ucBoxColorY, ucBoxColorU, ucBoxColorV, ucLineSize);
  3679. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3680. return 0;
  3681. };
  3682. } M3G_BOX_ATTRI_USR;
  3683. typedef struct tagM3G_BOX_VISION_ITEM_USR: public tagM3G_BOX_VISION_ITEM {
  3684. tagM3G_BOX_VISION_ITEM_USR() { Init(); };
  3685. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3686. INT GetSize() { return sizeof(*this); };
  3687. VOID SetValue() { };
  3688. VOID Set_Vision(VIDEO_PARTICIANT_VISION *pVision)
  3689. {
  3690. if(pVision) memcpy(&Vision, pVision, sizeof(VIDEO_PARTICIANT_VISION));
  3691. };
  3692. VOID Set_BoxAttr(M3G_BOX_ATTRI *pBoxAttr)
  3693. {
  3694. if(pBoxAttr) memcpy(&BoxAttr, pBoxAttr, sizeof(M3G_BOX_ATTRI));
  3695. };
  3696. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3697. {
  3698. CHAR szTemp[TEMP_STR_LEN];
  3699. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"BoxItem");
  3700. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3701. FAILRETN(((VIDEO_PARTICIANT_VISION_USR*)&Vision)->TraceStr(szOutStr));
  3702. FAILRETN(((M3G_BOX_ATTRI_USR*)&BoxAttr)->TraceStr(szOutStr));
  3703. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3704. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3705. return 0;
  3706. };
  3707. } M3G_BOX_VISION_ITEM_USR;
  3708. typedef struct tagM3G_VIDEOCONF_BOX_USR: public tagM3G_VIDEOCONF_BOX {
  3709. tagM3G_VIDEOCONF_BOX_USR() { Init(); };
  3710. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3711. INT GetSize() { return sizeof(*this); };
  3712. VOID SetValue(UINT vVisionNum, M3G_BOX_VISION_ITEM* pVision=NULL)
  3713. {
  3714. if(vVisionNum!=(UINT)EHV_NOTHING) {
  3715. ucVisionNum = (UCHAR)vVisionNum;
  3716. if(ucVisionNum>=MAX_VIDEOCONF_MIXER_NUM) ucVisionNum = MAX_VIDEOCONF_MIXER_NUM;
  3717. } else ucVisionNum = 0;
  3718. if(pVision) {
  3719. for(INT i=0; i<(INT)ucVisionNum; i++) {
  3720. memcpy(&Visions[i], &pVision[i], sizeof(M3G_BOX_VISION_ITEM));
  3721. }
  3722. }
  3723. };
  3724. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3725. {
  3726. CHAR szTemp[TEMP_STR_LEN];
  3727. _snprintf(szTemp, TEMP_STR_LEN, "%s<VisionNum=%d(", pszParamName?pszParamName:"ConfBox", ucVisionNum);
  3728. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3729. CHAR szIndex[8]={0};
  3730. for(INT i=0; i<(INT)ucVisionNum; i++) {
  3731. sprintf(szIndex, "%d", i);
  3732. FAILRETN(((M3G_BOX_VISION_ITEM_USR*)&Visions[i])->TraceStr(szOutStr, szIndex));
  3733. }
  3734. _snprintf(szTemp, TEMP_STR_LEN, ")> ");
  3735. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3736. return 0;
  3737. };
  3738. } M3G_VIDEOCONF_BOX_USR;
  3739. typedef struct tagM3G_VOICE_EC_GAIN_USR: public tagM3G_VOICE_EC_GAIN {
  3740. tagM3G_VOICE_EC_GAIN_USR() { Init(); };
  3741. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3742. INT GetSize() { return sizeof(*this); };
  3743. VOID SetValue(INT rin=0, INT rout=0, INT sin=0, INT sout=0)
  3744. {
  3745. rin_gain = rin;
  3746. rout_gain = rout;
  3747. sin_gain = sin;
  3748. sout_gain = sout;
  3749. };
  3750. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3751. {
  3752. CHAR szTemp[TEMP_STR_LEN];
  3753. _snprintf(szTemp, TEMP_STR_LEN, "%s<rin=%d, rout=%d, sin=%d, sout=%d> ",
  3754. pszParamName?pszParamName:"EcGain", rin_gain, rout_gain, sin_gain, sout_gain);
  3755. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3756. return 0;
  3757. };
  3758. } M3G_VOICE_EC_GAIN_USR;
  3759. /* AGC增益部分 */
  3760. typedef struct tagM3G_VOICE_AGC_USR: public tagM3G_VOICE_AGC {
  3761. tagM3G_VOICE_AGC_USR() { Init(); };
  3762. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3763. INT GetSize() { return sizeof(*this); };
  3764. VOID SetValue(UCHAR vEnable=0, UINT vEngAvgWindowLen=100, INT vMinSignalLevel=-14, INT vMaxSignalLevel=-10,
  3765. UINT vStepLevel=10, INT vSilentLevelThreshold=-30, UCHAR vMaxAppliedGainUsed=0, UINT vMaxAppliedGain=20)
  3766. {
  3767. ucEnable = vEnable;
  3768. ulEngAvgWindowLen = vEngAvgWindowLen;
  3769. lMinSignalLevel = vMinSignalLevel;
  3770. lMaxSignalLevel = vMaxSignalLevel;
  3771. ulStepLevel = vStepLevel;
  3772. lSilentLevelThreshold = vSilentLevelThreshold;
  3773. ucMaxAppliedGainUsed = vMaxAppliedGainUsed;
  3774. ulMaxAppliedGain = vMaxAppliedGain;
  3775. };
  3776. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3777. {
  3778. CHAR szTemp[TEMP_STR_LEN];
  3779. _snprintf(szTemp, TEMP_STR_LEN, "%s<Enable=%d, EngAvgWindowLen=%d, MinSignalLevel=%d, MaxSignalLevel=%d, "
  3780. "StepLevel=%d, SilentLevelThreshold=%d, MaxAppliedGainUsed=%d, MaxAppliedGain=%d> ",
  3781. pszParamName?pszParamName:"AGCGain", ucEnable, ulEngAvgWindowLen, lMinSignalLevel, lMaxSignalLevel,
  3782. ulStepLevel, lSilentLevelThreshold, ucMaxAppliedGainUsed, ulMaxAppliedGain);
  3783. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3784. return 0;
  3785. };
  3786. } M3G_VOICE_AGC_USR;
  3787. typedef struct tagM3G_VOICE_VOLPARM_USR: public tagM3G_VOICE_VOLPARM {
  3788. tagM3G_VOICE_VOLPARM_USR() { Init(); };
  3789. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3790. INT GetSize() { return sizeof(*this); };
  3791. VOID SetValue(M3G_VOICE_EC_GAIN *pEcGain, M3G_VOICE_AGC* pAGCFromTDM=NULL, M3G_VOICE_AGC* pAGCFromIP=NULL)
  3792. {
  3793. if(pEcGain) memcpy(&EcGain, pEcGain, sizeof(M3G_VOICE_EC_GAIN));
  3794. if(pAGCFromTDM) memcpy(&AGCFromTDM, pAGCFromTDM, sizeof(M3G_VOICE_AGC));
  3795. else AGCFromTDM.ucEnable = 0;
  3796. if(pAGCFromIP) memcpy(&AGCFromIP, pAGCFromIP, sizeof(M3G_VOICE_AGC));
  3797. else AGCFromIP.ucEnable = 0;
  3798. };
  3799. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3800. {
  3801. CHAR szTemp[TEMP_STR_LEN];
  3802. _snprintf(szTemp, TEMP_STR_LEN, "%s<", pszParamName?pszParamName:"VolParm");
  3803. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3804. FAILRETN(((M3G_VOICE_EC_GAIN_USR*)&EcGain)->TraceStr(szOutStr));
  3805. FAILRETN(((M3G_VOICE_AGC_USR*)&AGCFromTDM)->TraceStr(szOutStr, "AGCFromTDM"));
  3806. FAILRETN(((M3G_VOICE_AGC_USR*)&AGCFromIP)->TraceStr(szOutStr, "AGCFromIP"));
  3807. _snprintf(szTemp, TEMP_STR_LEN, ">");
  3808. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3809. return 0;
  3810. };
  3811. } M3G_VOICE_VOLPARM_USR;
  3812. typedef struct tagUSER_TO_USER_INFO_USR: public USER_TO_USER_INFO{
  3813. tagUSER_TO_USER_INFO_USR() { Init(); };
  3814. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3815. INT SetDefault(UCHAR vValid)
  3816. {
  3817. if(vValid==enFieldMT_User2UserInfo) {
  3818. valid = enFieldMT_User2UserInfo;
  3819. ProtoDiscriminator = 0x04; //IA5 characters
  3820. sprintf((CHAR*)info, "0123456789");
  3821. len = strlen((CHAR*)info);
  3822. } else if(vValid == enFieldMT_PRI_RedirctingNumb) {
  3823. valid = enFieldMT_PRI_RedirctingNumb;
  3824. RedirectingNumb.numb_type = 0;
  3825. RedirectingNumb.numb_play = 0;
  3826. RedirectingNumb.pres_ind = 0;
  3827. RedirectingNumb.redirect_reason = 0;
  3828. sprintf((CHAR*)RedirectingNumb.numb, "02085567013");
  3829. } else if(valid==enFieldMT_PRI_UuiRedirNumb){
  3830. valid = enFieldMT_PRI_UuiRedirNumb;
  3831. UuiRN.ProtoDiscriminator = 0x04; //IA5 characters
  3832. sprintf((CHAR*)UuiRN.info, "0123456789");
  3833. UuiRN.len = strlen((CHAR*)UuiRN.info);
  3834. UuiRN.info[UuiRN.len]=0;
  3835. UuiRN.pRedirNumb = (PRI_REDIRECT_NUMB *)&UuiRN.info[UuiRN.len+1];
  3836. UuiRN.pRedirNumb->numb_type = 0;
  3837. UuiRN.pRedirNumb->numb_play = 0;
  3838. UuiRN.pRedirNumb->pres_ind = 0;
  3839. UuiRN.pRedirNumb->redirect_reason = 0;
  3840. sprintf((CHAR*)UuiRN.pRedirNumb->numb, "02085567013");
  3841. } else return -1;
  3842. return 0;
  3843. };
  3844. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3845. {
  3846. CHAR szTemp[TEMP_STR_LEN];
  3847. if(valid==enFieldMT_User2UserInfo) {
  3848. _snprintf(szTemp, TEMP_STR_LEN, "%s<valid=%d, len=%d,ProtoDiscriminator=%d,info=%s>",
  3849. pszParamName?pszParamName:"U2UInfo",
  3850. valid,len,ProtoDiscriminator, (char *)info);
  3851. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3852. } else if(valid==enFieldMT_PRI_RedirctingNumb){
  3853. _snprintf(szTemp, TEMP_STR_LEN, "%s<valid=%d, RedirectingNumb<numb_type=%d,numb_play=%d,"
  3854. "pres_ind=%d,redirect_reason=%d,numb=%s>>", pszParamName?pszParamName:"U2UInfo",
  3855. valid,RedirectingNumb.numb_type,RedirectingNumb.numb_play,
  3856. RedirectingNumb.pres_ind, RedirectingNumb.redirect_reason, (char *)RedirectingNumb.numb);
  3857. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3858. } else if(valid==enFieldMT_PRI_UuiRedirNumb){
  3859. if(UuiRN.pRedirNumb) {
  3860. _snprintf(szTemp, TEMP_STR_LEN, "%s<valid=%d, len=%d,ProtoDiscriminator=%d,info=%s, "
  3861. "pRedirNumb<numb_type=%d,numb_play=%d,pres_ind=%d,redirect_reason=%d,numb=%s> >",
  3862. pszParamName?pszParamName:"U2UInfo", valid, UuiRN.len, UuiRN.ProtoDiscriminator,
  3863. (char*)UuiRN.info,
  3864. UuiRN.pRedirNumb->numb_type,
  3865. UuiRN.pRedirNumb->numb_play,
  3866. UuiRN.pRedirNumb->pres_ind,
  3867. UuiRN.pRedirNumb->redirect_reason,
  3868. (char *)UuiRN.pRedirNumb->numb);
  3869. } else {
  3870. _snprintf(szTemp, TEMP_STR_LEN, "%s<valid=%d, len=%d,ProtoDiscriminator=%d,info=%s, pRedirNumb=NULL >",
  3871. pszParamName?pszParamName:"U2UInfo", valid, UuiRN.len, UuiRN.ProtoDiscriminator, (char*)UuiRN.info);
  3872. }
  3873. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3874. } else {
  3875. _snprintf(szTemp, TEMP_STR_LEN, "%s<valid=%d>", pszParamName?pszParamName:"U2UInfo", valid);
  3876. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3877. }
  3878. return 0;
  3879. };
  3880. }USER_TO_USER_INFO_USR;
  3881. typedef struct tagISXSIP_ADDR_URL_USR: public ISXSIP_ADDR_URL{
  3882. tagISXSIP_ADDR_URL_USR() { Init(); };
  3883. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3884. INT GetSize() { return sizeof(*this); };
  3885. VOID SetDefault()
  3886. {
  3887. User[0]=0;
  3888. Host[0]=0;
  3889. PortNum = 0xffff;
  3890. Ttl = 0xffff;
  3891. IsSecure = 0;
  3892. LrType = ISXSIP_URL_LR_UNDEFINED;
  3893. TransportType = ISXSIP_TRANSPORT_UNDEFINED;
  3894. MethodType = ISXSIP_METHOD_UNDEFINED;
  3895. MAddrParam[0]=0;
  3896. };
  3897. VOID SetValue(CHAR* vUser, CHAR* vHost, USHORT vPort=0xffff)
  3898. {
  3899. _snprintf(User, sizeof(User), vUser);
  3900. _snprintf(Host, sizeof(Host), vHost);
  3901. PortNum = vPort;
  3902. };
  3903. VOID SetOther(USHORT vTtl=0xffff, UCHAR vIsSecure=0,
  3904. UCHAR vLrType=ISXSIP_URL_LR_UNDEFINED,
  3905. UCHAR vTransportType=ISXSIP_TRANSPORT_UNDEFINED,
  3906. UCHAR vMethodType=ISXSIP_METHOD_UNDEFINED,
  3907. CHAR* vMAddrParam=NULL)
  3908. {
  3909. Ttl = vTtl;
  3910. IsSecure = vIsSecure;
  3911. LrType = vLrType;
  3912. TransportType = vTransportType;
  3913. MethodType = vMethodType;
  3914. if(vMAddrParam) _snprintf(MAddrParam, sizeof(MAddrParam), vMAddrParam);
  3915. };
  3916. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3917. {
  3918. CHAR szTemp[TEMP_STR_LEN];
  3919. _snprintf(szTemp, TEMP_STR_LEN, "%s<User=%s,Host=%s,PortNum=%d,Ttl=%d,IsSecure=%d,LrType=%d,TransportType=%d,MethodType=%d,MAddrParam=%s>",
  3920. pszParamName?pszParamName:"url", (char*)User, (char*)Host, PortNum,Ttl,IsSecure,LrType,TransportType,MethodType,(char*)MAddrParam);
  3921. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3922. return 0;
  3923. }
  3924. }ISXSIP_ADDR_URL_USR;
  3925. typedef struct tagISXSIP_ADDR_URI_USR: public ISXSIP_ADDR_URI{
  3926. tagISXSIP_ADDR_URI_USR() { Init(); };
  3927. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3928. INT GetSize() { return sizeof(*this); };
  3929. VOID SetDefault()
  3930. {
  3931. Scheme[0] = 0;
  3932. Identifier[0] = 0;
  3933. };
  3934. VOID SetValue(CHAR* vScheme, CHAR* vIdentifier)
  3935. {
  3936. _snprintf(Scheme, sizeof(Scheme), vScheme);
  3937. _snprintf(Identifier, sizeof(Identifier), vIdentifier);
  3938. };
  3939. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3940. {
  3941. CHAR szTemp[TEMP_STR_LEN];
  3942. _snprintf(szTemp, TEMP_STR_LEN, "%s<Scheme=%s, Identifier=%s>",
  3943. pszParamName?pszParamName:"uri", (char*)Scheme, (char*)Identifier);
  3944. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3945. return 0;
  3946. }
  3947. }ISXSIP_ADDR_URI_USR;
  3948. typedef struct tagISXSIP_ADDR_LONG_URL_USR: public ISXSIP_ADDR_LONG_URL{
  3949. tagISXSIP_ADDR_LONG_URL_USR() { Init(); };
  3950. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3951. INT GetSize() { return sizeof(*this); };
  3952. VOID SetDefault()
  3953. {
  3954. User[0]=0;
  3955. Host[0]=0;
  3956. PortNum = 0xffff;
  3957. IsSecure = 0;
  3958. TransportType = ISXSIP_TRANSPORT_UNDEFINED;
  3959. };
  3960. VOID SetValue(CHAR* vUser, CHAR* vHost, USHORT vPort=0xffff)
  3961. {
  3962. _snprintf(User, sizeof(User), vUser);
  3963. _snprintf(Host, sizeof(Host), vHost);
  3964. PortNum = vPort;
  3965. };
  3966. VOID SetOther(UCHAR vIsSecure=0, UCHAR vTransportType=ISXSIP_TRANSPORT_UNDEFINED)
  3967. {
  3968. IsSecure = vIsSecure;
  3969. TransportType = vTransportType;
  3970. };
  3971. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  3972. {
  3973. CHAR szTemp[TEMP_STR_LEN];
  3974. _snprintf(szTemp, TEMP_STR_LEN, "%s<User=%s,Host=%s,PortNum=%d,IsSecure=%d,TransportType=%d>",
  3975. pszParamName?pszParamName:"url", (char*)User, (char*)Host, PortNum,IsSecure,TransportType);
  3976. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  3977. return 0;
  3978. }
  3979. }ISXSIP_ADDR_LONG_URL_USR;
  3980. typedef struct tagISXSIP_ADDR_LONG_USER_USR: public ISXSIP_ADDR_LONG_USER{
  3981. tagISXSIP_ADDR_LONG_USER_USR() { Init(); };
  3982. VOID Init() { memset(this, 0, sizeof(*this) ); };
  3983. INT GetSize() { return sizeof(*this); };
  3984. VOID SetDefault()
  3985. {
  3986. User[0]=0;
  3987. Host[0]=0;
  3988. PortNum = 0xffff;
  3989. IsSecure = 0;
  3990. TransportType = ISXSIP_TRANSPORT_UNDEFINED;
  3991. UserType=ISXSIP_USER_TYPE_UNDEFINED;
  3992. };
  3993. VOID SetValue(CHAR* vUser, CHAR* vHost, USHORT vPort=0xffff)
  3994. {
  3995. _snprintf(User, sizeof(User), vUser);
  3996. _snprintf(Host, sizeof(Host), vHost);
  3997. PortNum = vPort;
  3998. };
  3999. VOID SetOther(UCHAR vIsSecure=0, UCHAR vTransportType=ISXSIP_TRANSPORT_UNDEFINED, UCHAR vUserType=ISXSIP_USER_TYPE_UNDEFINED)
  4000. {
  4001. IsSecure = vIsSecure;
  4002. TransportType = vTransportType;
  4003. UserType = vUserType;
  4004. };
  4005. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  4006. {
  4007. CHAR szTemp[TEMP_STR_LEN];
  4008. _snprintf(szTemp, TEMP_STR_LEN, "%s<User=%s,Host=%s,PortNum=%d,IsSecure=%d,TransportType=%d,UserType=%d>",
  4009. pszParamName?pszParamName:"url", (char*)User, (char*)Host, PortNum,IsSecure,TransportType,UserType);
  4010. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4011. return 0;
  4012. }
  4013. }ISXSIP_ADDR_LONG_USER_USR;
  4014. typedef struct tagISXSIP_IE_ADDR: public ISXSIP_IE_ADDR {
  4015. tagISXSIP_IE_ADDR() { Init(); };
  4016. VOID Init() { memset(this, 0, sizeof(*this) ); };
  4017. INT SetDefault(UCHAR vValid, UCHAR vAddType)
  4018. {
  4019. Valid = vValid;
  4020. AddType = vAddType;
  4021. if(vAddType==ISXSIP_ADDTYPE_URL) {
  4022. ((ISXSIP_ADDR_URL_USR*)&u.AddrUrl)->SetDefault();
  4023. } else if(vAddType == ISXSIP_ADDTYPE_URI) {
  4024. ((ISXSIP_ADDR_URI_USR*)&u.AddrUri)->SetDefault();
  4025. } else if(vAddType==ISXSIP_ADDTYPE_LONG_URL){
  4026. ((ISXSIP_ADDR_LONG_URL_USR*)&u.AddrLongUrl)->SetDefault();
  4027. } else if(vAddType==ISXSIP_ADDTYPE_LONG_USER) {
  4028. ((ISXSIP_ADDR_LONG_USER_USR*)&u.AddrLongUsr)->SetDefault();
  4029. }
  4030. else return -1;
  4031. return 0;
  4032. };
  4033. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  4034. {
  4035. CHAR szTemp[TEMP_STR_LEN];
  4036. if(Valid==0) {
  4037. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d>", pszParamName?pszParamName:"Addr", Valid);
  4038. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4039. } else if(AddType==ISXSIP_ADDTYPE_URL) {
  4040. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,AddType=%d ", pszParamName?pszParamName:"Addr", Valid,AddType);
  4041. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4042. FAILRETN(((ISXSIP_ADDR_URL_USR*)&u.AddrUrl)->TraceStr(szOutStr, "AddrUrl"));
  4043. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  4044. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4045. } else if(AddType==ISXSIP_ADDTYPE_URI){
  4046. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,AddType=%d ", pszParamName?pszParamName:"Addr", Valid,AddType);
  4047. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4048. FAILRETN(((ISXSIP_ADDR_URI_USR*)&u.AddrUri)->TraceStr(szOutStr, "AddrUri"));
  4049. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  4050. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4051. } else if(AddType==ISXSIP_ADDTYPE_LONG_URL){
  4052. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,AddType=%d ", pszParamName?pszParamName:"Addr", Valid,AddType);
  4053. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4054. FAILRETN(((ISXSIP_ADDR_LONG_URL_USR*)&u.AddrUri)->TraceStr(szOutStr, "AddrLongUrl"));
  4055. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  4056. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4057. } else if(AddType==ISXSIP_ADDTYPE_LONG_USER){
  4058. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,AddType=%d ", pszParamName?pszParamName:"Addr", Valid,AddType);
  4059. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4060. FAILRETN(((ISXSIP_ADDR_LONG_USER_USR*)&u.AddrUri)->TraceStr(szOutStr, "AddrLongUsr"));
  4061. _snprintf(szTemp, TEMP_STR_LEN, "> ");
  4062. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4063. } else {
  4064. _snprintf(szTemp, TEMP_STR_LEN, "%s<Valid=%d,AddType=%d(ERR)>", pszParamName?pszParamName:"Addr", Valid, AddType);
  4065. FAILRETN(STR_OVERFLOW_CHECK(szOutStr, szTemp));
  4066. return -1;
  4067. }
  4068. return 0;
  4069. };
  4070. } ISXSIP_IE_ADDR_USR;
  4071. #pragma pack()
  4072. //pack() end
  4073. //////////////////////////////////////////////////////////////////////////
  4074. typedef struct tagDX_IOTT_USR: public DX_IOTT {
  4075. tagDX_IOTT_USR() { Init(); };
  4076. VOID Init() { memset(this, 0, sizeof(*this) ); };
  4077. INT GetSize() { return sizeof(*this); };
  4078. VOID SetValue(CHAR* vio_bufp, USHORT vio_type=IO_EOT, UINT vio_length=(UINT)-1, UINT vio_offset=0, INT vio_fhandle=0, DX_IOTT* vio_nextp=NULL)
  4079. {
  4080. io_type =vio_type; /* Transfer type */
  4081. io_fhandle =vio_fhandle; /* File descriptor */
  4082. io_bufp =vio_bufp; /* Pointer to base memory */
  4083. io_offset =vio_offset; /* File/Buffer offset */
  4084. io_length =vio_length; /* Length of data */
  4085. io_nextp =vio_nextp; /* Pointer to next DX_IOTT if IO_LINK */
  4086. io_prevp =NULL; /* (optional) Pointer to previous DX_IOTT */
  4087. rfu =0; /* reserved */
  4088. };
  4089. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  4090. {
  4091. return 0;
  4092. };
  4093. }DX_IOTT_USR;
  4094. typedef struct tagDV_TPT_USR: public DV_TPT {
  4095. tagDV_TPT_USR() { Init(); };
  4096. VOID Init() { memset(this, 0, sizeof(*this) ); };
  4097. INT GetSize() { return sizeof(*this); };
  4098. VOID SetValue(USHORT vtp_termno, USHORT vtp_length, USHORT vtp_flags, USHORT vtp_data=0, USHORT vtp_type=IO_EOT, DV_TPT* vtp_nextp=NULL)
  4099. {
  4100. tp_type =vtp_type; /* Flags Describing this Entry */
  4101. tp_termno =vtp_termno; /* Termination Parameter Number */
  4102. tp_length =vtp_length; /* Length of Terminator */
  4103. tp_flags =vtp_flags; /* Termination Parameter Attributes Flag */
  4104. tp_data =vtp_data; /* Optional Additional Data */
  4105. rfu =0; /* Reserved */
  4106. tp_nextp =vtp_nextp; /* Ptr to next DV_TPT if IO_LINK set */
  4107. };
  4108. INT TraceStr(CHAR *szOutStr, const CHAR* pszParamName = NULL)
  4109. {
  4110. return 0;
  4111. };
  4112. }DV_TPT_USR;
  4113. //////////////////////////////////////////////////////////////////////////
  4114. #ifdef __cplusplus
  4115. }
  4116. #undef extern
  4117. #endif
  4118. #endif