From dd91338b0a7ec2a7675a9aaf22a9377c34a10674 Mon Sep 17 00:00:00 2001
From: Gregory Maxwell <greg@xiph.org>
Date: Thu, 26 Feb 2009 17:05:37 -0500
Subject: [PATCH] Add version info to celtenc/celtdec output as suggested on
 the mailing list by Rob Til Freedmen. Also add a bitstream version check to
 these applications.

---
 tools/celtdec.c | 11 +++++++++--
 tools/celtenc.c | 20 ++++++++++++--------
 2 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/tools/celtdec.c b/tools/celtdec.c
index 2a5eb7e73..396aaf7df 100644
--- a/tools/celtdec.c
+++ b/tools/celtdec.c
@@ -276,13 +276,13 @@ void usage(void)
 
 void version(void)
 {
-   printf ("celtenc (CELT encoder)\n");
+   printf ("celtenc (CELT %s encoder)\n",CELT_VERSION);
    printf ("Copyright (C) 2008 Jean-Marc Valin\n");
 }
 
 void version_short(void)
 {
-   printf ("celtenc (CELT encoder)\n");
+   printf ("celtenc (CELT %s encoder)\n",CELT_VERSION);
    printf ("Copyright (C) 2008 Jean-Marc Valin\n");
 }
 
@@ -290,6 +290,7 @@ static CELTDecoder *process_header(ogg_packet *op, celt_int32_t enh_enabled, cel
 {
    CELTDecoder *st;
    CELTHeader header;
+   int bitstream;
       
    celt_header_from_packet(op->packet, op->bytes, &header);
 
@@ -304,6 +305,12 @@ static CELTDecoder *process_header(ogg_packet *op, celt_int32_t enh_enabled, cel
       fprintf (stderr, "Mode initialization failed.\n");
       return NULL;
    }
+
+   
+   celt_mode_info(*mode, CELT_GET_BITSTREAM_VERSION, &bitstream);
+   if (bitstream!=header.version_id)
+     fprintf(stderr, "WARNING: Input was encoded with a CELT bitstream version %d. This decoder uses %d. Output will probably be corrupted.\n",header.version_id,bitstream);
+   
    *channels = header.nb_channels;
    *overlap=header.overlap;
    st = celt_decoder_create(*mode);
diff --git a/tools/celtenc.c b/tools/celtenc.c
index 8cbb58c5a..0ffcf472e 100644
--- a/tools/celtenc.c
+++ b/tools/celtenc.c
@@ -185,13 +185,13 @@ void add_fisbone_packet (ogg_stream_state *os, celt_int32_t serialno, CELTHeader
 
 void version(void)
 {
-   printf ("celtenc (CELT encoder)\n");
+   printf ("celtenc (CELT %s encoder)\n",CELT_VERSION);
    printf ("Copyright (C) 2008 Jean-Marc Valin\n");
 }
 
 void version_short(void)
 {
-   printf ("celtenc (CELT encoder)\n");
+   printf ("celtenc (CELT %s encoder)\n",CELT_VERSION);
    printf ("Copyright (C) 2008 Jean-Marc Valin\n");
 }
 
@@ -295,10 +295,8 @@ int main(int argc, char **argv)
    celt_int32_t lookahead = 0;
    int bytes_per_packet=48;
    int complexity=-127;
-   
-   snprintf(vendor_string, sizeof(vendor_string), "Encoded with CELT\n");
-   
-   comment_init(&comments, &comments_length, vendor_string);
+   int bitstream;
+
 
    /*Process command-line options*/
    while(1)
@@ -469,6 +467,12 @@ int main(int argc, char **argv)
    mode = celt_mode_create(rate, chan, frame_size, NULL);
    if (!mode)
       return 1;
+
+  celt_mode_info(mode,CELT_GET_BITSTREAM_VERSION,&bitstream);      
+
+   snprintf(vendor_string, sizeof(vendor_string), "Encoded with CELT %s (bitstream: %d)\n",CELT_VERSION,bitstream);
+   comment_init(&comments, &comments_length, vendor_string);
+
    celt_mode_info(mode, CELT_GET_FRAME_SIZE, &frame_size);   
    
    celt_header_init(&header, mode);
@@ -479,8 +483,8 @@ int main(int argc, char **argv)
       if (chan==2)
          st_string="stereo";
       if (!quiet)
-         fprintf (stderr, "Encoding %d Hz %s audio in %d sample packets at %0.3fkbit/sec (%d bytes per packet)\n", 
-               header.sample_rate, st_string, frame_size, bitrate, bytes_per_packet);
+         fprintf (stderr, "Encoding %d Hz %s audio in %d sample packets at %0.3fkbit/sec (%d bytes per packet) with bitstream version %d\n", 
+               header.sample_rate, st_string, frame_size, bitrate, bytes_per_packet,bitstream);
    }
 
    /*Initialize CELT encoder*/
-- 
GitLab