[Avidemux-svn-commit] r3343 - branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska

mean at BerliOS mean at mail.berlios.de
Sat Jul 7 20:38:04 CEST 2007


Author: mean
Date: 2007-07-07 20:38:03 +0200 (Sat, 07 Jul 2007)
New Revision: 3343

Modified:
   branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_ebml.h
   branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_mkvIndexer.cpp
   branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_mkv_audio.cpp
   branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ebml.cpp
Log:
[MKV] some cosmetics : progress bar when indexing clusters, use DIA_working + dont trust header in case of AC3 and extract infos from the actual stream

Modified: branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_ebml.h
===================================================================
--- branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_ebml.h	2007-07-07 17:07:57 UTC (rev 3342)
+++ branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_ebml.h	2007-07-07 18:38:03 UTC (rev 3343)
@@ -62,6 +62,7 @@
                     uint64_t  tell(void);
                     uint8_t   seek(uint64_t pos);
                     uint8_t   finished(void);
+                    uint64_t  getFileSize(void) {return _size;};
                     uint8_t   find(ADM_MKV_SEARCHTYPE search,
                                         MKV_ELEM_ID  prim,MKV_ELEM_ID second,uint32_t *len,uint32_t rewind=1);
                     uint8_t   simplefind(MKV_ELEM_ID  prim,uint32_t *len,uint32_t rewind=1);

Modified: branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_mkvIndexer.cpp
===================================================================
--- branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_mkvIndexer.cpp	2007-07-07 17:07:57 UTC (rev 3342)
+++ branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_mkvIndexer.cpp	2007-07-07 18:38:03 UTC (rev 3343)
@@ -31,6 +31,7 @@
 
 #include "mkv_tags.h"
 #include "ADM_userInterfaces/ADM_commonUI/DIA_idx_pg.h"
+#include "ADM_userInterfaces/ADM_commonUI/DIA_working.h"
 #define VIDEO _tracks[0]
 /**
     \fn videoIndexer
@@ -45,7 +46,7 @@
   const char *ss;
   
    parser->seek(0);
-   DIA_progressIndexing *work=new DIA_progressIndexing("Matroska Images");
+   DIA_working *work=new DIA_working("Matroska Images");
    // Start with a small index, it will grow automatically afterward
    for(int i=0;i<_nbAudioTrack+1;i++)
    {
@@ -53,7 +54,7 @@
     _tracks[i]._index=new mkvIndex[_tracks[i]._indexMax];
    }
     //************
-   work->update(0,_nbClusters,0,0,0,0);
+   work->update(0);
    for(int clusters=0;clusters<_nbClusters;clusters++)
    {
    parser->seek(_clusters[clusters].pos);
@@ -61,7 +62,7 @@
    int thiscluster=0;
    while(!cluster.finished())
    {
-      work->update(clusters,_nbClusters,VIDEO._nbIndex,0,0,0);
+      work->update(clusters,_nbClusters);
       cluster.readElemId(&id,&len);
       if(!ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type))
       {
@@ -403,22 +404,19 @@
   _nbClusters=0;
   
   // Search segment
-   
-   parser->seek(0x7000000000LL); //Hackish, fixme
-   fileSize=parser->tell();
-   parser->seek(0);
-   
+   fileSize=parser->getFileSize();
    if(!parser->simplefind(MKV_SEGMENT,&vlen,1))
    {
      printf("[MKV] cluster indexer, cannot find CLUSTER atom\n");
      return 0;
    }
    ADM_ebml_file segment(parser,vlen);
-   DIA_progressIndexing *work=new DIA_progressIndexing("Matroska clusters");
+   DIA_working *work=new DIA_working("Matroska clusters");
    while(segment.simplefind(MKV_CLUSTER,&alen,0)) 
    {
+     
      // UI update
-     work->update(segment.tell()>>10,fileSize>>10,_nbClusters,0,0,0);
+     work->update(segment.tell()>>10,fileSize>>10);
      // Grow clusters index if needed
      if(_nbClusters==_clustersCeil-1)
      {

Modified: branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_mkv_audio.cpp
===================================================================
--- branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_mkv_audio.cpp	2007-07-07 17:07:57 UTC (rev 3342)
+++ branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ADM_mkv_audio.cpp	2007-07-07 18:38:03 UTC (rev 3343)
@@ -28,7 +28,7 @@
 #include "ADM_toolkit/toolkit.hxx"
 
 #include "ADM_mkv.h"
-
+#include "ADM_audio/ADM_a52info.h"
 #define vprintf(...) {}
 
 /**
@@ -303,6 +303,23 @@
   _currentLace=_maxLace=0;
   _clusterParser=NULL;
   goToCluster(0);
+  /* In case of AC3, do not trust the header...*/
+  if(_wavheader->encoding==WAV_AC3)
+  {
+    uint8_t ac3Buffer[20000];
+    uint32_t len,sample,timecode;
+     if( getPacket(ac3Buffer, &len, &sample,&timecode))
+     {
+       uint32_t fq,br,chan,syncoff;
+        if( ADM_AC3GetInfo(ac3Buffer, len, &fq, &br, &chan,&syncoff) )
+        {
+            _wavheader->channels=chan;
+            _wavheader->frequency=fq;
+            _wavheader->byterate=br;
+        }
+     }
+     goToCluster(0);
+  }
 }
 /**
     \fn goToCluster

Modified: branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ebml.cpp
===================================================================
--- branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ebml.cpp	2007-07-07 17:07:57 UTC (rev 3342)
+++ branches/avidemux_2.4_branch/avidemux/ADM_inputs/ADM_matroska/ebml.cpp	2007-07-07 18:38:03 UTC (rev 3343)
@@ -361,7 +361,7 @@
   const char *ss;
   
 
-    printf("[MKV] Simple Searching for tag %llx\n",prim);
+    vprintf("[MKV] Simple Searching for tag %llx\n",prim);
     if(rewind) seek(_begin);
    
       while(!finished())




More information about the Avidemux-svn-commit mailing list