Ogg

Ogg ya da bir diğer yazılışıyla OGG, Xiph.org Vakfı tarafından geliştirilen açık ve özgür bir çokluortam dosya biçimidir. Yazılım patentlerinin tehdidi altında olmayan bu dosya biçimi, akışkan video için optimize edilmiş yüksek kalitede çokluortam gerçeklemeleri için geliştirilmiştir.

OGG geliştirme çatısının önemli bir parçası olan Theora, kayıplı bir video sıkıştırma yöntemi sağlar. Ses katmanında çoğunlukla müzik dosyaları için optinmize edilmiş Vorbis sıkıştırması yaygın olmakla birlikte Opus, FLAC ya da OggPCM kayıpsız sıkıştırma algoritmaları da kullanılabilmektedir.

2007'den önce .ogg dosya uzantısı, içeriği Ogg kapsayıcı biçiminde olan tüm dosyalar için kullanılmaktaydı. 2007 yılından bu yana Xiph.org Vakfı .ogg uzantısının yalnızca Ogg Vorbis ses dosyaları için kullanılmasını tavsiye etmektedir. Xiph.org Vakfı, farklı içerikteki dosyaları tanımlamak amacıyla yeni bir uzantı serisi ve medya türleri oluşturmaya karar verdi; yalnızca ses dosyaları için .oga, sesli veya değil video dosyaları (Theora dahil) için .ogv, çoğullamalı Ogg için .ogx.

7 Kasım 2017 itibarı ile Xiph.org Vakfı'nın referans uygulamasının güncel versiyonu, libogg 1.3.3'tür. Diğer bir sürüm olan libogg2 geliştirilme aşamasındadır, ancak 2018 itibarıyla halen yeni baştan yazılmayı beklemektedir. Her iki kütüphane de yeni BSD Lisansı ile çıkarılan birer özgür yazılımdır. Ogg referans uygulaması, 2 Eylül 2000 tarihinde Vorbis'ten ayrılmıştır.

Biçim ücretsiz olduğundan ve içerikler telif hakkı ile ilgili kısıtlamalara tabi olmadığından dolayı, Ogg'un çeşitli çözücüleri, özgür ve sahipli yazılım ortam oynatıcıda, taşınabilir medya oynatıcıda ve farklı üreticilerin GPS alıcında kullanılmaktadır.

Ogg ismi, Netrek bilgisayar oyunundan gelmektedir. Bu oyunda, gelecekteki durum veya kaynakları düşünmeden ve genellikle zor kullanılarak yapılan eylemler için kullanılan "ogging" fiilinden esinlenilmiştir. Başlangıç aşamasında, henüz o dönemin bilgisayar donanımlarının kısıtlı yetkinliği düşünüldüğünde fazla iddialı bir proje olarak görülüyordu. Terry Prachett'in diskdünya romanlarındaki Nanny Ogg'dan geldiği düşünülse de, biçimin geliştiricisi bunun doğru olmadığını belirtmiştir. Ancak, yine aynı ifadeyi alıntılamak gerekirse; "Diğer yandan Vorbis, Küçük Tanrılar kitabında Terry Prachett'in yarattığı bir karakterden gelmektedir".

Ogg Vorbis projesi 1993 yılında başladı. İlk olarak "Squish" olarak adlandırıldı, ancak bu isim tescillenmişti. Bu yüzden, projede isim değişikliğine gidildi. Yeni isim olan "OggSquish", 2001 yılına dek kullanıldı, ki tekrar isim değiştirilerek "Ogg" olarak devam edildi. Ogg içerik biçimini ifade etmek için kullanılageldi ve Xiph.org'un daha büyük kapsamlı çoklu ortam projesinin bir parçası oldu. "Squish" ise bugün (artık "Vorbis" olarak anılıyor), Ogg içeri biçiminde belirli bir ses depolama ortam biçimini ifade etmekte kullanılıyor.

