Vendor string date update
[platform/upstream/libvorbis.git] / lib / info.c
index 90ff887..c064438 100644 (file)
@@ -5,14 +5,13 @@
  * THE GNU LESSER/LIBRARY PUBLIC LICENSE, WHICH IS INCLUDED WITH    *
  * THIS SOURCE. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.        *
  *                                                                  *
- * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2000             *
- * by Monty <monty@xiph.org> and the XIPHOPHORUS Company            *
- * http://www.xiph.org/                                             *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2001             *
+ * by the XIPHOPHORUS Company http://www.xiph.org/                  *
  *                                                                  *
  ********************************************************************
 
  function: maintain the info structure, info <-> header packets
- last mod: $Id: info.c,v 1.32 2000/11/06 00:07:00 xiphmont Exp $
+ last mod: $Id: info.c,v 1.38 2001/02/18 09:58:54 xiphmont Exp $
 
  ********************************************************************/
 
@@ -130,10 +129,10 @@ void vorbis_comment_clear(vorbis_comment *vc){
   if(vc){
     long i;
     for(i=0;i<vc->comments;i++)
-      if(vc->user_comments[i])free(vc->user_comments[i]);
-    if(vc->user_comments)free(vc->user_comments);
-       if(vc->comment_lengths)free(vc->comment_lengths);
-    if(vc->vendor)free(vc->vendor);
+      if(vc->user_comments[i])_ogg_free(vc->user_comments[i]);
+    if(vc->user_comments)_ogg_free(vc->user_comments);
+       if(vc->comment_lengths)_ogg_free(vc->comment_lengths);
+    if(vc->vendor)_ogg_free(vc->vendor);
   }
   memset(vc,0,sizeof(vorbis_comment));
 }
@@ -151,7 +150,7 @@ void vorbis_info_clear(vorbis_info *vi){
   if(ci){
 
     for(i=0;i<ci->modes;i++)
-      if(ci->mode_param[i])free(ci->mode_param[i]);
+      if(ci->mode_param[i])_ogg_free(ci->mode_param[i]);
 
     for(i=0;i<ci->maps;i++) /* unpack does the range checking */
       _mapping_P[ci->map_type[i]]->free_info(ci->map_param[i]);
@@ -175,7 +174,7 @@ void vorbis_info_clear(vorbis_info *vi){
     for(i=0;i<ci->psys;i++)
       _vi_psy_free(ci->psy_param[i]);
 
-    free(ci);
+    _ogg_free(ci);
   }
 
   memset(vi,0,sizeof(vorbis_info));
@@ -409,7 +408,7 @@ static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){
 }
 
 static int _vorbis_pack_comment(oggpack_buffer *opb,vorbis_comment *vc){
-  char temp[]="Xiphophorus libVorbis I 20001031";
+  char temp[]="Xiphophorus libVorbis I 20010218";
 
   /* preamble */  
   oggpack_write(opb,0x03,8);
@@ -494,6 +493,25 @@ err_out:
   return(-1);
 } 
 
+int vorbis_commentheader_out(vorbis_comment *vc,
+                                     ogg_packet *op){
+
+  oggpack_buffer opb;
+
+  oggpack_writeinit(&opb);
+  if(_vorbis_pack_comment(&opb,vc)) return OV_EIMPL;
+
+  op->packet = _ogg_malloc(oggpack_bytes(&opb));
+  memcpy(op->packet, opb.buffer, oggpack_bytes(&opb));
+
+  op->bytes=oggpack_bytes(&opb);
+  op->b_o_s=0;
+  op->e_o_s=0;
+  op->granulepos=0;
+
+  return 0;
+}
+
 int vorbis_analysis_headerout(vorbis_dsp_state *v,
                              vorbis_comment *vc,
                              ogg_packet *op,
@@ -515,7 +533,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
   if(_vorbis_pack_info(&opb,vi))goto err_out;
 
   /* build the packet */
-  if(b->header)free(b->header);
+  if(b->header)_ogg_free(b->header);
   b->header=_ogg_malloc(oggpack_bytes(&opb));
   memcpy(b->header,opb.buffer,oggpack_bytes(&opb));
   op->packet=b->header;
@@ -529,7 +547,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
   oggpack_reset(&opb);
   if(_vorbis_pack_comment(&opb,vc))goto err_out;
 
-  if(b->header1)free(b->header1);
+  if(b->header1)_ogg_free(b->header1);
   b->header1=_ogg_malloc(oggpack_bytes(&opb));
   memcpy(b->header1,opb.buffer,oggpack_bytes(&opb));
   op_comm->packet=b->header1;
@@ -543,7 +561,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
   oggpack_reset(&opb);
   if(_vorbis_pack_books(&opb,vi))goto err_out;
 
-  if(b->header2)free(b->header2);
+  if(b->header2)_ogg_free(b->header2);
   b->header2=_ogg_malloc(oggpack_bytes(&opb));
   memcpy(b->header2,opb.buffer,oggpack_bytes(&opb));
   op_code->packet=b->header2;
@@ -560,9 +578,9 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v,
   memset(op_comm,0,sizeof(ogg_packet));
   memset(op_code,0,sizeof(ogg_packet));
 
-  if(b->header)free(b->header);
-  if(b->header1)free(b->header1);
-  if(b->header2)free(b->header2);
+  if(b->header)_ogg_free(b->header);
+  if(b->header1)_ogg_free(b->header1);
+  if(b->header2)_ogg_free(b->header2);
   b->header=NULL;
   b->header1=NULL;
   b->header2=NULL;