Examples of Buffer


Examples of javax.media.Buffer

    }
   
  }
  public void testBuffer(Buffer b1)
  {
    final Buffer b2 = (Buffer) b1.clone();
    assertTrue(b1.getData() != b2.getData());
    assertTrue(b2.getData() != null);
    assertTrue(b1.getFlags() == b2.getFlags());
    assertTrue(b1.getFormat() == b2.getFormat());
    if (b1.getHeader() != null)
      assertTrue(b1.getHeader() != b2.getHeader());
    else
      assertTrue(null == b2.getHeader());
     
    //assertTrue(b2.getFormat() == null);
   
    final Buffer b3 = new Buffer();
    b3.copy(b1);
    assertTrue(b1.getData() == b3.getData());
    assertTrue(b1.getFlags() == b3.getFlags());
    assertTrue(b1.getFormat() == b3.getFormat());
    if (b1.getHeader() != null)
      assertTrue(b1.getHeader() == b3.getHeader());
    else
      assertTrue(null == b3.getHeader());
     
    final Buffer b4 = new Buffer();
    b4.copy(b1, true);
    assertTrue(b1.getData() != b4.getData());
    assertTrue(b4.getData() != null);
    assertTrue(b1.getFlags() == b4.getFlags());
    assertTrue(b1.getFormat() == b4.getFormat());
    if (b1.getHeader() != null)
      assertTrue(b1.getHeader() == b4.getHeader());
    else
      assertTrue(null == b4.getHeader());

 
    final Buffer b5 = new Buffer();
    b5.copy(b1, false);
    assertTrue(b1.getData() == b5.getData());
    assertTrue(b1.getFlags() == b5.getFlags());
    assertTrue(b1.getFormat() == b5.getFormat());
    if (b1.getHeader() != null)
      assertTrue(b1.getHeader() == b5.getHeader());
    else
      assertTrue(null == b5.getHeader());

   
  }
View Full Code Here

