fix ffmpeg compatibility and remove some warnings
authorcasta <casta@78f58264-58f8-0310-be4b-c7ad7e3b7018>
Thu, 1 Nov 2007 21:59:43 +0000 (21:59 +0000)
committercasta <casta@78f58264-58f8-0310-be4b-c7ad7e3b7018>
Thu, 1 Nov 2007 21:59:43 +0000 (21:59 +0000)
git-svn-id: svn+ssh://svn.xwing.info/home/svn/avi-ogminfo/trunk@888 78f58264-58f8-0310-be4b-c7ad7e3b7018

22 files changed:
src/analyse.cpp
src/analyse.h
src/avi.cpp
src/avi.h
src/codec.h
src/format.cpp
src/format.h
src/frame.cpp
src/frame.h
src/i18n.h
src/info.cpp
src/info.h
src/main.cpp
src/main.h
src/mp3.cpp
src/mp3.h
src/mpeg.cpp
src/mpeg.h
src/ogm.cpp
src/ogm.h
src/output.cpp
src/output.h

index f8929d4300d1f1556085f79a2e60939a1c6d0e50..3b6ee9b62ce3f069f40f2f24f284791ea5864d1b 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe d'information sur les fichiers vidéo
+File analysis
 */
 
 #include "analyse.h"
index fd4a93ebf5bb556717a50f37297b62249a7049da..b84487811276d34fe834c077a0d444f49cdcd530 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe d'information sur les fichiers vidéo
+Class processing files
 */
 
 #ifndef ANALYSE_H
index 35588c8ee383f548580e91e1b2fc97066dc90f3b..79e1447cdf28fcc65f7759c87468ea5f5b31c18a 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe traitant les fichiers AVI
+Class working on AVI files
 */
 
 #include "avi.h"
