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

📄 jmfextending.html

📁 奉献给多媒体java编程者们。JMF2.1.1最新版本的用户指南。JMF是java用于基于实时多媒体的开发工具
💻 HTML
📖 第 1 页 / 共 5 页
字号:
</code><a name="105429"> </a>
<a name="105430"> </a><code>	 supportedRGB = new RGBFormat(null,	 	     // size
</code><a name="105431"> </a><code>	 	 	 	      Format.NOT_SPECIFIED,  // maxDataLength
</code><a name="105432"> </a><code>	 	 	 	      int[].class,	     // buffer type
</code><a name="105433"> </a><code>	 	 	 	      Format.NOT_SPECIFIED,  // frame rate
</code><a name="105434"> </a><code>	 	 	 	      32,	 	     // bitsPerPixel
</code><a name="105435"> </a><code>	 	 	 	      RGBFormat.PACKED,	     // packed
</code><a name="105436"> </a><code>	 	 	 	      rMask, gMask, bMask,   // component masks
</code><a name="105437"> </a><code>	 	 	 	      1,	 	 	     // pixel stride
</code><a name="105438"> </a><code>	 	 	 	      Format.NOT_SPECIFIED,  // line stride
</code><a name="105439"> </a><code>	 	 	 	      Format.FALSE,          // flipped
</code><a name="105440"> </a><code>	 	 	 	      Format.NOT_SPECIFIED   // endian
</code><a name="105441"> </a><code>	 	 	 	      );
</code><a name="105442"> </a><code>	 supportedFormats = new VideoFormat[1];
</code><a name="105443"> </a><code>	 supportedFormats[0] = supportedRGB;
</code><a name="105444"> </a><code>    }
</code></pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="105452"> </a><code>   /**
    * Controls implementation              
</code><a name="105453"> </a><code>    **/
</code><a name="105454"> </a><code>    
</code><a name="105455"> </a><code>    // Returns an array of supported controls
</code><a name="105456"> </a><code>
    public Object[] getControls() {
</code><a name="105457"> </a><code>	 // No controls
</code><a name="105458"> </a><code>        return (Object[]) new Control[0];
</code><a name="105459"> </a><code>    }
</code><a name="105460"> </a>
<a name="105461"> </a><code>    /**
</code><a name="105462"> </a><code>     * Return the control based on a control type for the PlugIn.
</code><a name="105463"> </a><code>     */
</code><a name="105464"> </a><code>    public Object getControl(String controlType) {
</code><a name="105465"> </a><code>       try {
</code><a name="105466"> </a><code>          Class  cls = Class.forName(controlType);
</code><a name="105467"> </a><code>          Object cs[] = getControls();
</code><a name="105468"> </a><code>         for (int i = 0; i &lt; cs.length; i++) {
</code><a name="105469"> </a><code>             if (cls.isInstance(cs[i]))
</code><a name="105470"> </a><code>                return cs[i];
</code><a name="105471"> </a><code>          }
</code><a name="105472"> </a><code>          return null;
</code><a name="105473"> </a><code>       } catch (Exception e) {   // no such controlType or such control
</code><a name="105474"> </a><code>         return null;
</code><a name="105475"> </a><code>       }
</code><a name="105476"> </a><code>    }
</code><a name="105477"> </a>
<a name="105478"> </a><code>    /**
</code><a name="105479"> </a><code>     * PlugIn implementation
</code><a name="105480"> </a><code>     **/
</code><a name="105481"> </a>
<a name="105482"> </a><code>    public String getName() {
</code><a name="105483"> </a><code>	 return name;
</code><a name="105484"> </a><code>    }
</code><a name="105485"> </a><code>    
</code><a name="105486"> </a><code>    // Opens the plugin
</code><a name="105487"> </a><code>    public void open() throws ResourceUnavailableException {
</code><a name="105488"> </a><code>	 sourceImage = null;
</code><a name="105489"> </a><code>	 destImage   = null;
</code><a name="105490"> </a><code>	 lastBuffer    = null;
</code><a name="105491"> </a><code>    }
</code><a name="105497"> </a><code>    /** Resets the state of the plug-in. Typically at end of media or 
     * when media is repositioned.
</code><a name="105498"> </a><code>     */
</code><a name="105499"> </a><code>    public void reset() {
</code><a name="105500"> </a><code>	 // Nothing to do
</code><a name="105501"> </a><code>    }
</code><a name="105502"> </a>
<a name="105503"> </a><code>    public void close() {
</code><a name="105504"> </a><code>	 // Nothing to do
</code><a name="105505"> </a><code>    }
</code></pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="105514"> </a><code>    /** 
</code><a name="105515"> </a><code>     * Renderer implementation
</code><a name="105516"> </a><code>     **/
</code><a name="105517"> </a>
<a name="105518"> </a><code>    public void start() {
</code><a name="105519"> </a><code>	 started = true;
</code><a name="105520"> </a><code>    }
</code><a name="105521"> </a>
<a name="105522"> </a><code>    public void stop() {
</code><a name="105523"> </a><code>	 started = false;
</code><a name="105524"> </a><code>    }
</code><a name="105525"> </a><code>    
</code><a name="105526"> </a><code>    // Lists the possible input formats supported by this plug-in.
</code><a name="105527"> </a>
<a name="105528"> </a><code>    public Format [] getSupportedInputFormats() {
</code><a name="105529"> </a><code>	 return supportedFormats;
</code><a name="105530"> </a><code>    }
</code><a name="105531"> </a><code>    // Set the data input format.
</code><a name="105532"> </a>
<a name="105533"> </a><code>    public Format setInputFormat(Format format) {
</code><a name="105534"> </a><code>	 if ( format != null &amp;&amp; format instanceof RGBFormat &amp;&amp;
</code><a name="105535"> </a><code>	      format.matches(supportedRGB)) {
</code><a name="105536"> </a><code>	     
</code><a name="105537"> </a><code>	     inputFormat = (RGBFormat) format;
</code><a name="105538"> </a><code>	     Dimension size = inputFormat.getSize();
</code><a name="105539"> </a><code>	     inWidth = size.width;
</code><a name="105540"> </a><code>	     inHeight = size.height;
</code><a name="105541"> </a><code>	     return format;
</code><a name="105542"> </a><code>	 } else
</code><a name="105543"> </a><code>	     return null;
</code><a name="105544"> </a><code>    }
</code><a name="105545"> </a>
<a name="105546"> </a><code>    // Processes the data and renders it to a component
</code><a name="105547"> </a>
<a name="105548"> </a><code>    public synchronized int process(Buffer buffer) {
</code><a name="105549"> </a><code>	 if (component == null)
</code><a name="105550"> </a><code>	     return BUFFER_PROCESSED_FAILED;
</code><a name="105551"> </a>
<a name="105552"> </a><code>	 Format inf = buffer.getFormat();
</code><a name="105553"> </a><code>	 if (inf == null)
</code><a name="105566"> </a><code>	     return BUFFER_PROCESSED_FAILED;
</code><a name="105570"> </a><code>	 if (inf != inputFormat || !buffer.getFormat().equals(inputFormat))  
</code><a name="106113"> </a><code>     {
</code><a name="105571"> </a><code>	     if (setInputFormat(inf) != null)
</code><a name="105572"> </a><code>	 	     return BUFFER_PROCESSED_FAILED;
</code><a name="105573"> </a><code>	 }
</code><a name="105579"> </a>
<a name="105584"> </a><code>	 Object data = buffer.getData();
</code><a name="105580"> </a><code>	 if (!(data instanceof int[]))
</code><a name="105581"> </a><code>	     return BUFFER_PROCESSED_FAILED;
</code></pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="105595"> </a><code>	 if (lastBuffer != buffer) {
</code><a name="105596"> </a><code>	     lastBuffer = buffer;
</code><a name="105597"> </a><code>	     newImage(buffer);
</code><a name="105598"> </a><code>	 }
</code><a name="105599"> </a>
<a name="105600"> </a><code>	 sourceImage.newPixels(0, 0, inWidth, inHeight);
</code><a name="105601"> </a>
<a name="105602"> </a><code>	 Graphics g = component.getGraphics();
</code><a name="105603"> </a><code>	 if (g != null) {
</code><a name="105604"> </a><code>	     if (reqBounds == null) {
</code><a name="105605"> </a><code>	 	 bounds = component.getBounds();
</code><a name="105606"> </a><code>	 	 bounds.x = 0;
</code><a name="105607"> </a><code>	 	 bounds.y = 0;
</code><a name="105608"> </a><code>	     } else
</code><a name="105609"> </a><code>	 	     bounds = reqBounds;
</code><a name="105610"> </a><code>	     g.drawImage(destImage, bounds.x, bounds.y,
</code><a name="105611"> </a><code>	 	 	 bounds.width, bounds.height,
</code><a name="105612"> </a><code>	 	 	 0, 0, inWidth, inHeight, component);
</code><a name="105613"> </a><code>	 }
</code><a name="105614"> </a><code>	 
</code><a name="105615"> </a><code>	 return BUFFER_PROCESSED_OK;
</code><a name="105616"> </a><code>    }
</code><a name="105617"> </a>
<a name="105618"> </a><code>    /**
</code><a name="105619"> </a><code>     * VideoRenderer implementation
</code><a name="105620"> </a><code>     **/
</code><a name="105621"> </a>
<a name="105622"> </a><code>    /**
</code><a name="105623"> </a><code>     * Returns an AWT component that it will render to. Returns null
</code><a name="105624"> </a><code>     * if it is not rendering to an AWT component.
</code><a name="105625"> </a><code>     */
</code><a name="105626"> </a><code>    public java.awt.Component getComponent() {
</code><a name="105627"> </a><code>	 if (component == null) {
</code><a name="105628"> </a><code>	     component = new Canvas() {
</code><a name="105629"> </a><code>	 	 public Dimension getPreferredSize() {
</code><a name="105630"> </a><code>	 	     return new Dimension(getInWidth(), getInHeight());
</code><a name="105631"> </a><code>	 	 }
</code><a name="105632"> </a>
<a name="105633"> </a><code>	 	 public void update(Graphics g) {
</code><a name="105634"> </a><code>	 	 }
</code><a name="105635"> </a>
<a name="105636"> </a><code>	 	 public void paint(Graphics g) {
</code><a name="105637"> </a><code>	 	     // Need to repaint image if the movie is in paused state
</code><a name="105638"> </a><code>	 	 }
</code><a name="105639"> </a>
<a name="105640"> </a><code>	     };
</code><a name="105641"> </a><code>	 }
</code><a name="105642"> </a>
<a name="105643"> </a><code>	 return component;
</code><a name="105644"> </a><code>    }
</code></pre>
</font></td>
  </tr>
  <tr>
    <td><font face="Palatino, Times New Roman, Times, serif"><pre>
