protected long skipBytes(long bytes) throws BasicPlayerException
    {
    	
    	
    	long totalSkipped = 0;
        if (m_dataSource instanceof File)
        {
            //log.info("Bytes to skip : " + bytes);
            int previousStatus = m_status;
            
            m_status = SEEKING;
            long skipped = 0;
            try
            {
            	//synchronized (m_audioInputStream)
            	
            	{
                	notifyEvent(BasicPlayerEvent.SEEKING, getEncodedStreamPosition(), -1, null);
                	
                	initAudioInputStream(true);
                	
                	if (m_audioInputStream != null)
                    {
                		 
                		// Loop until bytes are really skipped.
                        while (totalSkipped < (bytes - SKIP_INACCURACY_SIZE))
                        {
                        	
                            skipped = m_audioInputStream.skip(bytes - totalSkipped);
                            if (skipped == 0) {
                            	break;
                            }
                            totalSkipped = totalSkipped + skipped;
                            //log.info("Skipped : " + totalSkipped + "/" + bytes);
                            if (totalSkipped == -1) throw new BasicPlayerException(BasicPlayerException.SKIPNOTSUPPORTED);
                        }
                    }
                }
            
                notifyEvent(BasicPlayerEvent.SEEKED, getEncodedStreamPosition(), -1, null);  
                // m_status = OPENED;
               
                //System.out.println("4");    
                try
                {
                    initLine();
                }
                catch (LineUnavailableException e)
                {
                    throw new BasicPlayerException(BasicPlayerException.CANNOTINITLINE, e);
                }
                
                //System.out.println("5");
                
                if (m_line != null)
                {
                    m_line.start();
                }
               
                m_status = previousStatus;
               /*
                if (previousStatus == PLAYING) startPlayback();
                else if (previousStatus == PAUSED)
                {
                    startPlayback();
                    pausePlayback();
                }*/
               
                //System.out.println("6");
               m_thread.interrupt();
               //System.out.println("7");
               
            }
            catch (IOException e)
            {
                throw new BasicPlayerException(e);
            }
           
        }
        return totalSkipped;
    }