@@ -60,9 +60,9 @@ bool CAvi::Init (char *_fichier)
 
 bool CAvi::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton)
 {
-    unsigned long nbStreams, i;
+    int64_t nbStreams, i;
     char buffer[10] = "";
-    unsigned long size = 0, currentPos = 0, size2 = 0, currentPos2 = 0;
+    int64_t size = 0, currentPos = 0, size2 = 0, currentPos2 = 0;
     MainAVIHeader header;
     AVIStreamHeader streamHeader;
 
@@ -104,9 +104,9 @@ bool CAvi::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton
         if (!strncmp (streamHeader.fccType, "vids", 4))
         { // Vidéo
             char fcc[5] = "", tmp[70];
-            unsigned long j;
+            int64_t j;
             m_infos->SetVideoFrameRate ((float)streamHeader.dwRate / (float)streamHeader.dwScale);
-            m_infos->SetVideoTime ((unsigned long)((float)streamHeader.dwLength *
+            m_infos->SetVideoTime ((int64_t)((float)streamHeader.dwLength *
                     (float)streamHeader.dwScale / (float)streamHeader.dwRate + 0.5));
             if (fseek (m_file, currentPos2 + size2, SEEK_SET))
                 return false;
@@ -148,7 +148,7 @@ bool CAvi::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton
         }
         else if (!strncmp (streamHeader.fccType, "auds", 4))
         { // Audio
-            unsigned long index = m_infos->AddAudio (), bufL, j;
+            int64_t index = m_infos->AddAudio (), bufL, j;
             unsigned short bufS = 0;
             char hexa[10] = "";
             audio temp;
@@ -186,9 +186,9 @@ bool CAvi::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton
             temp.Freq = bufL;
             if (!fread (&bufL, 1, 4, m_file))
                 return false;
-            temp.BitRate = (unsigned long)((float)bufL * 8. / 1000. + 0.5);
+            temp.BitRate = (int64_t)((float)bufL * 8. / 1000. + 0.5);
             // A vérifier ce calcul
-            temp.AudioTime = ((unsigned long)((float)streamHeader.dwLength *
+            temp.AudioTime = ((int64_t)((float)streamHeader.dwLength *
                     (float)streamHeader.dwScale / (float)streamHeader.dwRate + 0.5));
             m_infos->SetAudio (index, temp);
         }
@@ -212,7 +212,7 @@ bool CAvi::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton
     }
     while (strncmp (buffer, "movi", 4));
     // Total bitrate
-    m_infos->SetVideoBitRate ((unsigned long)((float)size * 8. *
+    m_infos->SetVideoBitRate ((int64_t)((float)size * 8. *
             m_infos->GetVideoFrameRate () / ((float)header.dwTotalFrames * 1000.) + 0.5));
     size = 0;
     for (i = 0; i < m_infos->GetAudioNumber (); ++i)
index 4558242ecb51510644acceb1131d6fc8a5685d64..933a459c071a3eec2c2e07278579262501c8ad14 100644 (file)
--- a/src/avi.h
+++ b/src/avi.h
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe traitant les fichiers AVI
+Class working on AVI files
 */
 
 #ifndef AVI_H
@@ -45,37 +45,37 @@ public:
 private:
 
     typedef struct {
-        unsigned long dwMicroSecPerFrame;
-        unsigned long dwMaxBytesPerSec;
-        unsigned long dwReserved1;
-        unsigned long dwFlags;
-        unsigned long dwTotalFrames;
-        unsigned long dwInitialFrames;
-        unsigned long dwStreams;
-        unsigned long dwSuggestedBufferSize;
-        unsigned long dwWidth;
-        unsigned long dwHeight;
-        unsigned long dwScale;
-        unsigned long dwRate;
-        unsigned long dwStart;
-        unsigned long dwLength;
+        int64_t dwMicroSecPerFrame;
+        int64_t dwMaxBytesPerSec;
+        int64_t dwReserved1;
+        int64_t dwFlags;
+        int64_t dwTotalFrames;
+        int64_t dwInitialFrames;
+        int64_t dwStreams;
+        int64_t dwSuggestedBufferSize;
+        int64_t dwWidth;
+        int64_t dwHeight;
+        int64_t dwScale;
+        int64_t dwRate;
+        int64_t dwStart;
+        int64_t dwLength;
     } MainAVIHeader;
 
     typedef struct {
         char fccType[4];
         char fccHandler[4];
-        unsigned long dwFlags;
-        unsigned long dwReserved1;
-        unsigned long dwInitialFrames;
-        unsigned long dwScale;
-        unsigned long dwRate;
-        unsigned long dwStart;
-        unsigned long dwLength;
-        unsigned long dwSuggestedBufferSize;
-        unsigned long dwQuality;
-        unsigned long dwSampleSize;
-        unsigned long dwReserved2;
-        unsigned long dwReserved3;
+        int64_t dwFlags;
+        int64_t dwReserved1;
+        int64_t dwInitialFrames;
+        int64_t dwScale;
+        int64_t dwRate;
+        int64_t dwStart;
+        int64_t dwLength;
+        int64_t dwSuggestedBufferSize;
+        int64_t dwQuality;
+        int64_t dwSampleSize;
+        int64_t dwReserved2;
+        int64_t dwReserved3;
     } AVIStreamHeader;
 };
 
index 9c9c025aedb3f973de3a9215c66efa60d96935ad..b15df39c14fec9408dc483e13b01e0f4b42fe137 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Les définitions des 4CC et leur nom "lisible"
+4CC definitions
 */
 
 #ifndef CODEC_H
index 182c887b924ecb5e6e4245d4f80f093b7c15dde8..bd163b1f8f8cc4304761d40e9ddf04df999fcd3c 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe encapsulant les formats de fichier
+Virtual class for different formats
 */
 
 #include "format.h"
index 7f9cc0b63ea994c8c60d792d43a0508867c16650..fbca5813f307cceee4c6a855b2ac825f864506ce 100644 (file)
@@ -18,10 +18,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 CASTAGNINO Guillaume, casta@xwing.info
 */
 
-/*
-Classe encapsulant les formats de fichier
-*/
-
 #ifndef FORMAT_H
 #define FORMAT_H
 
index 429fd25a99a168ab750dfd1af08338f8d867851b..8adc5c2c869fb9b16d050c4bd0a301b8ed879034 100644 (file)
@@ -368,7 +368,7 @@ void GtkInterface::SetInfos (void)
     // Audio
     if (m_info->GetAudioNumber () > 0)
     {
-        unsigned long i;
+        int64_t i;
         std::list<Glib::ustring> list;
         for (i = 1; i <= m_info->GetAudioNumber (); ++i)
         {
@@ -394,7 +394,7 @@ void GtkInterface::SetInfos (void)
 }
 
 // Initialisation des champs audio
-void GtkInterface::SetAudio (unsigned long _index)
+void GtkInterface::SetAudio (int64_t _index)
 {
     char temp[1000];
     if (m_info && _index >= 0 && _index < m_info->GetAudioNumber ())
index d77d5b816c9f768569d6c1131680df121310a8a5..63e4279a4534bac1602aa561ac8de6827cf58b22 100644 (file)
@@ -18,10 +18,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 CASTAGNINO Guillaume, casta@xwing.info
 */
 
-/*
-Construction de l'interface graphique du programme
-*/
-
 #ifndef FRAME_H
 #define FRAME_H
 
@@ -52,7 +48,7 @@ private:
     Gtk::HBox * ComboEtLabel (char *label, Gtk::Combo **ppText);
 
     void SetInfos (void);
-    void SetAudio (unsigned long _index);
+    void SetAudio (int64_t _index);
     void SetTitre (void);
     void SetFile (void);
     void Process (void);
index d330f3d0377be4a552fdf4bbc60e2b001814e7b4..5699c781236240cdaf601f852663a56be5452f2b 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Macros pour gettext
+gettext macros
 */
 
 #ifndef My_I18N_H
index de6a424d88b7d22f28ec303688bd0174dafa25e3..25b09dc201bf0a37ea8080ac058d1ae69fb3375d 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe d'information sur les fichiers vidéo
+Informations container
 */
 
 #include "info.h"
@@ -46,7 +46,7 @@ CInfo::~CInfo (void)
     m_audio = NULL;
 }
 
-unsigned long CInfo::AddAudio (void)
+int64_t CInfo::AddAudio (void)
 {
     if (!(m_audio = (audio *)realloc (m_audio, ++m_audioNumber * sizeof (audio))))
         exit (-1);
@@ -54,13 +54,13 @@ unsigned long CInfo::AddAudio (void)
     return m_audioNumber - 1;
 }
 
-char * CInfo::S2hms (unsigned long _timestamp)
+char * CInfo::S2hms (int64_t _timestamp)
 {
     sprintf (m_hms, "%lu h %lu min %lu s", _timestamp / 3600, (_timestamp / 60) % 60, _timestamp % 60);
     return m_hms;
 }
 
-void  CInfo::SetType (char *_type)
+void CInfo::SetType (const char *_type)
 {
     strcpy (m_type, _type);
 }
@@ -70,17 +70,17 @@ void CInfo::SetVideoFrameRate (float _videoFrameRate)
     m_videoFrameRate = _videoFrameRate;
 }
 
-void CInfo::SetVideoWidth (unsigned long _videoWidth)
+void CInfo::SetVideoWidth (int64_t _videoWidth)
 {
     m_videoWidth = _videoWidth;
 }
 
-void CInfo::SetVideoHeight (unsigned long _videoHeight)
+void CInfo::SetVideoHeight (int64_t _videoHeight)
 {
     m_videoHeight = _videoHeight;
 }
 
-void CInfo::SetVideoTime (unsigned long _videoTime)
+void CInfo::SetVideoTime (int64_t _videoTime)
 {
     m_videoTime = _videoTime;
 }
@@ -90,18 +90,18 @@ void CInfo::SetVideoCodec (char *_videoCodec)
     strcpy (m_videoCodec, _videoCodec);
 }
 
-void CInfo::SetVideoBitRate (unsigned long _videoBitRate)
+void CInfo::SetVideoBitRate (int64_t _videoBitRate)
 {
     m_videoBitRate = _videoBitRate;
 }
 
-void CInfo::SetAudio (unsigned long _index, audio _audio)
+void CInfo::SetAudio (int64_t _index, audio _audio)
 {
     if (_index < m_audioNumber)
         m_audio[_index] = _audio;
 }
 
-void CInfo::SetAudioTime (unsigned long _index, unsigned long _audioTime)
+void CInfo::SetAudioTime (int64_t _index, int64_t _audioTime)
 {
     if (_index < m_audioNumber)
         m_audio[_index].AudioTime = _audioTime;
@@ -112,7 +112,7 @@ char * CInfo::GetType (void)
     return m_type;
 }
 
-unsigned long CInfo::GetVideoSize (void)
+int64_t CInfo::GetVideoSize (void)
 {
     return m_videoSize;
 }
@@ -122,17 +122,17 @@ float CInfo::GetVideoFrameRate (void)
     return m_videoFrameRate;
 }
 
-unsigned long CInfo::GetVideoWidth (void)
+int64_t CInfo::GetVideoWidth (void)
 {
     return m_videoWidth;
 }
 
-unsigned long CInfo::GetVideoHeight (void)
+int64_t CInfo::GetVideoHeight (void)
 {
     return m_videoHeight;
 }
 
-unsigned long CInfo::GetVideoTime (void)
+int64_t CInfo::GetVideoTime (void)
 {
     return m_videoTime;
 }
@@ -142,17 +142,17 @@ char * CInfo::GetVideoCodec (void)
     return m_videoCodec;
 }
 
-unsigned long CInfo::GetVideoBitRate (void)
+int64_t CInfo::GetVideoBitRate (void)
 {
     return m_videoBitRate;
 }
 
-unsigned long CInfo::GetAudioNumber (void)
+int64_t CInfo::GetAudioNumber (void)
 {
     return m_audioNumber;
 }
 
-char * CInfo::GetAudioCodec (unsigned long _index)
+char * CInfo::GetAudioCodec (int64_t _index)
 {
     if (_index < GetAudioNumber ())
         return m_audio[_index].Codec;
@@ -160,7 +160,7 @@ char * CInfo::GetAudioCodec (unsigned long _index)
         return "";
 }
 
-unsigned short CInfo::GetAudioChannel (unsigned long _index)
+unsigned short CInfo::GetAudioChannel (int64_t _index)
 {
     if (_index < GetAudioNumber ())
         return m_audio[_index].Channel;
@@ -168,7 +168,7 @@ unsigned short CInfo::GetAudioChannel (unsigned long _index)
         return 0;
 }
 
-unsigned long CInfo::GetAudioBitRate (unsigned long _index)
+int64_t CInfo::GetAudioBitRate (int64_t _index)
 {
     if (_index < GetAudioNumber ())
         return m_audio[_index].BitRate;
@@ -176,7 +176,7 @@ unsigned long CInfo::GetAudioBitRate (unsigned long _index)
         return 0;
 }
 
-unsigned long CInfo::GetAudioFreq (unsigned long _index)
+int64_t CInfo::GetAudioFreq (int64_t _index)
 {
     if (_index < GetAudioNumber ())
         return m_audio[_index].Freq;
@@ -184,7 +184,7 @@ unsigned long CInfo::GetAudioFreq (unsigned long _index)
         return 0;
 }
 
-unsigned long CInfo::GetAudioTime (unsigned long _index)
+int64_t CInfo::GetAudioTime (int64_t _index)
 {
     if (_index < GetAudioNumber ())
         return m_audio[_index].AudioTime;
@@ -192,7 +192,7 @@ unsigned long CInfo::GetAudioTime (unsigned long _index)
         return 0;
 }
 
-unsigned long CInfo::GetSubtitleNumber (void)
+int64_t CInfo::GetSubtitleNumber (void)
 {
     return m_subtitleNumber;
 }
index 5f5dc8d2a731d6ba6827289bb80d71ee15d34263..0a3309c99a4b580f21c805c29f2960ec1cefeb19 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe d'information sur les fichiers vidéo
+Container for files informations
 */
 
 #ifndef INFO_H
@@ -33,9 +33,9 @@ Classe d'information sur les fichiers vidéo
 typedef struct {
     char Codec[70];
     unsigned short Channel;
-    unsigned long BitRate;
-    unsigned long Freq;
-    unsigned long AudioTime;
+    int64_t BitRate;
+    int64_t Freq;
+    int64_t AudioTime;
 } audio;
 
 class CInfo
@@ -44,62 +44,62 @@ public:
     CInfo (void);
     ~CInfo (void);
 
-    unsigned long AddAudio (void);
+    int64_t AddAudio (void);
     void AddSubtitle (void) { ++m_subtitleNumber;}
-    void AddVideoSize (unsigned long _size) { m_videoSize += _size; }
-    char * S2hms (unsigned long _timestamp);
+    void AddVideoSize (int64_t _size) { m_videoSize += _size; }
+    char * S2hms (int64_t _timestamp);
 
     // Accesseurs
     // Set
-    void SetType (char *_type);
+    void SetType (const char *_type);
     // Vidéo
     void SetVideoFrameRate (float _videoFrameRate);
-    void SetVideoWidth (unsigned long _videoWidth);
-    void SetVideoHeight (unsigned long _videoHeight);
-    void SetVideoTime (unsigned long _videoTime);
+    void SetVideoWidth (int64_t _videoWidth);
+    void SetVideoHeight (int64_t _videoHeight);
+    void SetVideoTime (int64_t _videoTime);
     void SetVideoCodec (char *_videoCodec);
-    void SetVideoBitRate (unsigned long _videoBitRate);
+    void SetVideoBitRate (int64_t _videoBitRate);
     // Audio
-    void SetAudio (unsigned long _index, audio _audio);
-    void SetAudioTime (unsigned long _index, unsigned long _audioTime);
+    void SetAudio (int64_t _index, audio _audio);
+    void SetAudioTime (int64_t _index, int64_t _audioTime);
 
 
     // Get
     char * GetType (void);
     // Vidéo
-    unsigned long GetVideoSize (void);
+    int64_t GetVideoSize (void);
     float GetVideoFrameRate (void);
-    unsigned long GetVideoWidth (void);
-    unsigned long GetVideoHeight (void);
-    unsigned long GetVideoTime (void);
+    int64_t GetVideoWidth (void);
+    int64_t GetVideoHeight (void);
+    int64_t GetVideoTime (void);
     char * GetVideoCodec (void);
-    unsigned long GetVideoBitRate (void);
+    int64_t GetVideoBitRate (void);
     // Audio
-    unsigned long GetAudioNumber (void);
-    char * GetAudioCodec (unsigned long _index);
-    unsigned short GetAudioChannel (unsigned long _index);
-    unsigned long GetAudioBitRate (unsigned long _index);
-    unsigned long GetAudioFreq (unsigned long _index);
-    unsigned long GetAudioTime (unsigned long _index);
+    int64_t GetAudioNumber (void);
+    char * GetAudioCodec (int64_t _index);
+    unsigned short GetAudioChannel (int64_t _index);
+    int64_t GetAudioBitRate (int64_t _index);
+    int64_t GetAudioFreq (int64_t _index);
+    int64_t GetAudioTime (int64_t _index);
     // Sous-titres
-    unsigned long GetSubtitleNumber (void);
+    int64_t GetSubtitleNumber (void);
 
 private:
     char m_type[20];
     // Les informations du fichier vidéo
-    unsigned long m_videoSize;
-    unsigned long m_videoTime;
-    unsigned long m_videoWidth;
-    unsigned long m_videoHeight;
+    int64_t m_videoSize;
+    int64_t m_videoTime;
+    int64_t m_videoWidth;
+    int64_t m_videoHeight;
     float m_videoFrameRate;
     char m_videoCodec[70];
     char m_hms[100];
-    unsigned long m_videoBitRate;
+    int64_t m_videoBitRate;
     // Informations pour l'audio
-    unsigned long m_audioNumber;
+    int64_t m_audioNumber;
     audio *m_audio;
     // Informations Sous-Titres
-    unsigned long m_subtitleNumber;
+    int64_t m_subtitleNumber;
 
 };
 
index cd929d5e0f117949d3c6483db78c64ac63e02f5c..136c24493d433713e589d574e1e1679576f4148a 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Programme principal
+Main
 */
 
 #include "main.h"
index 9ae83b9b0a9b948b25a5324be840716df4ecf303..71c28d749fb1cbab14db1d6b3b95c12140982fb3 100644 (file)
@@ -18,10 +18,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 CASTAGNINO Guillaume, casta@xwing.info
 */
 
-/*
-Programme principal
-*/
-
 #ifndef MAIN_H
 #define MAIN_H
 
index 1882941e639388ff9c8af9765b98018ee9129dc8..99177675eaf3be969acb9f1cdc300baa623c9dbd 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe traitant les fichiers MP3
+Class working on MP3 files
 */
 
 #include "mp3.h"
@@ -31,7 +31,7 @@ CMp3::CMp3 (CInfo *_info):CFormat (_info)
 bool CMp3::Init (char *_fichier)
 {
     unsigned char buffer[4] = "";
-    unsigned long offset = 0, max = 4096;
+    int64_t offset = 0, max = 4096;
 
     if (!(m_file = fopen (_fichier, "rb")))
         return false;
@@ -67,7 +67,7 @@ bool CMp3::Init (char *_fichier)
 
 bool CMp3::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton)
 {
-    unsigned long currentPos = 0, eof = 0;
+    int64_t currentPos = 0, eof = 0;
     int mpegVersion = 0, layer = 0;
     unsigned char buffer[4] = "", header[4] = "";
     long vbr[] = {0, 0, 0}, isVbr = 0;
@@ -137,9 +137,9 @@ bool CMp3::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton
     if (!strncmp ((char *)&buffer, "TAG", 3))
         currentPos += 128;
 
-    unsigned long index = m_infos->AddAudio (), size = eof - currentPos, frames = 0;
+    int64_t index = m_infos->AddAudio (), size = eof - currentPos, frames = 0;
     double fs = 0.;
-    unsigned long mpegID = ((header[1]>>3) & 0x03), freqID = ((header[2]>>2) & 0x03);
+    int64_t mpegID = ((header[1]>>3) & 0x03), freqID = ((header[2]>>2) & 0x03);
     bandeSon.Channel = (header[3]>>6) == 3 ? 1 : 2; // Mono ou Stereo
     strcpy (bandeSon.Codec, "MPEG");
     strcat (bandeSon.Codec, mpegVersion ? "1" : "2");
@@ -155,8 +155,8 @@ bool CMp3::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton
         if (vbr[0])
             frames = vbr[0];
         else
-            frames = (unsigned long)(size / (bandeSon.BitRate * fs));
-        bandeSon.BitRate = (unsigned long)(size * fs / frames);
+            frames = (int64_t)(size / (bandeSon.BitRate * fs));
+        bandeSon.BitRate = (int64_t)(size * fs / frames);
     }
     bandeSon.Freq = m_samplingFreq[mpegID][freqID];
     bandeSon.AudioTime = ((size) * 8) / (bandeSon.BitRate * 1000);
@@ -187,14 +187,14 @@ bool CMp3::ParseHeader (unsigned char _header[4])
     return true;
 }
 
