This file is indexed.

/usr/include/torch/IOHTK.h is in libtorch3-dev 3.1-2.1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// Copyright (C) 2003--2004 Johnny Mariethoz (Johnny.Mariethoz@idiap.ch)
//                
// This file is part of Torch 3.1.
//
// All rights reserved.
// 
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
// 3. The name of the author may not be used to endorse or promote products
//    derived from this software without specific prior written permission.
// 
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#ifndef IO_HTK_INC
#define IO_HTK_INC

#include "IOSequence.h"
#include "DiskXFile.h"

namespace Torch {

// HTK File Header 
struct HTKHeader {              
    long  n_samples;
    long  sample_period;
    short sample_size;
    short sample_kind;
};

#define BASEMASK  077         /* Mask to remove qualifiers */
#define HASENERGY  0100       /* _E log energy included */
#define HASNULLE   0200       /* _N absolute energy suppressed */
#define HASDELTA   0400       /* _D delta coef appended */
#define HASACCS   01000       /* _A acceleration coefs appended */
#define HASCOMPX  02000       /* _C is compressed */
#define HASZEROM  04000       /* _Z zero meaned */
#define HASCRCC  010000       /* _K has CRC check */
#define HASZEROC 020000       /* _0 0'th Cepstra included */
#define HASVQ    040000       /* _V has VQ index attached */

enum _BaseParmKind{
  WAVEFORM,            /* Raw speech waveform (handled by HWave) */
  LPC,LPREFC,LPCEPSTRA,LPDELCEP,   /* LP-based Coefficients */
  IREFC,                           /* Ref Coef in 16 bit form */
  MFCC,                            /* Mel-Freq Cepstra */
  FBANK,                           /* Log Filter Bank */
  MELSPEC,                         /* Mel-Freq Spectrum (Linear) */
  USER,                            /* Arbitrary user specified data */
  DISCRETE,                        /* Discrete VQ symbols (shorts) */
  ANON
};

typedef short ParmKind;          /* BaseParmKind + Qualifiers */

/** Handles the standard binary sequence format in HTK.

   @see IOBin
   @author Johnny Mariethoz (Johnny.Mariethoz@idiap.ch)
*/
class IOHTK : public IOSequence
{
  private:
    DiskXFile *file;
    int current_frame_index;
		void readHeader(XFile* file);

  public:
    bool one_file_is_one_sequence;
    int n_total_frames;
    char *filename;
    int max_load;
    bool is_sequential;

		/// Contain the htk header informations
		HTKHeader* header;

    /** Reads the sequence contained in #filename#.
        If #one_file_is_one_sequence# is false, #getSequence()# will return one sequence
        with one frame at each call. (If calling #getSequence(t, foo)#,
        it will put in the sequence #foo# the frame corresponding to the line #t# of the file).
        Note also that if #one_file_is_one_sequence# is false, the access to the IO must be
        sequential when calling #getSequence()# if #is_sequential# is true. (Sequential mode
        is faster).
        If #max_load_# is positive, it loads only the first #max_load_# frames,
        if #one_file_is_one_sequence# is false.
        The file will be opened when reading the first sequence, and closed when reading the
        last one if #is_sequential# is true. Otherwise, the file will be opened and closed
        each time you call #getSequence()#.
     */
    IOHTK(const char *filename_, bool one_file_is_one_sequence_=false, int max_load_=-1, bool is_sequential_=false);

    /// Saves #sequence# in #file# using the HTK format.
    static void saveSequence(XFile *file, Sequence *sequence, HTKHeader* header_);

    virtual void getSequence(int t, Sequence *sequence);
    virtual int getNumberOfFrames(int t);
    virtual int getTotalNumberOfFrames();

    virtual ~IOHTK();
		
		/// HTK source code 
    char* parmKind2Str(ParmKind kind, char *buf);
    ParmKind str2ParmKind(char *str);
    ParmKind baseParmKind(ParmKind kind);
    bool hasEnergy(ParmKind kind);
    bool hasDelta(ParmKind kind) ;
    bool hasAccs(ParmKind kind)  ;
    bool hasNulle(ParmKind kind) ;
    bool hasCompx(ParmKind kind) ;
    bool hasCrcc(ParmKind kind)  ;
    bool hasZerom(ParmKind kind) ;
    bool hasZeroc(ParmKind kind) ;
    bool hasVQ(ParmKind kind)    ;      
};

}

#endif