Ogg veri akış biçimi, çoklu ortam içeriklerinin kodlanması ve çözümlenmesini amaçlayan, ücretsiz olarak erişilebilen ve ücretsiz olarak yazılımlarda oynatılabilen aynı zamanda pek çok aracı içermekte olan büyük çaplı bir girişimin çerçevesini oluşturmak üzere geliştirilmiştir.

Biçim, "Ogg Sayfası" olarak isimlendirilen veri parçalarından oluşmaktadır. Her bir sayfa, "OggS" karakteriyle başlamakta, bu da dosyanın Ogg biçiminde olduğunu ifade etmektedir.

Sayfa başlığında yer alan "seri numarası" ve "sayfa numarası", veri akışını oluşturan sayfa dizilimlerini belirler. Birçok veri akışı, her veri akışının içerilen bilginin konumlannma süresine göre dosya içerisinde düzenlendiği şekilde çoklanabilir. Veri akışları, sırayla çözümlenmeleri amacıyla "zincirleme" adı verilen bir süreçle var olan dosyalara da eklenebilir.

Aktarım düzeni veya eşzamanlama kodu, Ogg dosyalarını çözümlerken eşzamanlama yapılmasını sağlan bir sihirli sayıdır. Her bir sayfa, dört karakterden oluşan bir ASCII dizilimş ile başlar; "OggS". Bu, verinin kaybedildiği veya bozulduğu durumlarda çözümleyicinin yeniden eşzamanlama yapmasına yardımcı olur ve sayfa yapısı oluşturulmaya başlamadan önce bir tutarlılık kontrolü işlevi görür.

Granül konumu, Ogg dosyalarında zaman işaretidir. Anlamı, kodek türüne bağlı olarak değişen soyut bir değerdir. Örneğin, kare sayısını, örneklem sayısını veya daha karmaşık bir şemayı ifade edebilir.

Bu alan, bir sayfanın belirli bir lojik veri akışına ait olduğunu belirten seri numarasıdır. Bir dosya içerisindeki her bir lojik veri akışı, farklı bir değer sahiptir ve bu alan, sayfaların doğru çözücüye ulaştırılmasını uygular. Tipik bir Vorbis veya Theora dosyasında, bir akış ses (Vorbis), bir akış görüntü (Theora) olarak gerçekleşir.

Bu alan, her bir lojik veri akışı için tekdüze bir biçimde artan bir alandır. İlk sayfa 0, sonraki sayfa 1, vb... Bu, veri kaybedildiğinde tespit edilebilmesini amaçlayan bir uygulamadır.

Bu alan, tüm sayfadaki (sayfa başlığı da dahil) verinin döngüsel artıklık denetimi sağlamasını yapar. Veri oluşuturulduğundan bu yana herhangi bir bozulma gerçekleşip gerçekleşmediğinin doğrulanması görevini görür. Bu sağlama işlemini geçemeyen sayfalar çıkarılır. Sağlama toplamı, 0x04C11DB7 polinom değeri kullanılarak oluşturulur.

Bu alan, bir sayfada yer alan segmentlerin sayısını gösterir. Aynı zamanda, bu alandan sonra gelen segment tablosunda kaç byte olduğunu da içerir. Herhangi bir sayfada, en fazla 255 segment olabilir.

Segment tablosu, her biri sayfa içerisinde karşılığı olan segmentlerin uzunluğunu gösteren 8 bitlik değerler dizinidir. Segment sayısı, bir önceki Sayfa Segmentleri alanından elde edilir. Her bir segment 0 ile 255 byte arasıdır.

Segment yapısı; segmentlerin çözümleyici için anlamlı bir veri birimi olan bir paket içerisinde gruplanabilmesi için imkan sağlar. Segment uzunluğu 255 olarak ifade edildiğinde, bir sonraki segmentin mevcut segmente iliştirilmesi ve aynı paket içerisinde bunun devamı olduğu anlamına gelir. Segment uzunluğu 0-254 arasında olduğunda, bu paket içerisindeki son segment olduğunu belirtir. Bir paketin uzunluğu 255'in katlarıysa, son segmentin değeri 0 olacaktır.

