tr-demoscene

the scene => coding => pc => Konuyu başlatan: paradox - 14.02.2011 07:41:09

Başlık: NZPlayer
Gönderen: paradox - 14.02.2011 07:41:09
Bilindik media dosyalarını oynatan Media Player programı...NZPlayer...
Extra özelliği ise bunları D3D ekranında 3D ortamda yapması..
Bir kaç adette bilindik PostProcess efekleri ekledim..
Araçlar : DShow (vmr) , d3d9sprites ..
Alt yazı problemini ise bi aralar düzelticem:)..

Download (http://hotfile.com/dl/104540049/7c9dcb6/NZPlayer.rar.html)


  (http://hotfile.com/dl/104540049/7c9dcb6/NZPlayer.rar.html)
Başlık: NZPlayer
Gönderen: endo - 14.02.2011 10:13:20
eline saglik, henuz cok baslarda saniyorum o yuzden simdiden su da olsun bu da olsun demeyim, aklinda bi cok sey vardir zaten. mouse-wheel ile zoom in/out guzel olmus ama.
Başlık: NZPlayer
Gönderen: skate - 14.02.2011 11:04:37
çok güzel olmuş. kod açısından değil de bu sefer arayüz ile ilgili bir önerim olacak. alt bölümdeki kablolar gibi noktalarda bir grafikerin dokunuşu güzel olabilir. kablolar farklı farklı ama iyi seçilmiş renklerde ve formlarda olsa görüntü birden acayip değişir. :)
Başlık: NZPlayer
Gönderen: paradox - 19.02.2011 18:09:44
Grafik olayı herzaman sıkıntı zatende şimdi benim 2 sorum olucak.

1- ShowCursor(enable). olayında istediğim gibi direk cursor çıkıp kaybolmuyo komutu aktif edince..
mesela:
ShowCursor(true) diyorum cursor çıkmıyo direk..biraz bekliyo..kaybedincede aynı çey oluyo cursoru..

2-Alt yazı okuma algoritması lazım..

1
00:00:01,072 --> 00:00:06,006
Çeviri: Otekesa

2
00:02:25,672 --> 00:02:29,859
- Bay Man, yer burası.
- Sana da zahmet oldu.

3
00:02:30,388 --> 00:02:32,199
Ne zahmeti.


şu şekilde bi alt yazı var mesela..
Burdaki verileri nası okutabilirim.?
Biraz bişeyler denedimde parçaların ilk başındaki numaralar işi bozuyo..
Başlık: NZPlayer
Gönderen: skate - 19.02.2011 18:59:50
ShowCursor'dan dönen değeri handle ediyor musun? ShowCursor(true) çağırdığında display counter 1 artar. ShowCursor(false) ile bir azalır. display counter fonksiyondan dönen değerdir. Eğer 2 kez ShowCursor(true), sonrasında 1 kez ShowCursor(false) çağırırsan cursor yine visible olur. Yani garantili yöntem;
 
// Hide Cursor
int retVal;
do {
   retVal = ShowCursor(false);
} while(retVal >= 0);
 
// Show Cursor
int retVal;
do {
   retVal = ShowCursor(true);
} while(retVal < 0);
 
olmalıdır.
Başlık: NZPlayer
Gönderen: skate - 19.02.2011 19:06:19
Diğer sorunu cevaplamamışım. 2 yöntem var
 
1) Regular Expression (ben olsam bunu kullanırdım)
2) Manuel parsing
 
1. yöntem için hazır libraryler var. .NET kullanıyorsan zaten içinde geliyor. Kullanmıyorsan Boost'un güzel bir Regex librarysi var. Başka libraryler de var. Kolaylıkla uygun bir pattern oluşturup halledebilirsin.
 
2. yöntemde ise dosyayı satır satır okuyacaksın. Benim anladığım kadarıyla bu subtitle tipi için
 
struct subtitleItem {
   int id;
   time_t startTime;
   time_t endTime;
   char* text;
}
 
gibi bir yapı yeterli. Elbette ki bunlardan bir collection/linked list tarzı birşey oluşturman lazım. Parsing işlemi ise 1, 2, 3, ... şeklinde giden id satırları olduğu için oldukça basit.
 
1) ilk ID değerini 1 olarak set et.
2) text olarak ID'ye denk gelen satırı bul
3) sonraki satırı start/end time olarak parse et (oldukça basit bir formatı var, kolayca parse edersin)
4) sonraki satırdan itibaren boş satır (ya da peş peşe iki alt satır karakteri \r\n\r\n (ya da linux/mac formatları \r\r - \n\n) görene kadarki tüm satırları "text" olarak oku.
5) okunan bildileri subtitleItem structure'ına gir ve collection'a ekle.
6) ID'yi bir arttır ve 2. adıma geri dön.
 
Umarım açıklayıcı olmuştur.
Başlık: NZPlayer
Gönderen: paradox - 23.02.2011 22:21:21
Sağol skate , 2.yola benzer bi şekilde hallettim..
Fırsatını  buluncada Regex kütüphanesine bi bakıcam..merak ettim...