Red5 Backwards Compatibility Report

March 26, 2009

Update Period

25-FEB-2009 to 25-MAR-2009

Summary

A lot of bug fixes were made (many of them community-provided with unit tests; thanks!), but they should not have backwards compatibility impacts. However, as of this report, some unit tests are failing due to a life-cycle bug we fixed (shutdown should work now). We’re working on that.

Other changes with potential visible impacts to users follow.

Changes With Compatibility Impacts

Revision Description
R3577 Upgraded quartz to 1.6.5
R3569 Updated echo test with new UI
R3553 Upgraded installer.swf with nice new UI (thanks Jay Araujo)

More Details

For details on these and all other changes to red5:
http://code.google.com/p/red5/updates/list

Previous Reports

You can find the last report here.

What Is This Report

Red5 is under active development and as such APIs and the implementation are subject to change at any time.

To help with that problem and as a service to the Red5 team, every two weeks Xuggle publishes updates giving a summary of major changes since the last report that MAY require changes to your existing Red5 applications.

Other changes may have been made as well, but we do not expect them to cause backwards compatibility issues.

See here for more background.

Advertisements

Bad News and Good News

March 25, 2009

First the bad news; we’ve decided to cancel the 1.23 release.  There.  We said it.

We’d hoped to ship Xuggler 1.23 this week but over the weekend ffmpeg changed (in a non backwards compatible way) how their pixel conversion routines worked, and added a bug that causes some of our video conversion routines to break down.  We’re working on a fix (both with the ffmpeg team, and a workaround on our side).  But the end result is 1.23 is officially cancelled and will never see the light of day.

So what’s the good news?

Next week we’ll release Xuggler 2.0.

It’ll implement the top 3 requested features (not kidding) from the community to date.  It’ll fix the PixelFormat issues that just crept into FFMPEG.  It’ll run well in small java heaps.  It’ll do faster image conversion.  It’ll make julienne fries.  And more.  Stay tuned.

– Art

p.s. for those who can’t wait, the current tip of tree has most of the new features (not telling what they are though), but code for converting between IVideoPictures and java.awt.BufferedImages is broken due to the aforementioned FFMPEG bug.  Also, the pixel format IPixelFormat.Type.RGB32 no longer exists for reasons we’ll explain in the 2.0 release notes.


Help Us Help You

March 17, 2009

Hi folks,

We just released Xuggler 1.22; yet another feature release. We plan to continue with additions to Xuggler but need your help in figuring out what features are most wanted.

To do that, we need to know more about our current users, and we need to have more people try out the software. So to help us, I’m ask that Xuggler fans to do the following:

  1. If you know of other developers who might find Xuggler useful, please let them know, or better yet write about us on your blog.
  2. Let us know you use Xuggler by putting us on your Ohloh.net stack
  3. Join the Xuggler Users Group and let us know how things are working for you there.
  4. If you’re interested in a new feature, file a request and we’ll evaluate it

Thanks in advance,
– Schrödinger, Art & Robert


Xuggler 1.22 Release

March 17, 2009

Xuggler 1.22 – Release Notes Get It Here.

Summary

1.22.FINAL is a feature release. We updated FFMPEG to the new 0.5 Release, and we add the ability to just demux and mux packets without decoding and encoding, and make it a little easier to access raw audio and video data from Java. Enjoy.

Release Notes

Latest FFMPEG release

On March 10th the FFMPEG team, after a nearly 5 year gap, announced FFMPEG 0.5, AKA “half-way to world domination A.K.A. the belligerent blue bike shed”. This release of Xuggler also includes the latest FFMPEG (actually an even newer version) in our quest to stay on FFMPEG tip of tree. Enjoy.

Use Xuggler to mux packets without encoding

You can now explicitly set (or override) the default IStreamCoder set on an IStream in an IContainer. We also have a new IStreamCoder.make(...) method that allows you to create a new IStreamCoder by copying all the settings of another IStreamCoder.

Why is this useful? Well it means you can create an output container, and decide to set some of the output streams with the exact same settings as an input file, and then just write input packets to the output container without having to decode and re-encode (provided they are going into the same type of container).

Or put in other ways, with this change you can now demux packets from a container, and mux to another container without decoding and encoding if you like.

See com.xuggle.xuggler.MuxerTest in the JUnit tests for an example of this in action.

java.nio.ByteBuffers now outlive IBuffers

In previous versions of Xuggler, using the IBuffer.getByteBuffer() object to get raw access to the underlying bytes of a buffer was somewhat dangerous. You had to ensure that the IBuffer you got the java.nio.ByteBuffer from lived longer than your java.nio.ByteBuffer.

This is no longer true. Now you can safely call IBuffer.getByteBuffer() and the returned value can be safely passed around inside Java, even if the Java garbage collector collects the parent IBuffer. You can even “cast” it to other types, like a java.nio.ShortBuffer if you prefer for audio.

Errors on tests don’t abort test runs

In prior versions of Xuggler, any unanticipated error in a JUnit test caused the entire test-suite to stop. This is no longer the case.

Ivy upgraded to v2.0.0

From ivy 2.0.0-beta2.