-bool CMp3::SkipV2Header (unsigned long *_size)
+bool CMp3::SkipV2Header (int64_t *_size)
 {
     unsigned char buffer[4];
     if (fseek (m_file, 3, SEEK_CUR))
         return false;
     if (!fread ((void *)buffer, 1, 4, m_file))
         return false;
-    *_size += 10 + buffer[3] + (((unsigned long)buffer[2])<<7) + (((unsigned long)buffer[1])<<14) + (((unsigned long)buffer[0])<<21);
+    *_size += 10 + buffer[3] + (((int64_t)buffer[2])<<7) + (((int64_t)buffer[1])<<14) + (((int64_t)buffer[0])<<21);
     // On saute le header
     if (fseek (m_file, *_size, SEEK_SET))
         return false;
index ace01992392e80e50b970310c8c178200f43800f..2469df3c92252bd2562ec67772282730f550b2f2 100644 (file)
--- a/src/mp3.h
+++ b/src/mp3.h
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe traitant les fichiers MP3
+Class working on MP3 files
 */
 
 #ifndef MP3_H
@@ -41,7 +41,7 @@ public:
     bool Analyse (Gtk::ProgressBar *_progressBar = NULL, Gtk::Button *_progressButton = NULL);
     bool Init (char *_fichier);
     bool ParseHeader (unsigned char *_header);
-    bool SkipV2Header (unsigned long *_header);
+    bool SkipV2Header (int64_t *_header);
 
 private:
 
index 8e4a16fe12f922cec8eabbefff8c330f045eb8c2..9b70a91f3df7fa3464c8bea928dea48798a04fda 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe traitant les fichiers MPEG
+Class working on MPEG files
 */
 
 #include "mpeg.h"
@@ -109,10 +109,10 @@ bool CMpeg::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButto
             m_infos->SetVideoFrameRate (av_q2d (m_pFormatCtx->streams[nStr]->r_frame_rate));
             m_infos->SetVideoWidth (m_pFormatCtx->streams[nStr]->codec->coded_width);
             m_infos->SetVideoHeight (m_pFormatCtx->streams[nStr]->codec->coded_height);
-            if (m_pFormatCtx->duration)
+            if (m_pFormatCtx->duration != AV_NOPTS_VALUE)
             {
                 // XXX We use file duration instead of stream's one since it seems to be broken
-                m_infos->SetVideoTime (m_pFormatCtx->duration / AV_TIME_BASE);
+                m_infos->SetVideoTime ((double)m_pFormatCtx->duration / AV_TIME_BASE / av_q2d (m_pFormatCtx->streams[nStr]->time_base));
             }
             else
             {
@@ -134,7 +134,7 @@ bool CMpeg::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButto
             break;
         case CODEC_TYPE_AUDIO:
             // Piste audio suplémentaire
-            unsigned long index = m_infos->AddAudio ();
+            int64_t index = m_infos->AddAudio ();
             unsigned short CID = 0x0050;
             audio temp;
             // Renseignement de la structure de données audio
@@ -151,10 +151,10 @@ bool CMpeg::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButto
             temp.Channel = m_pFormatCtx->streams[nStr]->codec->channels;
             temp.Freq = m_pFormatCtx->streams[nStr]->codec->sample_rate;
             temp.BitRate = m_pFormatCtx->streams[nStr]->codec->bit_rate / 1000;
-            if (m_pFormatCtx->duration)
+            if (m_pFormatCtx->duration != AV_NOPTS_VALUE)
             {
                 // XXX We use file duration instead of stream's one since it seems to be broken
-                temp.AudioTime = m_pFormatCtx->duration / AV_TIME_BASE;
+                temp.AudioTime = (double)m_pFormatCtx->duration / AV_TIME_BASE / av_q2d (m_pFormatCtx->streams[nStr]->time_base);
             }
             else
             {
index 09ae4aef2e88a5219645e57eb204f8f3b49a4858..031662528fcdf7dd1635a5eeddb457883e074d36 100644 (file)
@@ -19,18 +19,25 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe traitant les fichiers MPEG
+Class working on MPEG files
 */
 
 #ifndef MPEG_H
 #define MPEG_H
 
+// Fix INT64_C ffmpeg declaration
+// THIS SHOULD BE SET BEFORE ALL INCLUDES
+#define __STDC_CONSTANT_MACROS
+#include <stdint.h>
+
 #include <string.h>
 #include <stdio.h>
 #include <gtkmm.h>
-// Bindings ffmpeg 
-#include <ffmpeg/avcodec.h>
-#include <ffmpeg/avformat.h>
+// ffmpeg Bindings
+extern "C" {
+    #include <ffmpeg/avcodec.h>
+    #include <ffmpeg/avformat.h>
+}
 
 #include "info.h"
 #include "format.h"
@@ -42,7 +49,7 @@ public:
     CMpeg (CInfo *_info);
     ~CMpeg ();
 
-    // Méthodes
+    // Methods
     bool Analyse (Gtk::ProgressBar *_progressBar = NULL, Gtk::Button *_progressButton = NULL);
     bool Init (char *_fichier);
 
index 3f1a7c8e4fd7bd65a5409fb267a5a120e2b7a19c..e752706ea71b35fca3fc2c8920a18a5b27549df5 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe traitant les fichiers OGM
+Class working on OGM files
 */
 
 #include "ogm.h"
@@ -36,7 +36,7 @@ COgm::COgm (CInfo *_info):CFormat (_info)
 
 COgm::~COgm ()
 {
-    unsigned long i;
+    int64_t i;
     SAFE_DELETE (m_videoStreamState);
     for (i = 0; i < m_infos->GetAudioNumber (); ++i)
     {
@@ -112,7 +112,7 @@ bool COgm::Analyse (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton
     }
     ogg_sync_clear (&sync);
     // Grace au parcours du fichier, on peut calculer ces valeurs :
-    m_infos->SetVideoBitRate ((unsigned long)
+    m_infos->SetVideoBitRate ((int64_t)
             (8. * (float)m_infos->GetVideoSize () / (1000. * (float)m_infos->GetVideoTime ()) + 0.5));
     if (m_infos->GetVideoTime ())
         m_infos->SetType ("OGG Movie");
@@ -171,7 +171,7 @@ bool COgm::DumpHeaderPage (ogg_page *_page)
                 return false;
             else
             {
-                unsigned long index = this->AddAudio (), i;
+                int64_t index = this->AddAudio (), i;
                 unsigned short buf = 0x674F; // Ogg Vorbis
                 audio temp;
                 m_audioStreamState[index] = sstate;
@@ -185,7 +185,7 @@ bool COgm::DumpHeaderPage (ogg_page *_page)
                     }
                 }
                 temp.Channel = vi.channels;
-                temp.BitRate = (unsigned long)((float)vi.bitrate_nominal / 1000. + 0.5);
+                temp.BitRate = (int64_t)((float)vi.bitrate_nominal / 1000. + 0.5);
                 temp.Freq = vi.rate;
                 temp.AudioTime = 0;
                 m_infos->SetAudio (index, temp);
@@ -199,7 +199,7 @@ bool COgm::DumpHeaderPage (ogg_page *_page)
             memcpy (&sh, packet.packet + 1, sizeof (stream_header));
             if (!strncmp ((const char *)(packet.packet + 1), "audio", 5))
             { // C'est un header de flux audio
-                unsigned long index = this->AddAudio (), i;
+                int64_t index = this->AddAudio (), i;
                 unsigned int buf;
                 char hexa[10] = "";
                 audio temp;
@@ -222,9 +222,9 @@ bool COgm::DumpHeaderPage (ogg_page *_page)
                 strcat (temp.Codec, hexa);
                 temp.Channel = sh.sh.audio.channels;
                 if (sh.time_unit)
-                    temp.Freq = (unsigned long)
+                    temp.Freq = (int64_t)
                         (10000000. * (float)sh.samples_per_unit / (float)sh.time_unit + 0.5);
-                temp.BitRate = (unsigned long)((float)sh.sh.audio.avgbytespersec * 8. / 1000. + 0.5);
+                temp.BitRate = (int64_t)((float)sh.sh.audio.avgbytespersec * 8. / 1000. + 0.5);
                 temp.AudioTime = 0;
                 m_infos->SetAudio (index, temp);
                 UpdateAudioTime (index, _page);
@@ -232,7 +232,7 @@ bool COgm::DumpHeaderPage (ogg_page *_page)
             else if (!strncmp ((const char *)(packet.packet + 1), "video", 5) && !m_videoSerial)
             { // C'est un header de vidéo, et on n'en a pas encore rencontré
                 char fcc[5] = "", tmp[70] = "";
-                unsigned long i;
+                int64_t i;
                 m_videoStreamState = sstate;
                 m_videoSerial = ogg_page_serialno (_page);
                 memcpy (fcc, sh.subtype, 4);
@@ -273,7 +273,7 @@ bool COgm::DumpHeaderPage (ogg_page *_page)
 
 bool COgm::DumpPage (ogg_page *_page)
 {
-    unsigned long i;
+    int64_t i;
     int serial = ogg_page_serialno (_page);
     ogg_packet packet;
 
@@ -301,31 +301,31 @@ bool COgm::DumpPage (ogg_page *_page)
 
 void COgm::UpdateVideoTime (ogg_page *_page)
 {
-    unsigned long long granulepos = ogg_page_granulepos (_page);
-    unsigned long timestamp;
+    int64_t long granulepos = ogg_page_granulepos (_page);
+    int64_t timestamp;
     if(!ogg_page_packets (_page))
-        timestamp = (unsigned long)((float)(granulepos + 1) / (float)m_infos->GetVideoFrameRate () + 0.5);
+        timestamp = (int64_t)((float)(granulepos + 1) / (float)m_infos->GetVideoFrameRate () + 0.5);
     else
-        timestamp = (unsigned long)((float)granulepos / (float)m_infos->GetVideoFrameRate () + 0.5);
+        timestamp = (int64_t)((float)granulepos / (float)m_infos->GetVideoFrameRate () + 0.5);
     if (timestamp > m_infos->GetVideoTime ())
         m_infos->SetVideoTime (timestamp);
 }
 
-void COgm::UpdateAudioTime (unsigned long _index, ogg_page *_page)
+void COgm::UpdateAudioTime (int64_t _index, ogg_page *_page)
 {
-    unsigned long long granulepos = ogg_page_granulepos (_page);
-    unsigned long timestamp;
+    int64_t long granulepos = ogg_page_granulepos (_page);
+    int64_t timestamp;
     if(!ogg_page_packets (_page))
-        timestamp = (unsigned long)((float)(granulepos + 1) / (float)m_infos->GetAudioFreq (_index) + 0.5);
+        timestamp = (int64_t)((float)(granulepos + 1) / (float)m_infos->GetAudioFreq (_index) + 0.5);
     else
-        timestamp = (unsigned long)((float)granulepos / (float)m_infos->GetAudioFreq (_index) + 0.5);
+        timestamp = (int64_t)((float)granulepos / (float)m_infos->GetAudioFreq (_index) + 0.5);
     if (timestamp > m_infos->GetAudioTime (_index))
         m_infos->SetAudioTime (_index, timestamp);
 }
 
-unsigned long COgm::AddAudio (void)
+int64_t COgm::AddAudio (void)
 {
-    unsigned long index = m_infos->AddAudio ();
+    int64_t index = m_infos->AddAudio ();
     if (!(m_audioStreamState = (ogg_stream_state **)realloc (m_audioStreamState, m_infos->GetAudioNumber () * sizeof (ogg_stream_state *))))
         exit (-1);
     if (!(m_audioSerial = (int *)realloc (m_audioSerial, m_infos->GetAudioNumber () * sizeof (int))))
index a6b56c698b2ea6ec1e1be64ce90626bebf578fa6..38a0de7fbbc91b8c2072c07374078b8cbec26c59 100644 (file)
--- a/src/ogm.h
+++ b/src/ogm.h
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe traitant les fichiers OGM
+Class working on OGM files
 */
 
 #ifndef OGM_H
@@ -88,8 +88,8 @@ private:
     bool DumpPage (ogg_page *_page);
     ogg_stream_state * InitStream (ogg_page *_page);
     void UpdateVideoTime (ogg_page *_page);
-    void UpdateAudioTime (unsigned long _index, ogg_page *_page);
-    unsigned long AddAudio (void);
+    void UpdateAudioTime (int64_t _index, ogg_page *_page);
+    int64_t AddAudio (void);
 
     // Fonctions Progress Bar
     void InitProgress (Gtk::ProgressBar *_progressBar, Gtk::Button *_progressButton);
index e36d46fee6b7c6e1a9e7fe848d1f22cb67560381..0625183f1e94de60b909af3838a251328fbe39ec 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe d'information sur les fichiers vidéo
+Class managing outputs
 */
 
 #include "output.h"
@@ -42,7 +42,7 @@ void Output (FILE *_file, char _format, char *_filePath, CInfo *_info)
 
 void OutputTXT (FILE *_file, char *_filePath, CInfo *_info)
 {
-    unsigned long i;
+    int64_t i;
     fprintf (_file, _("File :"));
     fprintf (_file, " ");
     fprintf (_file, _filePath);
@@ -118,7 +118,7 @@ void OutputTXT (FILE *_file, char *_filePath, CInfo *_info)
 
 void OutputXML (FILE *_file, char *_filePath, CInfo *_info)
 {
-    unsigned long i;
+    int64_t i;
     gchar str[BUFFSIZE];
     xmlTextWriterPtr writer;
     xmlBufferPtr buf;
index 3043556ba1243760b4a10968b394fef9427c2d98..0bdd0d929b7beb14fbf9a120753a8c0d7302a7f7 100644 (file)
@@ -19,7 +19,7 @@ CASTAGNINO Guillaume, casta@xwing.info
 */
 
 /*
-Classe d'information sur les fichiers vidéo
+Class managing outputs
 */
 
 #ifndef OUTPUT_H