Changeset 373 for dsfilters/demux_mpc/src/mpc_pin.cpp
- Timestamp:
- 12/15/07 19:09:12 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
dsfilters/demux_mpc/src/mpc_pin.cpp
r372 r373 270 270 HRESULT CMPCOutputPin::DoNewSegment(REFERENCE_TIME rtStart, REFERENCE_TIME rtStop, double dRate) 271 271 { 272 DataPacket *packet;273 int ret = GetDataPacket(&packet);274 if (ret < 0 || !packet) return E_FAIL;275 272 276 273 // queue the EOS packet … … 280 277 eos_delivered = false; 281 278 282 { 283 CAutoLock lck(&lock_queue); 284 packet->type = DataPacket::PACKET_TYPE_NEW_SEGMENT; 285 packet->rtStart = rtStart; 286 packet->rtStop = rtStop; 287 packet->rate = rate; 288 queue.AddTail(packet); 289 ev_can_read.Set(); 279 280 if (1) { 281 return DeliverNewSegment(rtStart, rtStop, rate); 290 282 discontinuity = true; 291 } 292 283 284 } else { 285 DataPacket *packet = new DataPacket(); 286 { 287 CAutoLock lck(&lock_queue); 288 packet->type = DataPacket::PACKET_TYPE_NEW_SEGMENT; 289 packet->rtStart = rtStart; 290 packet->rtStop = rtStop; 291 packet->rate = rate; 292 queue.AddTail(packet); 293 ev_can_read.Set(); 294 discontinuity = true; 295 } 296 } 293 297 return NOERROR; 294 298 } … … 352 356 if (ret < 0 || !outp) return E_FAIL; 353 357 354 REFERENCE_TIME start, stop;355 356 358 outp->type = DataPacket::PACKET_TYPE_DATA; 357 359 … … 421 423 IMediaSample *sample; 422 424 HRESULT hr = GetDeliveryBuffer(&sample, NULL, NULL, 0); 423 if (FAILED(hr)) return E_FAIL; 425 if (FAILED(hr)) { 426 return E_FAIL; 427 } 424 428 425 429 // we should have enough space in there … … 496 500 switch (cmd) { 497 501 case CMD_EXIT: Reply(0); return 0; break; 498 case CMD_STOP: Reply(0); break; 502 case CMD_STOP: 503 { 504 Reply(0); 505 } 506 break; 499 507 case CMD_RUN: 500 508 { … … 530 538 DeliverEndOfStream(); 531 539 } else 540 if (packet->type == DataPacket::PACKET_TYPE_NEW_SEGMENT) { 541 hr = DeliverNewSegment(packet->rtStart, packet->rtStop, packet->rate); 542 } else 532 543 if (packet->type == DataPacket::PACKET_TYPE_DATA) { 533 544 hr = DeliverDataPacket(*packet); … … 541 552 } 542 553 } while (!CheckRequest(&cmd2)); 554 543 555 } 544 556 break; … … 614 626 615 627 // TODO: Caching here !!!! 628 //TRACE(" - read, %I64d, %d\n", position, size); 616 629 617 630 HRESULT hr = reader->SyncRead(position, size, (BYTE*)buf);
Note: See TracChangeset
for help on using the changeset viewer.