diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-10-14 17:29:49 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-10-14 17:29:49 +0000 |
commit | 2a7a438b7de821a67e666827eb543806b9fb93fd (patch) | |
tree | 0893976d1737f903e2c5091c962ce54f024f375a /libmpeg2 | |
parent | 3a2c8617a5ecd0c73f7e69db678fbcf922d49b5a (diff) | |
download | mpv-2a7a438b7de821a67e666827eb543806b9fb93fd.tar.bz2 mpv-2a7a438b7de821a67e666827eb543806b9fb93fd.tar.xz |
mpeg2 fps fix by Ivan Kalvatchev <iive@yahoo.com>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2197 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpeg2')
-rw-r--r-- | libmpeg2/header.c | 26 | ||||
-rw-r--r-- | libmpeg2/mpeg2_internal.h | 2 |
2 files changed, 26 insertions, 2 deletions
diff --git a/libmpeg2/header.c b/libmpeg2/header.c index ab5e12923c..331fcf1767 100644 --- a/libmpeg2/header.c +++ b/libmpeg2/header.c @@ -203,6 +203,7 @@ static int header_process_picture_coding_extension (picture_t * picture, uint8_t picture->repeat_first_field = (buffer[3] >> 1) & 1; picture->progressive_frame = buffer[4] >> 7; +#if 0 // repeat_first implementation by A'rpi/ESP-team, based on libmpeg3: if(picture->repeat_count>=100) picture->repeat_count=0; if(picture->repeat_first_field){ @@ -216,7 +217,30 @@ static int header_process_picture_coding_extension (picture_t * picture, uint8_t picture->repeat_count+=50; } } - + //repeat_count=display_time-100% +#else + // repeat_first implemantation by iive, based on A'rpi/ESP-team and libmpeg3 + if( picture->progressive_sequence == 1 ) + { + if( picture->repeat_first_field == 0 ) picture->display_time=100;//normal + else + { + if( picture->top_field_first == 0 ) picture->display_time=200;//2 frames + else picture->display_time=300;//3 frames + } + }else + { + if( picture->progressive_frame == 0 ) + picture->display_time=100;//2fields, interlaced in time + else + { + if( picture->top_field_first == 0 ) picture->display_time=100;//reconstruct 2 fields + else picture->display_time = 150;//reconstruct 3 fields + } + + if( picture->picture_structure!=3 ) picture->display_time/=2;//we calc on every field + } +#endif return 0; } diff --git a/libmpeg2/mpeg2_internal.h b/libmpeg2/mpeg2_internal.h index f5cd473f2b..2f9d66593a 100644 --- a/libmpeg2/mpeg2_internal.h +++ b/libmpeg2/mpeg2_internal.h @@ -146,7 +146,7 @@ typedef struct picture_s { int display_picture_width; int display_picture_height; int pp_options; - int repeat_count; + int display_time; struct vo_frame_s * display_frame; int slice; |