X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fpacketizer%2Fvc1.c;h=da7ce5fa87bb59cf31a06d9abd4a8842549d5c20;hb=f503b668bc9b683dd36b2342b81ca8bff98ef790;hp=83c7f500822ecb072d0f41aa5aa7efe52cc9da28;hpb=51bbf793131496c6f31f70953ff434f17be80d63;p=vlc diff --git a/modules/packetizer/vc1.c b/modules/packetizer/vc1.c index 83c7f50082..da7ce5fa87 100644 --- a/modules/packetizer/vc1.c +++ b/modules/packetizer/vc1.c @@ -1,25 +1,25 @@ /***************************************************************************** * vc1.c ***************************************************************************** - * Copyright (C) 2001, 2002, 2006 the VideoLAN team + * Copyright (C) 2001, 2002, 2006 VLC authors and VideoLAN * $Id$ * * Authors: Laurent Aimar * Gildas Bazin * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ /***************************************************************************** @@ -35,8 +35,8 @@ #include #include -#include "vlc_bits.h" -#include "vlc_block_helper.h" +#include +#include #include "packetizer_helper.h" /***************************************************************************** @@ -138,10 +138,12 @@ static int Open( vlc_object_t *p_this ) /* Create the output format */ es_format_Copy( &p_dec->fmt_out, &p_dec->fmt_in ); p_dec->p_sys = p_sys = malloc( sizeof( decoder_sys_t ) ); + if( unlikely( !p_sys ) ) + return VLC_ENOMEM; packetizer_Init( &p_sys->packetizer, p_vc1_startcode, sizeof(p_vc1_startcode), - NULL, 0, + NULL, 0, 4, PacketizeReset, PacketizeParse, PacketizeValidate, p_dec ); p_sys->b_sequence_header = false; @@ -203,7 +205,7 @@ static block_t *Packetize( decoder_t *p_dec, block_t **pp_block ) if( p_sys->b_check_startcode && pp_block && *pp_block ) { /* Fix syntax for (some?) VC1 from asf */ - const int i_startcode = sizeof(p_vc1_startcode); + const unsigned i_startcode = sizeof(p_vc1_startcode); block_t *p_block = *pp_block; if( p_block->i_buffer > 0 && @@ -283,7 +285,7 @@ static void DecodeRIDU( uint8_t *p_ret, int *pi_ret, uint8_t *src, int i_src ) while( src < end && dst < dst_end ) { if( src < end - 3 && src[0] == 0x00 && src[1] == 0x00 && - src[2] == 0x03 ) + src[2] == 0x03 && dst < dst_end - 1 ) { *dst++ = 0x00; *dst++ = 0x00; @@ -309,7 +311,7 @@ static void BuildExtraData( decoder_t *p_dec ) if( p_es->i_extra != i_extra ) { p_es->i_extra = i_extra; - p_es->p_extra = realloc( p_dec->fmt_out.p_extra, p_es->i_extra ); + p_es->p_extra = xrealloc( p_es->p_extra, p_es->i_extra ); } memcpy( p_es->p_extra, p_sys->sh.p_sh->p_buffer, p_sys->sh.p_sh->i_buffer ); @@ -490,7 +492,8 @@ static block_t *ParseIDU( decoder_t *p_dec, bool *pb_used_ts, block_t *p_frag ) const int i_display_width = bs_read( &s, 14 )+1; const int i_display_height = bs_read( &s, 14 )+1; - p_es->video.i_aspect = VOUT_ASPECT_FACTOR * i_display_width / i_display_height; + p_es->video.i_sar_num = i_display_width * p_es->video.i_height; + p_es->video.i_sar_den = i_display_height * p_es->video.i_width; if( !p_sys->b_sequence_header ) msg_Dbg( p_dec, "display size %dx%d", i_display_width, i_display_height );