# HG changeset patch # User glantau # Date 1021911879 0 # Node ID e20655449d4af7ee1c442b53271f59caff232dd3 # Parent b0aed401a75679b4a8e1f371453c1824002ec30c mpeg1/2 identifier - fixed frame rate for some bad mpeg1 streams diff -r b0aed401a756 -r e20655449d4a mpeg12.c --- a/mpeg12.c Mon May 20 16:23:27 2002 +0000 +++ b/mpeg12.c Mon May 20 16:24:39 2002 +0000 @@ -1283,6 +1283,7 @@ s->frame_rate = (s->frame_rate * frame_rate_ext_n) / frame_rate_ext_d; dprintf("sequence extension\n"); s->mpeg2 = 1; + s->avctx->sub_id = 2; /* indicates mpeg2 found */ } static void mpeg_decode_quant_matrix_extension(MpegEncContext *s) @@ -1472,7 +1473,7 @@ Mpeg1Context *s1 = avctx->priv_data; MpegEncContext *s = &s1->mpeg_enc_ctx; int width, height, i, v, j; - + init_get_bits(&s->gb, buf, buf_size); width = get_bits(&s->gb, 12); @@ -1500,7 +1501,12 @@ s->avctx = avctx; avctx->width = width; avctx->height = height; - avctx->frame_rate = frame_rate_tab[s->frame_rate_index]; + if (s->frame_rate_index >= 9) { + /* at least give a valid frame rate (some old mpeg1 have this) */ + avctx->frame_rate = 25 * FRAME_RATE_BASE; + } else { + avctx->frame_rate = frame_rate_tab[s->frame_rate_index]; + } s->frame_rate = avctx->frame_rate; avctx->bit_rate = s->bit_rate; @@ -1561,6 +1567,7 @@ s->picture_structure = PICT_FRAME; s->frame_pred_frame_dct = 1; s->mpeg2 = 0; + avctx->sub_id = 1; /* indicates mpeg1 */ return 0; }