Fixed the way of stacking PCMU/A frames for APS player callback.

git-svn-id: https://svn.pjsip.org/repos/pjproject/branches/projects/aps-direct@2449 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjmedia/src/pjmedia/symbian_sound_aps.cpp b/pjmedia/src/pjmedia/symbian_sound_aps.cpp
index e6ada13..1ef507d 100644
--- a/pjmedia/src/pjmedia/symbian_sound_aps.cpp
+++ b/pjmedia/src/pjmedia/symbian_sound_aps.cpp
@@ -982,6 +982,9 @@
 	    if (samples_req == 0)
 		samples_req = 80;
 	    
+	    buf.iBuffer.Append(1);
+	    buf.iBuffer.Append(0);
+	    
 	    /* Call parent stream callback to get samples to play. */
 	    while (samples_ready < samples_req) {
 		if (frame->samples_cnt == 0) {
@@ -999,20 +1002,23 @@
 		    sf = pjmedia_frame_ext_get_subframe(frame, 0);
 		    samples_cnt = frame->samples_cnt / frame->subframe_cnt;
 		    if (sf->data && sf->bitlen) {
-			buf.iBuffer.Append(1);
-			buf.iBuffer.Append(0);
 			buf.iBuffer.Append((TUint8*)sf->data, sf->bitlen>>3);
 		    } else {
-			buf.iBuffer.Append(0);
-			buf.iBuffer.Append(0);
+			pj_uint8_t silc;
+			silc = (strm->setting.format.u32==PJMEDIA_FOURCC_PCMU)?
+				pjmedia_linear2ulaw(0) : pjmedia_linear2alaw(0);
+			buf.iBuffer.AppendFill(silc, samples_cnt);
 		    }
 		    samples_ready += samples_cnt;
 		    
 		    pjmedia_frame_ext_pop_subframes(frame, 1);
 		
 		} else { /* PJMEDIA_FRAME_TYPE_NONE */
-		    buf.iBuffer.Append(0);
-		    buf.iBuffer.Append(0);
+		    pj_uint8_t silc;
+		    
+		    silc = (strm->setting.format.u32==PJMEDIA_FOURCC_PCMU)?
+			    pjmedia_linear2ulaw(0) : pjmedia_linear2alaw(0);
+		    buf.iBuffer.AppendFill(silc, samples_req - samples_ready);
 
 		    samples_ready = samples_req;
 		    frame->samples_cnt = 0;