summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibaut Mattern <tmattern@users.sourceforge.net>2002-10-31 22:22:23 +0000
committerThibaut Mattern <tmattern@users.sourceforge.net>2002-10-31 22:22:23 +0000
commit7b5e89c817893ddf66c8c4d8cf876f59c203dfeb (patch)
tree00c17f296e20f1b11237d481111141ccf8490690
parent9d86dca48419b4dd4bbaa3dd0f855c3d12f38605 (diff)
downloadxine-lib-7b5e89c817893ddf66c8c4d8cf876f59c203dfeb.tar.gz
xine-lib-7b5e89c817893ddf66c8c4d8cf876f59c203dfeb.tar.bz2
Complete frame rate calculation.
CVS patchset: 3117 CVS date: 2002/10/31 22:22:23
-rw-r--r--src/libmpeg2/decode.c4
-rw-r--r--src/libmpeg2/header.c4
-rw-r--r--src/libmpeg2/mpeg2_internal.h3
3 files changed, 11 insertions, 0 deletions
diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c
index 6b3dc79d8..223971157 100644
--- a/src/libmpeg2/decode.c
+++ b/src/libmpeg2/decode.c
@@ -120,6 +120,10 @@ static inline void get_frame_duration (mpeg2dec_t * mpeg2dec, vo_frame_t *frame)
frame->duration = 0;
}
+ frame->duration = frame->duration *
+ ((mpeg2dec->picture->frame_rate_ext_n + 1) /
+ (mpeg2dec->picture->frame_rate_ext_d + 1));
+
/* this should be used to detect any special rff pattern */
mpeg2dec->rff_pattern = mpeg2dec->rff_pattern << 1;
mpeg2dec->rff_pattern |= !!frame->repeat_first_field;
diff --git a/src/libmpeg2/header.c b/src/libmpeg2/header.c
index 44e7695f0..c68ee5165 100644
--- a/src/libmpeg2/header.c
+++ b/src/libmpeg2/header.c
@@ -177,6 +177,7 @@ static int sequence_extension (picture_t * picture, uint8_t * buffer)
picture->coded_picture_height =
(picture->coded_picture_height + 31) & ~31;
+
/* printf ("libmpeg2: low_delay : %d\n", picture->low_delay); */
/*
@@ -184,6 +185,9 @@ static int sequence_extension (picture_t * picture, uint8_t * buffer)
buffer[5], buffer[5] % 0x80);
*/
+ picture->frame_rate_ext_n = buffer[5] & 0x31;
+ picture->frame_rate_ext_d = (buffer[5] >> 2) & 0x03;
+
/* MPEG1 - for testing only */
picture->mpeg1 = 0;
diff --git a/src/libmpeg2/mpeg2_internal.h b/src/libmpeg2/mpeg2_internal.h
index 7449e2dd0..5beea9844 100644
--- a/src/libmpeg2/mpeg2_internal.h
+++ b/src/libmpeg2/mpeg2_internal.h
@@ -167,6 +167,9 @@ typedef struct picture_s {
uint32_t broken_link;
int bitrate;
+ int frame_rate_ext_n;
+ int frame_rate_ext_d;
+
} picture_t;
typedef struct cpu_state_s {