Package com.xuggle.xuggler

Examples of com.xuggle.xuggler.IStreamCoder


  private void openStream(IStream stream)
  {
    // if the coder is not open, open it NOTE: MediaWriter currently
    // supports audio & video streams
   
    IStreamCoder coder = stream.getStreamCoder();
    try
    {
      ICodec.Type type = coder.getCodecType();
      if (!coder.isOpen() && isSupportedCodecType(type))
      {
        // open the coder

        int rv = coder.open();
        if (rv < 0)
          throw new RuntimeException("could not open stream " + stream + ": "
              + getErrorMessage(rv));
        mOpenedStreams.add(stream);

        // inform listeners
        super.onOpenCoder(new OpenCoderEvent(this, stream.getIndex()));
      }
    }
    finally
    {
      coder.delete();
    }
  }
View Full Code Here


  {
    // flush coders

    for (IStream stream: mStreams.values())
    {
      IStreamCoder coder = stream.getStreamCoder();
      if (!coder.isOpen())
        continue;

      // if it's audio coder flush that

      if (CODEC_TYPE_AUDIO == coder.getCodecType())
      {
        IPacket packet = IPacket.make();
        while (coder.encodeAudio(packet, null, 0) >= 0 && packet.isComplete())
        {
          writePacket(packet);
          packet.delete();
          packet = IPacket.make();
        }
        packet.delete();
      }
     
      // else flush video coder

      else if (CODEC_TYPE_VIDEO == coder.getCodecType())
      {
        IPacket packet = IPacket.make();
        while (coder.encodeVideo(packet, null, 0) >= 0 && packet.isComplete())
        {
          writePacket(packet);
          packet.delete();
          packet = IPacket.make();
        }
View Full Code Here

   
    // close the coders opened by this MediaWriter

    for (IStream stream: mOpenedStreams)
    {
      IStreamCoder coder = stream.getStreamCoder();
      try
      {
        if ((rv = coder.close()) < 0)
          throw new RuntimeException("error "
              + getErrorMessage(rv)
              + ", failed close coder " + coder);

        // inform the listeners
        super.onCloseCoder(new CloseCoderEvent(this, stream.getIndex()));
      }
      finally
      {
        coder.delete();
      }
    }

    // expunge all referneces to the coders and resamplers
   
View Full Code Here

    // query how many streams the call to open found
    int numStreams = container.getNumStreams();
   
    // and iterate through the streams to find the first audio stream
    int audioStreamId = -1;
    IStreamCoder audioCoder = null;
    for(int i = 0; i < numStreams; i++)
    {
      // Find the stream object
      IStream stream = container.getStream(i);
      // Get the pre-configured decoder that can decode this stream;
      IStreamCoder coder = stream.getStreamCoder();
     
      if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_AUDIO)
      {
        audioStreamId = i;
        audioCoder = coder;
        break;
      }
View Full Code Here

  private IStreamCoder getStreamCoder(int streamIndex)
  {
    // if the coder does not exists, get it

    IStreamCoder coder = mCoders.get(streamIndex);
    if (coder == null)
    {
      // test valid stream index

      int numStreams = getContainer().getNumStreams();
      if (streamIndex < 0 || streamIndex >= numStreams)
        throw new RuntimeException("invalid stream index");
   
      // estabish all streams in the container, informing listeners of
      // new streams without needing to wait for a packet for each
      // stream to show up

      for(int i = 0; i < numStreams; i++)
      {
        coder = mCoders.get(i);
        if (coder == null)
        {
          // now get the coder for the given stream index
         
          IStream stream = getContainer().getStream(i);
          try
          {
            coder = stream.getStreamCoder();

            // put the coder into the coder map, event if it not a supported
            // type so that on further reads it will find the coder but choose
            // not decode unsupported types

            mCoders.put(i, coder);
            // and release our coder to the list
            coder = null;
            super.onAddStream(new AddStreamEvent(this, i));
          }
          finally
          {
            if (coder != null) coder.delete();
            if (stream != null)
              stream.delete();
          }
        }
      }
    }
    coder = mCoders.get(streamIndex);
    IStream stream = getContainer().getStream(streamIndex);
    try
    {
      ICodec.Type type = coder.getCodecType();

      // if the coder is not open, open it
      // NOTE: MediaReader currently supports audio & video streams

      if (!coder.isOpen()
          && (type == ICodec.Type.CODEC_TYPE_AUDIO || type == ICodec.Type.CODEC_TYPE_VIDEO))
      {
        if (coder.open() < 0)
          throw new RuntimeException("could not open coder for stream: "
              + streamIndex);
        mOpenedStreams.add(stream);
        super.onOpenCoder(new OpenCoderEvent(this, stream.getIndex()));
        stream = null;
View Full Code Here

      super.onReadPacket(new ReadPacketEvent(this,packet));

      // get the coder for this packet

      IStreamCoder coder = getStreamCoder(packet.getStreamIndex());
      // decode based on type

      switch (coder.getCodecType())
      {
        // decode audio

        case CODEC_TYPE_AUDIO:
          decodeAudio(coder, packet);
View Full Code Here

    // close the coders opened by this

    for (IStream stream: mOpenedStreams)
    {
      IStreamCoder coder = stream.getStreamCoder();
      try {
        if ((rv = coder.close()) < 0)
        {
          String errorString = getErrorMessage(rv);
          throw new RuntimeException("error " + errorString
              + ", failed close coder " + coder);
        }
        // inform listeners that the stream was closed
        super.onCloseCoder(new CloseCoderEvent(this, stream.getIndex()));
      } finally {
        coder.delete();
        stream.delete();
      }
    }
    // expunge all referneces to the coders and resamplers
    for(IStreamCoder coder : mCoders.values())
      coder.delete();
    mCoders.clear();
    mOpenedStreams.clear();

    // if we're supposed to, close the container
View Full Code Here

    writer = new MediaWriter(PREFIX+
      "testTimebaseGuessingWhenCodecSpecifiedAllowed2.mpg");
    writer.addVideoStream(0,
        0,
        100, 100);
    IStreamCoder coder = writer.getContainer().getStream(0).getStreamCoder();
    // should have set the highest possible
    assertEquals(1, coder.getTimeBase().getNumerator());
    assertEquals(60, coder.getTimeBase().getDenominator());
  }
View Full Code Here

    // query how many streams the call to open found
    int numStreams = container.getNumStreams();

    // and iterate through the streams to find the first video stream
    int videoStreamId = -1;
    IStreamCoder videoCoder = null;
    for(int i = 0; i < numStreams; i++)
    {
      // Find the stream object
      IStream stream = container.getStream(i);
      // Get the pre-configured decoder that can decode this stream;
      IStreamCoder coder = stream.getStreamCoder();

      if (coder.getCodecType() == ICodec.Type.CODEC_TYPE_VIDEO)
      {
        videoStreamId = i;
        videoCoder = coder;
        break;
      }
View Full Code Here

  public void testGetCodecTag()
  {
    IContainer container = IContainer.make();
    assertTrue("should be able to open",
        container.open("fixtures/subtitled_video.mkv", IContainer.Type.READ, null) >= 0);
    IStreamCoder coder = container.getStream(0).getStreamCoder();
   
    assertEquals("should be 0 by default", 0, coder.getCodecTag());
    coder.setCodecTag(0xDEADBEEF);
    assertEquals("should be set now", 0xDEADBEEF, coder.getCodecTag());
  }
View Full Code Here

TOP

Related Classes of com.xuggle.xuggler.IStreamCoder

Copyright © 2018 www.massapicom. 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.