comparison mpegvideo.c @ 1315:6696d3bf4ff2 libavcodec

lossless mjpeg encoding (planar yuv & RGB) and somerelated bugfixes
author michaelni
date Tue, 17 Jun 2003 22:48:51 +0000
parents 10c21dffe5ab
children 26c44d2433c1
comparison
equal deleted inserted replaced
1314:8a7be8c2710e 1315:6696d3bf4ff2
526 /* init video encoder */ 526 /* init video encoder */
527 int MPV_encode_init(AVCodecContext *avctx) 527 int MPV_encode_init(AVCodecContext *avctx)
528 { 528 {
529 MpegEncContext *s = avctx->priv_data; 529 MpegEncContext *s = avctx->priv_data;
530 int i; 530 int i;
531 531 int chroma_h_shift, chroma_v_shift;
532 avctx->pix_fmt = PIX_FMT_YUV420P;
533 532
534 s->bit_rate = avctx->bit_rate; 533 s->bit_rate = avctx->bit_rate;
535 s->bit_rate_tolerance = avctx->bit_rate_tolerance; 534 s->bit_rate_tolerance = avctx->bit_rate_tolerance;
536 s->width = avctx->width; 535 s->width = avctx->width;
537 s->height = avctx->height; 536 s->height = avctx->height;
618 617
619 if(avctx->intra_quant_bias != FF_DEFAULT_QUANT_BIAS) 618 if(avctx->intra_quant_bias != FF_DEFAULT_QUANT_BIAS)
620 s->intra_quant_bias= avctx->intra_quant_bias; 619 s->intra_quant_bias= avctx->intra_quant_bias;
621 if(avctx->inter_quant_bias != FF_DEFAULT_QUANT_BIAS) 620 if(avctx->inter_quant_bias != FF_DEFAULT_QUANT_BIAS)
622 s->inter_quant_bias= avctx->inter_quant_bias; 621 s->inter_quant_bias= avctx->inter_quant_bias;
623 622
623 avcodec_get_chroma_sub_sample(avctx->pix_fmt, &chroma_h_shift, &chroma_v_shift);
624
624 switch(avctx->codec->id) { 625 switch(avctx->codec->id) {
625 case CODEC_ID_MPEG1VIDEO: 626 case CODEC_ID_MPEG1VIDEO:
626 s->out_format = FMT_MPEG1; 627 s->out_format = FMT_MPEG1;
627 s->low_delay= 0; //s->max_b_frames ? 0 : 1; 628 s->low_delay= 0; //s->max_b_frames ? 0 : 1;
628 avctx->delay= s->low_delay ? 0 : (s->max_b_frames + 1); 629 avctx->delay= s->low_delay ? 0 : (s->max_b_frames + 1);
629 break; 630 break;
631 case CODEC_ID_LJPEG:
630 case CODEC_ID_MJPEG: 632 case CODEC_ID_MJPEG:
631 s->out_format = FMT_MJPEG; 633 s->out_format = FMT_MJPEG;
632 s->intra_only = 1; /* force intra only for jpeg */ 634 s->intra_only = 1; /* force intra only for jpeg */
633 s->mjpeg_write_tables = 1; /* write all tables */ 635 s->mjpeg_write_tables = 1; /* write all tables */
634 s->mjpeg_data_only_frames = 0; /* write all the needed headers */ 636 s->mjpeg_data_only_frames = 0; /* write all the needed headers */
635 s->mjpeg_vsample[0] = 2; /* set up default sampling factors */ 637 s->mjpeg_vsample[0] = 1<<chroma_v_shift;
636 s->mjpeg_vsample[1] = 1; /* the only currently supported values */ 638 s->mjpeg_vsample[1] = 1;
637 s->mjpeg_vsample[2] = 1; 639 s->mjpeg_vsample[2] = 1;
638 s->mjpeg_hsample[0] = 2; 640 s->mjpeg_hsample[0] = 1<<chroma_h_shift;
639 s->mjpeg_hsample[1] = 1; 641 s->mjpeg_hsample[1] = 1;
640 s->mjpeg_hsample[2] = 1; 642 s->mjpeg_hsample[2] = 1;
641 if (mjpeg_init(s) < 0) 643 if (mjpeg_init(s) < 0)
642 return -1; 644 return -1;
643 avctx->delay=0; 645 avctx->delay=0;