Mercurial > mplayer.hg
comparison libmpdemux/video.c @ 30639:102ae81b5dc8
Parse and use the information from the frame rate extension header for MPEG-2.
-identify still does not show the right values though.
Fixes bug #1636.
author | reimar |
---|---|
date | Sun, 21 Feb 2010 13:53:41 +0000 |
parents | 32725ca88fed |
children | b14b32c20935 |
comparison
equal
deleted
inserted
replaced
30638:a7b908875c14 | 30639:102ae81b5dc8 |
---|---|
431 demux_stream_t *d_video=sh_video->ds; | 431 demux_stream_t *d_video=sh_video->ds; |
432 demuxer_t *demuxer=d_video->demuxer; | 432 demuxer_t *demuxer=d_video->demuxer; |
433 float frame_time=1; | 433 float frame_time=1; |
434 float pts1=d_video->pts; | 434 float pts1=d_video->pts; |
435 float pts=0; | 435 float pts=0; |
436 float fps; | |
436 int picture_coding_type=0; | 437 int picture_coding_type=0; |
437 int in_size=0; | 438 int in_size=0; |
438 video_codec_t video_codec = find_video_codec(sh_video); | 439 video_codec_t video_codec = find_video_codec(sh_video); |
439 | 440 |
440 *start=NULL; | 441 *start=NULL; |
467 case 0x1B5: mp_header_process_extension (&picture, &videobuffer[start]);break; | 468 case 0x1B5: mp_header_process_extension (&picture, &videobuffer[start]);break; |
468 case 0x1B2: process_userdata (&videobuffer[start], videobuf_len-start);break; | 469 case 0x1B2: process_userdata (&videobuffer[start], videobuf_len-start);break; |
469 case 0x100: picture_coding_type=(videobuffer[start+1] >> 3) & 7;break; | 470 case 0x100: picture_coding_type=(videobuffer[start+1] >> 3) & 7;break; |
470 } | 471 } |
471 } | 472 } |
473 fps = picture.fps * picture.frame_rate_extension_n / picture.frame_rate_extension_d; | |
472 | 474 |
473 *start=videobuffer; in_size=videobuf_len; | 475 *start=videobuffer; in_size=videobuf_len; |
474 | 476 |
475 // get mpeg fps: | 477 // get mpeg fps: |
476 if(sh_video->fps!=picture.fps) if(!force_fps && !telecine){ | 478 if(sh_video->fps!=fps) if(!force_fps && !telecine){ |
477 mp_msg(MSGT_CPLAYER,MSGL_WARN,"Warning! FPS changed %5.3f -> %5.3f (%f) [%d] \n",sh_video->fps,picture.fps,sh_video->fps-picture.fps,picture.frame_rate_code); | 479 mp_msg(MSGT_CPLAYER,MSGL_WARN,"Warning! FPS changed %5.3f -> %5.3f (%f) [%d] \n",sh_video->fps,fps,sh_video->fps-fps,picture.frame_rate_code); |
478 sh_video->fps=picture.fps; | 480 sh_video->fps=fps; |
479 sh_video->frametime=1.0/picture.fps; | 481 sh_video->frametime=1.0/fps; |
480 } | 482 } |
481 | 483 |
482 // fix mpeg2 frametime: | 484 // fix mpeg2 frametime: |
483 frame_time=(picture.display_time)*0.01f; | 485 frame_time=(picture.display_time)*0.01f; |
484 picture.display_time=100; | 486 picture.display_time=100; |