mezzanine at Safe-mail.net
2010-Nov-30 01:47 UTC
[theora-dev] Consistency regarding compiled Cortado 0.6.0 source and the official binary
(I previously sent this message (minus some slight edits) to theora-dev at xiph dot org, but it did not seem to show up in the archives. I do not know if one has to be subscribed in order to post messages.) Among other things, this message concerns the compilation of the downloaded source code for version 0.6.0 of the Cortado Java applet. (the source was probably from a file that was originally named cortado-0.6.0.tar.gz) The compilation was done on the Ubuntu Linux platform with version 1.7.1 of the ant software and version 1.6.0_18 of the javac software. From what one remembers, the compilation was performed by switching to the cortado 0.6.0 source directory and invoking "ant applet stripped" at the command line. This produced a number of jar files, including a "cortado-ov-stripped-0.6.0.jar" file, as expected. Examining the insides of the cortado-ov-stripped-0.6.0.jar file revealed a number of files in the following layout: ./com ./com/fluendo ./com/fluendo/jst ./com/fluendo/jst/Buffer.class ./com/fluendo/jst/Bus.class ./com/fluendo/jst/BusHandler.class ./com/fluendo/jst/BusSyncHandler.class ./com/fluendo/jst/Caps.class ./com/fluendo/jst/CapsListener.class ./com/fluendo/jst/Clock$ClockID.class ./com/fluendo/jst/Clock.class ./com/fluendo/jst/ClockProvider.class ./com/fluendo/jst/Element.class ./com/fluendo/jst/ElementFactory.class ./com/fluendo/jst/Event.class ./com/fluendo/jst/Format.class ./com/fluendo/jst/Message.class ./com/fluendo/jst/Object.class ./com/fluendo/jst/Pad.class ./com/fluendo/jst/PadListener.class ./com/fluendo/jst/Pipeline$BusThread.class ./com/fluendo/jst/Pipeline$SinkEnumerator.class ./com/fluendo/jst/Pipeline$SortedEnumerator.class ./com/fluendo/jst/Pipeline$StateThread.class ./com/fluendo/jst/Pipeline.class ./com/fluendo/jst/Query.class ./com/fluendo/jst/Sink$1.class ./com/fluendo/jst/Sink.class ./com/fluendo/jst/SourceInfo.class ./com/fluendo/jst/SystemClock.class ./com/fluendo/jst/WaitStatus.class ./com/fluendo/player ./com/fluendo/player/AboutFrame$1.class ./com/fluendo/player/AboutFrame$2.class ./com/fluendo/player/AboutFrame.class ./com/fluendo/player/AppFrame.class ./com/fluendo/player/Configure.class ./com/fluendo/player/Cortado.class ./com/fluendo/player/CortadoPipeline.class ./com/fluendo/player/DurationScanner$1.class ./com/fluendo/player/DurationScanner$StreamInfo.class ./com/fluendo/player/DurationScanner.class ./com/fluendo/player/Status.class ./com/fluendo/player/StatusListener.class ./com/fluendo/plugin ./com/fluendo/plugin/AudioSink$1.class ./com/fluendo/plugin/AudioSink$AudioClock.class ./com/fluendo/plugin/AudioSink$RingBuffer.class ./com/fluendo/plugin/AudioSink.class ./com/fluendo/plugin/AudioSinkJ2.class ./com/fluendo/plugin/AudioSinkSA$RingBufferSA.class ./com/fluendo/plugin/AudioSinkSA$RingReader.class ./com/fluendo/plugin/AudioSinkSA.class ./com/fluendo/plugin/FakeSink.class ./com/fluendo/plugin/HTTPSrc$1.class ./com/fluendo/plugin/HTTPSrc.class ./com/fluendo/plugin/OggDemux$1.class ./com/fluendo/plugin/OggDemux$OggChain.class ./com/fluendo/plugin/OggDemux$OggStream.class ./com/fluendo/plugin/OggDemux.class ./com/fluendo/plugin/OggPayload.class ./com/fluendo/plugin/Overlay$1.class ./com/fluendo/plugin/Overlay$2.class ./com/fluendo/plugin/Overlay.class ./com/fluendo/plugin/Queue$1.class ./com/fluendo/plugin/Queue$2.class ./com/fluendo/plugin/Queue.class ./com/fluendo/plugin/Selector$1.class ./com/fluendo/plugin/Selector$2.class ./com/fluendo/plugin/Selector.class ./com/fluendo/plugin/VideoSink.class ./com/fluendo/plugin/VorbisDec$1.class ./com/fluendo/plugin/VorbisDec$2.class ./com/fluendo/plugin/VorbisDec.class ./com/fluendo/utils ./com/fluendo/utils/Base64Converter.class ./com/fluendo/utils/Debug.class ./com/fluendo/utils/MemUtils.class ./com/jcraft ./com/jcraft/jogg ./com/jcraft/jogg/Buffer.class ./com/jcraft/jogg/Packet.class ./com/jcraft/jogg/Page.class ./com/jcraft/jogg/StreamState.class ./com/jcraft/jogg/SyncState.class ./com/jcraft/jorbis ./com/jcraft/jorbis/AllocChain.class ./com/jcraft/jorbis/Block.class ./com/jcraft/jorbis/ChainingExample.class ./com/jcraft/jorbis/CodeBook.class ./com/jcraft/jorbis/Comment.class ./com/jcraft/jorbis/DecodeAux.class ./com/jcraft/jorbis/DecodeExample.class ./com/jcraft/jorbis/Drft.class ./com/jcraft/jorbis/DspState.class ./com/jcraft/jorbis/EchstateFloor0.class ./com/jcraft/jorbis/EchstateFloor1.class ./com/jcraft/jorbis/EncodeAuxNearestMatch.class ./com/jcraft/jorbis/EncodeAuxThreshMatch.class ./com/jcraft/jorbis/Floor0.class ./com/jcraft/jorbis/Floor1.class ./com/jcraft/jorbis/FuncFloor.class ./com/jcraft/jorbis/FuncMapping.class ./com/jcraft/jorbis/FuncResidue.class ./com/jcraft/jorbis/FuncTime.class ./com/jcraft/jorbis/Info.class ./com/jcraft/jorbis/InfoFloor0.class ./com/jcraft/jorbis/InfoFloor1.class ./com/jcraft/jorbis/InfoMapping0.class ./com/jcraft/jorbis/InfoMode.class ./com/jcraft/jorbis/InfoResidue0.class ./com/jcraft/jorbis/JOrbisException.class ./com/jcraft/jorbis/LookFloor0.class ./com/jcraft/jorbis/LookFloor1.class ./com/jcraft/jorbis/LookMapping0.class ./com/jcraft/jorbis/LookResidue0.class ./com/jcraft/jorbis/Lookup.class ./com/jcraft/jorbis/Lpc.class ./com/jcraft/jorbis/Lsfit_acc.class ./com/jcraft/jorbis/Lsp.class ./com/jcraft/jorbis/Mapping0.class ./com/jcraft/jorbis/Mdct.class ./com/jcraft/jorbis/PsyInfo.class ./com/jcraft/jorbis/PsyLook.class ./com/jcraft/jorbis/Residue0.class ./com/jcraft/jorbis/Residue1.class ./com/jcraft/jorbis/Residue2.class ./com/jcraft/jorbis/StaticCodeBook.class ./com/jcraft/jorbis/Time0.class ./com/jcraft/jorbis/VorbisFile$SeekableInputStream.class ./com/jcraft/jorbis/VorbisFile.class ./META-INF ./META-INF/MANIFEST.MF On the other hand, the insides of the officially-released cortado-ov-stripped-0.6.0.jar file seem to be like the following: ./com ./com/a ./com/a/a ./com/a/a/A.class ./com/a/a/B.class ./com/a/a/C.class ./com/a/a/d.class ./com/a/a/e.class ./com/a/a/f.class ./com/a/a/g.class ./com/a/a/h.class ./com/a/a/i.class ./com/a/a/j.class ./com/a/a/k.class ./com/a/a/l.class ./com/a/a/m.class ./com/a/a/n.class ./com/a/a/o.class ./com/a/a/p.class ./com/a/a/q.class ./com/a/a/r.class ./com/a/a/s.class ./com/a/a/t.class ./com/a/a/u.class ./com/a/a/v.class ./com/a/a/w.class ./com/a/a/x.class ./com/a/a/y.class ./com/a/a/z.class ./com/a/b ./com/a/b/a.class ./com/a/b/b.class ./com/a/b/c.class ./com/a/b/d.class ./com/a/b/e.class ./com/fluendo ./com/fluendo/a ./com/fluendo/a/a.class ./com/fluendo/a/b.class ./com/fluendo/a/c.class ./com/fluendo/b ./com/fluendo/b/a.class ./com/fluendo/b/b.class ./com/fluendo/b/c.class ./com/fluendo/b/d.class ./com/fluendo/b/e.class ./com/fluendo/b/f.class ./com/fluendo/b/g.class ./com/fluendo/b/h.class ./com/fluendo/b/i.class ./com/fluendo/b/j.class ./com/fluendo/b/k.class ./com/fluendo/b/l.class ./com/fluendo/b/m.class ./com/fluendo/b/n.class ./com/fluendo/b/o.class ./com/fluendo/b/p.class ./com/fluendo/b/q.class ./com/fluendo/b/r.class ./com/fluendo/b/s.class ./com/fluendo/b/t.class ./com/fluendo/b/u.class ./com/fluendo/b/v.class ./com/fluendo/b/w.class ./com/fluendo/b/x.class ./com/fluendo/b/y.class ./com/fluendo/b/z.class ./com/fluendo/player ./com/fluendo/player/a.class ./com/fluendo/player/b.class ./com/fluendo/player/c.class ./com/fluendo/player/Cortado.class ./com/fluendo/player/d.class ./com/fluendo/player/e.class ./com/fluendo/player/f.class ./com/fluendo/player/g.class ./com/fluendo/player/h.class ./com/fluendo/player/i.class ./com/fluendo/player/j.class ./com/fluendo/plugin ./com/fluendo/plugin/a.class ./com/fluendo/plugin/AudioSinkJ2.class ./com/fluendo/plugin/AudioSinkSA.class ./com/fluendo/plugin/b.class ./com/fluendo/plugin/c.class ./com/fluendo/plugin/d.class ./com/fluendo/plugin/e.class ./com/fluendo/plugin/f.class ./com/fluendo/plugin/FakeSink.class ./com/fluendo/plugin/g.class ./com/fluendo/plugin/h.class ./com/fluendo/plugin/HTTPSrc.class ./com/fluendo/plugin/i.class ./com/fluendo/plugin/j.class ./com/fluendo/plugin/k.class ./com/fluendo/plugin/l.class ./com/fluendo/plugin/m.class ./com/fluendo/plugin/n.class ./com/fluendo/plugin/o.class ./com/fluendo/plugin/OggDemux.class ./com/fluendo/plugin/Overlay.class ./com/fluendo/plugin/p.class ./com/fluendo/plugin/q.class ./com/fluendo/plugin/Queue.class ./com/fluendo/plugin/r.class ./com/fluendo/plugin/Selector.class ./com/fluendo/plugin/VideoSink.class ./com/fluendo/plugin/VorbisDec.class ./META-INF ./META-INF/MANIFEST.MF The locally-compiled instance of the Cortado applet seemed to be functional and seemed to work (at least, when tested on the Mac OSX platform.) The question is: When providing copies of the officially-released Cortado applet jar file (the cortado-ov-stripped-0.6.0.jar that has such internal file names as a.class and b.class) to others, my assumption has been that the cortado-0.6.0.tar.gz file can be treated as the corresponding source code for the purpose of convience and license compliance. Is this correct? (For all one knows, the internal differences between the two compiled instances of the Cortado applet could be due to such things as different versions of compilers or different compilation settings.) --Richard
Timothy B. Terriberry
2010-Nov-30 02:01 UTC
[theora-dev] Consistency regarding compiled Cortado 0.6.0 source and the official binary
> The locally-compiled instance of the Cortado applet seemed to be functional and seemed to work (at least,> when tested on the Mac OSX platform.) The question is: When providing copies of the officially-released You should try testing it on very old JVMs (for which Cortado is intended as a fallback). I can almost guarantee you that your version will fail to work on any 1.1-era JVM, because Sun changed the way their compiler emits code for monitors in a way that triggers a bug in such JVMs. It's been like this since at least JDK 1.4. They insist that this is required for language compliance (though AFAICT it is not) and refuse to fix it. > Cortado applet jar file (the cortado-ov-stripped-0.6.0.jar that has such internal file names as a.class > and b.class) to others, my assumption has been that the cortado-0.6.0.tar.gz file can be treated as the > corresponding source code for the purpose of convience and license compliance. Is this correct? (For all That is correct. The official binaries have simply been run through Proguard. One of the optimizations we got added to Proguard was to have it rewrite the instructions for these monitors in a way that works with the old JVMs. See https://sourceforge.net/tracker/?func=detail&atid=474704&aid=2893068&group_id=54750 for details.