X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Faccess%2Fdvdread.c;h=8e1757a5f9f048df813d3aaed692a1c3d6d1f073;hb=1e8938de3cfa40814450b42f9d69db49dd269ab8;hp=43b0ee43a5dbab8ce5d534ab92d16d5aaba244ee;hpb=9ecd18578e50dd748818dffca1b03bf90af85fd7;p=vlc diff --git a/modules/access/dvdread.c b/modules/access/dvdread.c index 43b0ee43a5..8e1757a5f9 100644 --- a/modules/access/dvdread.c +++ b/modules/access/dvdread.c @@ -222,13 +222,15 @@ static int Open( vlc_object_t *p_this ) psz_name[2] == '\\' && psz_name[3] == '\0' ) psz_name[2] = '\0'; #endif - /* Override environment variable DVDCSS_METHOD with config option - * (FIXME: this creates a small memory leak) */ + /* Override environment variable DVDCSS_METHOD with config option */ psz_dvdcss_env = config_GetPsz( p_demux, "dvdread-css-method" ); if( psz_dvdcss_env && *psz_dvdcss_env ) +#ifdef HAVE_SETENV + setenv( "DVDCSS_METHOD", psz_dvdcss_env, 1 ); +#else { + /* FIXME: this create a small memory leak */ char *psz_env; - psz_env = malloc( strlen("DVDCSS_METHOD=") + strlen( psz_dvdcss_env ) + 1 ); if( !psz_env ) @@ -236,11 +238,10 @@ static int Open( vlc_object_t *p_this ) free( psz_dvdcss_env ); return VLC_ENOMEM; } - sprintf( psz_env, "%s%s", "DVDCSS_METHOD=", psz_dvdcss_env ); - putenv( psz_env ); } +#endif free( psz_dvdcss_env ); /* Open dvdread */ @@ -602,10 +603,15 @@ static int DemuxBlock( demux_t *p_demux, uint8_t *pkt, int i_pkt ) demux_sys_t *p_sys = p_demux->p_sys; uint8_t *p = pkt; - while( p < &pkt[i_pkt] ) + while( p && p < &pkt[i_pkt] ) { - int i_size = ps_pkt_size( p, &pkt[i_pkt] - p ); block_t *p_pkt; + int i_size = &pkt[i_pkt] - p; + + if( i_size < 6 ) + break; + + i_size = ps_pkt_size( p, i_size ); if( i_size <= 0 ) { break; @@ -709,9 +715,15 @@ static void ESNew( demux_t *p_demux, int i_id, int i_lang ) /* Add a new ES */ if( tk->fmt.i_cat == VIDEO_ES ) { - if( p_sys->i_aspect >= 0 ) + switch( p_sys->i_aspect ) { - tk->fmt.video.i_aspect = p_sys->i_aspect; + case 1: tk->fmt.video.i_aspect = VOUT_ASPECT_FACTOR; break; + case 2: tk->fmt.video.i_aspect = VOUT_ASPECT_FACTOR * 4 / 3; break; + case 3: tk->fmt.video.i_aspect = VOUT_ASPECT_FACTOR * 16 / 9; break; + case 4: tk->fmt.video.i_aspect = VOUT_ASPECT_FACTOR * 221 / 10; break; + default: + tk->fmt.video.i_aspect = 0; + break; } } else if( tk->fmt.i_cat == AUDIO_ES )