- Sony MILC fényképezőgépcsalád
- Nem indul és mi a baja a gépemnek topik
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Milyen videókártyát?
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- HiFi műszaki szemmel - sztereó hangrendszerek
- Így nézz tévét 2025-ben: új ajánlások, régi szabályok
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Milyen monitort vegyek?
- Fájdalmasan gyenge kijelzőt válaszott a Switch 2-höz a Nintendo
-
PROHARDVER!
Új hozzászólás Aktív témák
-
Jester01
veterán
-
Forest_roby
őstag
válasz
emitter #2021 üzenetére
void
on_quit1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
g_message(''EXIT\n'');
gtk_exit(EXIT_SUCCESS);
}
ez működik 100%-osan! Ez a fv, a menu/kilép gomb lenyomására fut le és kilép a progiból!
nekem az kellene, hogy ha az ablakkereten lévő x -re kattintok, akkor is befejeződjön a program, mert ilyenkor bezárja az ablakot, de a program fut tovább......
remélem így már érthető a probléma! -
Forest_roby
őstag
válasz
emitter #2019 üzenetére
nem tudom mire gondolsz....
a baj az, hogy nem tudok arra a gombra hivatkozni.
-------All!----//lenne még kérdésem//---------
ugyebár szövegszerkesztőt kell csinálni és a tanár nem tudja normálisan elmagyarázni, hogy mit-hogyan kell csinálni, viszont elvárja, hogy hipp-hopp megcsináljuk. Szóval remélem még nem unjátok a hülye kérdéseimet.
ujabb:
file megnyitás - file tartalmát be kell tölteni a textview -ba erre van egy tökéletesen működő fv, de ugy néz ki nem tudom jól meghívni....
a fv:
int load_file_to_textview(GtkWidget *parent, GtkTextView *text_view, char *filename){
....
}
és az open gomb:
void
on_open1_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
GtkWidget *window;
GtkWidget *file_chooser;
GtkWidget *target;
GtkTextBuffer *buffer;
gchar *file_name;
gint response;
window = lookup_widget(GTK_WIDGET(menuitem), ''myeditor_window'');
target = lookup_widget(GTK_WIDGET(menuitem), ''myeditor_textview'');
buffer = gtk_text_view_get_buffer( GTK_TEXT_VIEW(target) );
file_chooser = gtk_file_chooser_dialog_new(''Open file'',
GTK_WINDOW(window),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_OPEN, GTK_RESPONSE_OK,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
NULL);
response = gtk_dialog_run(GTK_DIALOG(file_chooser));
if (response == GTK_RESPONSE_OK){
file_name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(file_chooser));
load_file_to_textview(window, buffer, file_name);
}else{
gtk_widget_destroy(file_chooser);
return;
}
if (file_name != NULL)
g_free(file_name);
gtk_widget_destroy(file_chooser);
}
a ''fv''-ben definiált hibát dob ki:
A fájl nem nyitható meg olvasásra: ’/home/forest/Desktop/proba.txt’: Hibás fájl leíró
Na szóval ez lenne az amivel az elmult pár órámat töltöttem.....
Köszi az összes segítséget!
[Szerkesztve] -
Muton
addikt
válasz
emitter #1757 üzenetére
köszi
hát a 'lekérdezés' a char*Szamitogep::KIPtip(void){return(PTip);} akart lenni. a feladat pontos szövege: '' ... adja meg a processzortipus (PTip) adattag megadására és lekérdezésére alkalmas tagfüggvényeket úgy, hogy a lekérdező tagfüggvény definiálásánál a scope (:operátorra is szükség legyen...''
a megadási pedig a 'char* KIPtip(void);' -
emitter
őstag
válasz
emitter #1740 üzenetére
#include <iostream>
using namespace std;
int main()
{
int age;
cout<< ''How old are you?'';
cin>> age;
cin.ignore();
if ( 0 < age && age < 18 ){
cout<< ''You are young.'';
}
else if ( 19 < age && age < 40 ){
cout<< ''The life is still in front of you'';
}
else if ( 41 < age && age < 70 ){
cout<< ''There is still time for you...'';
}
else{
cout<< ''You shouldn't start to read War And Peace'';
}
cin.get();
}
--------
a fenti kód megy, csak ki kell cserélni a ' '-eket ''-ekre.. a fórummotor konvertálgat..
Jester ja, igazad van, közben rájöttem
[Szerkesztve] -
-=Lord Tom=-
senior tag
válasz
emitter #1738 üzenetére
Ott alul vannak még fülek, de mind üres... és ez is : 1 error, 1 warning, és nem jövök rá, hogy hol a hiba:
#include <iostream>
using namespace std;
int main()
{
int age;
cout<< ''How old are you?'';
cin>> age;
cin.ignore();
if ( 0 < age && age < 18 )
{
cout<< ''You are young.''>
}
else if ( 19 < age && age < 40 )
{
cout<< ''The life is still in front of you'';
}
else if ( 41 < age && age < 70 )
{
cout<< ''There is still time for you...'';
}
else
{ cout<< ''You shouldn't start to read War And Peace'';
cin.get();
}
} -
Terrorista
senior tag
válasz
emitter #1709 üzenetére
Valami ilyennek kéne kinéznie a szakdogának..
1. fejezet: mit csinal a program, milyen feltetelezeseket tettel, miegymas , 2. fejezet: rendszerterv: modulvazlat (melyik programmodul melyikkel van kapcsolatban), utana minden modulnak egy alfejezet, amiben vazlat van hogy hogy epul fel - pl. OO diagramm, es a lenyegi mukodes szoveges leirasa, 3. fejezet: felhasznaloi / telepitoi dokumentacio (sok szep screenshot, konfiguralas), A fuggelek: hibauzenetek es hibajavito, B fuggelek: a kodbol generalt SDK, lehetoleg chm vagy html formaban, egy CD-n, a kod mellet
Programterv az kb. a fejlesztő szemszögéből leírt ismertetés, mit hogyan, miért csináltál meg. Milyen hibákra kellett figyelned. Csak a fene se emléxik már rá anno, miért így csináltam meg, miért nem amúgy. -
emitter
őstag
válasz
emitter #1689 üzenetére
ZSÍÍÍÍR!!!!!
Kész a wav-lejátszóm! Minden mvprintw után refresh() kellett, azért nem ment eddig
A lejátszás szüneteltetését pedig egy alsa-pause hívással kellett megoldani... nem is olyan bonyolult, csak rá kellett jönnöm
Akit érdekel, itt a kód
szerver: [link]
kliens: [link]
szóval van egy hálózatos wav-játszó progi, amit lehet pause-zni, kb ennyit tud (egyelőre)
még meglátom, h mp3-at is implementáljak, feltéve, h nem túl nehéz
Jester01: Neked külön is köszönöm a sok segítséget (mint mindig)
ui: még annyi probléma merül fel néha, h indításkor rögtön snd_pcm_writei() failed, de ez kb 5%-ban fordul elő.. csak gőzöm sincs miért..
meg próbáltam puffert berakni (listával), egyelőre sikertelenül (ott van csak kommentelve)
kicsit gyorsítva játsza, és ki-ki hagy
azért még debuggolom, csak ha valami szarvashiba elsőre feltűnne esetleg, az sokat segítene -
Daveeboy
tag
válasz
emitter #1698 üzenetére
Köszönöm a segítő szándékot!
Magával a property kezelésével tisztában vagyok.
(prog.hu -t oda vissza átkerestem at émával kapocsolatban és a kérdést ott is feltettem, eddig eredménytelenül)
Dokumentálás során, osztályleírásban nem igazán tudok vele mit kezdeni.
Tehát a kérdés továbbra is adott: [link]
Remélem fórumoznak itt olyanok akik tudnak segíteni.
[Szerkesztve] -
Jester01
veterán
válasz
emitter #1685 üzenetére
Ez a bufferelés egy nagy káosz nekem. Nem igazán értem ki kivel van.
Elõször ott van ugye a buflevel. Gondolom ez mondja meg mennyi byte van már a bufferben. Utána van egy ciklus ami wi->bufsize-ig futAz snd_pcm_writei pedig már readbytes mennyiséget küld a hangkártyának.
-
Jester01
veterán
válasz
emitter #1685 üzenetére
Azért ugrik meg a procihasználat, mert megállított állapotban nyilván nem kellene a select writefds közé a socket. Hiszen hiába is tudnál írni a hálózatra ha egyszer nem akarsz. Szóval most a select rögtön visszatér, hogy hajrá küldjél adatot, te viszont nem csinálsz semmit. Vagyis ott pörög a szerencsétlen.
A többit még nézem, majd jövök -
Jester01
veterán
-
emitter
őstag
válasz
emitter #1675 üzenetére
az az érzésem, hogy a send lényegesen gyorsabban küldi az adatokat, mint ahogy én fogadni meg közben lejátszani tudom... ez előfordulhat? mert csak 2-3x fut le a main loop a szervernél, azaz csak 2-3x írja ki, h ''readbytes: xx'', bár ezt is rosszul, mert csak az első kiírásnál helyes az adat..
-
emitter
őstag
válasz
emitter #1672 üzenetére
asszem megvan: a new hívás után ráállítottam még a data-t egy másik változó címére...
szóval pl ehelyett
data = &wi.channels;
ezt írom:
*data = wi.channels;
de így sem jó a dolog, éppúgy csak az első átvitt adat helyes, a több random
akkor mi történik, ha nem new-val rakok alá memót, hanem simán alátolom egy létező válozó címét - és ezután kiadok egy delete data; utasítást? ekkor csak leáll róla, vagy törli a wi.channels-t?
pl.
data = &wi.channels;
delete data; -
Jester01
veterán
-
-
Jester01
veterán
válasz
emitter #1658 üzenetére
A castolás nem konvertál, az (int)''1'' eredménye nem 1 lesz, hanem a stringre mutató pointer értéke. Stringbõl számot strtol, strtoul, strtod (hibakezelés miatt ajánlott) vagy az atoi, atol, atoll, atof illetve sscanf függvényekkel lehet. Visszafelé sprintf, snprintf.
-
Spyx
tag
válasz
emitter #1653 üzenetére
kössz a választ. de elfelejtettem a legfontosabbat. JAVA -ban van a kód.
az fseek -et ismertem, de az csak C-ben van. bocs a pontatlanságért
amikor megnyitom a file-t akkor még nem tudom hogymi lesz az a szám
egy cikluson belül számolódnak az adatok amikkel a sorokat töltöm fel és a végén a ciklus lefutásának a számát kellene az elejére írnom -
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
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.
-
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 -
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. -
-
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? -
Jester01
veterán
válasz
emitter #1595 üzenetére
Azzal nem mész semmire, neked a library forrása kell. Egyébként a /usr/lib/libSDL_mixer.so.x.x fájlban lesz, de az nem a forráskód. Ha függvénykönyvtárat használsz, akkor az ahhoz tartozó headerben csak a deklarációk (prototípusok) vannak, a definíciók (implementáció) a könyvtárba van belefordítva. A könyvtár forráskódja, (amibõl a library készül) nem kell ahhoz, hogy magát a libraryt másik program használja. Ezért nem is szokás felrakni. Csak azoknak kell, akik magát a libraryt akarják újrafordítani (fejlesztõk).
-
Jester01
veterán
válasz
emitter #1588 üzenetére
Na látod ez a baj. A fordító is ezen a véleményen van, hogy neki biza senki nem árulta el mi a szösz ez a struktúra. Überbrutálnagyhekk, de meg lehet próbálni, hogy az általad beszúrt struct Mix_Music definíciót átnevezed _Mix_Music-ra, mert nem lehet tudni, hogy a library ugyanazt a struktúrát használja-e (a sok #ifdef miatt).
-
Jester01
veterán
válasz
emitter #1584 üzenetére
Ez most úgy látom a typedef nélküli verzió. Akkor nyilván sizeof(struct Mix_Music) kell. De valahol még mindig gáz van, hiszen pl. a Mix_PlayMusic prototípusa a fordító szerint hivatkozik a Mix_Music típusra. Szóval valamelyik headerben benne kell legyen. Keresd tovább
-
emitter
őstag
válasz
emitter #1565 üzenetére
hát végülis a 3 music->error-t kikommenteztem
(jó kis favágó módszerrel), a
187: music = (Mix_Music *) malloc(sizeof(Mix_Music*));
sort pedig így átartam, most lefordul, csak hang nem jön...
megkérhetnék valakit, hogy próbálja meg linuxon lefordítani, megy-e neki? [link]
thx
(kell hozzá SDL-mixer, meg -dev-files, meg asszem smpeg-lib is) -
-
tomcs
őstag
válasz
emitter #1549 üzenetére
vszeg azert mert extern..
az extern arra valo hogy megadod a fv interfeszet, es jelzed hogy ennek nem lesz implementacioja a forrasaid kozott. viszont a forrasodban ettol fuggetlenul tudod hasznalni.
mivel azert nem art, ha megis van ilyen fv, a linker meg tudni fog rola es keresni fogja, azaz forditasi (pontosabban linkelesi) hibat kapsz, ha az objektjeid kozott nem talalta meg ezt az azonositot.
tipikusan akkor kell, ha vmilyen mas nyelven akarsz megirni egy fuggvenyt, pl assemblyben, leforditod objekt file-ra, meg a projektedet is es a kettobol kapott objekt fileokat linkeled ossze.
btw headerekben egyebkent sem illik implementaciot keresni -
Jester01
veterán
válasz
emitter #1537 üzenetére
Valami telepítési gubanc lehet nálad, ha nincs doksi.
info libc ''waiting for i/o'' vagy online itt: [link]
A select nem eszik procit. Arra kell vigyázni, hogy a hang lejátszás ne blokkolja a vezérlést. Igy hasraütésre nekem az egy adatfolyam beágyazott vezérlõjelekkel szimpatikusabb, talán kevesebb baj van vele. -
emitter
őstag
válasz
emitter #1536 üzenetére
Úgy látom, mégsem biztos, hogy jó a select() az én helyzetemben, ugyanis ugye minden egyes ciklusiterációban meg kéne néznie a selectnek, hogy éppen melyik socket küld neki adatot (a vezérlő-, vagy az adat-socket), és ha utóbbi küldi, akkor fogadni, belerakni a pufferba, majd újra előlről kezdeni a figyelést... nem lesz ez túl lassú folyamat?
Ezt csak azért kérdezem, mert gőzöm sincs, hogy a processzor szempontjából ez mennyi időt vesz igénybe, nem fog-e egy idő után kiürülni a puffer az ''adatátvitel lassúsága'' miattnemtudom, érhető-e a kétségem?
vagy inkább azt a megoldást válasszam, hogy az adatokat becsomagolom, mindig megvizsgálom a fejlécét, és ha vezérlőcsomag érkezik, akkor azalapján döntök a lejátszásról, stb...
melyik lenne a gyorsabb megoldás - vagy mindkettő megfelelő nekem? -
Miracle
senior tag
válasz
emitter #1534 üzenetére
Hello. Az a velemenyem, hogy nem tudsz programozni, es egy nagyon nagy faba vagtad a fejszed, eloszor meg kellene tanulni algoritmusokat alkotni magadtol, megerteni, hogyan mukodik legalabb a nyelv, es utana lehet ilyen dolgokkal foglalkozni, de szemmel lathatolag a C nyelvi ismereteid finoman szolva hianyosak, a programozasi kornyezetrol meg kevesebbet tudsz, az meg hogy olyan kerdesekkel allsz itt elo, hogy melyik cilusba mit kell tenni arra enged kovetkeztetni, hogy ugy altalaban veve nem tudsz programozni. Most lehet hogy en vagyok a fasz, de igy sosem fogsz megtanulni, amit muvelsz az heggesztes, es mivel fingod sincs mit csinalsz nem is tanulsz belbelole semmit. Tanulni normalis, emberi mertekben merheto lepcsokben kell, mashogy nem lehet, es szerintem erdemes volna eloszor legalabb a nyelvvel, a fejlesztesi/futtatasi kornyezettel annyira baratsagba kerulni, hogy hogy magadtol meg tudd nezni egy-egy fv. dokumentaciojat ahelyett hogy ide irnal olyan kerdeseket, amelyekre nagyjabol 3 sor elolvasasa utan tudnad a valaszolni.
-
emitter
őstag
válasz
emitter #1532 üzenetére
fel!
szóval az elképzelésem mégegyszer a következő:
-kliensprogi wav-játszás közben figyeli a select()-tel a standard inputot, ha mondjuk azt írom, hogy ''pause'', akkor a szervernek küld egy pasue-nek megfelelő vezérlőjelet, mire a szerver leállítja a wav-játszást, stb.
Szóval lenne két socketem, egy vezérlő- és egy adat-socket. Odáig rendben, hogy mind kliens-, mind szerveroldalon kell 1-1 select a fő-ciklusban, a kérdés, hogy konkrétan hogyan valósítsam meg a dolgot...
nem értem pontosan, hogyan is működik a select()... ez itt a baj -
emitter
őstag
válasz
emitter #1531 üzenetére
hát nem teljesen világos ez a select:
ha 2 fájlleíró közül akarok selectelni, azt hogyan - szerver- és kliensoldalon is kell 1-1 select?
szerveren (ez fogadja az adatot) readfds, kliensen meg writefds?
a select milyen gyakran nézi meg, hogy melyik bemeneten jött adat?
és egyáltalán szintaktikailag hogyan kell használni? ez így jó lesz:
while(1){
select(sockfd1+1, &readfds, NULL, NULL, NULL);
if(IS_SET(sockfd1, &readfds)){...} //sockfd1 fogad adatot
else{...} //sockfd2 fogad adatot
} -
Jester01
veterán
-
emitter
őstag
válasz
emitter #1515 üzenetére
méretesebb (100kb-nál nagyobb) wavoknál nem jó a lejátszás
a buffer méretét nem sikerül eltalálni. Az a baj, hogy eddig sehol nem találtam normális leírást arról, hogy mekkora is kell legyen a puffer mérete - ami gondolom a mintavételi frekitől/ minták méretétől/ csatornák számától függ.
általában elkezdi lejátszani, és kis idő után - az első puffer kiírása után - elkezd akadozni, recsegni, stb...
most így néz ki a kód: [link]
amúgy és azt sem értem, hogy bármelyik wav végén mindig azt írja ki, hogy ''Hiba fajlolvasas kozben!'' Egy tipp: ez attól lehet, hogy a puffer mérete nem egész-számszorosa a hang-adat méretének, ezért picit hamarabb abbahagyja a lejátszást? Mondjuk ez néha hallható is, hogy nem fejezi be teljesen a wavot.
Új hozzászólás Aktív témák
Hirdetés
● olvasd el a téma összefoglalót!
- Megjelent a Poco F7, eurós ára is van már
- Garmin Forerunner 970 - fogd a pénzt, és fuss!
- Sony MILC fényképezőgépcsalád
- Nem indul és mi a baja a gépemnek topik
- Autós topik
- Steam topic
- Sorozatok
- Interactive Brokers társalgó
- Samsung Galaxy Watch7 - kötelező kör
- Death Stranding (PC)
- További aktív témák...
- DELL, HP gyári töltők, sok db. 7,4x5mm - 4,5x3mm + USB-C/Type-C 65W
- REFURBISHED - HP USB-C Dock G4 docking station (L13899-001)
- BESZÁMÍTÁS! Apple Mac mini 2024 M4 16GB 256GB SSD számítógép garanciával, hibátlan működéssel
- Wacom Cintiq DTK-2260 - Digitális rajztábla
- MikroTik CCR1009-7G-1C-1S+ Cloud Router
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest