Mercurial > cgi-bin > hgwebdir.cgi > PR > Applications > VSs > VSs__H264__App
comparison libavcodec/h264_ompss.c @ 5:808fe898c011
give more tasks IDs
| author | Nina Engelhardt <nengel@mailbox.tu-berlin.de> |
|---|---|
| date | Fri, 01 Feb 2013 17:11:39 +0100 |
| parents | 96e628866d41 |
| children | 55fb61482128 |
comparison
equal
deleted
inserted
replaced
| 2:a195d11d2a84 | 3:da9d5e255731 |
|---|---|
| 415 .numTotalArgs = 4, | 415 .numTotalArgs = 4, |
| 416 .sizeOfArgs = sizeof(init_ref_list_and_get_dpb_taskArgs), | 416 .sizeOfArgs = sizeof(init_ref_list_and_get_dpb_taskArgs), |
| 417 .argTypes = init_ref_list_and_get_dpb_taskArgTypes, | 417 .argTypes = init_ref_list_and_get_dpb_taskArgTypes, |
| 418 .argSizes = init_ref_list_and_get_dpb_taskArgSizes}; | 418 .argSizes = init_ref_list_and_get_dpb_taskArgSizes}; |
| 419 | 419 |
| 420 static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SlaveVP* animSlv){ | 420 static SuperMBTask* add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, int k, SlaveVP* animSlv){ |
| 421 int i,j; | 421 int i,j; |
| 422 | |
| 423 int32* taskID; | |
| 422 | 424 |
| 423 int smb_3d_height =smbc->nsmb_3dheight; | 425 int smb_3d_height =smbc->nsmb_3dheight; |
| 424 int smb_height =smbc->nsmb_height, smb_width= smbc->nsmb_width; | 426 int smb_height =smbc->nsmb_height, smb_width= smbc->nsmb_width; |
| 425 int smb_diff_prev = smb_height - smb_3d_height; | 427 int smb_diff_prev = smb_height - smb_3d_height; |
| 426 SuperMBTask *sm=NULL, *sml, *smur, *smprev; | 428 SuperMBTask *sm=NULL, *sml, *smur, *smprev; |
| 440 decode_3dwave_super_mb_task_args.smbc = smbc; | 442 decode_3dwave_super_mb_task_args.smbc = smbc; |
| 441 decode_3dwave_super_mb_task_args.ml = sml; | 443 decode_3dwave_super_mb_task_args.ml = sml; |
| 442 decode_3dwave_super_mb_task_args.mur = smur; | 444 decode_3dwave_super_mb_task_args.mur = smur; |
| 443 decode_3dwave_super_mb_task_args.mprev = smprev; | 445 decode_3dwave_super_mb_task_args.mprev = smprev; |
| 444 decode_3dwave_super_mb_task_args.m = sm; | 446 decode_3dwave_super_mb_task_args.m = sm; |
| 445 VSs__submit_task(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, animSlv); | 447 taskID = VSs__create_taskID_of_size(3,animSlv ); |
| 448 taskID[1] = k; | |
| 449 taskID[2] = j; | |
| 450 taskID[3] = i; | |
| 451 VSs__submit_task_with_ID(&decode_3dwave_super_mb_taskType, &decode_3dwave_super_mb_task_args, taskID, animSlv); | |
| 446 } | 452 } |
| 447 draw_edges_taskArgs draw_edges_task_args; | 453 draw_edges_taskArgs draw_edges_task_args; |
| 448 draw_edges_task_args.d = d; | 454 draw_edges_task_args.d = d; |
| 449 draw_edges_task_args.sbe = sbe; | 455 draw_edges_task_args.sbe = sbe; |
| 450 draw_edges_task_args.sm = sm; | 456 draw_edges_task_args.sm = sm; |
| 451 draw_edges_task_args.smbc = smbc; | 457 draw_edges_task_args.smbc = smbc; |
| 452 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); | 458 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); |
| 453 *(draw_edges_task_args.line) = j; | 459 *(draw_edges_task_args.line) = j; |
| 454 VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args, animSlv); | 460 taskID = VSs__create_taskID_of_size(3, animSlv); |
| 461 taskID[1] = k; | |
| 462 taskID[2] = j; | |
| 463 taskID[3] = i; | |
| 464 VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID, animSlv); | |
| 455 } | 465 } |
| 456 | 466 |
| 457 for(; j< smb_height; j++){ | 467 for(; j< smb_height; j++){ |
| 458 for(i=0; i< smb_width; i++){ | 468 for(i=0; i< smb_width; i++){ |
| 459 sm = smbs + j*smb_width + i; | 469 sm = smbs + j*smb_width + i; |
| 464 decode_super_mb_task_args.sbe = sbe; | 474 decode_super_mb_task_args.sbe = sbe; |
| 465 decode_super_mb_task_args.smbc = smbc; | 475 decode_super_mb_task_args.smbc = smbc; |
| 466 decode_super_mb_task_args.ml = sml; | 476 decode_super_mb_task_args.ml = sml; |
| 467 decode_super_mb_task_args.mur = smur; | 477 decode_super_mb_task_args.mur = smur; |
| 468 decode_super_mb_task_args.m = sm; | 478 decode_super_mb_task_args.m = sm; |
| 469 VSs__submit_task(&decode_super_mb_taskType, &decode_super_mb_task_args, animSlv); | 479 taskID = VSs__create_taskID_of_size(3,animSlv ); |
| 480 taskID[1] = k; | |
| 481 taskID[2] = j; | |
| 482 taskID[3] = i; | |
| 483 VSs__submit_task_with_ID(&decode_super_mb_taskType, &decode_super_mb_task_args, taskID, animSlv); | |
| 470 } | 484 } |
| 471 draw_edges_taskArgs draw_edges_task_args; | 485 draw_edges_taskArgs draw_edges_task_args; |
| 472 draw_edges_task_args.d = d; | 486 draw_edges_task_args.d = d; |
| 473 draw_edges_task_args.sbe = sbe; | 487 draw_edges_task_args.sbe = sbe; |
| 474 draw_edges_task_args.sm = sm; | 488 draw_edges_task_args.sm = sm; |
| 475 draw_edges_task_args.smbc = smbc; | 489 draw_edges_task_args.smbc = smbc; |
| 476 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); | 490 draw_edges_task_args.line = VMS_App__malloc( sizeof(int) ); |
| 477 *(draw_edges_task_args.line) = j; | 491 *(draw_edges_task_args.line) = j; |
| 478 VSs__submit_task(&draw_edges_taskType, &draw_edges_task_args, animSlv); | 492 taskID = VSs__create_taskID_of_size(3, animSlv); |
| 493 taskID[1] = k; | |
| 494 taskID[2] = j; | |
| 495 taskID[3] = i; | |
| 496 VSs__submit_task_with_ID(&draw_edges_taskType, &draw_edges_task_args, taskID, animSlv); | |
| 479 } | 497 } |
| 480 return sm; | 498 return sm; |
| 481 } | 499 } |
| 482 | 500 |
| 483 typedef struct{ | 501 typedef struct{ |
| 628 parse_task_args.pc = pc; | 646 parse_task_args.pc = pc; |
| 629 parse_task_args.nc = nc; | 647 parse_task_args.nc = nc; |
| 630 parse_task_args.sbe = &sbe[k%bufs]; | 648 parse_task_args.sbe = &sbe[k%bufs]; |
| 631 taskID = VSs__create_taskID_of_size(2,animSlv ); | 649 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 632 taskID[1] = 1; | 650 taskID[1] = 1; |
| 633 taskID[2] = num_pre_ed; | 651 taskID[2] = k; |
| 634 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID, animSlv); | 652 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID, animSlv); |
| 635 | 653 |
| 636 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; | 654 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; |
| 637 decode_slice_entropy_task_args.h = h; | 655 decode_slice_entropy_task_args.h = h; |
| 638 decode_slice_entropy_task_args.ec = ec[k%bufs]; | 656 decode_slice_entropy_task_args.ec = ec[k%bufs]; |
| 639 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; | 657 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; |
| 640 taskID = VSs__create_taskID_of_size(2,animSlv ); | 658 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 641 taskID[1] = 2; | 659 taskID[1] = 2; |
| 642 taskID[2] = num_pre_ed; | 660 taskID[2] = k; |
| 643 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID, animSlv); | 661 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID, animSlv); |
| 644 //#pragma omp taskwait on(*pc) | 662 //#pragma omp taskwait on(*pc) |
| 645 VSs__taskwait_on(animSlv,pc); | 663 VSs__taskwait_on(animSlv,pc); |
| 646 k++; | 664 k++; |
| 647 } | 665 } |
| 652 parse_task_args.pc = pc; | 670 parse_task_args.pc = pc; |
| 653 parse_task_args.nc = nc; | 671 parse_task_args.nc = nc; |
| 654 parse_task_args.sbe = &sbe[k%bufs]; | 672 parse_task_args.sbe = &sbe[k%bufs]; |
| 655 taskID = VSs__create_taskID_of_size(2,animSlv ); | 673 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 656 taskID[1] = 3; | 674 taskID[1] = 3; |
| 657 taskID[2] = frames; | 675 taskID[2] = k; |
| 658 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID, animSlv); | 676 VSs__submit_task_with_ID(&parse_taskType, &parse_task_args, taskID, animSlv); |
| 659 | 677 |
| 660 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; | 678 decode_slice_entropy_taskArgs decode_slice_entropy_task_args; |
| 661 decode_slice_entropy_task_args.h = h; | 679 decode_slice_entropy_task_args.h = h; |
| 662 decode_slice_entropy_task_args.ec = ec[k%bufs]; | 680 decode_slice_entropy_task_args.ec = ec[k%bufs]; |
| 663 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; | 681 decode_slice_entropy_task_args.sbe = &sbe[k%bufs]; |
| 664 taskID = VSs__create_taskID_of_size(2,animSlv ); | 682 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 665 taskID[1] = 4; | 683 taskID[1] = 4; |
| 666 taskID[2] = frames; | 684 taskID[2] = k; |
| 667 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID, animSlv); | 685 VSs__submit_task_with_ID(&decode_slice_entropy_taskType, &decode_slice_entropy_task_args, taskID, animSlv); |
| 668 | 686 |
| 669 k++; | 687 k++; |
| 670 | 688 |
| 671 init_ref_list_and_get_dpb_taskArgs init_ref_list_and_get_dpb_task_args; | 689 init_ref_list_and_get_dpb_taskArgs init_ref_list_and_get_dpb_task_args; |
| 673 init_ref_list_and_get_dpb_task_args.d = rc[k%2]; | 691 init_ref_list_and_get_dpb_task_args.d = rc[k%2]; |
| 674 init_ref_list_and_get_dpb_task_args.sbe = &sbe[k%bufs]; | 692 init_ref_list_and_get_dpb_task_args.sbe = &sbe[k%bufs]; |
| 675 init_ref_list_and_get_dpb_task_args.init = &init; | 693 init_ref_list_and_get_dpb_task_args.init = &init; |
| 676 taskID = VSs__create_taskID_of_size(2,animSlv ); | 694 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 677 taskID[1] = 5; | 695 taskID[1] = 5; |
| 678 taskID[2] = frames; | 696 taskID[2] = k; |
| 679 VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID, animSlv); | 697 VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID, animSlv); |
| 680 | 698 |
| 681 smbc = acquire_smbc(h); | 699 smbc = acquire_smbc(h); |
| 682 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, animSlv); | 700 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k, animSlv); |
| 683 release_ref_list_taskArgs release_ref_list_task_args; | 701 release_ref_list_taskArgs release_ref_list_task_args; |
| 684 release_ref_list_task_args.h = h; | 702 release_ref_list_task_args.h = h; |
| 685 release_ref_list_task_args.smbc = smbc; | 703 release_ref_list_task_args.smbc = smbc; |
| 686 release_ref_list_task_args.d = rc[k%2]; | 704 release_ref_list_task_args.d = rc[k%2]; |
| 687 release_ref_list_task_args.sbe = &sbe[k%bufs]; | 705 release_ref_list_task_args.sbe = &sbe[k%bufs]; |
| 688 release_ref_list_task_args.lastsmb = lastsmb; | 706 release_ref_list_task_args.lastsmb = lastsmb; |
| 689 release_ref_list_task_args.release = &release; | 707 release_ref_list_task_args.release = &release; |
| 690 taskID = VSs__create_taskID_of_size(2,animSlv ); | 708 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 691 taskID[1] = 6; | 709 taskID[1] = 6; |
| 692 taskID[2] = frames; | 710 taskID[2] = k; |
| 693 VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID, animSlv); | 711 VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID, animSlv); |
| 694 | 712 |
| 695 output_taskArgs output_task_args; | 713 output_taskArgs output_task_args; |
| 696 output_task_args.h = h; | 714 output_task_args.h = h; |
| 697 output_task_args.oc = oc; | 715 output_task_args.oc = oc; |
| 698 output_task_args.sbe = &sbe[k%bufs]; | 716 output_task_args.sbe = &sbe[k%bufs]; |
| 699 taskID = VSs__create_taskID_of_size(2,animSlv ); | 717 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 700 taskID[1] = 7; | 718 taskID[1] = 7; |
| 701 taskID[2] = frames; | 719 taskID[2] = k; |
| 702 VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID, animSlv); | 720 VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID, animSlv); |
| 703 //#pragma omp taskwait on(*pc) | 721 //#pragma omp taskwait on(*pc) |
| 704 VSs__taskwait_on(animSlv,pc); | 722 VSs__taskwait_on(animSlv,pc); |
| 705 } | 723 } |
| 706 | 724 |
| 714 taskID = VSs__create_taskID_of_size(2,animSlv ); | 732 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 715 taskID[1] = 8; | 733 taskID[1] = 8; |
| 716 taskID[2] = i; | 734 taskID[2] = i; |
| 717 VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID, animSlv); | 735 VSs__submit_task_with_ID(&init_ref_list_and_get_dpb_taskType, &init_ref_list_and_get_dpb_task_args, taskID, animSlv); |
| 718 smbc = acquire_smbc(h); | 736 smbc = acquire_smbc(h); |
| 719 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, animSlv); | 737 SuperMBTask *lastsmb= add_decode_slice_3dwave_tasks(rc[k%2], &sbe[k%bufs], smbc, k, animSlv); |
| 720 release_ref_list_taskArgs release_ref_list_task_args; | 738 release_ref_list_taskArgs release_ref_list_task_args; |
| 721 release_ref_list_task_args.h = h; | 739 release_ref_list_task_args.h = h; |
| 722 release_ref_list_task_args.smbc = smbc; | 740 release_ref_list_task_args.smbc = smbc; |
| 723 release_ref_list_task_args.d = rc[k%2]; | 741 release_ref_list_task_args.d = rc[k%2]; |
| 724 release_ref_list_task_args.sbe = &sbe[k%bufs]; | 742 release_ref_list_task_args.sbe = &sbe[k%bufs]; |
| 725 release_ref_list_task_args.lastsmb = lastsmb; | 743 release_ref_list_task_args.lastsmb = lastsmb; |
| 726 release_ref_list_task_args.release = &release; | 744 release_ref_list_task_args.release = &release; |
| 727 taskID = VSs__create_taskID_of_size(2,animSlv ); | 745 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 728 taskID[1] = 9; | 746 taskID[1] = 9; |
| 729 taskID[2] = frames; | 747 taskID[2] = k; |
| 730 VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID, animSlv); | 748 VSs__submit_task_with_ID(&release_ref_list_taskType, &release_ref_list_task_args, taskID, animSlv); |
| 731 | 749 |
| 732 output_taskArgs output_task_args; | 750 output_taskArgs output_task_args; |
| 733 output_task_args.h = h; | 751 output_task_args.h = h; |
| 734 output_task_args.oc = oc; | 752 output_task_args.oc = oc; |
| 735 output_task_args.sbe = &sbe[k%bufs]; | 753 output_task_args.sbe = &sbe[k%bufs]; |
| 736 taskID = VSs__create_taskID_of_size(2,animSlv ); | 754 taskID = VSs__create_taskID_of_size(2,animSlv ); |
| 737 taskID[1] = 10; | 755 taskID[1] = 10; |
| 738 taskID[2] = frames; | 756 taskID[2] = k; |
| 739 VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID, animSlv); | 757 VSs__submit_task_with_ID(&output_taskType, &output_task_args, taskID, animSlv); |
| 740 } | 758 } |
| 741 | 759 |
| 742 } else { | 760 } else { |
| 743 while(!pc->final_frame && frames++ < h->num_frames && !h->quit){ | 761 while(!pc->final_frame && frames++ < h->num_frames && !h->quit){ |