Son paketin bir sonraki sayfada devam ettiği durumlarda son segment değeri 255 olur; devamsallık işaretlemesi bir sonraki sayfada önceki sayfanın devamı olduğu şeklinde yer alır.

Vorbis açımlaması, ilkin Ogg Vorbis ile kullanılmak üzere oluşturulan bir temel-düzey metaveri biçimidir. O zamandan bu yana, Theora, Speex, FLAC ve Opus gibi diğer Xiph.org Ogg sarma (kapsülleme) kodeklerinin belirtiminde de kullanılmıştır. VorbisComment (Vorbis açımlaması) Xiph.org kodeklerine metaveri yerleştirmek için en yaygın olarak desteklenen, en basit yöntemdir.

VorbisComment içerisinde bir veya daha fazla METAVERİ_BLOK_RESMİ=… önizleme görsel veya albüm kapağı olarak Base64-kodlamalı değerlere sahiptir. Diğer bir deyişle, FLAC önizleme ve albüm kapağı resimlerini ikili bloklar halinde&mdash küçük-endian METAVERİ_BLOK_VORBIS_AÇIMLAMASI olarak saklar.

Ogg projesi, 1993 yılında daha büyük bir proje içerisinde basit bir ses dosyası sıkıştırma paketi olarak başladı. Yazılım, ilk olarak Squish olarak adlandırıldı, ancak var olan bir tescilli marka olduğu için OggSquish olarak yeniden adlandırıldı. Bu isim, sonradan tüm Ogg projesini ifade eder hale geldi. Xiphophorus OggSquish 1997'de "hem modern ses uygulamaları için sıkıştırılmış, esnek bir ses dosyası oluşturmak, hem de yaygın olan, mevcut tüm modern platformlarda oynatılabilecek bir ses biçimi oluşturma girişimi" olarak tanımlandı. 2000 yılında bu tanım, "birbiriyle bağlantılı çoklu-ortam ve sinyal işleme projeler grubu" olarak yapılıyordu. Yine aynı yılda, iki proje, planlı yayınlama için geliştirilme aşamasındaydı: Ogg Vorbis biçimi ve libvorbis - Vorbis'in referans uygulaması. Aynı zamanda, gelecekte görüntü ve kayıpsız ses kodlamaları üzerinde de araştırmalar yapılıyordu. 2011 yılında OggSquish Ogg olarak yeniden adlandırıldı ve "aynı şemsiye altında birbiriyle bağlantılı çoklu-ortam ve sinyal işleme projeleri" olarak tanımlandı. Ogg, daha geniş kapsamlı Xiph.org çoklu ortam projesinde bir dosya uzantısını ifade eder hale geldi. Squish, Ogg kodeklerinden birine ismini verdi. 2009 yılında, Ogg "Xiph.org'un çoklu-ortam kodekleri için çoklu-ortam kapsayıcı biçimi, yerli dosya ve veri akışı türü" olarak tanımlandı.

Mayıs 2003'te bu biçim ile ilgili iki adet yorumlar için talep yayınlandı. Ogg veri akışı bilgilendirici olarak sınıflandırılan RFC 3533'te tanımlanırken internet içerik türü (application/ogg) RFC3534'te tanımlandı. Eylül 2008'de RFC 3534'ün yerini RFC 5334 aldı; (video/ogg), (audio/ogg) ve .ogx, .ogv, .oga, .spx dosya uzantıları eklendi.

Ogg için Resmi görüntü desteği olmaması yüzünden 2002'de Microsoft DirectShow'un Ogg-tabanlı bir sarıcıya uyarlanması ile görüntü gömmeye izin veren OGM dosya biçimi geliştirildi. OGM, ilkin yalnızca kapalı-kaynak kodlu Windows araçları tarafından destekleniyordu, ancak kod tabanı zamanla açık hale getirildi. Daha sonra, görüntü (ve altyazı) desteği resmi olarak Ogg için sağlandı, ancak OGM ile uyumsuzdu. Bağımsız olarak Matroska kapsayıcı biçimi olgunluğa ulaştı, böylece Orbis ses ve ilişiksiz görüntü kodeklerini birleştirmeyi amaçlayan kişiler için alternatif oluşturdu. Bu sebeple, OGM artık desteklenmemekte, geliştirilmemekte ve resmi olarak Xiph.org tarafından resmi olarak sonlandırılmıştır. Bugün, Ogg biçimindeki görüntüler .ogv dosya uzantısı olarak bulunmaktadır.

Ogg, hareketli görüntü uzmanları birliği standartlarının kapsamına hiçbir zaman yaklaşamamış olsa da, 2006 itibarı ile özgür içerik kodlamasına yaygın bir biçimde (örneğin Özgür Müzik, kullanılmaktadır ve pek çok dijital ses dosya oynatıcısı tarafından desteklenmeye başlamıştır. Ogg biçimini destekleyen oyun motorları olarak Doom 3, Unreal Tournament 2004, Halo: Combat Evolved, Jets n guns, Mafia: The City of Lost Heaven, Myst IV: Revelation, StepMania, Serious Sam: The Second Encounter, Lineage 2, Vendetta Online, Battlefield 2, ve Grand Theft Auto motorları ile Java-tabanlı Minecraft ses dosyaları öne çıkmaktadır. Daha yaygın olan Vorbis kodek için pek çok yazılımda yerleşik destek mevcutken neredeyse diğer tüm yazılımlarda desteklenmesini sağlayan ek paketler vardır.

Free Software Foundation 16 Mayıs 2007'de, "tescilli MP3'ün karşısında etik, yasal ve teknik olarak daha üstün bir alternatif" olarak Vorbis kullanımının artırılmasını teşvik eden bir kampanya başlattı. İnsanların websitele veya bloglarında bir düğme ekleyerek kampanyaya destek verebileceği imkanlar sağlandı. FSF'nin tavsiye ettiği Ogg oynatıcısını (VLC Media Player) indirmek veya kullanmak istemeyenler için Windows ve Mac OS X üzerinde QuickTime-tabanlı uygulamalar için Xiph.org Vakfı resmi bir kodek geliştirdi; Windows kullanıcıları Windows Media Player için Ogg kodeği yükleyebilirken Mac OS kullancıları iTunes oynatıcısı veya iMovies uygulamaları için benzer eklentilere erişebilir.

2009 itibarı ile Ogg kapsayıcısı, Theora ve Vorbis kullanımı sayesinde, Firefox 3.5 ağ tarayıcısının HTML 5 <video> ve <audio> öğeleri uygulaması için tek kapsayıcı oldu.

3 Mart 2010'da FFmpeg geliştiricisinin teknik bir analizi, Ogg'un çoklu-ortam kapsayıcı biçimi olarak genel-amaçlı yetkinliklerini eleştirdi. Ogg'un oluşturucusu, daha sonra bu iddiaları cevaplandıran kendi makalesini yayınladı.

Ogg, sadece bir kapsayıcı biçimidir. Kodek tarafından kodlanan gerçek ses veya görüntü, Ogg kapsayıcısı içine yerleştirilir. Ogg kapsayıcıları, farklı kodekler tarafından akışlar içerebilir; örneğin bir görüntü dosyası, hem ses kodeği tarafından hem de görüntü kodeği tarafından kodlanmış verilerden oluşur.

Theora: On2 şirketinin VP3 formatını temel alan Theora MPEG-4, RealVideo veya Windows Media Video görüntü biçimi ile rekabet etmek (örneğin, DivX ya da Xvid ile kodlanan) için geliştirilmiştir.

Tarkin: 2000, 2001 ve 2002 yıllarında deneysel olarak oluşturulan ve artık kullanılmayan bir kodektir. Theora'nın görüntü kodeği olarak ana odak haline gelmesi (Ağustos 2002) ile sonlandırılmıştır.

Ogg ses ortamı, .oga, .ogg ve .spx uzantılarına sahip bir IANA ortam türü olarak tescillenmiştir. Ogg görüntü ortam türü olan .ogv dosya uzantısının alt kümesi kabul edilir. Diğer Ogg uygulamalarının kullandığı .ogx görüntü/ogg türünün üst kümesi addedilir.