From 56286b38d42575595f821fcedb07c65a2c5304b4 Mon Sep 17 00:00:00 2001 From: nicodvb Date: Sun, 7 May 2006 16:05:38 +0000 Subject: COSMETICS: moved code to parse mpeg1/2 A/R to mpeg_hdr.c git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@18399 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpdemux/mpeg_hdr.c | 33 +++++++++++++++++++++++++++++++++ libmpdemux/mpeg_hdr.h | 1 + libmpdemux/video.c | 29 +---------------------------- 3 files changed, 35 insertions(+), 28 deletions(-) diff --git a/libmpdemux/mpeg_hdr.c b/libmpdemux/mpeg_hdr.c index 4ab8fea45d..e2d0ecaa23 100644 --- a/libmpdemux/mpeg_hdr.c +++ b/libmpdemux/mpeg_hdr.c @@ -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 @@ int mp_header_process_extension (mp_mpeg_header_t * picture, unsigned char * buf 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) diff --git a/libmpdemux/mpeg_hdr.h b/libmpdemux/mpeg_hdr.h index 541e1235b9..315d89923e 100644 --- a/libmpdemux/mpeg_hdr.h +++ b/libmpdemux/mpeg_hdr.h @@ -22,6 +22,7 @@ typedef struct { 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); diff --git a/libmpdemux/video.c b/libmpdemux/video.c index 896004921b..88801e7d0a 100644 --- a/libmpdemux/video.c +++ b/libmpdemux/video.c @@ -326,34 +326,7 @@ mpeg_header_parser: } // 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; -- cgit v1.2.3