<a name="105727"> </a><code>    /**
</code><a name="105728"> </a><code>     * Requests the renderer to draw into a specified AWT component.
</code><a name="105729"> </a><code>     * Returns false if the renderer cannot draw into the specified
</code><a name="105730"> </a><code>     * component.
</code><a name="105731"> </a><code>     */
</code><a name="105732"> </a><code>    public boolean setComponent(java.awt.Component comp) {
</code><a name="105733"> </a><code>	 component = comp;
</code><a name="105734"> </a><code>	 return true;
</code><a name="105735"> </a><code>    }
</code><a name="105736"> </a><code>
    /**
</code><a name="105737"> </a><code>     * Sets the region in the component where the video is to be
</code><a name="105738"> </a><code>     * rendered to. Video is to be scaled if necessary. If
     * &lt;code&gt;rect&lt;/code&gt; is null, then the video occupies the entire 
     * component.
</code><a name="105739"> </a><code>     */
</code><a name="105740"> </a><code>    public void setBounds(java.awt.Rectangle rect) {
</code><a name="105741"> </a><code>	 reqBounds = rect;
</code><a name="105742"> </a><code>    }
</code><a name="105743"> </a>
<a name="105744"> </a><code>    /**
</code><a name="105745"> </a><code>     * Returns the region in the component where the video will be
</code><a name="105746"> </a><code>     * rendered to. Returns null if the entire component is being used.
</code><a name="105747"> </a><code>     */
</code><a name="105748"> </a><code>    public java.awt.Rectangle getBounds() {
</code><a name="105749"> </a><code>	 return reqBounds;
</code><a name="105750"> </a><code>    }
</code><a name="105751"> </a><code>    
</code><a name="105752"> </a><code>    /**
</code><a name="105753"> </a><code>     * Local methods
     **/
</code><a name="105754"> </a>
<a name="105755"> </a><code>    int getInWidth() {
</code><a name="105756"> </a><code>	 return inWidth;
</code><a name="105757"> </a><code>    }

⌨️ 快捷键说明

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