Ignore:
Timestamp:
Mar 4, 2010 3:47:25 PM (15 years ago)
Author:
nanang
Message:

Ticket #1008:

  • Applied VAS AMR playback solution from Forum Nokia.
  • Fixed AMR playback for VAS and APS in composing DTX/NO_DATA (frame type 15) frame header.
  • Modified symbsndtest test application to support non-PCM audio.
  • Minor check fix in pjmedia_codec_mgr_destroy(), caught assertion when VAS factory init failed and media endpoint tried to destroy codec manager (codec mgr hasn't been init-ed).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia-audiodev/symb_vas_dev.cpp

    r3078 r3116  
    416416TInt CPjAudioEngine::StartPlay() 
    417417{ 
    418     TInt err; 
     418    TInt err = KErrNone; 
    419419     
    420420    pj_assert(iVoIPDnlink); 
     
    429429            err = g711dec_if->SetMode((CVoIPFormatIntfc::TG711CodecMode) 
    430430                                      setting_.mode); 
    431             pj_assert(err == KErrNone); 
    432431        } 
    433432        break; 
     
    439438            err = ilbcdec_if->SetMode((CVoIPFormatIntfc::TILBCCodecMode) 
    440439                                      setting_.mode); 
    441             pj_assert(err == KErrNone); 
    442         } 
    443         break; 
    444  
     440        } 
     441        break; 
     442 
     443    case EAMR_NB: 
     444        /* Ticket #1008: AMR playback issue on few devices, e.g: E72, E52 */ 
     445        err = dec_fmt_if->SetFrameMode(ETrue); 
     446        break; 
     447         
    445448    default: 
    446449        break; 
    447450    } 
     451 
     452    if (err != KErrNone) 
     453        goto on_return; 
    448454     
    449455    /* Configure audio routing */ 
     
    452458    /* Start player */ 
    453459    err = iVoIPDnlink->Start(); 
    454      
     460 
     461on_return: 
    455462    if (err == KErrNone) { 
    456463        dn_state_ = STATE_STREAMING; 
     
    465472TInt CPjAudioEngine::StartRec() 
    466473{ 
    467     TInt err; 
     474    TInt err = KErrNone; 
    468475     
    469476    pj_assert(iVoIPUplink); 
     
    478485            err = g711enc_if->SetMode((CVoIPFormatIntfc::TG711CodecMode) 
    479486                                      setting_.mode); 
    480             pj_assert(err == KErrNone); 
    481487        } 
    482488        break; 
     
    488494            err = ilbcenc_if->SetMode((CVoIPFormatIntfc::TILBCCodecMode) 
    489495                                      setting_.mode); 
    490             pj_assert(err == KErrNone); 
    491496        } 
    492497        break; 
    493498         
    494499    case EAMR_NB: 
    495         enc_fmt_if->SetBitRate(setting_.mode); 
     500        err = enc_fmt_if->SetBitRate(setting_.mode); 
    496501        break; 
    497502         
     
    499504        break; 
    500505    } 
     506     
     507    if (err != KErrNone) 
     508        goto on_return; 
    501509     
    502510    /* Configure general codec setting */ 
     
    505513    /* Start recorder */ 
    506514    err = iVoIPUplink->Start(); 
    507      
     515 
     516on_return: 
    508517    if (err == KErrNone) { 
    509518        up_state_ = STATE_STREAMING; 
     
    11131122                    buffer.Append((TUint8*)sf->data, len); 
    11141123                } else { 
    1115                     buffer.Append(0); 
     1124                    enum {NO_DATA_FT = 15 }; 
     1125                    pj_uint8_t amr_header = 4 || (NO_DATA_FT << 3); 
     1126 
     1127                    buffer.Append(amr_header); 
    11161128                } 
    11171129 
     
    11191131             
    11201132            } else { /* PJMEDIA_FRAME_TYPE_NONE */ 
    1121                 buffer.Append(0); 
     1133                enum {NO_DATA_FT = 15 }; 
     1134                pj_uint8_t amr_header = 4 || (NO_DATA_FT << 3); 
     1135 
     1136                buffer.Append(amr_header); 
    11221137                 
    11231138                frame->samples_cnt = 0; 
Note: See TracChangeset for help on using the changeset viewer.