-
GAMEPOD.hu
Új hozzászólás Aktív témák
-
#25954560
törölt tag
hali,
vedett modu/16 bites programozasrol valaki? bootolasi sorrendet szeretnek linux alatt valtoztatni, BIOS-ba lepes nem johet szoba. interfesz elmeletileg letezik a dologhoz, de hogy kezdjen hozza az ember fia?
koszi,
&rew -
emitter
őstag
válasz emitter #1599 üzenetére
van ez a fv:
/* Load a music file */
Mix_Music *myMix_LoadMUS(const char *file)
{
FILE *fp;
char *ext;
Uint8 magic[5], moremagic[9];
Mix_Music *music;
/* Figure out what kind of file this is */
fp = fopen(file, ''rb'');
if ( (fp == NULL) || !fread(magic, 4, 1, fp) ) {
if ( fp != NULL ) {
fclose(fp);
}
Mix_SetError(''Couldn't read from '%s''', file);
return(NULL);
}
if (!fread(moremagic, 8, 1, fp)) {
Mix_SetError(''Couldn't read from '%s''', file);
return(NULL);
}
magic[4] = '\0';
moremagic[8] = '\0';
fclose(fp);
/* Figure out the file extension, so we can determine the type */
ext = strrchr(file, '.');
if ( ext ) ++ext; /* skip the dot in the extension */
/* Allocate memory for the music structure */
music = (Mix_Music *)malloc(sizeof(Mix_Music));
if ( music == NULL ) {
Mix_SetError(''Out of memory'');
return(NULL);
}
music->error = 0;
#ifdef CMD_MUSIC
if ( music_cmd ) {
music->type = MUS_CMD;
music->data.cmd = MusicCMD_LoadSong(music_cmd, file);
if ( music->data.cmd == NULL ) {
music->error = 1;
}
} else
#endif
#ifdef WAV_MUSIC
/* WAVE files have the magic four bytes ''RIFF''
AIFF files have the magic 12 bytes ''FORM'' XXXX ''AIFF''
*/
if ( (ext && MIX_string_equals(ext, ''WAV'')) ||
((strcmp((char *)magic, ''RIFF'') == 0) && (strcmp((char *)(moremagic+4), ''WAVE'') == 0)) ||
(strcmp((char *)magic, ''FORM'') == 0) ) {
music->type = MUS_WAV;
music->data.wave = WAVStream_LoadSong(file, (char *)magic);
if ( music->data.wave == NULL ) {
Mix_SetError(''Unable to load WAV file'');
music->error = 1;
}
} else
#endif
#ifdef MID_MUSIC
/* MIDI files have the magic four bytes ''MThd'' */
if ( (ext && MIX_string_equals(ext, ''MID'')) ||
(ext && MIX_string_equals(ext, ''MIDI'')) ||
strcmp((char *)magic, ''MThd'') == 0 ||
( strcmp((char *)magic, ''RIFF'') == 0 &&
strcmp((char *)(moremagic+4), ''RMID'') == 0 ) ) {
music->type = MUS_MID;
#ifdef USE_NATIVE_MIDI
if ( native_midi_ok ) {
music->data.nativemidi = native_midi_loadsong((char *)file);
if ( music->data.nativemidi == NULL ) {
Mix_SetError(''%s'', native_midi_error());
music->error = 1;
}
} MIDI_ELSE
#endif
#ifdef USE_TIMIDITY_MIDI
if ( timidity_ok ) {
music->data.midi = Timidity_LoadSong((char *)file);
if ( music->data.midi == NULL ) {
Mix_SetError(''%s'', Timidity_Error());
music->error = 1;
}
} else {
Mix_SetError(''%s'', Timidity_Error());
music->error = 1;
}
#endif
} else
#endif
#ifdef OGG_MUSIC
/* Ogg Vorbis files have the magic four bytes ''OggS'' */
if ( (ext && MIX_string_equals(ext, ''OGG'')) ||
strcmp((char *)magic, ''OggS'') == 0 ) {
music->type = MUS_OGG;
music->data.ogg = OGG_new(file);
if ( music->data.ogg == NULL ) {
music->error = 1;
}
} else
#endif
#ifdef MP3_MUSIC
if ( (ext && MIX_string_equals(ext, ''MPG'')) ||
(ext && MIX_string_equals(ext, ''MP3'')) ||
(ext && MIX_string_equals(ext, ''MPEG'')) ||
magic[0]==0xFF && (magic[1]&0xF0)==0xF0) {
SMPEG_Info info;
music->type = MUS_MP3;
music->data.mp3 = SMPEG_new(file, &info, 0);
if(!info.has_audio){
Mix_SetError(''MPEG file does not have any audio stream.'');
music->error = 1;
}else{
SMPEG_actualSpec(music->data.mp3, &used_mixer);
}
} else
#endif
#if defined(MOD_MUSIC) || defined(LIBMIKMOD_MUSIC)
if ( 1 ) {
music->type = MUS_MOD;
music->data.module = MikMod_LoadSong((char *)file, 64);
if ( music->data.module == NULL ) {
Mix_SetError(''%s'', MikMod_strerror(MikMod_errno));
music->error = 1;
} else {
/* Stop implicit looping, fade out and other flags. */
music->data.module->extspd = 1;
music->data.module->panflag = 1;
music->data.module->wrap = 0;
music->data.module->loop = 0;
#if 0 /* Don't set fade out by default - unfortunately there's no real way
to query the status of the song or set trigger actions. Hum. */
music->data.module->fadeout = 1;
#endif
}
} else
#endif
{
Mix_SetError(''Unrecognized music format'');
music->error = 1;
}
if ( music->error ) {
free(music);
music = NULL;
}
return(music);
}
---------------
a végén halálozik el:
...
Mix_SetError(''Unrecognized music format'');
music->error = 1;
}
if ( music->error ) {
free(music);
music = NULL;
}
return(music);
}
szóval errort-t 1-re állítja, és ezért NULL-pointerrel tér vissza.. a kérdésem, hogy az #ifdef és #endif tagok mit csinálnak pontosan, kellenek ezek egyáltalán bele?
vagy van olyan elsőre szemet szúró dolog, ami miatt ez történik? -
#25954560
törölt tag
válasz Jester01 #1603 üzenetére
nem eleg az nvram irkalasa sajnos, mert akkor siman cat
dosemuig ertem, csak tudod a lustasag hatha csinalt mar ilyet vki. levelegtem az alaplap gyartojaval (specko cpci kartya) es ok mondtak h hasznaljam azt a bbs interface-t, kuldtek is egy dos-os .exe-t h muxik elotte persze tudtak jol h linux ala kellene, szal most ki vagyok veluk segitve. -
mszilard
tag
Sziasztok!
Bajban vagyok: szükségem lenne objektum orientált modellezéssel kapcsolatos 5-8 oldalas kis házidolgozatra két rokonom részére. Valami gyakorlati leírás. TEhát nem az elmélet. Megkértek és semmit nem értek hozzá, de azért próbálkozok itt!
Tudom hogy csinálja meg mindenki maga, de hátha valaki megszám!
Köszönöm előre is! -
Miracle
senior tag
Sziasztok... de reg jartam itt
Most azert jottem, mert szuksegem lenne valamilyen normalis, viszonylag ujabb CORBA tutorialra/konyvre, es az sem baj ha ez specifikusan az ORBIX implementacioval foglalkozik. tud valaki ilyet adni nekem?értelmező késziszótár :: rekurzió --> lásd : rekurzió
-
csulok0000
csendes tag
Hi
van egy oldalam fórummal együt oda is írhattok
amúgy az érdekelne hogy Delphi rendszerben egy tlabelre kattintva hogy tudom behozni a windows alapértelmezet böngészőjét előre meghatározott címmel.
kösz!!!
www.kcs.dy.hu"Mondottam ember: Küzdj és bízva bízzál!"
-
nagyferi
csendes tag
Hello, a nav4all kijott egy ingyenes navigacios programmal mobilokra amelyik java alapokon mukodik es semmi koze symbian rendszerekhez. En nem ertek ezekhez nagyon, de ez valoban lehetseges? Eddog azt hittem hogy mobilra navigacio = symbian. Ha nincs symbian nincs navigacio?
-
v@n
csendes tag
Sziasztok!
Segítség kellene, hogy c-ben hogyan lehet az egérkezelést legegyszerübb módon megcsinálni...Ha valaki tud segíteni küldjön üzit a privbe.
Elöre is köszönömpepe - lyukasora.hu, aegisalapitvany.hu, sit-e.hu
-
emitter
őstag
miért van az, hogy ez a kód wav-lejátszás közben folyamatosan szaggat??
------
bufsize=44100;
buf=(short*)malloc(bufsize*sizeof(short));
while(!feof(handle)){
i = fread(buf, 1, bufsize, handle);
if(i < 0){
printf(''\nHiba fajlolvasas kozben!\n'');
exit(1);
}
printf(''\ni=%d\n'',i);
if((err = snd_pcm_writei (playback_handle, buf, bufsize)) < 0) {
fprintf (stderr, ''\nWrite to audio interface failed (%s)\n'',
snd_strerror (err));
exit (1);
}
}
-------
az, csak nem lehet az oka, hogy snd_pcm_writei() előtt van egy fread meg 2 if...
szóval mitől
ha kell, a teljes kód [link] -
-
Sytex
tag
Előzmények itt : [link]
Módisítottam erre:
srand(time(NULL));
for(i=0;i<5;i++){
db=rand()/3000;
}
ugy néz ki most jó.
Ezt a RAND_MAX-ot én is olvastam, de ha megpróbálok neki értéket adni akkor a fordító ezt adja: the left hand of the assignment can't be assigned to
Egyéb ötlet?
MOD: a kódban a db után vagy egy [ i ] csak a forum kiszedi.
[Szerkesztve]
[Szerkesztve]- Kártyával lehet fizetni? - Persze. - Egy ászból és királyból tud visszaadni?
-
Sytex
tag
Illetve találtam még egy ''bug''-ot ebben a megoldásban.
A program egyböl irja a tömb adatait amint le van generálva, ezért látom a változást. Ha kb egy másodpercen belül nyomom a generálás gombját akkor ugyanazt dobja vissza, nem változik semmi...- Kártyával lehet fizetni? - Persze. - Egy ászból és királyból tud visszaadni?
-
Sytex
tag
válasz emitter #1621 üzenetére
Köszi közben olvasgattam és rájöttem hogy db[ i]=rand()%16 kell nekem (0 és 15 között kellenek nekem számok).
De arra még mindig nem jövök rá, hogy ha 1 mp-en belül generáltatok újra akkor miért nem változik a tömböm, miért adja ugyanazokat az eredményeket...- Kártyával lehet fizetni? - Persze. - Egy ászból és királyból tud visszaadni?
-
Jester01
veterán
Azért, mert a srand(time(NULL)) egy másodpercen belül ugyanarra az értékre inicializálja a véletlenszám generátort. Ha a progid indíthatják egy másodpercen belül többször, akkor más kezdőértéket kell keresni. Egy futás alatt viszont csak egyszer szabad meghívni a srandot. Tehát nem minden alkalommal amikor véletlenszámok kellenek.
MOD: ja és a leírás kifejezetten nem ajánlja az alsó bitek használatát (vagyis a maradékképzést)
[Szerkesztve]Jester
-
-
Sytex
tag
My next question:
Melyik az a parancs C-ben amivel meg lehet szakitani a program futását?- Kártyával lehet fizetni? - Persze. - Egy ászból és királyból tud visszaadni?
-
Sytex
tag
Egyik se jó
Közben felmerült még egy kérdés:
Mi a hiba a következőben:
af = fopen(''uditaut.dat'', ''rt'');
fscanf(af,''%d\n'',db[1]);
Ilyen hibaüzenettel száll el:
Exception 0xc0000005
Segment violation
Address 0x407047- Kártyával lehet fizetni? - Persze. - Egy ászból és királyból tud visszaadni?
-
Sytex
tag
válasz Jester01 #1630 üzenetére
Tényleg. Csak nem exit hanem exit(0)
A file-os dolog-nál pedig nekem az rémlett hogy scanf-nál ha szöveget vagy tömböt olvasunk akkor nem kell a &. Ezer köszi.
Asszem ezzel kihoztam a maximumot a házimból.- Kártyával lehet fizetni? - Persze. - Egy ászból és királyból tud visszaadni?
-
Jester01
veterán
Igen, ez a tömb-pointer ekvivalencia miatt van. Jelen esetben írhattad volna db + 1 alakban is, csak ez kevésbé olvasható. Az a lényeg, hogy a második elemre mutató pointert kell átadni. Ezt vagy az & operátorral vagy pointer aritmetikával lehet. Egy elem olvasásakor az & operátor jobban kifejezi mi történik, több elem olvasásakor viszont éppen a pointer aritmetika a kifejezõbb (szvsz). A fordítónak persze édesmindegy.
Jester
-
emitter
őstag
ha egy függvényen belül megnyitok egy fájl, majd a handle-jét átadom a főproginak paraméterben, az miért nem működik? hibát ad.. ez itten:
class wavInfo{
public:
...
FILE *handle;
...
};
int loadWav(char* filename, wavInfo &wi){
...
handle = fopen(filename, ''r'');
...
wi.handle = handle;
...
}
main(){
...
wavInfo *wi;
wi = new wavInfo();
loadWav(argv[1], *wi); //ez okésan lefut
cout << ''\nFilepos: '' << ftell(wi->handle); //majd erre már szegmenshibát dob
...
}
------------
lehet, h egy fv visszatérésekor bezáródik a fájl? -
Jester01
veterán
válasz emitter #1634 üzenetére
Icipicit elrontottad. Elõször is betettél egy cout << ''\nloadWav OK\n''; sort a saját megtévesztésedre, mivel nem ellenõrzöd a visszatérési értéket és így akkor is OK-ot ír ha nem is ... Másrészt a loadWav függvényben kevered az exit és a return használatát, bizonyos hibákra kilépsz másokra pedig 0-t adsz vissza.
Ugyanakkor van egy cout << ''\nftell: '' << ftell(handle); sor a loadWav végén ami nem fut le, ebbõl észrevehetted volna, hogy idõ elõtt visszatér a függvény.Jester
-
STibi_
csendes tag
válasz Jester01 #1602 üzenetére
Kösz az ötletet, én is azt nézegettem lelkesen, hogy van-e valami használható kapcsolója a netstatnak. Mint ahogy írtam az volt a lényeg, hogy ne kelljen a (másik) monitort bámulni folyamatosan, hogy fent van-e valaki... Körbenéztem a neten, elég halott ötletek voltak, úgyhogy úgy csináltam meg, winexec-el kiküldöm 10 másodpercenként a netstat statisztikáját egy fájlba és azt nézegetem a progival. Így felcsatlakozásonként bead egy légvédelmi sziréna hangot. Ökör egy megoldás, de a célnak megfelel.
Jó humorérzéke annak van, aki röhög az én szövegemen.
-
ALI_G
veterán
válasz emitter #1634 üzenetére
Látom wav-val szórakázol
Nekem is kellene tudni, és nemtom jól értettem-e meg a leírását. 1 dolog amiben nem vagyok biztos, mégpedig az mitől függ, hogy (kizárólag csak stereo-t nézzük) a bal és jobb csatorna hány bájtonként váltják egymást az adat mezőben? esetleg egy példát is mellékelhetsz -
emitter
őstag
válasz Jester01 #1635 üzenetére
köszi az észrevételeket, kijavítottam
viszont tényleg nemtom, h mitől nem bírja nromálisan átadni a FILE* mutatót, szal inkább azt csináltam, h bezárom a fájlt a fv végén, majd a main-ben újra megnyitom és seekelek oda ahol a stream kezdődik
most másfajta hibába ütköztem, de először megpróbálom kisakkozni a helyét..
ALI_G: nem tudom, én nem mentem bele ennyire mélyen
innen vettem a chunk-infókat, sztem megtalálod benne ami neked kell
[link] -
ALI_G
veterán
válasz emitter #1638 üzenetére
igen, ezt én is ismerem, bár ennél van jobb is, ami viszont nincs ilyen részletes. [link] én ez alapján próbáltam szétbontani fejben. Van 1 példa is. Az a nagy kérdés most, hogy mitől függ hány byte-onként váltakoznak a csatornák adatai. Le van írva, de akárhányszor kibogozom, más jön ki... tuti én vok a béna.
-
emitter
őstag
hát én ebből azt szűrtem le, hogy van a ''data'' string a 40-es offsettől, majd 4 bájt SubChunkSize (nemtom miez), majd így a 48.ik offset-től kezdődik az igazi stream
következőképpen:
mintánként 2 bájt bal-, majd 2 bájt jobb csatorna (egy hexa-kód (szám, betű) 4bit - tehát ha egy minta 3c f2 24 f2, akkor ebből 2 bájt (3c f2) a bal csati, és 2 bájt ( 24 f2) a jobb csati)
nem műxik így? azt nem tudom, h ez a szabványos wav, de elvileg annak kell lenni, mert nem írták, h nem így lenne
[Szerkesztve] -
emitter
őstag
az hogyan lehet, hogy én egy list<short>-ba bele tudok gyömöszölni pl 4096 bájtot?
így csinálom:
...
list<short> myList;
short *buf;
...
bufsize=4096;
i = fread(buf, 1, bufsize, handle);
myList.push_back(*buf);
*buf=myList.front();
...
snd_pcm_writei (playback_handle, buf, tmp);
...
és jól lejátsza a cuccost szóval ezt hogyan? -
Jester01
veterán
-
emitter
őstag
válasz Jester01 #1643 üzenetére
hehe télleg!
akkor azt hogyan oldjam meg, hogy a listába 4096bájt méretű elemeket pakoljak? merthogy nekem nem csak egy elem első bájtját kell átküldenem majd a hálózaton hanem mindet
vagy nem is kell 4096, de mondjuk 256 azért kellene..
Tyrael: nem tudom, nem lenne-e túl lassú tőle a dolog de lehet h kipróbálom
[Szerkesztve] -
emitter
őstag
válasz emitter #1646 üzenetére
most még annyit kéne alakítani rajta, hogy legyen egy olyan pufferem, aminek a szintjét nem engedem pl. 30% alá menni (ez jó lenne a hálózati sebesség-ingadozások ellen)
szóval ebbe a nagy-nagy pufferba kéne pakolni sok-sok ilyen listát.. namost ezt hogyan
[Szerkesztve] -
ALI_G
veterán
gyors kéne vmi eccerű algoritmus wav fájl 2 mono csatornára való szétbontására. Nem baj ha nem vmi jó, csak elég ha vmi kezdeményezés. Sajna már nincs időm megcsinálni, elbasztam másra az időt. Szégyenlem is magam, hogy ilyet kell kérjem, mert mindenki csinálja meg maga.
Megköszönném ha vki segítene. Ja, occam-ba kell, de ha C-ben v java-ban jön a kód az is jó. Átírom.
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Kínai, és egyéb olcsó órák topikja
- Anglia - élmények, tapasztalatok
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Óra topik
- Windows 11
- Freemail
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Gmail
- Elektromos rásegítésű kerékpárok
- További aktív témák...