Known Issues

There are no known critical issues in this release.

Issues Fixed

  • Issue #68: Xuggler Fail MemoryAllocation Test on Debian Etch AMD x64

Enhancements Added

  • Enhancement 78: Make IBuffer.getByteBuffer return java.nio.ByteBuffers that can outlive the parent IBuffer
  • Enhancement 74: Need way to write encoded packets to multiple containers

Tests

  • Java Tests: 184 (+3)
  • Native Tests: +2

Source Control Versions

Xuggle Version: 1.22.237.Final

– Hudson Good Build

http://build.xuggle.com/job/xuggle_java_xuggler_jdk5_i386_winxp/32/

Dynamic Revisions
    * svn://svn.mplayerhq.hu/ffmpeg/trunk : 17954
    * svn://svn.ffmpeg.org/mplayer/trunk/libswscale : 28934
    * http://theyard.googlecode.com/svn/theyard/code/trunk/share/gnu/cxxtest/cxxtest-3.10.1 : 170
    * http://xuggle.googlecode.com/svn/trunk/build/java : 230
    * http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler : 237

- Static Dependencies
    * libx264: ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20090125-2245.tar.bz2
    * libmp3lame: http://downloads.sourceforge.net/lame/lame-398.tar.gz: 3.98
    * libspeex: http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz: 1.2 RC1

On Windows, here's what we built our installer with:
    * Mingw gcc/g++ 4.2.4: http://www.tdragon.net/recentgcc/
    * Msys 1.0.11
    * mingw-runtime 3.15.1
    * w32api 3.13
    * gmake 3.81
    * binutils 2.91
    * yasm 0.7.2.2153
    * Msys Perl 5.6
    * Ant 1.7
    * Java JDK 1.5
    * MSFT C++ Visual Studio 2005
    * NullSoft NSIS Installer  2.42
    * SWIG 1.3.36 modified with doc gen capabilities
    * Subversion 1.5

Everything you wanted to know about Transcoding

March 13, 2009

But from a well, corporate, perspective.  Dan Rayburn over at Streaming Media posted a presentation from a company called Rhozet about how transcoding works.

Click here (ppt presentation).

It’s a good companion to the Overly Simplistic Guide to Internet Video.  If you’re hankering for a good overview of what Codecs and Containers are after watching the simple guide, I recommend browsing through this.

You could of course work with Rhozet for trancoding software, or if you’re a Java developer and came here, you can use Xuggle for free.  Your call really.

– Art


Xuggler 1.21 Release Notes

March 4, 2009

Xuggler 1.21 – Release Notes Get It Here.

Summary

1.21.FINAL is a bug fix and minor feature release.

Release Notes

IStreamCoder.setDefaultAudioFrameSize

With this version of Xuggler you can now explicitly set the default frame-size that Xuggler will use for un-encoded audio. In prior releases this was always set to 572. Now if the ICodec associated with this IStreamCoder doesn’t require an explicit frame size for audio, we’ll use this setting instead.

This is useful for folks doing RTP broadcasting where they want to set the smallest possible frame-size.

Removed usage of deprecated FFMPEG interfaces

We removed all areas in our code where we used deprecated FFMPEG interfaces, and our builds will now fail if we attempt to use any interface that FFMPEG deprecates.

IAudioResampler has more control over filters

We upgraded the IAudioResampler interface to enable specification of the number of filters, and type of interpolation to use when resampling. All changes are 100% backwards compatible.

Known Issues

There are no known critical issues in this release.

Issues Fixed

Enhancements Added

Tests

  • Java Tests: 181 (+2)
  • Native Tests: +0

Source Control Versions

Xuggle Version: 1.21.219.Final

– Hudson Good Build

http://build.xuggle.com/job/xuggle_java_xuggler_jdk5_i386_winxp/26/

Dynamic Revisions
    * svn://svn.mplayerhq.hu/ffmpeg/trunk : 17743
    * svn://svn.ffmpeg.org/mplayer/trunk/libswscale : 28777
    * http://theyard.googlecode.com/svn/theyard/code/trunk/share/gnu/cxxtest/cxxtest-3.10.1 : 170
    * http://xuggle.googlecode.com/svn/trunk/build/java : 205
    * http://xuggle.googlecode.com/svn/trunk/java/xuggle-xuggler : 219

- Static Dependencies
    * libx264: ftp://ftp.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20090125-2245.tar.bz2
    * libmp3lame: http://downloads.sourceforge.net/lame/lame-398.tar.gz: 3.98
    * libspeex: http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz: 1.2 RC1

On Windows, here's what we built our installer with:
    * Mingw gcc/g++ 4.2.4: http://www.tdragon.net/recentgcc/
    * Msys 1.0.11
    * mingw-runtime 3.15.1
    * w32api 3.13
    * gmake 3.81
    * binutils 2.91
    * yasm 0.7.2.2153
    * Msys Perl 5.6
    * Ant 1.7
    * Java JDK 1.5
    * MSFT C++ Visual Studio 2005
    * NullSoft NSIS Installer  2.42
    * SWIG 1.3.36 modified with doc gen capabilities
    * Subversion 1.5