Mercurial > libavcodec.hg
changeset 401:e20655449d4a libavcodec
mpeg1/2 identifier - fixed frame rate for some bad mpeg1 streams
author | glantau |
---|---|
date | Mon, 20 May 2002 16:24:39 +0000 |
parents | b0aed401a756 |
children | 92d143c2d5a8 |
files | mpeg12.c |
diffstat | 1 files changed, 9 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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; }