/******************************************************************** * * * THIS FILE IS PART OF THE OggTheora SOFTWARE CODEC SOURCE CODE. * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * * THE Theora SOURCE CODE IS COPYRIGHT (C) 2002-2009 * * by the Xiph.Org Foundation and contributors http://www.xiph.org/ * * * ******************************************************************** function: last mod: $Id$ ********************************************************************/ #include <stdlib.h> #include <string.h> #include <limits.h> #include "decint.h" /*Only used for fuzzing.*/ #if defined(HAVE_MEMORY_CONSTRAINT) static const int MAX_FUZZING_WIDTH = 16384; static const int MAX_FUZZING_HEIGHT = 16384; #endif /*Unpacks a series of octets from a given byte array into the pack buffer. No checking is done to ensure the buffer contains enough data. _opb: The pack buffer to read the octets from. _buf: The byte array to store the unpacked bytes in. _len: The number of octets to unpack.*/ static void oc_unpack_octets(oc_pack_buf *_opb,char *_buf,size_t _len){ … } /*Unpacks a 32-bit integer encoded by octets in little-endian form.*/ static long oc_unpack_length(oc_pack_buf *_opb){ … } static int oc_info_unpack(oc_pack_buf *_opb,th_info *_info){ … } static int oc_comment_unpack(oc_pack_buf *_opb,th_comment *_tc){ … } static int oc_setup_unpack(oc_pack_buf *_opb,th_setup_info *_setup){ … } static void oc_setup_clear(th_setup_info *_setup){ … } static int oc_dec_headerin(oc_pack_buf *_opb,th_info *_info, th_comment *_tc,th_setup_info **_setup,ogg_packet *_op){ … } /*Decodes one header packet. This should be called repeatedly with the packets at the beginning of the stream until it returns 0.*/ int th_decode_headerin(th_info *_info,th_comment *_tc, th_setup_info **_setup,ogg_packet *_op){ … } void th_setup_free(th_setup_info *_setup){ … }