Examples of javax.media.Buffer

   
    public void read(Buffer buffer) throws IOException
    {
      if (TRACE) System.out.println(getClass().getSimpleName() + " read");
     
      Buffer next = null;
     
      try
      {
                next = (Buffer)jitterBuffer.get();
      }
      catch ( Exception ex )
      {
      }
     
      if ( (next == null) || next.isEOM() )
      {
        eos = true;
      }
     
      if (next != null)
      {
        if (buffer.getData() == null)
          buffer.copy(next, false)
        else
        {
          // according to the API, if the caller sets the
          // data in the buffer, we should not allocate it.
          // See http://java.sun.com/products/java-media/jmf/2.1.1/apidocs/javax/media/protocol/PushBufferStream.html
         
          // we use the original offset in the buffer in this case, since that is what is required
          // by FMJ's RTPSendStream.transferData(PushBufferStream stream).  This feature does not appear to be
          // defined in the API.
         
          final Object originalData = buffer.getData();
          final int originalOffset = buffer.getOffset();
          final int originalLength =  arrayLength(buffer.getData());
          buffer.copy(next, false);
          buffer.setData(originalData);
          buffer.setOffset(originalOffset);
          // length is set in copy
         
          // mgodehardt: will measure thruput in bits per second for the BitRateControl
          // dont know if this the right place to measure the thruput
          long currentTimestamp = System.nanoTime();
          if ( -1 == lastTimestamp )
          {
            lastTimestamp = currentTimestamp;
          }
         
          bytesProcessed += buffer.getLength();
         
          if ( (buffer.getFlags() & Buffer.FLAG_RTP_MARKER) > 0 )
          {
            framesProcessed++;
          }
         
          if ( (currentTimestamp - lastTimestamp) > 1000000000L )
          {
            bitsPerSecond = bytesProcessed << 3;
           
            float diffTime = (float)(currentTimestamp - lastTimestamp) / 1000000L;
            frameRate = (float)framesProcessed * (1000.0f / diffTime);
           
            bytesProcessed = 0;
            framesProcessed = 0;
            lastTimestamp = currentTimestamp;
          }
         
          if (next.getLength() > 0)
          { 
            // TODO: what if original data is not big enough?
            if (next.getLength() > originalLength)
            { 
              logger.warning("Buffer passed in has length: " + originalLength + "; needs to be at least: " + next.getLength() + "; not able to re-use passed in buffer data");
              buffer.copy(next, false)
            }
            else
            {
              System.arraycopy(next.getData(), next.getOffset(), originalData, originalOffset, next.getLength());
            }
          }
        }
      }
      else
View Full Code Here

Examples of javax.media.Buffer

    final double scaleY = ((double) outputSize.height) / ((double) inputSize.height);
   
    final BufferedImage scaled = scale(image, scaleX, scaleY)// TODO: is the size exact?  what about rounding errors?
   
    System.out.println("scaled: " + scaled.getWidth() + "x" + scaled.getHeight());
    final Buffer b = ImageToBuffer.createBuffer(scaled, ((VideoFormat) outputFormat).getFrameRate());
    output.setData(b.getData());
    output.setLength(b.getLength());
    output.setOffset(b.getOffset());
    output.setFormat(b.getFormat());
    // TODO: what about format?
 
    return BUFFER_PROCESSED_OK;

   
View Full Code Here

Examples of javax.media.Buffer

  {
   
   
    assertTrue(Buffer.SEQUENCE_UNKNOWN == Long.MAX_VALUE - 1);
   
    test(new Buffer().getFlags(), 0);
    test(new Buffer().getDuration(), -1L);
    assertEquals(new Buffer().getFormat(), null);
    test(new Buffer().getLength(), 0);
    test(new Buffer().getOffset(), 0);
    test(new Buffer().getSequenceNumber(), 9223372036854775806L);
    test(new Buffer().getSequenceNumber(), Buffer.SEQUENCE_UNKNOWN);
    test(new Buffer().getTimeStamp(), -1L);
    assertEquals(new Buffer().getData(), null);
    assertEquals(new Buffer().getHeader(), null);
   
    {
      final Buffer b1 = new Buffer();
      b1.setData(new byte[10]);
      b1.setFlags(1);
      Format f = new VideoFormat(VideoFormat.JPEG);
      b1.setFormat(f);
      assertTrue(f == b1.getFormat());
      b1.setHeader(new byte[4]);
     
      testBuffer(b1);
 
    }
   
    {
      final Buffer b1 = new Buffer();
      b1.setData(new int[10]);
      b1.setFlags(2);
      testBuffer(b1);
     
    }
   
    {
      final Buffer b1 = new Buffer();
      b1.setData(new short[10]);
      b1.setFlags(3);
      testBuffer(b1);
    }
   
    {
      final Buffer b1 = new Buffer();
      b1.setData(new long[10])// tested float, double, String
      b1.setFlags(2);
      final Buffer b2 = (Buffer) b1.clone();
      assertTrue(b1.getData() == b2.getData())// strange anomaly with types other than byte, int, short
      assertTrue(b2.getData() != null);
      assertTrue(b1.getFlags() == b2.getFlags());
     
      final Buffer b3 = new Buffer();
      b3.copy(b1);
      assertTrue(b1.getData() == b3.getData());
      assertTrue(b1.getFlags() == b3.getFlags());
     
      final Buffer b4 = new Buffer();
      b4.copy(b1, true);
      assertTrue(b1.getData() != b4.getData());
      assertTrue(b4.getData() != null);
      assertTrue(b1.getFlags() == b4.getFlags());
   
      final Buffer b5 = new Buffer();
      b5.copy(b1, false);
      assertTrue(b1.getData() == b5.getData());
      assertTrue(b1.getFlags() == b5.getFlags());
    }
  }
View Full Code Here

Examples of javax.media.Buffer

    {
    final boolean allowNative = allowNatives[n];
   
    // test empty buffer, null format:
    {
      final Buffer b = new Buffer();
     
      try
      {
        final byte[] ba = (byte[]) p.doValidateData(b, 0, allowNative);   
        assertTrue(false);
      }
      catch (NullPointerException e)
      {
      }
    }
   
    // buf of len 5 with length set to 5, null format:
    {
      final Buffer b = new Buffer();
      final byte[] bBuf = new byte[5];
      b.setData(bBuf);
      b.setLength(bBuf.length);

      try
      {
        final byte[] ba = (byte[]) p.doValidateData(b, 0, allowNative);
        assertTrue(false);
      }
      catch (NullPointerException e)
      {
      }
       
     
    }
   
    // buf of len 5 with length set to 5, null format datatype:
    {
      final Buffer b = new Buffer();
      final byte[] bBuf = new byte[5];
      b.setFormat(new Format("abc", null));
      b.setData(bBuf);
      b.setLength(bBuf.length);

 
      final byte[] ba = (byte[]) p.doValidateData(b, 0, allowNative);
      assertEquals(ba, null)
      assertEquals(b.getData(), bBuf);

       
     
    }
   
    // buf of len 5 with length set to 5, byte array format
    final String[] encodings = new String[] {null, "abc"};
    for (int k = 0; k < encodings.length; ++k)
    {
      final String encoding = encodings[k];
   
      final Buffer b = new Buffer();
      final byte[] bBuf = new byte[] {1, 2, 3, 4, 5};
      b.setFormat(new Format(encoding, Format.byteArray));
      b.setData(bBuf);
      b.setLength(bBuf.length);

     
      for (int i = 0; i < 10; ++i)
      {
        final byte[] ba = (byte[]) p.doValidateData(b, i, allowNative);
        final int max = i > bBuf.length ? i : bBuf.length;
        assertEquals(ba.length, max)
        for (int j = 0; j < i; ++j)
        { 
          if (j < bBuf.length)
            assertEquals(ba[j], bBuf[j]);
          else
            assertEquals(ba[j], 0);
        }
      }
    }
   
   
   
    // non-byte-array format: - reallocates as type in format.
    {
      final Buffer b = new Buffer();
      final byte[] bBuf = new byte[] {1, 2, 3, 4, 5};
      b.setFormat(new Format(null, Format.intArray));
      b.setData(bBuf);
      b.setLength(bBuf.length);

     
      for (int i = 0; i < 10; ++i)
      {
        final int[] ba = (int[]) p.doValidateData(b, i, allowNative);
        final int max = i > bBuf.length ? i : bBuf.length;
        assertEquals(ba.length, i)
        for (int j = 0; j < i; ++j)
        {  assertEquals(ba[j], 0);
        }
      }
    }
   
//     don't set length
    {
      final Buffer b = new Buffer();
      final byte[] bBuf = new byte[] {1, 2, 3, 4, 5};
      b.setFormat(new Format(null, Format.byteArray));
      b.setData(bBuf);
      //b.setLength(bBuf.length);

     
      for (int i = 0; i < 10; ++i)
      {
View Full Code Here

Examples of javax.media.Buffer

  {
    final MyBasicPlugIn p = new MyBasicPlugIn();
   
    // test empty buffer
    {
      final Buffer b = new Buffer();
     
      assertEquals(p.doGetNativeData(b.getData()), 0L);
     
    }
   
    {
      final Buffer b = new Buffer();
      final byte[] bBuf = new byte[] {1, 2, 3, 4, 5};
      b.setData(bBuf);
      assertEquals(p.doGetNativeData(b.getData()), 0L);
     
    }
   
   
    {
      final Buffer b = new Buffer();
      final byte[] bBuf = new byte[] {1, 2, 3, 4, 5};
      b.setData(bBuf);
      b.setLength(100);
      b.setOffset(20);
      b.setDuration(100000);
      b.setDiscard(false);
      b.setFormat(new Format("abc", Format.byteArray));
      b.setSequenceNumber(1234);
      b.setTimeStamp(9999L);
      assertEquals(p.doGetNativeData(b.getData()), 0L);
     
    }
   
    {
      final Buffer b = new Buffer();
      final int[] bBuf = new int[] {1, 2, 3, 4, 5};
      b.setData(bBuf);
      b.setLength(100);
      b.setOffset(20);
      b.setDuration(100000);
      b.setDiscard(false);
      b.setFormat(new Format("abc", Format.intArray));
      b.setSequenceNumber(1234);
      b.setTimeStamp(9999L);
      assertEquals(p.doGetNativeData(b.getData()), 0L);
     
    }
   
    {
      final TracingBuffer b = new TracingBuffer();
      final Long n = new Long(1000);
      b.setData(n);
   
     
      assertEquals(p.doGetNativeData(b.getData()), 0L);
      //System.out.println(b.getStringBuffer().toString());
     
    }
   
  }
View Full Code Here

Examples of javax.media.Buffer

    throw new IllegalArgumentException("Unknown or unsupported data buffer type: " + dataBuffer);
    }
   
    final int bufferedImageType = bi.getType();
       
    final Buffer result = new Buffer();
    final Dimension size = new Dimension(bi.getWidth(), bi.getHeight());
    final int maxDataLength = -1; // TODO
    final int bitsPerPixel;
   
    final int red;
    final int green;
    final int blue;

    if (bufferedImageType == BufferedImage.TYPE_3BYTE_BGR)
    {
      bitsPerPixel = 24;
      red = 1;
      green = 2;
      blue = 3;
    }
    else if (bufferedImageType == BufferedImage.TYPE_INT_BGR)
    {
      bitsPerPixel = 32
      // TODO: test
      red = 0xFF;
      green = 0xFF00
      blue = 0xFF0000;
    }
    else if (bufferedImageType == BufferedImage.TYPE_INT_RGB)
    {
      bitsPerPixel = 32
      red = 0xFF0000;
      green = 0xFF00;
      blue = 0xFF;
    }
    else if (bufferedImageType == BufferedImage.TYPE_INT_ARGB)
    {
      bitsPerPixel = 32
      red = 0xFF0000;
      green = 0xFF00;
      blue = 0xFF;
      // just ignore alpha
    }
    else
   
      if (bi.getColorModel() instanceof ComponentColorModel && bi.getSampleModel() instanceof ComponentSampleModel)
      {
        final ComponentColorModel componentColorModel = (ComponentColorModel) bi.getColorModel();
        final ComponentSampleModel componentSampleModel = (ComponentSampleModel) bi.getSampleModel();
        final int[] offsets = componentSampleModel.getBandOffsets();
        if (dataBuffer instanceof DataBufferInt)
        {
          // TODO: untested
          bitsPerPixel = 32
          red = 0xFF << offsets[0];
          green = 0xFF << offsets[1];
          blue = 0xFF << offsets[2];

        }
        else if (dataBuffer instanceof DataBufferByte)
        {
          bitsPerPixel = componentSampleModel.getPixelStride() * 8// TODO: should it always be 24? or are the pixel stride and the bits per pixel unrelated?
          red = 1 + offsets[0];
          green = 1 + offsets[1];
          blue = 1 + offsets[2];
        }
        else
          throw new IllegalArgumentException("Unsupported buffered image type: " + bufferedImageType);
      }
      else if (bi.getColorModel() instanceof DirectColorModel)
      {
        // TODO: untested
        final DirectColorModel directColorModel = (DirectColorModel) bi.getColorModel();
        if (dataBuffer instanceof DataBufferInt)
        {
          bitsPerPixel = 32
          red = directColorModel.getRedMask();
          green = directColorModel.getGreenMask();
          blue = directColorModel.getBlueMask();
        }
        else
          throw new IllegalArgumentException("Unsupported buffered image type: " + bufferedImageType);
      }
      else
        throw new IllegalArgumentException("Unsupported buffered image type: " + bufferedImageType);
   
    result.setFormat(new RGBFormat(size, maxDataLength, dataType, frameRate, bitsPerPixel, red, green, blue));
    result.setData(pixels);
    result.setLength(pixelsLength);
    result.setOffset(0);
   
    return result;
  }
View Full Code Here

Examples of javax.media.Buffer

      this.streamIndex = streamIndex;
    }

    public void transferData(PushBufferStream stream)
    {
      final Buffer originalBuffer = new Buffer(); // TODO: find a way to reuse buffers/avoid allocating new memory each time
      try
      {
        stream.read(originalBuffer);
      } catch (IOException e)
      {
        originalBuffer.setEOM(true)// TODO
        originalBuffer.setDiscard(true)// TODO
        originalBuffer.setLength(0);
        if (!(e instanceof InterruptedIOException))  // logging interruptions is noisy.
          logger.log(Level.WARNING, "" + e, e);
      }
     
      final List<ClonedDataSource.ClonedPushBufferStream> clonedStreams = new ArrayList<ClonedDataSource.ClonedPushBufferStream>();
      synchronized (CloneablePushBufferDataSource.this)
      {
        for (ClonedDataSource clone : clones)
        {
          final ClonedDataSource.ClonedPushBufferStream clonedStream = (ClonedDataSource.ClonedPushBufferStream) clone.getStreams()[streamIndex];

          // mgodehardt: Only started cloned streams get data (this caused OutOfMemory Bugs)
          if ( clone.cloneStarted )
          {
            clonedStreams.add(clonedStream);
          }
        }
      }
     
      // TODO: additional synchronization?
      try
      {
        // put a clone of the buffer in each stream's buffer queue
        for (ClonedDataSource.ClonedPushBufferStream clonedStream : clonedStreams)
        {
          clonedStream.getBufferQueue().put(originalBuffer.clone());
         
        }
       
        // notify their transfer handlers asynchronously:
        for (ClonedDataSource.ClonedPushBufferStream clonedStream : clonedStreams)
View Full Code Here

Examples of javax.media.Buffer

  return os;
  }
 
  private Buffer createBuffer(byte[] data, int offset, int length)
  {
    Buffer b = new Buffer();
    // TODO: set format to something? - doesn't seem needed.
    b.setData(data);
    b.setOffset(offset);
    b.setLength(length);
    return b;
  }
View Full Code Here

Examples of javax.media.Buffer

    return b;
  }
 
  private Buffer createEOMBuffer()
  {
    Buffer b = new Buffer();
    // TODO: set format to something? - doesn't seem needed.
    b.setData(new byte[0]);
    b.setOffset(0);
    b.setLength(0);
    b.setEOM(true);
    return b;
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.