⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fssoundstreamhead.java

📁 利用opensource的开源jar实现生成flash文件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    /** Gets the average number of samples in each stream block following.

        @return the number of sound samples in each following FSSoundStreamBlock object.
        */
    public int getStreamSampleCount() { return streamSampleCount; }

    /** Sets the recommended playback rate in Hz. Must be either: 5512, 11025, 22050 or 44100.

        @param playRate the recommended rate for playing the sound.
        */
    public void setPlaybackRate(int playRate)
    {
        playbackRate = playRate;
    }

    /** Sets the recommended number of playback channels = 1 = mono 2 = stereo.

        @param aNumber the recommended number of playback channels.
        */
    public void setPlaybackChannels(int aNumber)
    {
        playbackChannels = aNumber;
    }

    /** Sets the recommended playback sample size in bytes. Must be wither 1 or 2.

        @param playSize the recommended sample size for playing the sound.
        */
    public void setPlaybackSampleSize(int playSize)
    {
        playbackSampleSize = playSize;
    }

    /** Sets the sample rate in Hz for the streaming sound. Must be either: 5512, 11025, 22050 or 44100.

        @param streamingRate the rate at which the streaming sound was sampled.
        */
    public void setStreamRate(int streamingRate)
    {
        streamRate = streamingRate;
    }

    /** Sets the number of channels in the streaming sound: 1 = mono 2 = stereo.

        @param streamingChannels the number of channels in the streaming sound.
        */
    public void setStreamChannels(int streamingChannels)
    {
        streamChannels = streamingChannels;
    }

    /** Sets the sample size in bytes for the streaming sound. Must be 1 or 2.

        @param streamingSize the sample size for the sound.
        */
    public void setStreamSampleSize(int streamingSize)
    {
        streamSampleSize = streamingSize;
    }

    /** Sets the number of samples in each stream block.

        @param streamingCount the number of samples in each subsequent FSSoundStreamBlock object.
        */
    public void setStreamSampleCount(int streamingCount)
    {
        streamSampleCount = streamingCount;
    }

    /**
     * For MP3 encoded sounds, returns the number of samples to skip when starting to play a sound.
     *
     * @return the number of samples skipped in an MP3 encoded sound Returns 0 for other sound formats.
     */
    public int getLatency() 
    { 
        return latency; 
    }

    /**
     * Set the number of samples to skip when starting to play an MP3 encoded sound.
     *
     * @param latency the number of samples to be skipped in an MP3 encoded sound should be 0 for other sound formats.
     */
    public void setLatency(int latency)
    {
        this.latency = latency;
    }

    public boolean equals(Object anObject)
    {
        boolean result = false;
        
        if (super.equals(anObject))
        {
            FSSoundStreamHead typedObject = (FSSoundStreamHead)anObject;
            
            result = format == typedObject.format;
            result = result && playbackRate == typedObject.playbackRate;
            result = result && playbackChannels == typedObject.playbackChannels;
            result = result && playbackSampleSize == typedObject.playbackSampleSize;
            result = result && streamRate == typedObject.streamRate;
            result = result && streamChannels == typedObject.streamChannels;
            result = result && streamSampleSize == typedObject.streamSampleSize;
            result = result && streamSampleCount == typedObject.streamSampleCount;
            result = result && latency == typedObject.latency;
        }
        return result;
    }

    public void appendDescription(StringBuffer buffer, int depth)
    {
        buffer.append(name());
        
        if (depth > 0)
        {
            buffer.append(": { ");
            Transform.append(buffer, "format", format);
            Transform.append(buffer, "playbackRate", playbackRate);
            Transform.append(buffer, "playbackChannels", playbackChannels);
            Transform.append(buffer, "playbackSampleSize", playbackSampleSize);
            Transform.append(buffer, "streamRate", streamRate);
            Transform.append(buffer, "streamChannels", streamChannels);
            Transform.append(buffer, "streamSampleSize", streamSampleSize);
            Transform.append(buffer, "streamSampleCount", streamSampleCount);
            Transform.append(buffer, "latency", latency);
            buffer.append("}");
        }
    }

    public int length(FSCoder coder)
    {
        super.length(coder);
    
        length += 4;
        
        if (format == FSSound.MP3)
            length += 2;
        
        return length;
    }
    
    public void encode(FSCoder coder)
    {
        super.encode(coder);
        
         coder.writeBits(0, 4);

        switch (playbackRate)
        {
            case 5512:
                coder.writeBits(0, 2);
                break;
            case 11025:
                coder.writeBits(1, 2);
                break;
            case 22050:
                coder.writeBits(2, 2);
                break;
            case 44100:
                coder.writeBits(3, 2);
                break;
        }
        coder.writeBits(playbackSampleSize-1, 1);
        coder.writeBits(playbackChannels-1, 1);

        coder.writeBits(format, 4);

        switch (streamRate)
        {
            case 5512:
                coder.writeBits(0, 2);
                break;
            case 11025:
                coder.writeBits(1, 2);
                break;
            case 22050:
                coder.writeBits(2, 2);
                break;
            case 44100:
                coder.writeBits(3, 2);
                break;
        }
        coder.writeBits(streamSampleSize-1, 1);
        coder.writeBits(streamChannels-1, 1);
        coder.writeWord(streamSampleCount, 2);

        if (format == FSSound.MP3)
            coder.writeWord(latency, 2);

        coder.endObject(name());
    }
    
    public void decode(FSCoder coder)
    {
        super.decode(coder);
        
        coder.readBits(4, false);
        switch (coder.readBits(2, false))
        {
            case 0:
                playbackRate = 5512;
                break;
            case 1:
                playbackRate = 11025;
                break;
            case 2:
                playbackRate = 22050;
                break;
            case 3:
                playbackRate = 44100;
                break;
        }
        playbackSampleSize = coder.readBits(1, false)+1;
        playbackChannels = coder.readBits(1, false)+1;

        format = coder.readBits(4, false);

        switch (coder.readBits(2, false))
        {
            case 0:
                streamRate = 5512;
                break;
            case 1:
                streamRate = 11025;
                break;
            case 2:
                streamRate = 22050;
                break;
            case 3:
                streamRate = 44100;
                break;
        }
        streamSampleSize = coder.readBits(1, false)+1;
        streamChannels = coder.readBits(1, false)+1;
        streamSampleCount = coder.readWord(2, false);
        
        if (format == FSSound.MP3)
            latency = coder.readWord(2, true);

        coder.endObject(name());
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -