QuickTime for Java

QuickTime for Java or QTJ is a software library that allows software written in the Java programming language to provide multimedia functionality, by making calls into the native QuickTime library. In practice, it allows Java applications on Mac OS, Mac OS X and Microsoft Windows to support the capture, editing, playback, and export of many different media formats and codecs.

QTJ has been deprecated by Apple.[1]

History

Owen W. Linzmayer, in Apple Confidential 2.0, traced QuickTime for Java's genesis back to Kaleida Labs, a spin-off company created by Apple Computer and IBM, noting that it and some Unicode text classes were the only Mac software salvaged from the four-year, $150 million disaster.[2] Ported to the Mac OS, it was developed under the code-name "Biscotti", and first released as a public beta in 1999.[citation needed] Later versions were installed by default with Mac OS and Mac OS X, and were an optional part of the QuickTime install for Windows.

QTJ 6.1

In 2003, Apple issued a Java 1.4.1 implementation that broke any QTJ applications that tried to run under 1.4.1 on Mac OS X. The underlying problem was Apple's move from Carbon to Cocoa for their AWT implementation, and the removal of a Java-to-native library called "JDirect" that QTJ relied on. QTJ applications could still run under Java 1.3.1, but apps that did not specify the version of Java they required, or that needed 1.4 features, were rendered unusable.

Later in 2003, Apple released a new version of QTJ that dealt with the incompatibilities, by offering a compatible but scaled-down version of the GUI classes. This 6.1 version of QTJ also radically changed the API, so that instead of having developers create GUI components and associate Movies or other renderable objects with them, the developers now needed to start with the Movie and request a suitable component from a factory. The new version also neglected to provide a component to show a visual preview of the input from a capture device, such as a webcam or camcorder.[3]

Design

QTJ lays an object-oriented API on top of the native C-based QuickTime library. It does this by associating common structs and the functions that work with them into classes. For example, the Movie struct is the basis of the class quicktime.std.movies.Movie, with functions like NewMovieFromFile and GetMovieTrackCount becoming the instance methods fromFile() and getTrackCount() respectively. The result is more like a genuine object-oriented API than other C-to-Java adaptations (such as JOGL, which dumps the OpenGL header files into classes with thousands of static methods).[4]

The Cocoa-based QTKit is a similar attempt to put an object-oriented layer atop the procedural QuickTime library, using Objective-C.

Apple's use of the top-level package name quicktime violates the Java Language's Specification convention that packages use a reverse-domain-name scheme, such as com.apple.quicktime. However, as Apple owns the "QuickTime" trademark, there is no realistic chance of a namespace collision, the prevention of which is the purpose of the package naming convention.

QTJ is not a Java implementation of QuickTime. It is a Java wrapper around native QuickTime calls. For this reason, it can only run on systems that have the QuickTime libraries installed, namely the classic Mac OS (which is no longer supported), Mac OS X, and Windows.

Features

QTJ offers access to most of the native QuickTime library, including

  • Playback
  • Editing
  • Capture
  • Graphic import and export
  • Movie import and export
  • Sample-level access

As a wrapper around QuickTime, QTJ also inherits support for a vast collection of media formats and codecs, including MPEG-1, MPEG-4, H.264, AAC, Sorenson Video, Flash, 3GPP, WAV, AIFF, and more. Since QuickTime itself can be extended, QTJ can pick up support for formats such as DivX and Ogg Vorbis through the use of third-party QuickTime components.

Code Example

The following example shows an AWT file-selection dialog and then tries to import and play the selected media file.

import java.io.File;
import java.awt.*;

import quicktime.*;
import quicktime.std.movies.Movie;
import quicktime.app.view.QTFactory;
import quicktime.io.*;

public class TrivialQTJPlayer extends Frame {

