Mercurial > mplayer.hg
changeset 18398:a1375e440e92
COSMETICS: moved code to parse mpeg1/2 A/R to mpeg_hdr.c
author | nicodvb |
---|---|
date | Sun, 07 May 2006 16:05:38 +0000 |
parents | 06cbbf7d8e61 |
children | 8a8db87a884b |
files | libmpdemux/mpeg_hdr.c libmpdemux/mpeg_hdr.h libmpdemux/video.c |
diffstat | 3 files changed, 35 insertions(+), 28 deletions(-) [+] |
line wrap: on
line diff
--- a/libmpdemux/mpeg_hdr.c Sun May 07 14:06:26 2006 +0000 +++ b/libmpdemux/mpeg_hdr.c Sun May 07 16:05:38 2006 +0000 @@ -8,6 +8,8 @@ #include "config.h" #include "mpeg_hdr.h" +#include "mp_msg.h" + static float frameratecode2framerate[16] = { 0, // Official mpeg1/2 framerates: (1-8) @@ -102,6 +104,37 @@ return 0; } +float mpeg12_aspect_info(mp_mpeg_header_t *picture) +{ + float aspect = 0.0; + + switch(picture->aspect_ratio_information) { + case 2: // PAL/NTSC SVCD/DVD 4:3 + case 8: // PAL VCD 4:3 + case 12: // NTSC VCD 4:3 + aspect=4.0/3.0; + break; + case 3: // PAL/NTSC Widescreen SVCD/DVD 16:9 + case 6: // (PAL?)/NTSC Widescreen SVCD 16:9 + aspect=16.0/9.0; + break; + case 4: // according to ISO-138182-2 Table 6.3 + aspect=2.21; + break; + case 1: // VGA 1:1 - do not prescale + case 9: // Movie Type ??? / 640x480 + aspect=0.0; + break; + default: + mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Detected unknown aspect_ratio_information in mpeg sequence header.\n" + "Please report the aspect value (%i) along with the movie type (VGA,PAL,NTSC," + "SECAM) and the movie resolution (720x576,352x240,480x480,...) to the MPlayer" + " developers, so that we can add support for it!\nAssuming 1:1 aspect for now.\n", + picture->aspect_ratio_information); + } + + return aspect; +} //MPEG4 HEADERS unsigned char mp_getbits(unsigned char *buffer, unsigned int from, unsigned char len)
--- a/libmpdemux/mpeg_hdr.h Sun May 07 14:06:26 2006 +0000 +++ b/libmpdemux/mpeg_hdr.h Sun May 07 16:05:38 2006 +0000 @@ -22,6 +22,7 @@ int mp_header_process_sequence_header (mp_mpeg_header_t * picture, unsigned char * buffer); int mp_header_process_extension (mp_mpeg_header_t * picture, unsigned char * buffer); +float mpeg12_aspect_info(mp_mpeg_header_t *picture); int mp4_header_process_vol(mp_mpeg_header_t * picture, unsigned char * buffer); void mp4_header_process_vop(mp_mpeg_header_t * picture, unsigned char * buffer); int h264_parse_sps(mp_mpeg_header_t * picture, unsigned char * buf, int len);
--- a/libmpdemux/video.c Sun May 07 14:06:26 2006 +0000 +++ b/libmpdemux/video.c Sun May 07 16:05:38 2006 +0000 @@ -326,34 +326,7 @@ } // printf("picture.fps=%d\n",picture.fps); - - // fill aspect info: - switch(picture.aspect_ratio_information){ - case 2: // PAL/NTSC SVCD/DVD 4:3 - case 8: // PAL VCD 4:3 - case 12: // NTSC VCD 4:3 - sh_video->aspect=4.0/3.0; - break; - case 3: // PAL/NTSC Widescreen SVCD/DVD 16:9 - case 6: // (PAL?)/NTSC Widescreen SVCD 16:9 - sh_video->aspect=16.0/9.0; - break; - case 4: // according to ISO-138182-2 Table 6.3 - sh_video->aspect=2.21; - break; - case 9: // Movie Type ??? / 640x480 - sh_video->aspect=0.0; - break; - default: - mp_msg(MSGT_DECVIDEO,MSGL_ERR,"Detected unknown aspect_ratio_information in mpeg sequence header.\n" - "Please report the aspect value (%i) along with the movie type (VGA,PAL,NTSC," - "SECAM) and the movie resolution (720x576,352x240,480x480,...) to the MPlayer" - " developers, so that we can add support for it!\nAssuming 1:1 aspect for now.\n", - picture.aspect_ratio_information); - case 1: // VGA 1:1 - do not prescale - sh_video->aspect=0.0; - break; - } + sh_video->aspect = mpeg12_aspect_info(&picture); // display info: sh_video->format=picture.mpeg1?0x10000001:0x10000002; // mpeg video sh_video->fps=picture.fps;