Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Эффект эха на Sun WTK


Автор: r4z3r 18.8.2008, 13:05
Всем привет.
Имеется следующий код
Код

public class JarMedia extends MIDlet implements PlayerListener {
    public void pauseApp() {}
    public void destroyApp(boolean unconditional) {}
    
    public void playerUpdate(Player p, String e, Object d){
      if(STARTED.equals(e)){
        sTime = System.currentTimeMillis();
        System.out.println("Started after "+(sTime - pTime)+"ms");
      }
      if(END_OF_MEDIA.equals(e)){
        System.out.println("End of media after "+(System.currentTimeMillis() - sTime)+"ms");
        p.deallocate();
        p.close();
      }
      if(STOPPED.equals(e)){
        System.out.println("Stopped after "+(System.currentTimeMillis() - sTime)+"ms");
      }
      if(CLOSED.equals(e)){
        System.out.println("Closed after "+(System.currentTimeMillis()-sTime)+"ms");
        synchronized(p){p.notifyAll();}
      }
    }
    
    long pTime = 0;
    long sTime = 0;
    
    public void startApp(){
      String url = "/cvt_", ext = ".amr", mime = "audio/amr";
      
      Player p = null;
      
      try{
        for(int i = 1; i < 11; i++){
          p = Manager.createPlayer(
                  this.getClass().getResourceAsStream(url+i+ext),
                  mime);
          p.addPlayerListener(this);
          
          long t = 0;
          
          t = System.currentTimeMillis();
          p.realize();
          System.out.println("Realized in "+(System.currentTimeMillis() - t)+"ms");
          
          t = System.currentTimeMillis();
          p.prefetch();
          System.out.println("Prefetched in:"+(System.currentTimeMillis() - t)+"ms");
          
          t = pTime = System.currentTimeMillis();
          p.start();
          System.out.println("Started in "+(System.currentTimeMillis() - t)+"ms");
          
          t = System.currentTimeMillis();
          synchronized(p){
            p.wait();
          }
          System.out.println("Waited:"+(System.currentTimeMillis() - t)+"ms");
        }
      }catch(MediaException me){
        me.printStackTrace();
      }catch(IOException ioe){
        ioe.printStackTrace();
      }catch(InterruptedException ie){
        ie.printStackTrace();
      }
    }
}


выдающий примерно следующий лог
Код

Realized in 1337ms
Prefetched in:1ms
Started in 1ms
Started after 2ms
End of media after 552ms
Closed after 560ms
Waited:562ms
Realized in 817ms
Prefetched in:0ms
Started after 1ms
Started in 1ms
End of media after 692ms
Closed after 694ms
Waited:692ms
Realized in 792ms
Prefetched in:1ms
Started in 0ms
Started after 0ms
End of media after 514ms
Closed after 517ms
Waited:517ms


Вопрос в следующем: при проигрывании ряда маленьких аудио-файлов (amr-ки длиной в 1 сек.) наблюдается некий эффект эха (т.е. маленький кусочек повторяется несколько раз). Собственно интересует из-за чего он может проявляться и как с ним бороться?
Заранее спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)