Main Page | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

frameheader.cpp

Go to the documentation of this file.
00001 
00006 #define FRAMEHEADER
00007 #include "frameheader.h"
00008 
00009 FrameHeader::FrameHeader(Bitstream &bs) : m_fh(bs) {}
00010     
00011 void FrameHeader::Write(Bitstream &bs)
00012 {
00013   m_fh.Write(bs);
00014 }
00015     
00016 int FrameHeader::Size() const
00017 {
00018   return size;
00019 }
00020     
00021 int FrameHeader::Bitrate() const
00022 { 
00023   return bitrate_table[m_fh^ID][m_fh^layer][m_fh^bitrate_index];
00024 }
00025     
00026 int FrameHeader::Version() const
00027 { 
00028   return version_table[m_fh^IDex][m_fh^ID];
00029 }
00030     
00031 int FrameHeader::Layer() const
00032 {
00033   return layer_table[m_fh^layer];
00034 }
00035     
00036 bool FrameHeader::isCopyrighted() const
00037 {
00038   return (m_fh^copyright) != 0;
00039 }
00040     
00041 bool FrameHeader::isOriginal() const
00042 {
00043   return (m_fh^original) != 0;
00044 }
00045 
00046 bool FrameHeader::isCRC() const
00047 {
00048   return (m_fh^protection_bit) == 0;
00049 }
00050     
00051 int FrameHeader::Frequency() const
00052 {
00053   return frequency_table[m_fh^IDex][m_fh^ID][m_fh^frequency];
00054 }
00055     
00056 int FrameHeader::Mode() const
00057 {
00058   return m_fh^mode;
00059 }
00060     
00061 bool FrameHeader::isIntensStereo() const
00062 {
00063   return (m_fh^mode_extension) & 1 != 0;
00064 }
00065     
00066 bool FrameHeader::isMSstereo() const
00067 {
00068   return (m_fh^mode_extension) & 2 != 0;
00069 }
00070     
00071 int FrameHeader::NumChannels() const
00072 {
00073   return ((m_fh^mode) == single_channel) ? 1 : 2;
00074 }
00075     
00076 int FrameHeader::NumGranules() const
00077 {
00078   return (Version() == 1) ? 2 : 1;
00079 }
00080     
00081 int FrameHeader::FrameSize() const
00082 {
00083   return (m_fh^ID ? 144 : 72) * Bitrate() * 1000 / Frequency() + (m_fh^padding_bit);
00084 }
00085     
00086 bool FrameHeader::isValid() const
00087 { //Only a few fields could be checked for validity, -1 means invalid value
00088   return Frequency() != -1 && Bitrate() != -1 && Layer() != -1 && Version() != -1 && Layer() == 3; 
00089 }
00090     
00091 void FrameHeader::Enlarge()
00092 {
00093   m_fh.Set(bitrate_index, (m_fh^bitrate_index) + 1); //Resize to next bitrate
00094 }

Generated on Wed Sep 6 00:17:57 2006 for Kraken by  doxygen 1.4.4