Research & Development
The key to running a successful and productive organization is letting the employees know what you want them to do and how to do it. Most of the time this comes with your job description and on the job training, but this is not as simple as it sounds. This requires ample amount of time and effort being dedicated by the organization on the employee to make him fit for their environment. This effort comes through by trainings, learning materials, conducting seminars and so on. Knowing your role within an organization and best of all knowing how to perform the activities of this role leads to improved productivity and in turn a successful organization
Now lets put this all together in perspective of a ERP system like SAP, in which a business transaction screen e.g. Purchase Requisition looks like a galaxy of text fields and buttons, seeing this makes employee think that they should have asked for more KUANS ($$$$), and to top it all off the person who presented the requirements for configuration of this screen has resigned from the company, need not to worry we (the organization) had documented it all. But where are these learning material/training documents, a file cabinets, a file server, shared resource or on a local PC, which version do I use and etc. The possibilities of you never finding the document on time are limit less .SAP has realized this dilemma of managing and preparing the learning material and have come up with solution of E- Learning maps which is part of their SAP Solution Manager. The scope of my article is present to you some of the highlight the motivations of using this tool and also to provide you with the steps of how to go about preparing an E-Learning material and the distribution of these material with SAP Solution Manager 3.2.
1. Develop a project or solution In SAP Solution Manager. For the project or solution we will associate training or learning documents with Business scenarios, processes and with process steps
2. The types of learning materials that can be area SIM tutorial, document created in SAP word editor or a URL to a website or etc.
3. Learning units are created from the project structure and its assigned learning material, and generate Learning Maps in HTML format, in the transaction Learning Maps Management.
4. Send a link to the learning map to end user.
5. The end users assess the learning units and the learning map and work through the learning units on their own.
6. Analyze the end user assessments.
For E-Learning MAP’s to execute you need to have a project setup in your solution manager. The project configuration and management in SAP Solution Manager is a complete series of article in it self which I would be presenting in the future publications but to get you giong on SAP E-Learning MAPS you I would present some baisc informatioan on setting up the project. Before going into configuring the project there are some pre-requisites that need to be meet
After checking these pre-requisite items you can proceed to creating a project by going through these steps,
Figure 1: SAP Easy Menu Path To Project Administration
Figure 2: Create Project from SAP Project Administration Screen
A new project structure to implement a business processes in an SAP landscape.
A project to upgrade existing systems .In an upgrade project you can: Upgrade customizing: Upgrade existing functions and/or Delta customizing: Copy additional functions
A project for maintaining the SAP solution with Change Request Management, the project contains all maintenance activities and urgent corrections of a solution.
A project to optimize the flow of business processes or the use of a software solution you can use optimization projects, for example, in SAP Services.
Safeguarding projects show the reasons for a critical situation and coordinate the steps required to resolve the problems.
A template makes your project structure, or parts of it, with its assigned objects (documentation, test cases, IMG activities), available to other projects. You can lock templates, completely or partially, against changes when they are used in other projects. To use templates in other systems, transport them. Template projects are especially suited to SAP partner solutions or global rollout.
Figure 3: Create Project Initial Screen.
Figure 4: Maintaining General Project Data
In the true scenario you assign you learing material to your project structures e.g. Business Scenario,Business Processes and etc. But since we have just setup those project attributes to demonstrate the functionality of SAP E-Learning MAPS , I would just be adding all the project documents on the project root by following these steps,
Figure 5: E-Learning Configuration
Figure 6: Selecting a project for E-Learning Documents
Figure 7: Switching to Project training tab.
Figure 8: Insert document popup screen.
Figure 9: Upload document popup screen.
Figure 10 : Change upload document status/contents
Figure 11: Change document status.
We now have to distribute these documents to the end user for utilization, this is called Learning Maps which is explained in the next step.
You have previusly assigned the learning material to your project which you now need to publish for your end users training purposes.This is possible by creating a learning map (HTML format) for your end user based either on the project or production processing. In order to create learning map you need to execute the following steps,
Figure 12: Sap menu path For Learning Maps
Figure 13. Create learning maps.
Figure 14: Create learning map popup screen
Figure 15: Learning map strcuture overview
Figure 16: Maintaing Learning Map header description
Figure 17: Maintaining learning map header items e.g. link and logo.
Figure 18: Maintaining Chapter title and description
Figure 19: Creating new Chapter for a learning map structure
Figure 20: Maintaining Unit element title and description
Figure 21: Creating new unit element in a chapter
Figure 22: Changing project structure view.
Figure 23: Assigning document to Unit element of a Chapter
Figure 24: Saving E-Learning Map
Figure 25 : Send Learning Map to End Users.
Figure 26: Creating e-mail with learning map link.
Figure 27: Using email application to send web link of E-Learning Map to end users
In the above steps we have gone through the procedure of developing a E-Learning material using SAP Solution manager 3.2 .
I am married for 5 years now and I ask myself should I go for an upgrade of my marriage, Bham!!!. The subject of upgrade knocks me out. Just thing of going for an upgrade gives me a black eye and a severe headache for weeks.
Reason? Several! What is wrong with the existing package? Would I be able to make some improvement with the new package? Have I really learned some thing from my last experience? Is the new package really worth investing the amount of time and money? What would be the amount of change? These are the question which raise doubts in an organizations thought process and help us consultants sustain our jobs.
Buying SAP is similar to getting married after the first days presentation it’s not just the same happy go lucky life that we are promised .But the luxury with SAP is that we can
Upgrade it and get a newer one with all the technological add-ons Haba! Haba!
In this article I am going to present the motivation factor which leads an organization towards and upgrade and also highlight some of the key upgrade project activities which are required for the upgrade project So lets begin the journey
So let us ask the question that what compels an organization running SAP to upgrade its ERP. The obvious reasons are the need for new functionalities which could cater the companies’ business needs and help them survive and flourish in complex and competitive business environment. Besides achieving the competitive edge over in their business domains their can be other factors that can encourage the organization towards SAP upgrade. Before dueling into those reasons lets just give you a brief on the release strategy for SAP applications which follow a “5-1-2” maintenance concept five years of mainstream maintenance, 1 year of extended maintenance at an additional of 2% of the maintenance fee and finally a 2 years extended maintenance at an additional 4 % fee. And even after that if your still don’t want to let go of the SAP release there is always customer specific maintenance which I think would not be cheap and personally not very encouraging. For more information on this subject you can logon to http://service.sap.com/maintenance.
I am pretty sure that most of the IT decision makers are not aware of his information and
Which is why I am sharing this info with you and to make the readers realize the amount of additional investment they would be making in maintaining the SAP system if they choose not to move a head with the upgrade. I would encourage you to do the math on these numbers considering your SAP installation and I am sure you would be compelled to focus on the upgrade. Enlighten you with this information we get back to the subject matter which is the motivation factors for upgrading the SAP System, here are some of the important ones,
The main reason for upgrading has always been the additional functionality .Every SAP Release brings new features and opportunities. The need for upgrade id mostly driven by business needs which in turns require new functionality in your ERP e.g. empowering your end user by integrating your Email System with SAP, Richer reporting and analytics to make timely and informed business decisions and etc. Now the choice must be made whether to implement and develop the new functionality or to go for an Upgrade. This is what we call a ”solution gap” now here we have to ask us that is the solution gap large enough to justify the SAP Release Upgrade? And since SAP upgrades are a complex task is it worth while investing time money and resource to achieve this solution gap with an SAP Upgrade and finally would our user base and business units support this thought process of SAP Release Upgrade.
Your sap system needs to be constant customized and enhanced in order to be able to support the evolving business needs. The time may and will come when the installed release will no longer be able to answer to your needs .Secondly staying on the same release becomes unsustainable from an infrastructure point of view e.g. new server platforms, new operating system, new RDBMS version, new communication and collaboration interfaces.
As stressed earlier in the opening paragraph that there is a maintenance limit of every SAP release and the extended support leads to additional cost but this will also cease eventually. At this point there are 2 choices Upgrade or a customer specific maintenance and the later is not very attractive as it implies increased cost for a depleted service level, as SAP no longer provides support packages for release that are out of maintenance. Surprisingly 35% to 40 % of the sap customers are compelled towards SAP upgrade based on this factor which would be either the ending maintenance period for their SAP Release or the additional maintenance cost.
Testing and End User training represent the major part of the Upgrade Project. The 2 processes take the most amount of time and effort. During the upgrade it is not advisable to implement new feature, modules or applications. The primary focus should remain on the Upgrade task and the new feature should be implemented afterwards in a separate project.
After the upgrade of the development system you need to test all SAP Applications, Custom Developments and integrations to other applications (SAP and non SAP). It is best time to utilize your investment on SAP Solution Manager e-CATT tool (SAPtips Article: The Power of Automated Testing (I &II)).While you resolve the issues arising from the release upgrade the production system is still running in the old release hence a change management procedure need to be set up to support the production system.
The sap upgrade is not just the technical activity less then 25% of the work goes into th technical are the major portion goes to testing and adopting to the new release as our upgrade would be effecting the business applications and processes. Going into the SAP Upgrade project you must realize the following
The SAP technical upgrade consists of five major phases
Now you must be wondering what actions do need to perform in these phases, so lets go through them one by one
Proper preparation of the upgrade is essential with it you run into excessive risk known and preventable problems, upgrade is a time consuming and complex task hence you need to be organized and maintain good documentation of your work. SAP has wide range of Upgrade Service portfolio like Going Live Functional Upgrade Check , SAP Safeguard ,SAP upgrade Hosting , SAP Weekend Support and many more the list is constantly being updated to cover various audiences and scenarios, have a look at the site http://service.sap.com/upgrade-erp/ for latest service listing. I am going to list the key activities that need to be performed in this phase and brief you on some of then
Establish a project plan
After reading some material and putting my experience and my colleges experience on upgrade project we came to a consensus of developing 3 different plans
Identify human resources, technical and functional
The upgrade project need the commitment support and attention of the management, different teams are needed to bring the project to successful completion example of such teams are; Project Management Team , Technical Upgarde Team, Functional and Domain Experts team .
Evaluate suitability of current hardware
Resource requirement increases with every SAP release for if you have and operational SAP environment this increase is difficult to estimate and depends heavily on SAP modules and business process being used, the number of concurrent users and the amount of business data. Analyzing the current situation is the first step in estimating the load increase, this is why we emphasized earlier on having SAP Solution Manage Up and running before you start thinking of going for an upgrade , apart from providing the analysis on the current system through Early Watch Report , solution manage is also necessary for get the upgrade key from SAP. In addition to this sap also provides some online tool for capacity planning which can be accessed from http://service.sap.com/quicksizer beside this many performance and tuning transactions exist in sap like DB02; ST03N; STAD; ST04, SM04; ST06 and etc.
Apart from these activities there are some other activities which are to be executed in this phase like Examine software compatibility; Order desired SAP Upgrade Resource;Perform the necessary hardware software (OS,DB,SAP Plugin) upgrade; Obtain the upgrade media and documentation and Clean up the development environment
A technical process that imports the tools required for the upgrade and performs the extensive checks to see whether the system is ready for upgrade. Careful preparation of the upgrade is the best guarantee that it will run with out any errors. The prepare program uses a series of check to support the preparation of the upgrade, it can be used without effecting the productive environment .The advantages of executing PREPARE are,
The PREPARE can be broken down into 7 different sub phases as schematically displayed in figure 1.
Figure 1: SCHEMATICAL DISPLAY OF PREPARE MODULES
The PREPARE starts from the input phase in which information on the system to be upgrade and key generation activity through solution manger is carried out with some basic consistency checks. In the initialization phase along with some basic checks on the source system the SAP and the database release are verified and the needed space for the upgrade tools is verified. The import phase imports all the tools needed for upgrade into the database and installed in the upgrade directory.
In the extension phase the add-ons, support packages, user modifications, and languages are installed in the source release are integrated into the upgrade. The extension phase is the most important phase in PREPARE as the target release of every SAP component and add-ons is decided. The extension phase lands into the integration phase in which all the support packages , add-ons ,customer modifications and additional transports are integrated into the upgrade. The integration and extension phase are closely related. The installation phase comprises of a shadow instance and shadow schema being created into the database. At this point all the verification tools are used to check the source environment meets the upgrade requirement. The general check module identifies many thing like version of both the system, looks at the locked objects and availability of free space for database, list tables which are not converted, DDIC and repository object with conflicts in the new release and etc.
The luxury we have in the PREPARE is that it can be run and reset any number of times. Before the actual upgrade, but the successful execution of the PREPARE phase would insure a some what some sailing during the upgrade.
This phase calls for activities like
Release system to end users Start post production work in the new release.
SAP upgrade to the new release is a tricky part, with this article I have tried to present some of the motivation factor which an organization may need to consider before committing itself into the upgrade project ,these motivation factors can be used by the management to really focus on developing SAP roles in their organizations vision statement and mission .Further more I have highlight some of the key phase and project activities that need to be carried in the SAP upgrade project although I have not gone into details of these phase , the objective was just provide the reader vision of how to execute the upgrade project
Text taken from: http://www.piemontewireless.net/PJSip155_and_iPhoneSDK312
Thanks to huge work of PJSip team and to Samuel Vinson for iphonesound.c code.
Checkout the latest svn trunk version of PJSip from here:
http://svn.pjsip.org/repos/pjproject/trunk
or download the latest PJSIP from here:
http://www.pjsip.org/download.htm
First step, you need to patches some files in pjproject:
Step 1: aconfigure.ac
In aconfigure.ac file add the lines below displayed with ‘+’. Of course copy without ‘+’
if test “$enable_sound” = “no”; then
true;
else
case $target in
+ arm-apple-darwin*)
+ LIBS=”$LIBS -framework CoreAudio -framework CoreFoundation -framework AudioToolbox”
+ ac_pjmedia_snd=iphone
+ AC_MSG_RESULT([Checking sound device backend... AudioQueue])
+ ;;
*darwin*)
LIBS=”$LIBS -framework CoreAudio -framework CoreServices -framework AudioUnit -framework AudioToolbox”
if test “`uname -r`” = “6.8″; then
Step 2: build/rules.mak
In rules.mak modify, remove lines with ‘-’ and add lines with ‘+’:
$(LIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP)
if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)); fi
- $(AR) $(LIB) $(OBJS)
- $(RANLIB) $(LIB)
+ $(RANLIB) -static -o $(LIB) $(OBJS)
Step 3: pjlib/include/pj/config_site.h
It can be necessary to define some macro. For example :
#undef PJ_HAS_FLOATING_POINT
#define PJ_HAS_FLOATING_POINT 1
/* SRTP has not been ported to iPhone yet */
# undef PJMEDIA_HAS_SRTP
# define PJMEDIA_HAS_SRTP 0
/* Disable some codecs for now */
# define PJMEDIA_HAS_GSM_CODEC 1
# define PJMEDIA_HAS_L16_CODEC 0
# define PJMEDIA_HAS_ILBC_CODEC 0
# define PJMEDIA_HAS_SPEEX_CODEC 0
# define PJMEDIA_HAS_G722_CODEC 0
#define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO 0
Step 4: pjmedia/build/os-auto.mak.in
In os-auto.mak.in, add the line with ‘+’
# – ds: Win32 DirectSound (dsound.c)
+# – iphone: iPhone AudioQueue (iphonesound.c)
# – null: Null sound device (nullsound.c)
and
export CFLAGS += -DPJMEDIA_AUDIO_DEV_HAS_WMME=0
endif
+#
+# iPod/iPhone
+#
+ifeq ($(AC_PJMEDIA_SND),iphone)
+export CFLAGS += -DPJMEDIA_AUDIO_LEG_HAS_AUDIOQUEUE=1 -DPJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE=1
+endif
+
#
# Null sound device
Step 6: Makefile
In Makefile (located at the root), add the line with ‘+’
-DIRS = pjlib pjlib-util pjnath third_party pjmedia pjsip pjsip-apps
+DIRS = pjlib pjlib-util pjnath third_party pjmedia pjsip
Step 7: pjmedia/build/Makefile
export PJMEDIA_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
alaw_ulaw.o alaw_ulaw_table.o bidirectional.o clock_thread.o codec.o \
conference.o conf_switch.o delaybuf.o echo_common.o \
echo_port.o echo_suppress.o endpoint.o errno.o \
g711.o jbuf.o master_port.o mem_capture.o mem_player.o \
null_port.o plc_common.o port.o splitcomb.o \
resample_resample.o resample_libsamplerate.o \
resample_port.o rtcp.o rtcp_xr.o rtp.o \
sdp.o sdp_cmp.o sdp_neg.o session.o silencedet.o \
- sound_legacy.o sound_port.o stereo_port.o \
+ iphonesound.o sound_port.o stereo_port.o \
stream.o tonegen.o transport_adapter_sample.o \
transport_ice.o transport_loop.o \
transport_srtp.o transport_udp.o \
wav_player.o wav_playlist.o wav_writer.o wave.o \
wsola.o
# $(TARGET) is defined in os-$(OS_NAME).mak file in current directory.
#
-TARGETS := pjmedia pjmedia-audiodev pjmedia-codec pjsdp pjmedia-test
+TARGETS := pjmedia pjmedia-audiodev pjmedia-codec pjsdp
all: $(TARGETS)
Step 8: pjmedia/src/pjmedia-audiodev/legacy_dev.c
In legacy_dev.c, add the line with ‘+’
return status;
}
*p_aud_strm = &strm->base;
+ (*p_aud_strm)->op = &stream_op;
return PJ_SUCCESS;
}
Step 9: pjmedia/src/pjmedia-audiodev/audiodev.c
pjmedia_aud_dev_factory* pjmedia_symb_mda_factory(pj_pool_factory *pf);
#endif
+#if PJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE
+pjmedia_aud_dev_factory* pjmedia_legacy_factory(pj_pool_factory *pf);
+#endif
+
#define MAX_DRIVERS 16
#define MAX_DEVS 64
#if PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA
aud_subsys.drv[aud_subsys.drv_cnt++].create = &pjmedia_symb_mda_factory;
#endif
+#if PJMEDIA_AUDIO_DEV_HAS_LEGACY_DEVICE
+ aud_subsys.drv[aud_subsys.drv_cnt++].create = &pjmedia_legacy_factory;
+#endif
/* Initialize each factory and build the device ID list */ Download iphonesound.c Download from http://siphon.googlecode.com/files/iphonesound-20091226.c and rename in pjmedia/src/pjmedia/iphonesound.c Step 10: Configuration Generate configuration script autoconf aconfigure.ac > aconfigure Step 11: Compilation iPhone SDK doesn’t provide some programs without version number, so we create symbolic link. We should test before create link, but we are very lazy. Copy the lines below in file with name like compile.sh in the root of pjsip. #!/bin/sh export DEV=/Developer/Platforms/iPhoneOS.platform/Developer pushd ${DEV}/usr/bin export PATH=${DEV}/usr/bin:${PATH} export CFLAGS=”-O2 -arch armv6 -isysroot ${SDK}” export LDFLAGS=”-O2 -arch armv6 -isysroot ${SDK}” export CPP=”${DEV}/usr/bin/cpp” ./aconfigure –host=arm-apple-darwin9 –disable-speex-aec \ make dep We must not forget to change access right to allow execution. We can run compile.sh after some minutes pjsip is compiled. Thanks to Simone, for this wonderful guide. Text taken from: http://www.piemontewireless.net/PJSip155_and_iPhoneSDK312 Regards
for (i=0; i
export SDK=${DEV}/SDKs/iPhoneOS2.1.sdk
ln -s arm-apple-darwin9-gcc-4.0.1 arm-apple-darwin9-gcc
ln -s arm-apple-darwin9-g++-4.0.1 arm-apple-darwin9-g++
ln -s ranlib arm-apple-darwin9-ranlib
popd
–disable-speex-codec –disable-l16-codec –disable-g722-codec \
–disable-ilbc-codec –disable-ssl
make
Syed Arsalan Pervez aka SAP
The problem with pjsip 1.0.3 that it does not feature G7221 or G729, i managed to get the G722 codec working and its pretty straight once you understand whats going on… Here is the procedure:
once you have populated the config_site.h, enable the G722 codec, here what it should look like:
#undef PJ_HAS_FLOATING_POINT
#define PJ_HAS_FLOATING_POINT 1
/* SRTP has not been ported to iPhone yet */
# undef PJMEDIA_HAS_SRTP
# define PJMEDIA_HAS_SRTP 0
/* Disable some codecs for now */
# define PJMEDIA_HAS_GSM_CODEC 1
# define PJMEDIA_HAS_L16_CODEC 0
# define PJMEDIA_HAS_ILBC_CODEC 0
# define PJMEDIA_HAS_SPEEX_CODEC 0
# define PJMEDIA_HAS_G722_CODEC 1
# define PJMEDIA_HAS_G7221_CODEC 0
# define PJMEDIA_HAS_G729_CODEC 0
after this remove the –disable-g722-codec from your compile.sh, then recompile that, this should enable the G722 codec, and then you can enable it from setting when you installed it in your iphone.
Regards
Syed Arsalan Pervez aka SAP
Thanks to Samuel who made this possible for iphone, the text below is taken from the following site with few modification to compile it successfully for iphone.
link: http://code.google.com/p/siphon/wiki/CompilationForiPhoneOS2_X
Lets begin, download the 1.0.x release of pjproject from the pjsip website, i have given link below for ease.
link: http://www.pjsip.org/download.htm
(note: GNU Linux/MacOS X/Unix users should use the .tar.bz2 version, so download the .tar.bz2 file else it won’t work)
Follow the following steps to modify few file, please carefully follow it as its a bit different from the one available at the above mentioned website.
note: before you begin, if you are copying directly from the site then be careful as some characters are not copied properly and can cause error when you try to compile pjsip.
Step 1: aconfigure.ac
In aconfigure.ac file add the lines below displayed with ‘+’. Of course copy without ‘+’
if test “$enable_sound” = “no”; then
true;
else
case $target in
+ arm-apple-darwin*)
+ LIBS=”$LIBS -framework CoreAudio -framework CoreFoundation -framework AudioToolbox”
+ ac_pjmedia_snd=iphone
+ AC_MSG_RESULT([Checking sound device backend... AudioQueue])
+ ;;
*darwin*)
LIBS=”$LIBS -framework CoreAudio -framework CoreServices -framework AudioUnit -framework AudioToolbox”
if test “`uname -r`” = “6.8″; then
Step 2: build/rules.mak
In rules.mak modify, remove lines with ‘-’ and add lines with ‘+’:
$(LIB): $(OBJDIRS) $(OBJS) $($(APP)_EXTRA_DEP)
if test ! -d $(LIBDIR); then $(subst @@,$(subst /,$(HOST_PSEP),$(LIBDIR)),$(HOST_MKDIR)); fi
- $(AR) $(LIB) $(OBJS)
- $(RANLIB) $(LIB)
+ $(RANLIB) -static -o $(LIB) $(OBJS)
Step 3: pjlib/include/pj/config_site.h
It can be necessary to define some macro. For example :
#undef PJ_HAS_FLOATING_POINT
#define PJ_HAS_FLOATING_POINT 1
/* SRTP has not been ported to iPhone yet */
# undef PJMEDIA_HAS_SRTP
# define PJMEDIA_HAS_SRTP 0
/* Disable some codecs for now */
# define PJMEDIA_HAS_GSM_CODEC 1
# define PJMEDIA_HAS_L16_CODEC 0
# define PJMEDIA_HAS_ILBC_CODEC 0
# define PJMEDIA_HAS_SPEEX_CODEC 0
# define PJMEDIA_HAS_G722_CODEC 0
Step 4: pjmedia/build/os-auto.mak.in
In os-auto.mak.in, add the line with ‘+’
# – ds: Win32 DirectSound (dsound.c)
+# – iphone: iPhone AudioQueue (iphonesound.c)
# – null: Null sound device (nullsound.c)
Add the line below, for example between “Win 32 Direct Sound” and ” Null Sound Device”
#
# iPod/iPhone
#
ifeq ($(AC_PJMEDIA_SND),iphone)
export SOUND_OBJS = iphonesound.o
export CFLAGS += -DPJMEDIA_SOUND_IMPLEMENTATION=PJMEDIA_SOUND_IPHONE_SOUND
endif
We have defined a new target for sound device.
Step 5: pjmedia/include/pjmedia/config.h
in config.h add the lines below with ‘+’:
/** Constant for Win32 MME sound backend. */
#define PJMEDIA_SOUND_WIN32_MME_SOUND 3
+/** Constant for AudioQueue sound backend. */
+#define PJMEDIA_SOUND_IPHONE_SOUND 4
Almost there few steps more…
Step 6: pjmedia/src/pjmedia
Download iphonesound from the link below, rename it to iphonesound.c and paste it in the above mentioned directory.
link: http://siphon.googlecode.com/files/iphonesound-20091226.c
note: currently sound is disabled, but will get back to this, first follow the next 2 steps to get the lib compiled.
Step 7: Configuration
Generate configuration script
autoconf aconfigure.ac > aconfigure
Step 8: Compilation
iPhone SDK doesn't provide some programs without version number, so we create symbolic link. We should test before create link, but we are very lazy. Copy the lines below in file with name like compile.sh in the root of pjsip.
#!/bin/sh
export DEV=/Developer/Platforms/iPhoneOS.platform/Developer
export SDK=${DEV}/SDKs/iPhoneOS2.1.sdk
pushd ${DEV}/usr/bin
ln -s arm-apple-darwin9-gcc-4.0.1 arm-apple-darwin9-gcc
ln -s arm-apple-darwin9-g++-4.0.1 arm-apple-darwin9-g++
ln -s ranlib arm-apple-darwin9-ranlib
popd
export PATH=${DEV}/usr/bin:${PATH}
export CFLAGS="-O2 -arch armv6 -isysroot ${SDK}"
export LDFLAGS="-O2 -arch armv6 -isysroot ${SDK}"
export CPP="${DEV}/usr/bin/cpp"
./aconfigure --host=arm-apple-darwin9 --disable-speex-aec \
--disable-speex-codec --disable-l16-codec --disable-g722-codec \
--disable-ilbc-codec --disable-ssl --disable-sound
make dep
make
We must not forget to change access right to allow execution. We can run compile.sh after some minutes pjsip is compiled.
Step 9: Now for Sound
Assume that you have been able to successfully compile the pjsip lib by now.
Now open iphonesound.c that you have pasted a little while back and uncomment and comment the following line(s).
//#if PJMEDIA_SOUND_IMPLEMENTATION==PJMEDIA_SOUND_IPHONE_SOUND
#if PJMEDIA_AUDIO_LEG_HAS_AUDIOQUEUE
change the above to
#if PJMEDIA_SOUND_IMPLEMENTATION==PJMEDIA_SOUND_IPHONE_SOUND
//#if PJMEDIA_AUDIO_LEG_HAS_AUDIOQUEUE
secondly search for the following in iphonesound.c
PJMEDIA_AUD_DEFAULT_CAPTURE_DEV
PJMEDIA_AUD_DEFAULT_PLAYBACK_DEV
and replace with -1 and -2 respectively and now remove the ‘–disable-sound’ from the compile.sh you created and recompile.
That’s it … now you should have working pjsip lib and you can add this in the siphon project and you are good to go.
Comments and suggestion are welcome but please be constructive.
P.S. i have tested this on iphone 3Gs, 3G and 2G, sound in 2G is not that good but rest is working fine and in 3Gs and 3G sound is perfect.
Regards
Syed Arsalan Pervez aka SAP
Recent Comments