Changeset 2504 for pjproject/branches/projects/aps-direct/pjmedia/src/pjmedia-audiodev/symb_aps_dev.cpp
- Timestamp:
- Mar 11, 2009 2:52:10 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/branches/projects/aps-direct/pjmedia/src/pjmedia-audiodev/symb_aps_dev.cpp
r2502 r2504 360 360 { 361 361 STATE_NULL, 362 STATE_INITIALIZING, 362 363 STATE_READY, 363 STATE_STREAMING 364 STATE_STREAMING, 365 STATE_PENDING_STOP 364 366 }; 365 367 … … 482 484 iWriteCommQ.Close(); 483 485 } 486 487 TRACE_((THIS_FILE, "Sound device destroyed")); 484 488 } 485 489 486 490 TInt CPjAudioEngine::InitPlayL() 487 491 { 488 if (state_ == STATE_STREAMING || state_ == STATE_READY)489 return 0;490 491 492 TInt err = iSession.InitializePlayer(iPlaySettings); 492 493 if (err != KErrNone) { … … 518 519 TInt CPjAudioEngine::InitRecL() 519 520 { 520 if (state_ == STATE_STREAMING || state_ == STATE_READY)521 return 0;522 523 521 // Initialize input stream device 524 522 TInt err = iSession.InitializeRecorder(iRecSettings); … … 558 556 return StartStreamL(); 559 557 558 PJ_ASSERT_RETURN(state_ == STATE_NULL, PJMEDIA_EAUD_INVOP); 559 560 560 // Even if only capturer are opened, playback thread of APS Server need 561 561 // to be run(?). Since some messages will be delivered via play comm queue. 562 state_ = STATE_INITIALIZING; 563 562 564 return InitPlayL(); 563 565 } … … 569 571 state_ = STATE_READY; 570 572 TRACE_((THIS_FILE, "Sound device stopped")); 573 } else if (state_ == STATE_INITIALIZING) { 574 // Initialization is on progress, so let's set the state to 575 // STATE_PENDING_STOP to prevent it starting the stream. 576 state_ = STATE_PENDING_STOP; 577 578 // Then wait until initialization done. 579 while (state_ != STATE_READY) 580 pj_symbianos_poll(-1, 100); 571 581 } 572 582 } … … 596 606 TInt CPjAudioEngine::StartStreamL() 597 607 { 598 if (state_ == STATE_STREAMING) 599 return 0; 600 608 pj_assert(state_==STATE_READY || state_==STATE_INITIALIZING); 609 601 610 iSession.SetCng(setting_.cng); 602 611 iSession.SetVadMode(setting_.vad); … … 619 628 620 629 state_ = STATE_STREAMING; 630 621 631 return 0; 622 632 } … … 626 636 TRACE_((THIS_FILE, "Recorder initialized, err=%d", aStatus)); 627 637 628 state_ = STATE_READY;629 638 if (aStatus == KErrNone) { 630 StartStreamL(); 639 // Don't start the stream since Stop() has been requested. 640 if (state_ != STATE_PENDING_STOP) { 641 StartStreamL(); 642 } else { 643 state_ = STATE_READY; 644 } 631 645 } 632 646 } … … 638 652 if (aStatus == KErrNone) { 639 653 if (parentStrm_->param.dir == PJMEDIA_DIR_PLAYBACK) { 640 state_ = STATE_READY; 641 // Only playback, start directly 642 StartStreamL(); 654 // Don't start the stream since Stop() has been requested. 655 if (state_ != STATE_PENDING_STOP) { 656 StartStreamL(); 657 } else { 658 state_ = STATE_READY; 659 } 643 660 } else 644 661 InitRecL();
Note: See TracChangeset
for help on using the changeset viewer.