| 428 | } |
| 429 | |
| 430 | bool CLiveWorker::AddHandleAsync(ILiveHandle* h, HandleType t, int c) |
| 431 | { |
| 432 | if(c == 0) { |
| 433 | // ԭʼͨ�� |
| 434 | if(!m_pOrigin) |
| 435 | m_pOrigin = new CLiveChannel; |
| 436 | CHECK_POINT_BOOL(m_pOrigin); |
| 437 | m_pOrigin->AddHandle(h, t); |
| 438 | } else { |
| 439 | // ��չͨ�� |
| 440 | #ifdef EXTEND_CHANNELS |
| 441 | //MutexLock lock(&m_csChls); |
| 442 | auto fit = m_mapChlEx.find(c); |
| 443 | if(fit != m_mapChlEx.end()) { |
| 444 | fit->second->AddHandle(h, t); |
| 445 | } else { |
| 446 | CLiveChannel *nc = new CLiveChannel(c, 640, 480); |
| 447 | nc->AddHandle(h, t); |
| 448 | nc->SetDecoder(m_pDecoder); |
| 449 | m_mapChlEx.insert(make_pair(c, nc)); |
| 450 | } |
| 451 | #else |
| 452 | // ԭʼͨ�� |
| 453 | if(!m_pOrigin) |
| 454 | m_pOrigin = new CLiveChannel; |
| 455 | CHECK_POINT_BOOL(m_pOrigin); |
| 456 | m_pOrigin->AddHandle(h, t); |
| 457 | #endif |
| 458 | } |
| 459 | return true; |
| 460 | } |
| 461 | |
| 462 | bool CLiveWorker::RemoveHandle(ILiveHandle* h) |
| 463 | { |