    public static void main (String[] args) {
        try {
            QTSession.open();
            Frame f = new TrivialQTJPlayer();
            f.pack();
            f.setVisible (true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public TrivialQTJPlayer() 
        throws QTException {
        FileDialog fd = new FileDialog
            (this, "TrivialJMFPlayer", FileDialog.LOAD);
        fd.setVisible(true);
        File f = new File (fd.getDirectory(), fd.getFile());
        OpenMovieFile omf = OpenMovieFile.asRead (new QTFile (f));
        Movie m = Movie.fromFile (omf);
        Component c = QTFactory.makeQTComponent(m).asComponent();
        add (c);
        m.start();
    }
}

Most of the code in this example involves itself with setting up the GUI. The only calls to QTJ are the calls to OpenMovieFile.asRead() and Movie.fromFile(), which create a QuickTime movie from the specified file, and the calls to create an AWT component from the QTFactory. This example puts the movie into the frame and immediately starts playing it; if a control bar (aka a "scrubber") were desired, you would create a MovieController from the Movie and then create a component from the controller, rather than from the movie.

Status and Outlook

QTJ's acceptance is limited by its nature as a wrapper around Apple's proprietary QuickTime library. It does not exist for any platform other than Mac and Windows, and cannot until and unless Apple ports QuickTime to another platform, such as Linux.

Currently most of QTJ is broken on recent Windows-running computers. Windows machines that use the no-execute (NX) page-protection security feature of recent CPUs cannot run even the demos without changing the configuration. This can be easily verified by a developer via a test-run of one of the demos coming with QTJ. An "execution protection violation" is reported and the program is aborted by Windows. This renders QTJ unsuitable for end-user application development due to the necessary complicated configuration of the NX feature.

Following the 2003 release of QTJ 6.1, Apple has made few updates to QTJ, mostly fixing bugs. Notably, QuickTime 7 was the first version of QuickTime not to be accompanied or followed by a QTJ release that wrapped the new native API's. QuickTime 7's new API's, such as those for working with metadata and with frame-reordering codecs, are not available to QTJ programmers. Apple has also not offered new classes to provide the capture preview functionality that was present in versions of QTJ prior to 6.1. Indeed, QTJ is dependent on some native API's that Apple no longer recommends, most notably QuickDraw.

See also

References

  1. ^ QTJava will be depreciated next year.
  2. ^ Owen W. Linzmayer, Apple Confidential 2.0
  3. ^ The Return of the Blue Q
  4. ^ Chris Adamson, QuickTime for Java: A Developer's Notebook

Read other articles:

2010 single by Alessandra AmorosoLa mia storia con teSingle by Alessandra Amorosofrom the album Il mondo in un secondo ReleasedSeptember 1, 2010Recorded2010GenrePopLength3:51 (Single Version)LabelEpicSongwriter(s)Saverio Grandi, Fabio Campedelli, Luca Angelosanti e Marco CiappelliProducer(s)Dado ParisiniAlessandra Amoroso singles chronology 'Arrivi tu (2010) La mia storia con te (2010) Urlo e non mi senti La mia storia con te is the seventh single of Alessandra Amoroso. It's the single la...

 

You can help expand this article with text translated from the corresponding article in German. (August 2012) Click [show] for important translation instructions. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English Wikipedia. Consider adding a topic to this template: there are ...

 

Autoklaf sederhana Sterilisasi atau penyucihamaan adalah pemusnahan atau eliminasi semua jasad renik, termasuk spora bakteri, yang sangat resistan.[1] Lihat Pula Mikroorganisme Disinfektan Antiseptik Autoklaf Pasteurisasi UHT Referensi ^ Levinson W. 2008. Review of Medical Microbiology & Imunology, Tenth Edition. New York: The McGraw-Hill Companies, Inc.

American stock car racing driver and motorcycle racer NASCAR driver Tammy Jo KirkTammy Joe Kirk in 1997Born (1962-05-06) May 6, 1962 (age 61)Dalton, GeorgiaAchievements1994 Snowball Derby WinnerNASCAR Xfinity Series career15 races run over 1 yearBest finish45th (2003)First race2003 New England 200 (New Hampshire)Last race2003 Ford 300 (Homestead) Wins Top tens Poles 0 0 0 NASCAR Craftsman Truck Series career32 races run over 2 yearsBest finish20th (1997)First race1997 Chevy Trucks Challe...

 

Yakovlev Yak-42Lion Air Yak-42TipePesawat jet berbadan sempitTerbang perdana7 Maret 1975StatusTidak diproduksi, dalam pelayananTahun produksi1980–2003Jumlah produksi178[1]Acuan dasarYakovlev Yak-40 Yakovlev Yak-42 Yakovlev Yak-42 (kode NATO: Clobber) merupakan sebuah pesawat penumpang sipil (airliner) dengan 3 mesin jet yang bentuknya mirip pesawat Tupolev Tu-134. Pesawat ini mengerjakan tugas serupa dengan Boeing 727 sebagai pesawat jet jarak pertengahan. Pesawat ini pertama kali d...

 

Coluzzi nell'allevamento di zanzare in casa di suo padre (Casa delle palme), a Monticelli (Esperia) Caio Mario Coluzzi Bartoccioni (Perugia, 30 novembre 1938 – Roma, 20 ottobre 2012) è stato un biologo, epidemiologo e parassitologo italiano, studioso ed esperto di fama internazionale nel campo dell'epidemiologia della malaria. Indice 1 Biografia 1.1 Contributi scientifici 1.2 Affiliazioni e riconoscimenti 2 Note 3 Voci correlate 4 Altri progetti 5 Collegamenti esterni Biografia Figlio dell...

Сельское поселение России (МО 2-го уровня)Новотитаровское сельское поселение Флаг[d] Герб 45°14′09″ с. ш. 38°58′16″ в. д.HGЯO Страна  Россия Субъект РФ Краснодарский край Район Динской Включает 4 населённых пункта Адм. центр Новотитаровская Глава сельского пос�...

 

  提示:此条目页的主题不是中國—瑞士關係。   關於中華民國與「瑞」字國家的外交關係,詳見中瑞關係 (消歧義)。 中華民國—瑞士關係 中華民國 瑞士 代表機構駐瑞士台北文化經濟代表團瑞士商務辦事處代表代表 黃偉峰 大使[註 1][4]處長 陶方婭[5]Mrs. Claudia Fontana Tobiassen 中華民國—瑞士關係(德語:Schweizerische–republik china Beziehungen、法�...

 

2020年夏季奥林匹克运动会波兰代表團波兰国旗IOC編碼POLNOC波蘭奧林匹克委員會網站olimpijski.pl(英文)(波兰文)2020年夏季奥林匹克运动会(東京)2021年7月23日至8月8日(受2019冠状病毒病疫情影响推迟,但仍保留原定名称)運動員206參賽項目24个大项旗手开幕式:帕维尔·科热尼奥夫斯基(游泳)和马娅·沃什乔夫斯卡(自行车)[1]闭幕式:卡罗利娜·纳亚(皮划艇)&#...

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Miss Universe Canada 2018 – news · newspapers · books · scholar · JSTOR (August 2019) (Learn how and when to remove this message) Beauty pageant Miss Universe Canada 2018DateAugust 18, 2018[1]PresentersSonny BorrelliChelsae DurocherVenueJohn Bassett Theatre, Metro Toronto Convention Centre, Toronto...

 

Sohan Singh redirects here. For other uses, see Sohan Singh (disambiguation). Sohan Singh BhaknaBorn22 January 1870Khutrai Khurd, British IndiaDied21 December 1968 (Aged 98)Amritsar, IndiaOrganization(s)Ghadar Party, Babbar Akali Movement, Kisan SabhaPolitical partyShiromani Akali DalMovementIndian independence movement, 1907 Punjab unrest, Ghadar Conspiracy. Part of a series onCommunism in India Personalities M.P.T. Acharya Abani Mukherji M. N. Roy Bhagat Singh P. Krishna Pillai Puran Chand ...

 

1972 film directed by Norman Cohen This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Adolf Hitler: My Part in His Downfall film – news · newspapers · books · scholar · JSTOR (May 2021) (Learn how and when to remove this message) Adolf Hitler: My Part in his DownfallTheatrical release posterDirected byNorm...

Golf tournament1936 PGA ChampionshipTournament informationDatesNovember 16–22, 1936LocationPinehurst, North CarolinaCourse(s)Pinehurst ResortNo. 2 Course[1]Organized byPGA of AmericaTour(s)PGA TourFormatMatch play - 6 roundsStatisticsPar72Field113 players,64 to match play[3]Cut156 (+12), playoffPrize fund$9,200[2]Winner's share$1,000Champion Denny Shutedef. Jimmy Thomson, 3 and 2← 19351937 → Pinehurst class=notpageimage| Location in the Un...

 

British Prisoner of War Camps in East Africa during World War II Part of Lists of Prisoner-of-War Camps section in the Prisoner-of-war camp article. The following list is an attempt to create the most complete list of British POW Camps in East Africa during World War II. Camp Number Camp Name Location Near 351 Nairobi Kenya 352 Naivasha Kenya 353 Gilgil Kenya 354 Nanyuki Kenya 356 Eldoret Kenya 357 Mitubiri Kenya 358 Makindu Kenya 359 Burguret Kenya 360 Ndarugu Kenya 361 Namanga Kenya 362 Th...

 

Badan Sertifikasi Film PusatTanggal pendirian1951TipeOrganisasi PemerintahTujuanFilmKantor pusatMumbaiWilayah layanan  IndiaKetuaPahlaj NihalaniOrganisasi indukKementerian Informasi dan PenyiaranAnggaran ₹ 6.9 kror (2011)Situs webcbfcindia.gov.in Badan Sertifikasi Film Pusat (yang juga disebut sebagai Badan Sensor) adalah sebuah badan klasifikasi dan penyensoran yang berada di bawah payung Kementerian Informasi dan Penyiaran, Pemerintah India. Badan tersebut bertugas untuk meregulasi p...

Murad Ebrahim Ketua Menteri BangsamoroInterimPetahanaMulai menjabat 22 Februari 2019PresidenRodrigo DuterteWakilAli Solaiman (Daratan utama)Abdul Sahrin (Kepulauan)Wa'līKhalipa Usman NandoPendahuluMujiv Hataman (Gubernur Wilayah Otonomi Muslim Mindanao)PenggantiPetahanaMenteri Pekerjaan Umum dan Jalan Tol BangsamoroMasa jabatan26 Februari 2019 – 11 November 2019Ketua MenteriDiri sendiriPendahuluJabatan dibentukPenggantiEduard GuerraMenteri Keuangan BangsamoroPetahanaMulai menj...

 

Villanova del Sillarocomune Villanova del Sillaro – VedutaChiesa parrocchiale ed ex Palazzo Abbaziale LocalizzazioneStato Italia Regione Lombardia Provincia Lodi AmministrazioneSindacoDiego Guarnieri (lista civica) dal 26-5-2019 TerritorioCoordinate45°14′20″N 9°28′58″E45°14′20″N, 9°28′58″E (Villanova del Sillaro) Altitudine69 m s.l.m. Superficie13,5 km² Abitanti1 862[1] (31-10-2023) Densità137,93 ab./km² FrazioniB...

 

فرناندو غابرييل غارسيا   معلومات شخصية الميلاد 31 أغسطس 1981 (العمر 42 سنة)بوينس آيرس الطول 1.90 م (6 قدم 3 بوصة)* مركز اللعب حارس مرمى الجنسية أرجنتيني الحياة العملية المهنة لاعب كرة يد  الرياضة كرة اليد  المنتخب الوطني الأعوام المنتخب الظهور (الأهداف) منتخب الأرجن�...

Defunct American toy company Ideal Toy CompanyFormerly Ideal Novelty and Toy Company(1903–38) Ideal Toy Company(1938–84) View-Master Ideal(1984–97) Company typePrivate (1908–82)Subsidiary (1982–97)IndustryEntertainmentFounded1908FoundersMorris MichtomRose MichtomDefunct1997; 27 years ago (1997)FateMerged with Mattel in 1997, becoming a brandHeadquartersHollis, Queens (1908–82)New Jersey (1982–97), USKey peopleAbraham Katz, Lionel A. Weintraub, Joseph C. Winkler...

 

Mobile Suit Gundam 00 DVD Volume 1 released in Japan. This is a list of episodes from the anime series Mobile Suit Gundam 00. The series premiered on October 6, 2007, replacing Toward the Terra on the terrestrial networks MBS and TBS , occupying the networks' notable Saturday 6:00 p.m. timeslot.[1][2][3] The first season ended its run on March 29, 2008. Season one of the series has been re-broadcast across Japan on various television networks such as TBS, Kids St...