set AVCodecContext.width/height before get_buffer()

Originally committed as revision 2596 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2003-12-11 11:17:54 +00:00
parent 99db6420f2
commit 5814beaa87

View File

@ -793,7 +793,7 @@ typedef struct MJpegDecodeContext {
VLC vlcs[2][4]; VLC vlcs[2][4];
int qscale[4]; ///< quantizer scale calculated from quant_matrixes int qscale[4]; ///< quantizer scale calculated from quant_matrixes
int org_width, org_height; /* size given at codec init */ int org_height; /* size given at codec init */
int first_picture; /* true if decoding first picture */ int first_picture; /* true if decoding first picture */
int interlaced; /* true if interlaced */ int interlaced; /* true if interlaced */
int bottom_field; /* true if bottom field */ int bottom_field; /* true if bottom field */
@ -874,7 +874,6 @@ static int mjpeg_decode_init(AVCodecContext *avctx)
return -1; return -1;
s->start_code = -1; s->start_code = -1;
s->first_picture = 1; s->first_picture = 1;
s->org_width = avctx->width;
s->org_height = avctx->height; s->org_height = avctx->height;
build_vlc(&s->vlcs[0][0], bits_dc_luminance, val_dc_luminance, 12); build_vlc(&s->vlcs[0][0], bits_dc_luminance, val_dc_luminance, 12);
@ -1027,13 +1026,17 @@ static int mjpeg_decode_sof(MJpegDecodeContext *s)
s->width = width; s->width = width;
s->height = height; s->height = height;
s->avctx->width = s->width;
s->avctx->height = s->height;
/* test interlaced mode */ /* test interlaced mode */
if (s->first_picture && if (s->first_picture &&
s->org_height != 0 && s->org_height != 0 &&
s->height < ((s->org_height * 3) / 4)) { s->height < ((s->org_height * 3) / 4)) {
s->interlaced = 1; s->interlaced = 1;
// s->bottom_field = (s->interlace_polarity) ? 1 : 0; // s->bottom_field = (s->interlace_polarity) ? 1 : 0;
s->bottom_field = 0; s->bottom_field = 0;
s->avctx->height *= 2;
} }
s->qscale_table= av_mallocz((s->width+15)/16); s->qscale_table= av_mallocz((s->width+15)/16);
@ -1818,10 +1821,6 @@ eoi_parser:
} }
*picture = s->picture; *picture = s->picture;
*data_size = sizeof(AVFrame); *data_size = sizeof(AVFrame);
avctx->height = s->height;
if (s->interlaced)
avctx->height *= 2;
avctx->width = s->width;
if(!s->lossless){ if(!s->lossless){
picture->quality= FFMAX(FFMAX(s->qscale[0], s->qscale[1]), s->qscale[2]); picture->quality= FFMAX(FFMAX(s->qscale[0], s->qscale[1]), s->qscale[2]);
@ -1976,10 +1975,6 @@ read_header:
*picture= s->picture; *picture= s->picture;
*data_size = sizeof(AVFrame); *data_size = sizeof(AVFrame);
avctx->height = s->height;
if (s->interlaced)
avctx->height *= 2;
avctx->width = s->width;
if(!s->lossless){ if(!s->lossless){
picture->quality= FFMAX(FFMAX(s->qscale[0], s->qscale[1]), s->qscale[2]); picture->quality= FFMAX(FFMAX(s->qscale[0], s->qscale[1]), s->qscale[2]);