comparison libavcodec/h264_ompss.c @ 8:6c1433f5a562

remove need for end_thread()
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Fri, 17 May 2013 17:50:05 +0200
parents c8259123d224
children ea1ba68cf0ed
comparison
equal deleted inserted replaced
5:51c170445ade 6:d4d9503bce2b
56 av_read_frame_internal(pc, &sbe->gb); 56 av_read_frame_internal(pc, &sbe->gb);
57 s = &sbe->slice; 57 s = &sbe->slice;
58 58
59 decode_nal_units(nc, s, &sbe->gb); 59 decode_nal_units(nc, s, &sbe->gb);
60 60
61 VSs__end_task(); 61 return;
62 } 62 }
63 63
64 VSsTaskType parse_taskType = { 64 VSsTaskType parse_taskType = {
65 .fn = &parse_task, 65 .fn = &parse_task,
66 .numCtldArgs = 3, 66 .numCtldArgs = 3,
92 // GetBitContext *gb = s->gb; 92 // GetBitContext *gb = s->gb;
93 CABACContext *c = &ec->c; 93 CABACContext *c = &ec->c;
94 94
95 if( !s->pps.cabac ){ 95 if( !s->pps.cabac ){
96 av_log(AV_LOG_ERROR, "Only cabac encoded streams are supported\n"); 96 av_log(AV_LOG_ERROR, "Only cabac encoded streams are supported\n");
97 VSs__end_task(); 97 return;
98 } 98 }
99 99
100 init_dequant_tables(s, ec); 100 init_dequant_tables(s, ec);
101 ec->curr_qscale = s->qscale; 101 ec->curr_qscale = s->qscale;
102 ec->last_qscale_diff = 0; 102 ec->last_qscale_diff = 0;
122 ret = ff_h264_decode_mb_cabac(ec, s, c); 122 ret = ff_h264_decode_mb_cabac(ec, s, c);
123 eos = get_cabac_terminate( c); 123 eos = get_cabac_terminate( c);
124 (void) eos; 124 (void) eos;
125 if( ret < 0 || c->bytestream > c->bytestream_end + 2) { 125 if( ret < 0 || c->bytestream > c->bytestream_end + 2) {
126 av_log(AV_LOG_ERROR, "error while decoding MB %d %d, bytestream (%td)\n", m->mb_x, m->mb_y, c->bytestream_end - c->bytestream); 126 av_log(AV_LOG_ERROR, "error while decoding MB %d %d, bytestream (%td)\n", m->mb_x, m->mb_y, c->bytestream_end - c->bytestream);
127 VSs__end_task(); 127 return;
128 } 128 }
129 } 129 }
130 } 130 }
131 VSs__end_task(); 131 return;
132 } 132 }
133 133
134 VSsTaskType decode_slice_entropy_taskType = { 134 VSsTaskType decode_slice_entropy_taskType = {
135 .fn = &decode_slice_entropy_task, 135 .fn = &decode_slice_entropy_task,
136 .numCtldArgs = 2, 136 .numCtldArgs = 2,
176 SuperMBTask *m = args->m; 176 SuperMBTask *m = args->m;
177 SuperMBContext *smbc = args->smbc; 177 SuperMBContext *smbc = args->smbc;
178 H264Slice *s = &sbe->slice; 178 H264Slice *s = &sbe->slice;
179 H264Mb *mbs = sbe->mbs; 179 H264Mb *mbs = sbe->mbs;
180 decode_super_mb_block(d, s, smbc, mbs, m->smb_x, m->smb_y); 180 decode_super_mb_block(d, s, smbc, mbs, m->smb_x, m->smb_y);
181 VSs__end_task(); 181 return;
182 } 182 }
183 183
184 VSsTaskType decode_super_mb_taskType = { 184 VSsTaskType decode_super_mb_taskType = {
185 .fn = &decode_super_mb_task, 185 .fn = &decode_super_mb_task,
186 .numCtldArgs = 5, 186 .numCtldArgs = 5,
212 int line = *(args->line); 212 int line = *(args->line);
213 H264Slice *s = &sbe->slice; 213 H264Slice *s = &sbe->slice;
214 for (int i=line*smbc->smb_height; i< (line+1)*smbc->smb_height && i< d->mb_height; i++) 214 for (int i=line*smbc->smb_height; i< (line+1)*smbc->smb_height && i< d->mb_height; i++)
215 draw_edges(d, s, i); 215 draw_edges(d, s, i);
216 VMS_App__free(args->line); 216 VMS_App__free(args->line);
217 VSs__end_task(); 217 return;
218 } 218 }
219 VSsTaskType draw_edges_taskType = { 219 VSsTaskType draw_edges_taskType = {
220 .fn = &draw_edges_task, 220 .fn = &draw_edges_task,
221 .numCtldArgs = 3, 221 .numCtldArgs = 3,
222 .numTotalArgs = 5, 222 .numTotalArgs = 5,
313 break; 313 break;
314 } 314 }
315 } 315 }
316 } 316 }
317 s->release_cnt=0; 317 s->release_cnt=0;
318 VSs__end_task(); 318 return;
319 } 319 }
320 320
321 VSsTaskType decode_slice_mb_taskType = { 321 VSsTaskType decode_slice_mb_taskType = {
322 .fn = &decode_slice_mb_task, 322 .fn = &decode_slice_mb_task,
323 .numCtldArgs = 2, 323 .numCtldArgs = 2,
355 355
356 H264Slice *s = &sbe->slice; 356 H264Slice *s = &sbe->slice;
357 H264Mb *mbs = sbe->mbs; 357 H264Mb *mbs = sbe->mbs;
358 358
359 decode_super_mb_block(d, s, smbc, mbs, m->smb_x, m->smb_y); 359 decode_super_mb_block(d, s, smbc, mbs, m->smb_x, m->smb_y);
360 VSs__end_task(); 360 return;
361 } 361 }
362 362
363 VSsTaskType decode_3dwave_super_mb_taskType = { 363 VSsTaskType decode_3dwave_super_mb_taskType = {
364 .fn = &decode_3dwave_super_mb_task, 364 .fn = &decode_3dwave_super_mb_task,
365 .numCtldArgs = 6, 365 .numCtldArgs = 6,
405 //#pragma omp critical (dpb) 405 //#pragma omp critical (dpb)
406 VSs__start_critical(0); 406 VSs__start_critical(0);
407 get_dpb_entry(h, s); 407 get_dpb_entry(h, s);
408 VSs__end_critical(0); 408 VSs__end_critical(0);
409 409
410 VSs__end_task(); 410 return;
411 } 411 }
412 412
413 VSsTaskType init_ref_list_and_get_dpb_taskType = { 413 VSsTaskType init_ref_list_and_get_dpb_taskType = {
414 .fn = &init_ref_list_and_get_dpb_task, 414 .fn = &init_ref_list_and_get_dpb_task,
415 .numCtldArgs = 3, 415 .numCtldArgs = 3,
535 } 535 }
536 s->release_cnt=0; 536 s->release_cnt=0;
537 537
538 release_smbc(h, smbc); 538 release_smbc(h, smbc);
539 539
540 VSs__end_task(); 540 return;
541 } 541 }
542 542
543 VSsTaskType release_ref_list_taskType = { 543 VSsTaskType release_ref_list_taskType = {
544 .fn = &release_ref_list_task, 544 .fn = &release_ref_list_task,
545 .numCtldArgs = 4, 545 .numCtldArgs = 4,
577 release_dpb_entry(h, out, 1); 577 release_dpb_entry(h, out, 1);
578 VSs__end_critical(0); 578 VSs__end_critical(0);
579 } 579 }
580 //print_report(oc->frame_number, oc->video_size, 0, h->verbose); 580 //print_report(oc->frame_number, oc->video_size, 0, h->verbose);
581 581
582 VSs__end_task(); 582 return;
583 } 583 }
584 584
585 VSsTaskType output_taskType = { 585 VSsTaskType output_taskType = {
586 .fn = &output_task, 586 .fn = &output_task,
587 .numCtldArgs = 2, 587 .numCtldArgs = 2,