comparison dnxhdenc.c @ 10388:08e50bcdcbf1 libavcodec

Reindent after removing the outer for loops in the execute2 patch
author reimar
date Mon, 12 Oct 2009 14:46:53 +0000
parents 19a4f1ecd8fe
children 5afea08b89d4
comparison
equal deleted inserted replaced
10387:19a4f1ecd8fe 10388:08e50bcdcbf1
398 DNXHDEncContext *ctx = avctx->priv_data; 398 DNXHDEncContext *ctx = avctx->priv_data;
399 int mb_y = jobnr, mb_x; 399 int mb_y = jobnr, mb_x;
400 int qscale = ctx->qscale; 400 int qscale = ctx->qscale;
401 ctx = ctx->thread[threadnr]; 401 ctx = ctx->thread[threadnr];
402 402
403 ctx->m.last_dc[0] = 403 ctx->m.last_dc[0] =
404 ctx->m.last_dc[1] = 404 ctx->m.last_dc[1] =
405 ctx->m.last_dc[2] = 1024; 405 ctx->m.last_dc[2] = 1024;
406 406
407 for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) { 407 for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) {
408 unsigned mb = mb_y * ctx->m.mb_width + mb_x; 408 unsigned mb = mb_y * ctx->m.mb_width + mb_x;
409 int ssd = 0; 409 int ssd = 0;
410 int ac_bits = 0; 410 int ac_bits = 0;
411 int dc_bits = 0; 411 int dc_bits = 0;
412 int i; 412 int i;
413 413
414 dnxhd_get_blocks(ctx, mb_x, mb_y); 414 dnxhd_get_blocks(ctx, mb_x, mb_y);
415 415
416 for (i = 0; i < 8; i++) { 416 for (i = 0; i < 8; i++) {
417 DECLARE_ALIGNED_16(DCTELEM, block[64]); 417 DECLARE_ALIGNED_16(DCTELEM, block[64]);
418 DCTELEM *src_block = ctx->blocks[i]; 418 DCTELEM *src_block = ctx->blocks[i];
419 int overflow, nbits, diff, last_index; 419 int overflow, nbits, diff, last_index;
420 int n = dnxhd_switch_matrix(ctx, i); 420 int n = dnxhd_switch_matrix(ctx, i);
421 421
422 memcpy(block, src_block, sizeof(block)); 422 memcpy(block, src_block, sizeof(block));
423 last_index = ctx->m.dct_quantize((MpegEncContext*)ctx, block, i, qscale, &overflow); 423 last_index = ctx->m.dct_quantize((MpegEncContext*)ctx, block, i, qscale, &overflow);
424 ac_bits += dnxhd_calc_ac_bits(ctx, block, last_index); 424 ac_bits += dnxhd_calc_ac_bits(ctx, block, last_index);
425 425
426 diff = block[0] - ctx->m.last_dc[n]; 426 diff = block[0] - ctx->m.last_dc[n];
427 if (diff < 0) nbits = av_log2_16bit(-2*diff); 427 if (diff < 0) nbits = av_log2_16bit(-2*diff);
428 else nbits = av_log2_16bit( 2*diff); 428 else nbits = av_log2_16bit( 2*diff);
429 dc_bits += ctx->cid_table->dc_bits[nbits] + nbits; 429 dc_bits += ctx->cid_table->dc_bits[nbits] + nbits;
430 430
431 ctx->m.last_dc[n] = block[0]; 431 ctx->m.last_dc[n] = block[0];
432 432
433 if (avctx->mb_decision == FF_MB_DECISION_RD || !RC_VARIANCE) { 433 if (avctx->mb_decision == FF_MB_DECISION_RD || !RC_VARIANCE) {
434 dnxhd_unquantize_c(ctx, block, i, qscale, last_index); 434 dnxhd_unquantize_c(ctx, block, i, qscale, last_index);
435 ctx->m.dsp.idct(block); 435 ctx->m.dsp.idct(block);
436 ssd += dnxhd_ssd_block(block, src_block); 436 ssd += dnxhd_ssd_block(block, src_block);
437 }
438 } 437 }
439 ctx->mb_rc[qscale][mb].ssd = ssd; 438 }
440 ctx->mb_rc[qscale][mb].bits = ac_bits+dc_bits+12+8*ctx->vlc_bits[0]; 439 ctx->mb_rc[qscale][mb].ssd = ssd;
441 } 440 ctx->mb_rc[qscale][mb].bits = ac_bits+dc_bits+12+8*ctx->vlc_bits[0];
441 }
442 return 0; 442 return 0;
443 } 443 }
444 444
445 static int dnxhd_encode_thread(AVCodecContext *avctx, void *arg, int jobnr, int threadnr) 445 static int dnxhd_encode_thread(AVCodecContext *avctx, void *arg, int jobnr, int threadnr)
446 { 446 {
447 DNXHDEncContext *ctx = avctx->priv_data; 447 DNXHDEncContext *ctx = avctx->priv_data;
448 int mb_y = jobnr, mb_x; 448 int mb_y = jobnr, mb_x;
449 ctx = ctx->thread[threadnr]; 449 ctx = ctx->thread[threadnr];
450 init_put_bits(&ctx->m.pb, (uint8_t *)arg + 640 + ctx->slice_offs[jobnr], ctx->slice_size[jobnr]); 450 init_put_bits(&ctx->m.pb, (uint8_t *)arg + 640 + ctx->slice_offs[jobnr], ctx->slice_size[jobnr]);
451 451
452 ctx->m.last_dc[0] = 452 ctx->m.last_dc[0] =
453 ctx->m.last_dc[1] = 453 ctx->m.last_dc[1] =
454 ctx->m.last_dc[2] = 1024; 454 ctx->m.last_dc[2] = 1024;
455 for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) { 455 for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) {
456 unsigned mb = mb_y * ctx->m.mb_width + mb_x; 456 unsigned mb = mb_y * ctx->m.mb_width + mb_x;
457 int qscale = ctx->mb_qscale[mb]; 457 int qscale = ctx->mb_qscale[mb];
458 int i; 458 int i;
459 459
460 put_bits(&ctx->m.pb, 12, qscale<<1); 460 put_bits(&ctx->m.pb, 12, qscale<<1);
461 461
462 dnxhd_get_blocks(ctx, mb_x, mb_y); 462 dnxhd_get_blocks(ctx, mb_x, mb_y);
463 463
464 for (i = 0; i < 8; i++) { 464 for (i = 0; i < 8; i++) {
465 DCTELEM *block = ctx->blocks[i]; 465 DCTELEM *block = ctx->blocks[i];
466 int last_index, overflow; 466 int last_index, overflow;
467 int n = dnxhd_switch_matrix(ctx, i); 467 int n = dnxhd_switch_matrix(ctx, i);
468 last_index = ctx->m.dct_quantize((MpegEncContext*)ctx, block, i, qscale, &overflow); 468 last_index = ctx->m.dct_quantize((MpegEncContext*)ctx, block, i, qscale, &overflow);
469 //START_TIMER; 469 //START_TIMER;
470 dnxhd_encode_block(ctx, block, last_index, n); 470 dnxhd_encode_block(ctx, block, last_index, n);
471 //STOP_TIMER("encode_block"); 471 //STOP_TIMER("encode_block");
472 } 472 }
473 } 473 }
474 if (put_bits_count(&ctx->m.pb)&31) 474 if (put_bits_count(&ctx->m.pb)&31)
475 put_bits(&ctx->m.pb, 32-(put_bits_count(&ctx->m.pb)&31), 0); 475 put_bits(&ctx->m.pb, 32-(put_bits_count(&ctx->m.pb)&31), 0);
476 flush_put_bits(&ctx->m.pb); 476 flush_put_bits(&ctx->m.pb);
477 return 0; 477 return 0;
478 } 478 }
479 479
480 static void dnxhd_setup_threads_slices(DNXHDEncContext *ctx) 480 static void dnxhd_setup_threads_slices(DNXHDEncContext *ctx)
499 static int dnxhd_mb_var_thread(AVCodecContext *avctx, void *arg, int jobnr, int threadnr) 499 static int dnxhd_mb_var_thread(AVCodecContext *avctx, void *arg, int jobnr, int threadnr)
500 { 500 {
501 DNXHDEncContext *ctx = avctx->priv_data; 501 DNXHDEncContext *ctx = avctx->priv_data;
502 int mb_y = jobnr, mb_x; 502 int mb_y = jobnr, mb_x;
503 ctx = ctx->thread[threadnr]; 503 ctx = ctx->thread[threadnr];
504 for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) { 504 for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) {
505 unsigned mb = mb_y * ctx->m.mb_width + mb_x; 505 unsigned mb = mb_y * ctx->m.mb_width + mb_x;
506 uint8_t *pix = ctx->thread[0]->src[0] + ((mb_y<<4) * ctx->m.linesize) + (mb_x<<4); 506 uint8_t *pix = ctx->thread[0]->src[0] + ((mb_y<<4) * ctx->m.linesize) + (mb_x<<4);
507 int sum = ctx->m.dsp.pix_sum(pix, ctx->m.linesize); 507 int sum = ctx->m.dsp.pix_sum(pix, ctx->m.linesize);
508 int varc = (ctx->m.dsp.pix_norm1(pix, ctx->m.linesize) - (((unsigned)(sum*sum))>>8)+128)>>8; 508 int varc = (ctx->m.dsp.pix_norm1(pix, ctx->m.linesize) - (((unsigned)(sum*sum))>>8)+128)>>8;
509 ctx->mb_cmp[mb].value = varc; 509 ctx->mb_cmp[mb].value = varc;
510 ctx->mb_cmp[mb].mb = mb; 510 ctx->mb_cmp[mb].mb = mb;
511 } 511 }
512 return 0; 512 return 0;
513 } 513 }
514 514
515 static int dnxhd_encode_rdo(AVCodecContext *avctx, DNXHDEncContext *ctx) 515 static int dnxhd_encode_rdo(AVCodecContext *avctx, DNXHDEncContext *ctx)
516 { 516 {